summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-11-06 15:16:20 +0000
committerMichael Williamson <mike@zwobble.org>2026-11-06 15:16:20 +0000
commita1d3da9e2c2e0526a2d004cda035e761626b2f85 (patch)
tree6af2dbc3e548bba58c8f81742bd16603dda2de11
parent84062cb137c2bc0f18eadcfbcc85a5ca10c81d2b (diff)
Tokenize ==
-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, 16 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 e38f3c7..12626cc 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java
@@ -21,6 +21,7 @@ enum TokenType {
SYMBOL_DOLLAR,
SYMBOL_DOT,
SYMBOL_DOT_DOT,
+ SYMBOL_EQUALS_EQUALS,
SYMBOL_FAT_ARROW,
SYMBOL_FORWARD_SLASH,
SYMBOL_PAREN_OPEN,
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 0b88b5c..63973a6 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java
@@ -156,6 +156,10 @@ class Tokenizer {
tokenType = TokenType.SYMBOL_FAT_ARROW;
iterator.skip();
iterator.skip();
+ } else if ("==".contentEquals(iterator.peekSequence(2))) {
+ tokenType = TokenType.SYMBOL_EQUALS_EQUALS;
+ iterator.skip();
+ iterator.skip();
} else {
switch (iterator.peek()) {
case '{':
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 86fb1f9..1e7025d 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java
@@ -195,6 +195,17 @@ public class TokenizerTests {
}
@Test
+ public void symbolEqualsEqualsIsTokenized() {
+ var sourceText = SourceText.fromString("<string>", "==");
+
+ var tokens = Tokenizer.tokenize(sourceText);
+
+ assertThat(tokens.tokens(), isSequence(
+ equalTo(new Token(TokenType.SYMBOL_EQUALS_EQUALS, sourceRange(sourceText, 0, 2)))
+ ));
+ }
+
+ @Test
public void symbolFatArrowIsTokenized() {
var sourceText = SourceText.fromString("<string>", "=>");