diff options
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 0fb4750..da9a37f 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java @@ -8,6 +8,7 @@ enum TokenType { KEYWORD_FIELD, KEYWORD_STRUCT, KEYWORD_SUM, + KEYWORD_VARIANT, 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 f3704f3..d09ed64 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java @@ -90,6 +90,8 @@ class Tokenizer { tokenType = TokenType.KEYWORD_STRUCT; } else if (CharSequence.compare(sourceRange.charSequence(), "sum") == 0) { tokenType = TokenType.KEYWORD_SUM; + } else if (CharSequence.compare(sourceRange.charSequence(), "variant") == 0) { + tokenType = TokenType.KEYWORD_VARIANT; } 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 b73775a..698a70d 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java @@ -52,6 +52,17 @@ public class TokenizerTests { } @Test + public void keywordVariantIsTokenized() { + var sourceText = SourceText.fromString("<string>", "variant"); + + var tokens = Tokenizer.tokenize(sourceText); + + assertThat(tokens.tokens(), isSequence( + equalTo(new Token(TokenType.KEYWORD_VARIANT, sourceRange(sourceText, 0, 7))) + )); + } + + @Test public void alphabeticIdentifierIsTokenized() { var sourceText = SourceText.fromString("<string>", "blah"); |
