📄 parsepred.cc
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -