|
|
@ -129,7 +129,7 @@ impl Parser { |
|
|
|
|
|
|
|
|
|
|
|
while let Err(_) = self.peek_token(TokenKind::CurlyBracesClose) { |
|
|
|
while let Err(_) = self.peek_token(TokenKind::CurlyBracesClose) { |
|
|
|
let statement = self.parse_statement()?; |
|
|
|
let statement = self.parse_statement()?; |
|
|
|
println!("{:?}", statement); |
|
|
|
dbg!("{:?}", &statement); |
|
|
|
statements.push(statement); |
|
|
|
statements.push(statement); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -144,7 +144,7 @@ impl Parser { |
|
|
|
|
|
|
|
|
|
|
|
fn parse_statement(&mut self) -> Result<Statement, String> { |
|
|
|
fn parse_statement(&mut self) -> Result<Statement, String> { |
|
|
|
let token = self.next_token(); |
|
|
|
let token = self.next_token(); |
|
|
|
println!("parse_statement: {:?}", token); |
|
|
|
dbg!(&token); |
|
|
|
match token.kind { |
|
|
|
match token.kind { |
|
|
|
TokenKind::Keyword(Keyword::Let) => { |
|
|
|
TokenKind::Keyword(Keyword::Let) => { |
|
|
|
let state = self.parse_declare(); |
|
|
|
let state = self.parse_declare(); |
|
|
@ -169,6 +169,10 @@ impl Parser { |
|
|
|
let state = Expression::Int(token.raw.parse::<u32>().map_err(|e| e.to_string())?); |
|
|
|
let state = Expression::Int(token.raw.parse::<u32>().map_err(|e| e.to_string())?); |
|
|
|
Ok(state) |
|
|
|
Ok(state) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
TokenKind::Literal(Value::Str) => { |
|
|
|
|
|
|
|
let state = Expression::Str(token.raw); |
|
|
|
|
|
|
|
Ok(state) |
|
|
|
|
|
|
|
} |
|
|
|
TokenKind::Identifier(val) => { |
|
|
|
TokenKind::Identifier(val) => { |
|
|
|
let state = Expression::Variable(val); |
|
|
|
let state = Expression::Variable(val); |
|
|
|
Ok(state) |
|
|
|
Ok(state) |
|
|
|