Home | History | Annotate | Download | only in complete

Lines Matching refs:ExprAST

157 /// ExprAST - Base class for all expression nodes.
158 class ExprAST {
160 virtual ~ExprAST() {}
165 class NumberExprAST : public ExprAST {
173 class VariableExprAST : public ExprAST {
182 class UnaryExprAST : public ExprAST {
184 ExprAST *Operand;
186 UnaryExprAST(char opcode, ExprAST *operand)
192 class BinaryExprAST : public ExprAST {
194 ExprAST *LHS, *RHS;
196 BinaryExprAST(char op, ExprAST *lhs, ExprAST *rhs)
202 class CallExprAST : public ExprAST {
204 std::vector<ExprAST*> Args;
206 CallExprAST(const std::string &callee, std::vector<ExprAST*> &args)
212 class IfExprAST : public ExprAST {
213 ExprAST *Cond, *Then, *Else;
215 IfExprAST(ExprAST *cond, ExprAST *then, ExprAST *_else)
221 class ForExprAST : public ExprAST {
223 ExprAST *Start, *End, *Step, *Body;
225 ForExprAST(const std::string &varname, ExprAST *start, ExprAST *end,
226 ExprAST *step, ExprAST *body)
232 class VarExprAST : public ExprAST {
233 std::vector<std::pair<std::string, ExprAST*> > VarNames;
234 ExprAST *Body;
236 VarExprAST(const std::vector<std::pair<std::string, ExprAST*> > &varnames,
237 ExprAST *body)
273 ExprAST *Body;
275 FunctionAST(PrototypeAST *proto, ExprAST *body)
309 ExprAST *Error(const char *Str) { fprintf(stderr, "Error: %s\n", Str);return 0;}
313 static ExprAST *ParseExpression();
318 static ExprAST *ParseIdentifierExpr() {
328 std::vector<ExprAST*> Args;
331 ExprAST *Arg = ParseExpression();
350 static ExprAST *ParseNumberExpr() {
351 ExprAST *Result = new NumberExprAST(NumVal);
357 static ExprAST *ParseParenExpr() {
359 ExprAST *V = ParseExpression();
369 static ExprAST *ParseIfExpr() {
373 ExprAST *Cond = ParseExpression();
380 ExprAST *Then = ParseExpression();
388 ExprAST *Else = ParseExpression();
395 static ExprAST *ParseForExpr() {
409 ExprAST *Start = ParseExpression();
415 ExprAST *End = ParseExpression();
419 ExprAST *Step = 0;
430 ExprAST *Body = ParseExpression();
438 static ExprAST *ParseVarExpr() {
441 std::vector<std::pair<std::string, ExprAST*> > VarNames;
452 ExprAST *Init = 0;
475 ExprAST *Body = ParseExpression();
488 static ExprAST *ParsePrimary() {
503 static ExprAST *ParseUnary() {
511 if (ExprAST *Operand = ParseUnary())
518 static ExprAST *ParseBinOpRHS(int ExprPrec, ExprAST *LHS) {
533 ExprAST *RHS = ParseUnary();
552 static ExprAST *ParseExpression() {
553 ExprAST *LHS = ParseUnary();
630 if (ExprAST *E = ParseExpression())
637 if (ExprAST *E = ParseExpression()) {
1439 ExprAST *Init = VarNames[i].second;