Lines Matching refs:Expression
68 struct Expression : public AstNode { struct
69 virtual ~Expression() = default;
72 struct LiteralExpression : public Expression {
81 struct StringLiteralExpression : public Expression {
89 struct Variable : public Expression {
103 struct FieldVariable : public Expression {
104 std::variant<Expression*, std::string> receiver;
107 FieldVariable(Expression* object, const std::string& name);
150 void Add(Expression* expression);
154 Expression* expression;
156 explicit ExpressionStatement(Expression* expression);
161 struct Assignment : public Expression {
163 Expression* rvalue;
166 Assignment(Variable* lvalue, Expression* rvalue);
167 Assignment(Variable* lvalue, Expression* rvalue, std::string cast);
172 struct MethodCall : public Expression {
173 std::variant<std::monostate, Expression*, std::string> receiver;
175 std::vector<Expression*> arguments;
180 MethodCall(Expression* obj, const std::string& name);
182 MethodCall(Expression* obj, const std::string& name, int argc, ...);
191 struct Comparison : public Expression {
192 Expression* lvalue;
194 Expression* rvalue;
196 Comparison(Expression* lvalue, const std::string& op, Expression* rvalue);
201 struct NewExpression : public Expression {
203 std::vector<Expression*> arguments;
214 struct NewArrayExpression : public Expression {
216 Expression* size;
218 NewArrayExpression(const std::string& type, Expression* size);
223 struct Cast : public Expression {
225 Expression* expression = nullptr;
228 Cast(const std::string& type, Expression* expression);
235 Expression* rvalue = nullptr;
238 VariableDeclaration(Variable* lvalue, Expression* rvalue);
244 Expression* expression = nullptr;
254 Expression* expression;
256 explicit ReturnStatement(Expression* expression);
288 Expression* expression;
291 explicit SwitchStatement(Expression* expression);