Fix оператор логического отрицания

This commit is contained in:
Victor 2015-04-16 15:23:10 +03:00
parent 377b7f6df1
commit 8954e36007
3 changed files with 9 additions and 3 deletions

View File

@ -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);

View File

@ -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();
}

View File

@ -52,6 +52,7 @@ public enum TokenType {
IF,
ELSE,
ENDIF,
NOT,
// команды
RENPY_PAUSE,