AST - Store variable names as tokens in declarations
This commit is contained in:
parent
90557e6600
commit
157c938395
2 changed files with 4 additions and 4 deletions
|
@ -12,7 +12,7 @@ pub struct ProgramNode(pub Vec<StmtNode>);
|
|||
#[derive(Debug, Clone)]
|
||||
pub enum StmtNode {
|
||||
/// A variable declaration
|
||||
VarDecl(String, Option<ExprNode>),
|
||||
VarDecl(Token, Option<ExprNode>),
|
||||
/// An single expression
|
||||
Expression(ExprNode),
|
||||
/// The print statement
|
||||
|
@ -68,8 +68,8 @@ impl AstDumper for ProgramNode {
|
|||
impl AstDumper for StmtNode {
|
||||
fn dump(&self) -> String {
|
||||
match self {
|
||||
Self::VarDecl(name, Some(expr)) => format!("( var {} {} )", name, expr.dump()),
|
||||
Self::VarDecl(name, None) => format!("( var {} nil )", name),
|
||||
Self::VarDecl(name, Some(expr)) => format!("( var {} {} )", name.lexeme, expr.dump()),
|
||||
Self::VarDecl(name, None) => format!("( var {} nil )", name.lexeme),
|
||||
Self::Expression(expr) => format!("( {} )", expr.dump()),
|
||||
Self::Print(expr) => format!("(print {})", expr.dump()),
|
||||
}
|
||||
|
|
|
@ -105,7 +105,7 @@ impl Parser {
|
|||
&TokenType::Semicolon,
|
||||
"expected ';' after variable declaration",
|
||||
)?;
|
||||
Ok(ast::StmtNode::VarDecl(name.lexeme, initializer))
|
||||
Ok(ast::StmtNode::VarDecl(name, initializer))
|
||||
}
|
||||
|
||||
/// Parse the following rule:
|
||||
|
|
Loading…
Reference in a new issue