Мелкие исправления

This commit is contained in:
Victor 2015-04-16 19:41:52 +03:00
parent a10147782e
commit 8de37bfa4c

View File

@ -80,6 +80,7 @@ public final class Parser {
terminal = statement();
} catch (RuntimeException re) {
Logger.log("Parser.next()", re);
if (tokens.isEmpty()) return;
}
// антизацикливание
counter++;
@ -447,25 +448,25 @@ public final class Parser {
if (lookMatch(1, TokenType.EQ)) {
if (match(TokenType.EQ)) {
// ==
match(TokenType.EQ);
consume(TokenType.EQ);
expression = new BinaryExpression(Operator.EQUALS, expression, additive());
continue;
}
if (match(TokenType.GT)) {
// >=
match(TokenType.EQ);
consume(TokenType.EQ);
expression = new BinaryExpression(Operator.GTEQ, expression, additive());
continue;
}
if (match(TokenType.LT)) {
// <=
match(TokenType.EQ);
consume(TokenType.EQ);
expression = new BinaryExpression(Operator.LTEQ, expression, additive());
continue;
}
if (match(TokenType.EXCL)) {
// !=
match(TokenType.EQ);
consume(TokenType.EQ);
expression = new BinaryExpression(Operator.NOTEQUALS, expression, additive());
continue;
}
@ -552,9 +553,10 @@ public final class Parser {
// Расчёт уровня меню.
if (lookMatch(pos, TokenType.MENU) && lookMatch(pos + 1, TokenType.COLON)) {
level++;
pos++;
pos += 2;
}
if (lookMatch(pos, TokenType.ENDMENU)) {
pos++;
level--;
// Завершаем работу по достижению ENDMENU первого уровня.
if (level <= 0) break;
@ -570,9 +572,10 @@ public final class Parser {
while (true) {
if (lookMatch(pos, TokenType.IF)) level++;
else if (lookMatch(pos, TokenType.ENDIF)) {
pos++;
level--;
if (level <= 0) break;
}
} else if (lookMatch(pos, TokenType.EOF)) break;
pos++;
}
return pos;