Files
ts-parser/src/ast.rs

32 lines
588 B
Rust
Raw Normal View History

2025-05-27 23:46:52 +02:00
use crate::token::Token;
pub struct Module {
pub statements: Vec<Statement>,
}
2025-05-28 03:41:40 +02:00
#[derive(Debug)]
2025-05-27 23:46:52 +02:00
pub enum Statement {
FunctionDeclaration {
name: Token,
parameters: Vec<ParameterDeclaration>,
2025-05-28 03:41:40 +02:00
statements: Vec<Statement>,
2025-05-27 23:46:52 +02:00
},
2025-05-28 03:41:40 +02:00
Expression(Expression),
2025-05-27 23:46:52 +02:00
}
2025-05-28 03:41:40 +02:00
#[derive(Debug)]
2025-05-27 23:46:52 +02:00
pub struct ParameterDeclaration {
2025-05-28 03:41:40 +02:00
pub name: Token,
pub typename: Token,
2025-05-27 23:46:52 +02:00
}
2025-05-28 03:41:40 +02:00
#[derive(Debug)]
2025-05-27 23:46:52 +02:00
pub enum Expression {
Identifier(Token),
2025-05-28 03:41:40 +02:00
FunctionCall {
function: Box<Expression>,
arguments: Vec<Expression>,
return_type: Option<Token>,
},
2025-05-27 23:46:52 +02:00
}