add pratt parser

This commit is contained in:
Raptorox 2026-05-21 16:59:07 +02:00
parent a4eed5214e
commit c70c5fab4d
No known key found for this signature in database
GPG key ID: 8B3556FC3ED1F6D8
3 changed files with 155 additions and 4 deletions

View file

@ -3,6 +3,8 @@ use std::{fs::File, io::Read};
mod token;
mod lexer;
use lexer::Lexer;
mod parser;
use parser::Parser;
fn main() -> std::io::Result<()> {
let args = std::env::args().collect::<Vec<String>>();
@ -14,10 +16,20 @@ fn main() -> std::io::Result<()> {
let mut lexer = Lexer::new(&source);
let mut tokens = Vec::new();
while let Some(tok) = lexer.next() {
print!("{tok:?}, ");
tokens.push(tok);
}
println!("\n");
let mut parser = Parser::new(tokens);
loop {
match lexer.next() {
Some(tok) => print!("{tok:?}, "),
None => break
let parsed = parser.parse();
match parsed {
parser::Expr::EOL => break,
_ => println!("{:?}", parsed)
}
}