Lines Matching defs:ExprAST

141 /// ExprAST - Base class for all expression nodes.
142 class ExprAST {
144 virtual ~ExprAST() = default;
150 class NumberExprAST : public ExprAST {
160 class VariableExprAST : public ExprAST {
170 class UnaryExprAST : public ExprAST {
172 std::unique_ptr<ExprAST> Operand;
175 UnaryExprAST(char Opcode, std::unique_ptr<ExprAST> Operand)
182 class BinaryExprAST : public ExprAST {
184 std::unique_ptr<ExprAST> LHS, RHS;
187 BinaryExprAST(char Op, std::unique_ptr<ExprAST> LHS,
188 std::unique_ptr<ExprAST> RHS)
195 class CallExprAST : public ExprAST {
197 std::vector<std::unique_ptr<ExprAST>> Args;
201 std::vector<std::unique_ptr<ExprAST>> Args)
208 class IfExprAST : public ExprAST {
209 std::unique_ptr<ExprAST> Cond, Then, Else;
212 IfExprAST(std::unique_ptr<ExprAST> Cond, std::unique_ptr<ExprAST> Then,
213 std::unique_ptr<ExprAST> Else)
220 class ForExprAST : public ExprAST {
222 std::unique_ptr<ExprAST> Start, End, Step, Body;
225 ForExprAST(const std::string &VarName, std::unique_ptr<ExprAST> Start,
226 std::unique_ptr<ExprAST> End, std::unique_ptr<ExprAST> Step,
227 std::unique_ptr<ExprAST> Body)
266 std::unique_ptr<ExprAST> Body;
270 std::unique_ptr<ExprAST> Body)
305 std::unique_ptr<ExprAST> LogError(const char *Str) {
315 static std::unique_ptr<ExprAST> ParseExpression();
318 static std::unique_ptr<ExprAST> ParseNumberExpr() {
325 static std::unique_ptr<ExprAST> ParseParenExpr() {
340 static std::unique_ptr<ExprAST> ParseIdentifierExpr() {
350 std::vector<std::unique_ptr<ExprAST>> Args;
374 static std::unique_ptr<ExprAST> ParseIfExpr() {
404 static std::unique_ptr<ExprAST> ParseForExpr() {
429 std::unique_ptr<ExprAST> Step;
455 static std::unique_ptr<ExprAST> ParsePrimary() {
475 static std::unique_ptr<ExprAST> ParseUnary() {
490 static std::unique_ptr<ExprAST> ParseBinOpRHS(int ExprPrec,
491 std::unique_ptr<ExprAST> LHS) {
528 static std::unique_ptr<ExprAST> ParseExpression() {