From a4980b8dbf1394c2b302f1de7c72d2264426b86e Mon Sep 17 00:00:00 2001 From: Mel Date: Wed, 20 Oct 2021 22:15:08 +0200 Subject: Statement parsing. --- src/lex/lexer.rs | 7 ++++++- src/lex/token.rs | 10 ++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'src/lex') diff --git a/src/lex/lexer.rs b/src/lex/lexer.rs index 6e188a0..b6fee0d 100644 --- a/src/lex/lexer.rs +++ b/src/lex/lexer.rs @@ -181,10 +181,15 @@ impl<'s> Lexer<'s> { let variant = match buffer.as_str() { "fn" => TokenVariant::KeywordFn, + "if" => TokenVariant::KeywordIf, + "elif" => TokenVariant::KeywordElif, + "else" => TokenVariant::KeywordElse, "type" => TokenVariant::KeywordType, "form" => TokenVariant::KeywordForm, "self" => TokenVariant::KeywordSelf, - _ => TokenVariant::Identifier(buffer), + "return" => TokenVariant::KeywordReturn, + "print" => TokenVariant::KeywordPrint, + _ => TokenVariant::Ident(buffer), }; Token { location, variant } diff --git a/src/lex/token.rs b/src/lex/token.rs index 3694525..efd4c5a 100644 --- a/src/lex/token.rs +++ b/src/lex/token.rs @@ -10,7 +10,7 @@ pub struct Token { pub variant: TokenVariant, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, PartialEq)] pub enum TokenVariant { // Basic math operators OpPlus, @@ -45,13 +45,19 @@ pub enum TokenVariant { Int(u32), Float(f32), Str(String), - Identifier(String), + + Ident(String), // Keywords KeywordFn, + KeywordIf, + KeywordElif, + KeywordElse, KeywordForm, KeywordType, KeywordSelf, + KeywordReturn, + KeywordPrint, Unknown(char), Eof, -- cgit 1.4.1