pub enum Operator { Mul, Div, Plus, Minus, } pub struct LiteralInt { pub value: i64 } pub struct Identifier { pub name: String } pub struct FunctionCall { pub name: Identifier, pub arguments: Vec>, } pub enum Expression { LiteralInt(LiteralInt), FunctionCall(FunctionCall), Identifier(Identifier), Op(Box, Operator, Box), } pub struct Block { pub expression: Box } pub struct VariableDeclaration { pub name: Identifier, } pub struct Function { pub name: Identifier, pub arguments: Vec, pub block: Block, } pub struct Module { pub functions: Vec, }