30 lines
565 B
Rust
30 lines
565 B
Rust
use super::ast::*;
|
|
use crate::lex::tok::*;
|
|
use logos::Lexer;
|
|
|
|
fn parse_var_declaration(tokens: Lexer) -> Option<Expr<VarDefinition>> {
|
|
let tok = None;
|
|
match tokens.next() {
|
|
Let => {
|
|
match tokens.next() {
|
|
Identifier => {
|
|
let name = tokens.slice();
|
|
println!("{:?}", name);
|
|
match tokens.next() {
|
|
Equal => {
|
|
match tokens.next() {
|
|
Number(n) => {
|
|
let value = Value::Number(n);
|
|
println!("{:?}", value);
|
|
return VarDefenition {name, value};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
_ => None
|
|
}
|
|
}
|