本文整理汇总了C++中ExprAST::isVar方法的典型用法代码示例。如果您正苦于以下问题:C++ ExprAST::isVar方法的具体用法?C++ ExprAST::isVar怎么用?C++ ExprAST::isVar使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ExprAST
的用法示例。
在下文中一共展示了ExprAST::isVar方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: statement
StatementAST* Parser::statement() {
switch(this->_tok.type()){
case TokenType::IF:
return this->ifstatement();
case TokenType::FOR:
return this->forstatement();
case TokenType::WHILE:
return this->whilestatement();
case TokenType::REPEAT:
return this->repeatstatement();
//AFFECTATION OR EXPRESSION STATEMENTS
default:
ExprAST* expr = this->expression();
if(!expr) return nullptr;
if(this->_tok == TokenType::AFFECT){
//verifie que expr est une variable.
if (!expr->isVar()) {
Logger::error << this->getErrorHeader() << *expr
<< this->getErrorHeader() << " is not a variable." << std::endl;
exit(EXIT_FAILURE);
}
// On consumme l'affectation
this->eatToken();
ExprAST* affectedExpr = this->expression();
if(!affectedExpr) return nullptr;
return new AffectationAST((VariableAST*) expr, affectedExpr);
}
//sinon l'expression doit se terminer a la fin de la ligne ou du fichier
if(this->_tok!=TokenType::ENDF && !this->eatToken(TokenType::ENDL)) return nullptr;
return new StatementExprAST(expr);
}
}