use crate::compiler::lexer::Token; #[derive(Debug, Clone, PartialEq)] pub enum AstNode { Program(Vec), // Declarations VarDecl { var_type: Token, is_input: bool, name: String, init_value: Option>, }, FunctionDecl { return_type: Token, name: String, params: Vec, // VarDecl body: Box, // Block }, Block(Vec), // Statements IfStatement { condition: Box, then_branch: Box, else_branch: Option>, }, ReturnStatement(Option>), ExpressionStatement(Box), // Expressions BinaryOp { left: Box, op: Token, right: Box, }, UnaryOp { op: Token, expr: Box, }, FunctionCall { name: String, args: Vec, }, // Built-in MQL5 logic OrderSendCall { symbol: String, cmd: Token, // OP_BUY, OP_SELL (represented as tokens or mapped strings) volume: f64, price: f64, sl: f64, tp: f64, }, Identifier(String), Literal(Token), }