skylang/src/parse/parse.rs

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
}
}