From b018be7fb57e79b62e727c1fb00bfd474888ddf8 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 8 Jul 2023 21:25:13 +0100 Subject: Parse inequality --- src/main/java/org/shedlang/compiler/parser/Parser.java | 1 + src/main/java/org/shedlang/compiler/parser/TokenType.java | 1 + src/main/java/org/shedlang/compiler/parser/Tokeniser.java | 1 + 3 files changed, 3 insertions(+) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/parser/Parser.java b/src/main/java/org/shedlang/compiler/parser/Parser.java index f163236b..bfb756db 100644 --- a/src/main/java/org/shedlang/compiler/parser/Parser.java +++ b/src/main/java/org/shedlang/compiler/parser/Parser.java @@ -155,6 +155,7 @@ public class Parser { private static final Map OPERATION_PARSERS = Stream.of( new BinaryOperationParser(TokenType.SYMBOL_EQUALS_EQUALS, OperatorPrecedence.EQUALS, UntypedBinaryOperator.EQUALS), + new BinaryOperationParser(TokenType.SYMBOL_BANG_EQUALS, OperatorPrecedence.EQUALS, UntypedBinaryOperator.NOT_EQUAL), 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 2b810988..a7df78ff 100644 --- a/src/main/java/org/shedlang/compiler/parser/TokenType.java +++ b/src/main/java/org/shedlang/compiler/parser/TokenType.java @@ -14,6 +14,7 @@ public enum TokenType { KEYWORD_VAL, SYMBOL_BANG, + SYMBOL_BANG_EQUALS, SYMBOL_BRACE_OPEN, SYMBOL_BRACE_CLOSE, SYMBOL_COLON, diff --git a/src/main/java/org/shedlang/compiler/parser/Tokeniser.java b/src/main/java/org/shedlang/compiler/parser/Tokeniser.java index e06109b1..3a2f3e11 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_BANG_EQUALS, "!="), RegexTokeniser.rule(TokenType.SYMBOL_EQUALS_EQUALS, "=="), RegexTokeniser.rule(TokenType.SYMBOL_THIN_ARROW, "->"), -- cgit v1.2.3