MCPcopy Create free account
hub / github.com/OpenMW/openmw / parseName

Method parseName

components/compiler/lineparser.cpp:98–213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

96 }
97
98 bool LineParser::parseName(const std::string& name, const TokenLoc& loc, Scanner& scanner)
99 {
100 if (mState == SetState)
101 {
102 std::string name2 = Misc::StringUtils::lowerCase(name);
103 mName = name2;
104
105 // local variable?
106 char type = mLocals.getType(name2);
107 if (type != ' ')
108 {
109 mType = type;
110 mState = SetLocalVarState;
111 return true;
112 }
113
114 type = getContext().getGlobalType(name2);
115 if (type != ' ')
116 {
117 mType = type;
118 mState = SetGlobalVarState;
119 return true;
120 }
121
122 mState = SetPotentialMemberVarState;
123 return true;
124 }
125
126 if (mState == SetMemberVarState)
127 {
128 mMemberName = Misc::StringUtils::lowerCase(name);
129 std::pair<char, bool> type = getContext().getMemberType(mMemberName, ESM::RefId::stringRefId(mName));
130
131 if (type.first != ' ')
132 {
133 mState = SetMemberVarState2;
134 mType = type.first;
135 mReferenceMember = type.second;
136 return true;
137 }
138
139 getErrorHandler().error("Unknown variable", loc);
140 SkipParser skip(getErrorHandler(), getContext());
141 scanner.scan(skip);
142 return false;
143 }
144
145 if (mState == MessageState)
146 {
147 GetArgumentsFromMessageFormat processor;
148 processor.process(name);
149 std::string arguments = processor.getArguments();
150
151 if (!arguments.empty())
152 {
153 mExprParser.reset();
154 mExprParser.parseArguments(arguments, scanner, mCode, -1, true);
155 }

Callers 1

parseExpressionMethod · 0.45

Calls 15

lowerCaseFunction · 0.85
scanMethod · 0.80
getArgumentsMethod · 0.80
parseArgumentsMethod · 0.80
enableExpectNameMethod · 0.80
enableTolerantNamesMethod · 0.80
putbackNameMethod · 0.80
getTypeMethod · 0.45
getGlobalTypeMethod · 0.45
getMemberTypeMethod · 0.45
errorMethod · 0.45
processMethod · 0.45

Tested by

no test coverage detected