summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-06-19 17:51:21 +0100
committerMichael Williamson <mike@zwobble.org>2026-06-19 17:51:21 +0100
commit33cf8b7acae565510ddcdbbc0c63d6b93a924837 (patch)
tree4aaa053ce65c706fdd8d92f4db10f1da62ef234a /src
parent4f211efe89c3d86073369fc4b609ec8498aa61db (diff)
Parse enum keyword
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java4
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java11
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");