diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-05-30 17:26:52 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-05-30 17:26:52 +0100 |
| commit | 57ff00acc01cf5082601cd00a125afa02fa3cba8 (patch) | |
| tree | 34a4de4cd5536f967c0c2592013b9581627ba5d5 /src/main | |
| parent | 8f27dc73c45a8311233caf50f639b27ea1c99700 (diff) | |
Tokenize forward slash
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java | 1 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java | 19 |
2 files changed, 15 insertions, 5 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 e25a9f0..63ff5e1 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java @@ -16,6 +16,7 @@ enum TokenType { SYMBOL_BRACE_CLOSE, SYMBOL_COLON, SYMBOL_COMMA, + SYMBOL_FORWARD_SLASH, 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 7119cfd..35bbeda 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java @@ -44,16 +44,16 @@ class Tokenizer { return identifierOrKeyword; } - var symbol = tokenizeSymbol(iterator); - if (symbol.isPresent()) { - return symbol; - } - var docComment = tokenizeDocComment(iterator); if (docComment.isPresent()) { return docComment; } + var symbol = tokenizeSymbol(iterator); + if (symbol.isPresent()) { + return symbol; + } + throw ParseError.unexpectedTextError( "token", describeCharacter(iterator.peek()), @@ -150,6 +150,11 @@ class Tokenizer { iterator.skip(); break; + case '/': + tokenType = TokenType.SYMBOL_FORWARD_SLASH; + iterator.skip(); + break; + case ';': tokenType = TokenType.SYMBOL_SEMICOLON; iterator.skip(); @@ -203,6 +208,10 @@ class Tokenizer { } CharSequence peekSequence(int length) { + // TODO: fix this in source-text + if (length > this.iterator.remaining()) { + length = this.iterator.remaining(); + } return this.iterator.peekSequence(length); } |
