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,