From 8954e36007192368473e563782f3ab363b820a3f Mon Sep 17 00:00:00 2001 From: Victor Date: Thu, 16 Apr 2015 15:23:10 +0300 Subject: [PATCH] =?UTF-8?q?Fix=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=87=D0=B5=D1=81=D0=BA?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=BE=D1=82=D1=80=D0=B8=D1=86=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/annimon/everlastingsummer/Lexer.java | 1 + src/com/annimon/everlastingsummer/Parser.java | 10 +++++++--- src/com/annimon/everlastingsummer/TokenType.java | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/com/annimon/everlastingsummer/Lexer.java b/src/com/annimon/everlastingsummer/Lexer.java index 610a612..c81d43e 100644 --- a/src/com/annimon/everlastingsummer/Lexer.java +++ b/src/com/annimon/everlastingsummer/Lexer.java @@ -54,6 +54,7 @@ public final class Lexer { KEYWORDS.put("if", TokenType.IF); KEYWORDS.put("else", TokenType.ELSE); KEYWORDS.put("endif", TokenType.ENDIF); + KEYWORDS.put("not", TokenType.NOT); KEYWORDS.put("renpy.pause", TokenType.RENPY_PAUSE); KEYWORDS.put("persistent.sprite_time", TokenType.PERSISTENT_SPRITE_TIME); diff --git a/src/com/annimon/everlastingsummer/Parser.java b/src/com/annimon/everlastingsummer/Parser.java index c9f1a08..fea8065 100644 --- a/src/com/annimon/everlastingsummer/Parser.java +++ b/src/com/annimon/everlastingsummer/Parser.java @@ -412,6 +412,13 @@ public final class Parser { } private Expression expression() { + return notTest(); + } + + private Expression notTest() { + if (match(TokenType.NOT)) { + return new ValueExpression( notTest().eval() != 0 ? 0 : 1 ); + } return equality(); } @@ -459,9 +466,6 @@ public final class Parser { if (match(TokenType.PLUS)) { return primary(); } - if (match(TokenType.EXCL)) { - return new ValueExpression( primary().eval() != 0 ? 0 : 1 ); - } return primary(); } diff --git a/src/com/annimon/everlastingsummer/TokenType.java b/src/com/annimon/everlastingsummer/TokenType.java index 3e17aeb..7fcaf25 100644 --- a/src/com/annimon/everlastingsummer/TokenType.java +++ b/src/com/annimon/everlastingsummer/TokenType.java @@ -52,6 +52,7 @@ public enum TokenType { IF, ELSE, ENDIF, + NOT, // команды RENPY_PAUSE,