summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-09-27 10:37:37 +0100
committerMichael Williamson <mike@zwobble.org>2026-09-27 10:37:37 +0100
commit659c2fefd53dbc55c68a247785a8b21d7b94d382 (patch)
tree7c5ceab8f853483478d955dea65b0a2434e0d2ac /src
parentdc7d56121033af35bfdbe22e945884262b1d4410 (diff)
Tokenize parens
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java2
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java10
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java22
3 files changed, 34 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 df86ae6..2a85072 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java
@@ -22,6 +22,8 @@ enum TokenType {
SYMBOL_DOT,
SYMBOL_DOT_DOT,
SYMBOL_FORWARD_SLASH,
+ SYMBOL_PAREN_OPEN,
+ SYMBOL_PAREN_CLOSE,
SYMBOL_SEMICOLON,
SYMBOL_SQUARE_OPEN,
SYMBOL_SQUARE_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 c0cf716..dc06612 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java
@@ -186,6 +186,16 @@ class Tokenizer {
iterator.skip();
break;
+ case '(':
+ tokenType = TokenType.SYMBOL_PAREN_OPEN;
+ iterator.skip();
+ break;
+
+ case ')':
+ tokenType = TokenType.SYMBOL_PAREN_CLOSE;
+ iterator.skip();
+ break;
+
case ';':
tokenType = TokenType.SYMBOL_SEMICOLON;
iterator.skip();
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..39aded5 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java
@@ -206,6 +206,28 @@ public class TokenizerTests {
}
@Test
+ public void symbolParenOpenIsTokenized() {
+ var sourceText = SourceText.fromString("<string>", "(");
+
+ var tokens = Tokenizer.tokenize(sourceText);
+
+ assertThat(tokens.tokens(), isSequence(
+ equalTo(new Token(TokenType.SYMBOL_PAREN_OPEN, sourceRange(sourceText, 0, 1)))
+ ));
+ }
+
+ @Test
+ public void symbolParenCloseIsTokenized() {
+ var sourceText = SourceText.fromString("<string>", ")");
+
+ var tokens = Tokenizer.tokenize(sourceText);
+
+ assertThat(tokens.tokens(), isSequence(
+ equalTo(new Token(TokenType.SYMBOL_PAREN_CLOSE, sourceRange(sourceText, 0, 1)))
+ ));
+ }
+
+ @Test
public void symbolSemicolonIsTokenized() {
var sourceText = SourceText.fromString("<string>", ";");