summaryrefslogtreecommitdiff
path: root/lexer
diff options
context:
space:
mode:
authorGravatar Uko Kokņevičs2024-08-24 04:18:28 +0800
committerGravatar Uko Kokņevičs2024-08-24 04:18:28 +0800
commite897791330f0b36d61cd85ab5a1015d6194a35de (patch)
tree8faa8ea7f4c9bcadbccc5af9e6f19ab0b2b1621c /lexer
parentAdded fancier tuple argument specs. (diff)
downloadorang-e897791330f0b36d61cd85ab5a1015d6194a35de.tar.gz
orang-e897791330f0b36d61cd85ab5a1015d6194a35de.tar.xz
orang-e897791330f0b36d61cd85ab5a1015d6194a35de.zip
Added array access.
Diffstat (limited to 'lexer')
-rw-r--r--lexer/src/main/java/lv/enes/orang/lexer/Lexer.java8
-rw-r--r--lexer/src/main/java/lv/enes/orang/lexer/Token.java2
2 files changed, 10 insertions, 0 deletions
diff --git a/lexer/src/main/java/lv/enes/orang/lexer/Lexer.java b/lexer/src/main/java/lv/enes/orang/lexer/Lexer.java
index ac336f4..5cea0a3 100644
--- a/lexer/src/main/java/lv/enes/orang/lexer/Lexer.java
+++ b/lexer/src/main/java/lv/enes/orang/lexer/Lexer.java
@@ -95,6 +95,14 @@ public class Lexer implements Iterator<Token> {
95 } 95 }
96 case '(' -> new Token(Token.Type.PAREN_LEFT, input.next()); 96 case '(' -> new Token(Token.Type.PAREN_LEFT, input.next());
97 case ')' -> new Token(Token.Type.PAREN_RIGHT, input.next()); 97 case ')' -> new Token(Token.Type.PAREN_RIGHT, input.next());
98 case '.' -> {
99 var first = input.next();
100 if (input.peek().cp() == '[') {
101 yield new Token(Token.Type.PERIOD_BRACKET_LEFT, first, input.next());
102 } else {
103 yield new Token(Token.Type.PERIOD, first);
104 }
105 }
98 case '+' -> new Token(Token.Type.PLUS, input.next()); 106 case '+' -> new Token(Token.Type.PLUS, input.next());
99 case '?' -> { 107 case '?' -> {
100 var first = input.next(); 108 var first = input.next();
diff --git a/lexer/src/main/java/lv/enes/orang/lexer/Token.java b/lexer/src/main/java/lv/enes/orang/lexer/Token.java
index 13236dd..65e0f1d 100644
--- a/lexer/src/main/java/lv/enes/orang/lexer/Token.java
+++ b/lexer/src/main/java/lv/enes/orang/lexer/Token.java
@@ -54,6 +54,8 @@ public record Token(Type type, String literal) {
54 MINUS_GREATER, 54 MINUS_GREATER,
55 PAREN_LEFT, 55 PAREN_LEFT,
56 PAREN_RIGHT, 56 PAREN_RIGHT,
57 PERIOD,
58 PERIOD_BRACKET_LEFT,
57 PLUS, 59 PLUS,
58 QUESTION_EQUAL, 60 QUESTION_EQUAL,
59 SEMICOLON, 61 SEMICOLON,