Skip to content
This repository has been archived by the owner on Sep 6, 2022. It is now read-only.

Commit

Permalink
fix(#2): fix automatic semicolon insertion bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
trimorphdev committed Jul 11, 2022
1 parent 3108080 commit e24fff3
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
15 changes: 13 additions & 2 deletions compiler/hailc-lexer/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -169,11 +169,17 @@ impl<'a, Driver: DiagDriver> Asi<'a, Driver> {
}

self.lexer.next();

let mut peek = self.lexer.clone();
println!("SKIPPING LINE BREAK, PEEK: {:?} ('{}')", peek.next(), peek.slice());

continue;
}

return;
}

break;
}
}

Expand All @@ -182,12 +188,16 @@ impl<'a, Driver: DiagDriver> Asi<'a, Driver> {
let mut tokens = vec![];
let start = self.lexer.span().start;
let old_is_group = self.is_group;
self.can_insert = false;

if close != "}" { self.is_group = true }
if close != "}" { self.is_group = true } else { self.is_block = true }

loop {
self.skip_tokens();
let mut peek = self.lexer.clone();
if let Some(_) = peek.next() {
println!("SKIPPING OTKENS");
println!("PEEK: '{}' (@{:?})", peek.slice(), peek.span());
if peek.slice() == close {
self.lexer.next();
break;
Expand Down Expand Up @@ -299,6 +309,7 @@ impl<'a, Driver: DiagDriver> Asi<'a, Driver> {
})))
},
"{" => {
println!("OPEN!!!!!!!!!!!!!");
let start = self.lexer.span();
let tokens = self.lex_group("}")?;
self.can_insert = true;
Expand Down Expand Up @@ -355,7 +366,7 @@ impl<'a, Driver: DiagDriver> Asi<'a, Driver> {
.with_code("E0002")
.with_highlight(Loc::from_usize_range(self.lexer.span(), source))
.with_msg("invalid token")
.with_note("i don't know how to process this character! perhaps it's in a different language?");
.with_note("i don't know how to process this! perhaps it's in a different language?");

builder.throw(diag);

Expand Down
7 changes: 5 additions & 2 deletions compiler/hailc-lexer/src/raw.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,18 +43,20 @@ pub enum RawTok {
/// my_identifier
/// _ // reserved identifier
/// ```
#[regex("[a-zA-Z_][a-zA-Z0-9]+")]
#[regex("[a-zA-Z_$][a-zA-Z_$0-9]+")]
Id,

/// A string literal.
///
/// ```hail
/// "Hello, world!"
/// ```
#[regex(r#""([^"\\]|\\")""#)]
#[regex(r#""([^"\\]|\\")*""#)]
Str,

/// A punctuator token.
#[token("->")]
#[token("<-")]
#[token("::")]
#[token(".")]
#[token("?")]
Expand Down Expand Up @@ -87,6 +89,7 @@ pub enum RawTok {
#[token("]")]
#[token("{")]
#[token("}")]
#[token(";")]
Punct,

/// An error token.
Expand Down

0 comments on commit e24fff3

Please sign in to comment.