summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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.java2
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java11
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");