Files
boring-lang/src/ast.rs

49 lines
715 B
Rust
Raw Normal View History

pub enum Operator {
Mul,
Div,
Plus,
Minus,
}
pub struct LiteralInt {
2020-04-13 23:59:01 -06:00
pub value: i64
}
pub struct Identifier {
pub name: String
}
2020-04-13 23:59:01 -06:00
pub struct FunctionCall {
pub name: Identifier,
pub arguments: Vec<Box<Expression>>,
}
pub enum Expression {
LiteralInt(LiteralInt),
2020-04-13 23:59:01 -06:00
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,
}
2020-04-13 23:59:01 -06:00
pub struct Module {
pub functions: Vec<Function>,
}