Lines Matching defs:ExprAST

139 /// ExprAST - Base class for all expression nodes.
140 class ExprAST {
142 virtual ~ExprAST() = default;
148 class NumberExprAST : public ExprAST {
158 class VariableExprAST : public ExprAST {
169 class UnaryExprAST : public ExprAST {
171 std::unique_ptr<ExprAST> Operand;
174 UnaryExprAST(char Opcode, std::unique_ptr<ExprAST> Operand)
181 class BinaryExprAST : public ExprAST {
183 std::unique_ptr<ExprAST> LHS, RHS;
186 BinaryExprAST(char Op, std::unique_ptr<ExprAST> LHS,
187 std::unique_ptr<ExprAST> RHS)
194 class CallExprAST : public ExprAST {
196 std::vector<std::unique_ptr<ExprAST>> Args;
200 std::vector<std::unique_ptr<ExprAST>> Args)
207 class IfExprAST : public ExprAST {
208 std::unique_ptr<ExprAST> Cond, Then, Else;
211 IfExprAST(std::unique_ptr<ExprAST> Cond, std::unique_ptr<ExprAST> Then,
212 std::unique_ptr<ExprAST> Else)
219 class ForExprAST : public ExprAST {
221 std::unique_ptr<ExprAST> Start, End, Step, Body;
224 ForExprAST(const std::string &VarName, std::unique_ptr<ExprAST> Start,
225 std::unique_ptr<ExprAST> End, std::unique_ptr<ExprAST> Step,
226 std::unique_ptr<ExprAST> Body)
234 class VarExprAST : public ExprAST {
235 std::vector<std::pair<std::string, std::unique_ptr<ExprAST>>> VarNames;
236 std::unique_ptr<ExprAST> Body;
240 std::vector<std::pair<std::string, std::unique_ptr<ExprAST>>> VarNames,
241 std::unique_ptr<ExprAST> Body)
279 std::unique_ptr<ExprAST> Body;
283 std::unique_ptr<ExprAST> Body)
318 std::unique_ptr<ExprAST> LogError(const char *Str) {
328 static std::unique_ptr<ExprAST> ParseExpression();
331 static std::unique_ptr<ExprAST> ParseNumberExpr() {
338 static std::unique_ptr<ExprAST> ParseParenExpr() {
353 static std::unique_ptr<ExprAST> ParseIdentifierExpr() {
363 std::vector<std::unique_ptr<ExprAST>> Args;
387 static std::unique_ptr<ExprAST> ParseIfExpr() {
417 static std::unique_ptr<ExprAST> ParseForExpr() {
442 std::unique_ptr<ExprAST> Step;
464 static std::unique_ptr<ExprAST> ParseVarExpr() {
467 std::vector<std::pair<std::string, std::unique_ptr<ExprAST>>> VarNames;
478 std::unique_ptr<ExprAST> Init = nullptr;
517 static std::unique_ptr<ExprAST> ParsePrimary() {
539 static std::unique_ptr<ExprAST> ParseUnary() {
554 static std::unique_ptr<ExprAST> ParseBinOpRHS(int ExprPrec,
555 std::unique_ptr<ExprAST> LHS) {
592 static std::unique_ptr<ExprAST> ParseExpression() {
996 ExprAST *Init = VarNames[i].second.get();