diff --git a/src/lexer.rs b/src/lexer.rs index 6178669..a844a22 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -78,7 +78,7 @@ const SYNTAX: [Node; 13] = [ }, Node { token_type: TokenType::Operator, - token_regex: Lazy::new(|| Regex::new(r"^[\-|\+|\*|\=]").unwrap()) + token_regex: Lazy::new(|| Regex::new(r"^[\-|\+|\*|\=|\!]").unwrap()) }, Node { token_type: TokenType::Round, diff --git a/src/parser.rs b/src/parser.rs index 4363987..ccc5b9e 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -60,8 +60,9 @@ impl Parser { let token = &self.tokens[index]; match token.token_type { TokenType::Identifier => { + ast_res.tokens.push(self.tokens[index].clone()); + self.index += 1; if self.tokens.len()-index > 3 && self.tokens[index+1].token_type==TokenType::Identifier && self.tokens[index+2].token_type==TokenType::Round && self.tokens[index+3].token_type==TokenType::Curly { - ast_res.tokens.push(self.tokens[index].clone()); ast_res.tokens.push(self.tokens[index+1].clone()); ast_res.tokens.push(self.tokens[index+2].clone()); ast_res.tokens.push(self.tokens[index+3].clone());