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 + -
显示快捷键?