From 905798804ec083a03f15c7f2b1035e0e8c3831da Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 2 Jul 2026 16:15:23 +0100 Subject: Tokenize box keyword --- .../java/org/zwobble/hobgoblin/compiler/parser/TokenType.java | 1 + .../java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java | 4 +++- .../org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java | 11 +++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src') 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 df86ae6..610359e 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_BOX, KEYWORD_ENUM, KEYWORD_FIELD, KEYWORD_FROM, 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 c0cf716..a07afc8 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(), "enum") == 0) { + if (CharSequence.compare(sourceRange.charSequence(), "box") == 0) { + tokenType = TokenType.KEYWORD_BOX; + } else if (CharSequence.compare(sourceRange.charSequence(), "enum") == 0) { tokenType = TokenType.KEYWORD_ENUM; } else if (CharSequence.compare(sourceRange.charSequence(), "field") == 0) { tokenType = TokenType.KEYWORD_FIELD; 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 848738a..78cc359 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java @@ -18,6 +18,17 @@ public class TokenizerTests { assertThat(tokens.tokens(), isSequence()); } + @Test + public void keywordBoxIsTokenized() { + var sourceText = SourceText.fromString("", "box"); + + var tokens = Tokenizer.tokenize(sourceText); + + assertThat(tokens.tokens(), isSequence( + equalTo(new Token(TokenType.KEYWORD_BOX, sourceRange(sourceText, 0, 3))) + )); + } + @Test public void keywordEnumIsTokenized() { var sourceText = SourceText.fromString("", "enum"); -- cgit v1.2.3