diff options
| author | 2024-08-24 04:18:28 +0800 | |
|---|---|---|
| committer | 2024-08-24 04:18:28 +0800 | |
| commit | e897791330f0b36d61cd85ab5a1015d6194a35de (patch) | |
| tree | 8faa8ea7f4c9bcadbccc5af9e6f19ab0b2b1621c /lexer | |
| parent | Added fancier tuple argument specs. (diff) | |
| download | orang-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.java | 8 | ||||
| -rw-r--r-- | lexer/src/main/java/lv/enes/orang/lexer/Token.java | 2 |
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, |