32 lines
588 B
Rust
32 lines
588 B
Rust
use crate::token::Token;
|
|
|
|
pub struct Module {
|
|
pub statements: Vec<Statement>,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub enum Statement {
|
|
FunctionDeclaration {
|
|
name: Token,
|
|
parameters: Vec<ParameterDeclaration>,
|
|
statements: Vec<Statement>,
|
|
},
|
|
Expression(Expression),
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct ParameterDeclaration {
|
|
pub name: Token,
|
|
pub typename: Token,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub enum Expression {
|
|
Identifier(Token),
|
|
FunctionCall {
|
|
function: Box<Expression>,
|
|
arguments: Vec<Expression>,
|
|
return_type: Option<Token>,
|
|
},
|
|
}
|