| use crate::compiler::lexer::Token; |
|
|
| #[derive(Debug, Clone, PartialEq)] |
| pub enum AstNode { |
| Program(Vec<AstNode>), |
| |
| |
| VarDecl { |
| var_type: Token, |
| is_input: bool, |
| name: String, |
| init_value: Option<Box<AstNode>>, |
| }, |
| |
| FunctionDecl { |
| return_type: Token, |
| name: String, |
| params: Vec<AstNode>, |
| body: Box<AstNode>, |
| }, |
| |
| Block(Vec<AstNode>), |
| |
| |
| IfStatement { |
| condition: Box<AstNode>, |
| then_branch: Box<AstNode>, |
| else_branch: Option<Box<AstNode>>, |
| }, |
| |
| ReturnStatement(Option<Box<AstNode>>), |
| ExpressionStatement(Box<AstNode>), |
| |
| |
| BinaryOp { |
| left: Box<AstNode>, |
| op: Token, |
| right: Box<AstNode>, |
| }, |
| |
| UnaryOp { |
| op: Token, |
| expr: Box<AstNode>, |
| }, |
| |
| FunctionCall { |
| name: String, |
| args: Vec<AstNode>, |
| }, |
| |
| |
| OrderSendCall { |
| symbol: String, |
| cmd: Token, |
| volume: f64, |
| price: f64, |
| sl: f64, |
| tp: f64, |
| }, |
| |
| Identifier(String), |
| Literal(Token), |
| } |
|
|