diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-06-19 17:51:21 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-06-19 17:51:21 +0100 |
| commit | 33cf8b7acae565510ddcdbbc0c63d6b93a924837 (patch) | |
| tree | 4aaa053ce65c706fdd8d92f4db10f1da62ef234a | |
| parent | 4f211efe89c3d86073369fc4b609ec8498aa61db (diff) | |
Parse enum keyword
3 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java index 8277653..df86ae6 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java @@ -6,6 +6,7 @@ enum TokenType { IDENTIFIER, WHITESPACE, + KEYWORD_ENUM, KEYWORD_FIELD, KEYWORD_FROM, KEYWORD_IMPORT, diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java index 8acde49..c0cf716 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java @@ -122,7 +122,9 @@ class Tokenizer { var sourceRange = start.to(end); TokenType tokenType; - if (CharSequence.compare(sourceRange.charSequence(), "field") == 0) { + if (CharSequence.compare(sourceRange.charSequence(), "enum") == 0) { + tokenType = TokenType.KEYWORD_ENUM; + } else if (CharSequence.compare(sourceRange.charSequence(), "field") == 0) { tokenType = TokenType.KEYWORD_FIELD; } else if (CharSequence.compare(sourceRange.charSequence(), "from") == 0) { tokenType = TokenType.KEYWORD_FROM; diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java index 0440719..848738a 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java @@ -19,6 +19,17 @@ public class TokenizerTests { } @Test + public void keywordEnumIsTokenized() { + var sourceText = SourceText.fromString("<string>", "enum"); + + var tokens = Tokenizer.tokenize(sourceText); + + assertThat(tokens.tokens(), isSequence( + equalTo(new Token(TokenType.KEYWORD_ENUM, sourceRange(sourceText, 0, 4))) + )); + } + + @Test public void keywordFieldIsTokenized() { var sourceText = SourceText.fromString("<string>", "field"); |
