diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-04-28 23:23:39 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-04-28 23:23:39 +0100 |
| commit | 0fe17002d4147ee641262cab20e66c6ba0d1b1e6 (patch) | |
| tree | 7bad0305897275d22858260272d4820e9dac0424 | |
| parent | 92708742a18a1a3de5eb59a2e7c12788aa199d9a (diff) | |
Tokenize sum keyword
3 files changed, 14 insertions, 0 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 bd2ce7b..0fb4750 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java @@ -7,6 +7,7 @@ enum TokenType { KEYWORD_FIELD, KEYWORD_STRUCT, + KEYWORD_SUM, SYMBOL_BRACE_OPEN, SYMBOL_BRACE_CLOSE, 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 fff1977..f3704f3 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java @@ -88,6 +88,8 @@ class Tokenizer { tokenType = TokenType.KEYWORD_FIELD; } else if (CharSequence.compare(sourceRange.charSequence(), "struct") == 0) { tokenType = TokenType.KEYWORD_STRUCT; + } else if (CharSequence.compare(sourceRange.charSequence(), "sum") == 0) { + tokenType = TokenType.KEYWORD_SUM; } else { tokenType = TokenType.IDENTIFIER; } 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 ac10214..b73775a 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java @@ -41,6 +41,17 @@ public class TokenizerTests { } @Test + public void keywordSumIsTokenized() { + var sourceText = SourceText.fromString("<string>", "sum"); + + var tokens = Tokenizer.tokenize(sourceText); + + assertThat(tokens.tokens(), isSequence( + equalTo(new Token(TokenType.KEYWORD_SUM, sourceRange(sourceText, 0, 3))) + )); + } + + @Test public void alphabeticIdentifierIsTokenized() { var sourceText = SourceText.fromString("<string>", "blah"); |
