parsepred.cc
来自「2007年机器人足球世界杯3D仿真组亚军」· CC 代码 · 共 54 行
CC
54 行
#include "parser.ih"rPredicate Parser::parsePred(){ rPredicate pred; Token tok; // LPARENT tok = lex(); if (tok.type != Token::lparent) throw parser_error("parser error, expected '('"); // ID or LPARENT tok = lex(); if (tok.type == Token::lparent) { // Create list predicate. pred = new Predicate(Predicate::type_list); lexPushBack(tok); } else if (tok.type == Token::id) pred = new Predicate(tok.value,Predicate::type_node); else throw parser_error("parser error, expected '(' or ID"); // Parse until we lex a RPARENT token. while (tok.type != Token::rparent) { // RPARENT | PRED | ID tok = lex(); switch (tok.type) { case Token::id: // add id to predicate. pred->push(new Predicate(tok.value,Predicate::type_leave)); break; case Token::lparent: // add predicate to predicate. lexPushBack(tok); pred->push(parsePred()); break; case Token::rparent: // done parsing predicate. break; default: throw parser_error("parser error, expected LPARENT, RPARENT or ID"); }; } return pred;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?