Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.
15 changes: 14 additions & 1 deletion trunk_lexer/src/lexer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -617,7 +617,14 @@ impl Lexer {
if let Some(b'*') = self.peek {
self.col += 1;
self.next();
TokenKind::Pow

if let Some(b'=') = self.peek {
self.col += 1;
self.next();
TokenKind::PowEquals
} else {
TokenKind::Pow
}
} else if let Some(b'=') = self.peek {
self.col += 1;
self.next();
Expand Down Expand Up @@ -753,6 +760,12 @@ impl Lexer {
self.col += 1;

TokenKind::GreaterThanEquals
} else if let Some(b'>') = self.peek {
self.next();

self.col += 1;

TokenKind::RightShift
} else {
TokenKind::GreaterThan
}
Expand Down
2 changes: 2 additions & 0 deletions trunk_lexer/src/token.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ pub enum TokenKind {
LeftBracket,
LeftParen,
LeftShift,
RightShift,
LessThan,
LessThanEquals,
Match,
Expand All @@ -122,6 +123,7 @@ pub enum TokenKind {
Plus,
PlusEquals,
Pow,
PowEquals,
Private,
Protected,
Public,
Expand Down
3 changes: 3 additions & 0 deletions trunk_parser/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ trunk_lexer = { path = "../trunk_lexer" }

[lib]
doctest = false

[dev-dependencies]
pretty_assertions = "1.3.0"
17 changes: 17 additions & 0 deletions trunk_parser/src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
use trunk_lexer::Lexer;
use trunk_parser::Parser;

fn main() {
let file = std::env::args().nth(1).unwrap();
let contents = std::fs::read_to_string(&file).unwrap();

println!("> Parsing {}", file);

let mut lexer = Lexer::new(None);
let tokens = lexer.tokenize(contents.as_bytes()).unwrap();

let mut parser = Parser::new(None);
let ast = parser.parse(tokens).unwrap();

dbg!(ast);
}
Loading