diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-08 21:22:43 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-08 21:22:43 +0100 |
| commit | f8bcf996119e07114b191b54bc01444bd602804a (patch) | |
| tree | 978c6ecba429d5c9e445210d54a1ac83d1c57396 /src/main/java | |
| parent | f48c702780581edb1022fab7f938260089432d06 (diff) | |
Parse equality
Diffstat (limited to 'src/main/java')
4 files changed, 6 insertions, 2 deletions
diff --git a/src/main/java/org/shedlang/compiler/parser/OperatorPrecedence.java b/src/main/java/org/shedlang/compiler/parser/OperatorPrecedence.java index 109499de..6bd5319a 100644 --- a/src/main/java/org/shedlang/compiler/parser/OperatorPrecedence.java +++ b/src/main/java/org/shedlang/compiler/parser/OperatorPrecedence.java @@ -1,8 +1,9 @@ package org.shedlang.compiler.parser; public enum OperatorPrecedence { - ADD(1), - CALL(2); + EQUALS(1), + ADD(2), + CALL(3); private final int precedence; diff --git a/src/main/java/org/shedlang/compiler/parser/Parser.java b/src/main/java/org/shedlang/compiler/parser/Parser.java index 0915f1bd..f163236b 100644 --- a/src/main/java/org/shedlang/compiler/parser/Parser.java +++ b/src/main/java/org/shedlang/compiler/parser/Parser.java @@ -154,6 +154,7 @@ public class Parser { } private static final Map<TokenType, OperationParser> OPERATION_PARSERS = Stream.of( + new BinaryOperationParser(TokenType.SYMBOL_EQUALS_EQUALS, OperatorPrecedence.EQUALS, UntypedBinaryOperator.EQUALS), new BinaryOperationParser(TokenType.SYMBOL_PLUS, OperatorPrecedence.ADD, UntypedBinaryOperator.ADD), new BinaryOperationParser(TokenType.SYMBOL_MINUS, OperatorPrecedence.ADD, UntypedBinaryOperator.SUB), new CallParser() diff --git a/src/main/java/org/shedlang/compiler/parser/TokenType.java b/src/main/java/org/shedlang/compiler/parser/TokenType.java index 9f439e03..2b810988 100644 --- a/src/main/java/org/shedlang/compiler/parser/TokenType.java +++ b/src/main/java/org/shedlang/compiler/parser/TokenType.java @@ -20,6 +20,7 @@ public enum TokenType { SYMBOL_COMMA, SYMBOL_DOT, SYMBOL_EQUALS, + SYMBOL_EQUALS_EQUALS, SYMBOL_MINUS, SYMBOL_PAREN_OPEN, SYMBOL_PAREN_CLOSE, diff --git a/src/main/java/org/shedlang/compiler/parser/Tokeniser.java b/src/main/java/org/shedlang/compiler/parser/Tokeniser.java index 2f967452..e06109b1 100644 --- a/src/main/java/org/shedlang/compiler/parser/Tokeniser.java +++ b/src/main/java/org/shedlang/compiler/parser/Tokeniser.java @@ -27,6 +27,7 @@ public class Tokeniser { RegexTokeniser.rule(TokenType.STRING, "\"(?:[^\\\\\"\n\r]|\\\\.)*\""), RegexTokeniser.rule(TokenType.WHITESPACE, "[\r\n\t ]+"), + RegexTokeniser.rule(TokenType.SYMBOL_EQUALS_EQUALS, "=="), RegexTokeniser.rule(TokenType.SYMBOL_THIN_ARROW, "->"), RegexTokeniser.rule(TokenType.SYMBOL_BANG, "!"), |
