Skip to content

Commit

Permalink
fix(lexer): return early after comment was found
Browse files Browse the repository at this point in the history
  • Loading branch information
MilkeeyCat committed Sep 26, 2024
1 parent 6633edd commit 9f8ef07
Showing 1 changed file with 115 additions and 62 deletions.
177 changes: 115 additions & 62 deletions src/lexer/lexer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ impl Lexer {
if self.peek() == b'/' {
self.skip_comment();

self.next_token()?
return Ok(self.next_token()?);
} else {
Token::Slash
}
Expand Down Expand Up @@ -231,84 +231,137 @@ mod test {
#[test]
fn source_into_tokens() -> Result<(), LexerError> {
let input = r#"
[>.<]->!-+/==!=:true,false<=>=
const i8 a = 5;
i8 *b = &a;
if(false) {
} else {
}
i8 foo() {
return 69;
}
struct Foo {
}
enum Bar {
ident
69
"string"
=
+
-
!
*
/
->
.
~
&
|
==
!=
<
>
<=
>=
&&
||
<<
>>
,
;
:
(
)
{
}
[
]
// keywords
// heyo :D
const
true
false
let
fn
enum
struct
if
while
for
else
return
as
continue
break
u8
u16
u32
u64
i8
i16
i32
i64
usize
isize
bool
void
NULL
"#;

let tokens = vec![
Token::LBracket,
Token::GreaterThan,
Token::Period,
Token::LessThan,
Token::RBracket,
Token::Arrow,
Token::Bang,
Token::Minus,
Token::Ident(String::from("ident")),
Token::Integer(String::from("69")),
Token::String(String::from("string")),
Token::Assign,
Token::Plus,
Token::Minus,
Token::Bang,
Token::Asterisk,
Token::Slash,
Token::Arrow,
Token::Period,
Token::Tilde,
Token::Ampersand,
Token::Bar,
Token::Equal,
Token::NotEqual,
Token::Colon,
Token::True,
Token::Comma,
Token::False,
Token::LessThan,
Token::GreaterThan,
Token::LessEqual,
Token::GreaterEqual,
Token::Const,
Token::I8,
Token::Ident(String::from("a")),
Token::Assign,
Token::Integer(String::from("5")),
Token::Semicolon,
Token::I8,
Token::Asterisk,
Token::Ident(String::from("b")),
Token::Assign,
Token::Ampersand,
Token::Ident(String::from("a")),
Token::And,
Token::Or,
Token::Shl,
Token::Shr,
Token::Comma,
Token::Semicolon,
Token::If,
Token::Colon,
Token::LParen,
Token::False,
Token::RParen,
Token::LBrace,
Token::RBrace,
Token::LBracket,
Token::RBracket,
Token::Const,
Token::True,
Token::False,
Token::Let,
Token::Fn,
Token::Enum,
Token::Struct,
Token::If,
Token::While,
Token::For,
Token::Else,
Token::LBrace,
Token::RBrace,
Token::I8,
Token::Ident(String::from("foo")),
Token::LParen,
Token::RParen,
Token::LBrace,
Token::Return,
Token::Integer(String::from("69")),
Token::Semicolon,
Token::RBrace,
Token::Struct,
Token::Ident(String::from("Foo")),
Token::LBrace,
Token::RBrace,
Token::Enum,
Token::Ident(String::from("Bar")),
Token::LBrace,
Token::RBrace,
Token::As,
Token::Continue,
Token::Break,
Token::U8,
Token::U16,
Token::U32,
Token::U64,
Token::I8,
Token::I16,
Token::I32,
Token::I64,
Token::Usize,
Token::Isize,
Token::Bool,
Token::Void,
Token::Null,
Token::Eof,
];

let mut lexer = Lexer::new(input.to_string());
Expand Down

0 comments on commit 9f8ef07

Please sign in to comment.