Files
boring-lang/src/ast.rs
2020-04-19 22:22:15 -06:00

49 lines
715 B
Rust

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<Box<Expression>>,
}
pub enum Expression {
LiteralInt(LiteralInt),
FunctionCall(FunctionCall),
Identifier(Identifier),
Op(Box<Expression>, Operator, Box<Expression>),
}
pub struct Block {
pub expression: Box<Expression>
}
pub struct VariableDeclaration {
pub name: Identifier,
}
pub struct Function {
pub name: Identifier,
pub arguments: Vec<VariableDeclaration>,
pub block: Block,
}
pub struct Module {
pub functions: Vec<Function>,
}