From 865fe465239c68d20dd069b1b525002bab040f4b Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 9 Mar 2018 10:57:08 +0200 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20kawaii-=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D0=BE?= =?UTF-8?q?=D1=80=20^^?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/annimon/ownlang/parser/Lexer.java | 1 + src/main/java/com/annimon/ownlang/parser/Parser.java | 4 ++++ src/main/java/com/annimon/ownlang/parser/TokenType.java | 1 + .../java/com/annimon/ownlang/parser/ast/BinaryExpression.java | 1 + 4 files changed, 7 insertions(+) diff --git a/src/main/java/com/annimon/ownlang/parser/Lexer.java b/src/main/java/com/annimon/ownlang/parser/Lexer.java index eea695a..ca4332a 100644 --- a/src/main/java/com/annimon/ownlang/parser/Lexer.java +++ b/src/main/java/com/annimon/ownlang/parser/Lexer.java @@ -80,6 +80,7 @@ public final class Lexer { OPERATORS.put("@=", TokenType.ATEQ); OPERATORS.put("..", TokenType.DOTDOT); OPERATORS.put("**", TokenType.STARSTAR); + OPERATORS.put("^^", TokenType.CARETCARET); OPERATORS.put("?:", TokenType.QUESTIONCOLON); } diff --git a/src/main/java/com/annimon/ownlang/parser/Parser.java b/src/main/java/com/annimon/ownlang/parser/Parser.java index 6fe5724..7f5c860 100644 --- a/src/main/java/com/annimon/ownlang/parser/Parser.java +++ b/src/main/java/com/annimon/ownlang/parser/Parser.java @@ -629,6 +629,10 @@ public final class Parser { result = new BinaryExpression(BinaryExpression.Operator.AT, result, multiplicative()); continue; } + if (match(TokenType.CARETCARET)) { + result = new BinaryExpression(BinaryExpression.Operator.CARETCARET, result, multiplicative()); + continue; + } break; } diff --git a/src/main/java/com/annimon/ownlang/parser/TokenType.java b/src/main/java/com/annimon/ownlang/parser/TokenType.java index f949651..d30bbd2 100644 --- a/src/main/java/com/annimon/ownlang/parser/TokenType.java +++ b/src/main/java/com/annimon/ownlang/parser/TokenType.java @@ -72,6 +72,7 @@ public enum TokenType { TILDE, // ~ CARET, // ^ + CARETCARET, // ^^ BAR, // | BARBAR, // || AMP, // & diff --git a/src/main/java/com/annimon/ownlang/parser/ast/BinaryExpression.java b/src/main/java/com/annimon/ownlang/parser/ast/BinaryExpression.java index 347ceb8..3749ae7 100644 --- a/src/main/java/com/annimon/ownlang/parser/ast/BinaryExpression.java +++ b/src/main/java/com/annimon/ownlang/parser/ast/BinaryExpression.java @@ -33,6 +33,7 @@ public final class BinaryExpression implements Expression { // Addition operators for future usage or overloading AT("@"), + CARETCARET("^^"), RANGE(".."), POWER("**"), ELVIS("?:");