/// primary /// ::= identifierexpr /// ::= numberexpr /// ::= parenexpr static ExprAST *ParsePrimary() { switch (CurTok) { default: return Error("unknown token when expecting an expression"); case tok_identifier: return ParseIdentifierExpr(); case tok_number: return ParseNumberExpr(); case '(': return ParseParenExpr(); } }
/// primary /// ::= identifierexpr /// ::= numberexpr /// ::= parenexpr static ExprAST *ParsePrimary() { switch (CurTok) { default: return Error("unknown token when expecting an expression"); case tok_identifier: printf("<identifier, %s>\n", IdentifierStr.c_str()); return ParseIdentifierExpr(); case tok_number: printf("<number, %f>\n", NumVal); return ParseNumberExpr(); case '(': return ParseParenExpr(); } }
ExprAST * FAO::ParsePrimary() { switch (cur_token_.GetType()){ case TokenType::TOKEN_INTEGER: return ParseNumberExpr(); case TokenType::TOKEN_LEFT_PARAM: return ParseParentExpr(); default: return Error("unknow token when expecting an expression"); } }
/* Handles primary expressions, where * primary ::= identifierexpr * ::= numberexpr * ::= parenexpr * by using look-ahead to see what kind of expression * we should parse. */ static std::unique_ptr<ExprAST> ParsePrimary() { switch(CurTok) { default: return Error("Expected an expression but got an unknown token."); case tok_ident: return ParseIdentifierExpr(); case tok_number: return ParseNumberExpr(); case '(': return ParseParenExpr(); } }
/* primary * ::= identifierexpr * ::= numberexpr * ::= parenexpr * ::= const string * */ static shared_ptr<ExprAST> ParsePrimary() { switch (CurTok) { case T_BRACE_SL: return ParseParenExpr(); case T_IDENTIFIER: return ParseIdentifierExpr(); case T_NUMBER: return ParseNumberExpr(); case T_DQUOTE: return ParseConststringExpr(); case T_SQUOTE: return ParseConststringExpr(); default: return Error("unknown token when expected an expression "); } }
/// primary /// ::= identifierexpr /// ::= numberexpr /// ::= parenexpr std::unique_ptr<ExprAST> UDFParser::ParsePrimary() { switch (cur_tok_) { default: return LogError("unknown token when expecting an expression"); case tok_identifier: return ParseIdentifierExpr(); case tok_number: return ParseNumberExpr(); case '(': return ParseParenExpr(); case tok_return: return ParseReturn(); case tok_if: return ParseIfExpr(); case tok_semicolon: return nullptr; } }