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

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