add pratt parser
This commit is contained in:
parent
a4eed5214e
commit
c70c5fab4d
3 changed files with 155 additions and 4 deletions
18
src/main.rs
18
src/main.rs
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue