From f47de24cfb0ee4c8cfc109efbbcbb1a9fdace2fc Mon Sep 17 00:00:00 2001 From: John Date: Thu, 16 Oct 2025 01:37:24 -0400 Subject: [PATCH] token: reserve "and", "or", "in" as keywords --- src/lexer.rs | 3 +++ src/token.rs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/lexer.rs b/src/lexer.rs index 589a4e5..f788496 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -235,6 +235,7 @@ impl<'t> Lexer<'t> { let token = self.produce(TKind::Identifier); Ok(Token { kind: match lexeme { + "and" => TKind::And, "as" => TKind::As, "break" => TKind::Break, "const" => TKind::Const, @@ -244,11 +245,13 @@ impl<'t> Lexer<'t> { "fn" => TKind::Fn, "for" => TKind::For, "if" => TKind::If, + "in" => TKind::In, "let" => TKind::Let, "loop" => TKind::Loop, "macro" => TKind::Macro, "match" => TKind::Match, "mod" => TKind::Module, + "or" => TKind::Or, "pub" => TKind::Public, "return" => TKind::Return, "struct" => TKind::Struct, diff --git a/src/token.rs b/src/token.rs index c866613..f5e274e 100644 --- a/src/token.rs +++ b/src/token.rs @@ -56,6 +56,7 @@ impl std::fmt::Display for Lexeme { #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum TKind { Comment, + And, As, Break, Const, @@ -65,11 +66,13 @@ pub enum TKind { Fn, For, If, + In, Let, Loop, Macro, Match, Module, + Or, Public, Return, Struct,