MCPcopy Create free account
hub / github.com/Gusabary/FlowChar / lookupParsingTable

Method lookupParsingTable

src/codeParser.cpp:215–425  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

213}
214
215CodeParser::parsingTableEntry CodeParser::lookupParsingTable(int cntState, Token::Kind tokenKind, std::pair<int, int> pos) {
216 switch (cntState) {
217 case 1: {
218 switch (tokenKind) {
219 case Token::Kind::STM:
220 return parsingTableEntry(parsingTableEntry::Action::SHIFT, 4);
221 case Token::Kind::IF:
222 return parsingTableEntry(parsingTableEntry::Action::SHIFT, 2);
223 case Token::Kind::WHILE:
224 return parsingTableEntry(parsingTableEntry::Action::SHIFT, 3);
225 case Token::Kind::SEQ:
226 return parsingTableEntry(parsingTableEntry::Action::GOTO, 18);
227 }
228 std::cout << "Compile error near (" << pos.first << ", " << pos.second << ")." << std::endl;
229 exit(-1);
230 }
231 case 2: {
232 switch (tokenKind) {
233 case Token::Kind::COND:
234 return parsingTableEntry(parsingTableEntry::Action::SHIFT, 6);
235 }
236 std::cout << "Compile error near (" << pos.first << ", " << pos.second << ")." << std::endl;
237 exit(-1);
238 }
239 case 3: {
240 switch (tokenKind) {
241 case Token::Kind::COND:
242 return parsingTableEntry(parsingTableEntry::Action::SHIFT, 14);
243 }
244 std::cout << "Compile error near (" << pos.first << ", " << pos.second << ")." << std::endl;
245 exit(-1);
246 }
247 case 4: {
248 switch (tokenKind) {
249 case Token::Kind::STM:
250 return parsingTableEntry(parsingTableEntry::Action::SHIFT, 4);
251 case Token::Kind::IF:
252 return parsingTableEntry(parsingTableEntry::Action::SHIFT, 2);
253 case Token::Kind::WHILE:
254 return parsingTableEntry(parsingTableEntry::Action::SHIFT, 3);
255 case Token::Kind::RBRACE:
256 return parsingTableEntry(parsingTableEntry::Action::REDUCE, 4);
257 case Token::Kind::END:
258 return parsingTableEntry(parsingTableEntry::Action::REDUCE, 4);
259 case Token::Kind::SEQ:
260 return parsingTableEntry(parsingTableEntry::Action::GOTO, 5);
261 }
262 std::cout << "Compile error near (" << pos.first << ", " << pos.second << ")." << std::endl;
263 exit(-1);
264 }
265 case 5: {
266 switch (tokenKind) {
267 case Token::Kind::RBRACE:
268 return parsingTableEntry(parsingTableEntry::Action::REDUCE, 5);
269 case Token::Kind::END:
270 return parsingTableEntry(parsingTableEntry::Action::REDUCE, 5);
271 }
272 std::cout << "Compile error near (" << pos.first << ", " << pos.second << ")." << std::endl;

Callers 1

parseMethod · 0.95

Calls 1

parsingTableEntryClass · 0.85

Tested by

no test coverage detected