[06 - Top Down Parser] Fix "program1*" tests except "program18ExprAll"
This commit is contained in:
Binary file not shown.
@@ -138,7 +138,7 @@ public class XParser {
|
|||||||
|
|
||||||
if ((id = parseToken(Token.ID)) != null
|
if ((id = parseToken(Token.ID)) != null
|
||||||
&& (assign = parseToken(Token.ASSIGN)) != null
|
&& (assign = parseToken(Token.ASSIGN)) != null
|
||||||
&& (numExpr = parseNumExpr0()) != null) {
|
&& (numExpr = parseNumExpr()) != null) {
|
||||||
tree.addLastChild(id);
|
tree.addLastChild(id);
|
||||||
tree.addLastChild(assign);
|
tree.addLastChild(assign);
|
||||||
tree.addLastChild(numExpr);
|
tree.addLastChild(numExpr);
|
||||||
@@ -149,75 +149,60 @@ public class XParser {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Tree parseNumExpr0() {
|
private Tree parseNumExpr() {
|
||||||
int oldPosition = in.getPosition();
|
int oldPosition = in.getPosition();
|
||||||
Tree tree = new Tree(new Token(Token.EXPR));
|
Tree tree = new Tree(new Token(Token.EXPR));
|
||||||
Tree intConst, a, operator, b;
|
Tree a, b, operator;
|
||||||
|
|
||||||
if ((intConst = parseNumExpr2()) != null) {
|
|
||||||
tree.addLastChild(intConst);
|
|
||||||
return tree;
|
|
||||||
}
|
|
||||||
in.setPosition(oldPosition);
|
|
||||||
|
|
||||||
if (((a = parseNumExpr2()) != null)
|
if (((a = parseNumExpr2()) != null)
|
||||||
&& ((operator = parseToken(Token.MULT)) != null
|
&& (((operator = parseToken(Token.PLUS)) != null
|
||||||
|| ((operator = parseToken(Token.DIV)) != null
|
|| (operator = parseToken(Token.MINUS)) != null))
|
||||||
|| ((operator = parseToken(Token.PLUS)) != null
|
&& (b = parseNumExpr()) != null) {
|
||||||
|| ((operator = parseToken(Token.MINUS)) != null))))
|
|
||||||
&& ((b = parseNumExpr()) != null)) {
|
|
||||||
tree.addLastChild(a);
|
tree.addLastChild(a);
|
||||||
tree.addLastChild(operator);
|
tree.addLastChild(operator);
|
||||||
tree.addLastChild(b);
|
tree.addLastChild(b);
|
||||||
return tree;
|
return tree;
|
||||||
}
|
}
|
||||||
|
|
||||||
in.setPosition(oldPosition);
|
in.setPosition(oldPosition);
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Tree parseNumExpr() {
|
if ((a = parseNumExpr2()) != null) {
|
||||||
int oldPosition = in.getPosition();
|
tree.addLastChild(a);
|
||||||
Tree tree = new Tree(new Token(Token.EXPR));
|
|
||||||
Tree id, intConst;
|
|
||||||
|
|
||||||
if ((intConst = parseNumExpr2()) != null) {
|
|
||||||
tree.addLastChild(intConst);
|
|
||||||
return tree;
|
return tree;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((id = parseToken(Token.ID)) != null) {
|
|
||||||
tree.addLastChild(id);
|
|
||||||
return tree;
|
|
||||||
}
|
|
||||||
|
|
||||||
in.setPosition(oldPosition);
|
in.setPosition(oldPosition);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Tree parseNumExpr2() {
|
private Tree parseNumExpr2() {
|
||||||
int oldPosition = in.getPosition();
|
int oldPosition = in.getPosition();
|
||||||
Tree tree = new Tree(new Token(Token.EXPR2));
|
Tree tree = new Tree(new Token(Token.EXPR2));
|
||||||
Tree id, intConst;
|
Tree a, b, operator;
|
||||||
|
|
||||||
if ((intConst = parseNumExpr3()) != null) {
|
if (((a = parseNumExpr3()) != null)
|
||||||
tree.addLastChild(intConst);
|
&& (((operator = parseToken(Token.MULT)) != null
|
||||||
|
|| (operator = parseToken(Token.DIV)) != null))
|
||||||
|
&& (b = parseNumExpr2()) != null) {
|
||||||
|
tree.addLastChild(a);
|
||||||
|
tree.addLastChild(operator);
|
||||||
|
tree.addLastChild(b);
|
||||||
return tree;
|
return tree;
|
||||||
}
|
}
|
||||||
in.setPosition(oldPosition);
|
in.setPosition(oldPosition);
|
||||||
|
|
||||||
if ((id = parseToken(Token.ID)) != null) {
|
if ((a = parseNumExpr3()) != null) {
|
||||||
tree.addLastChild(id);
|
tree.addLastChild(a);
|
||||||
return tree;
|
return tree;
|
||||||
}
|
}
|
||||||
in.setPosition(oldPosition);
|
in.setPosition(oldPosition);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Tree parseNumExpr3() {
|
private Tree parseNumExpr3() {
|
||||||
int oldPosition = in.getPosition();
|
int oldPosition = in.getPosition();
|
||||||
Tree tree = new Tree(new Token(Token.EXPR3));
|
Tree tree = new Tree(new Token(Token.EXPR3));
|
||||||
Tree id, intConst;
|
Tree sign, intConst, id, num, lbr, rbr;
|
||||||
|
|
||||||
if ((intConst = parseToken(Token.INTCONST)) != null) {
|
if ((intConst = parseToken(Token.INTCONST)) != null) {
|
||||||
tree.addLastChild(intConst);
|
tree.addLastChild(intConst);
|
||||||
@@ -225,6 +210,14 @@ public class XParser {
|
|||||||
}
|
}
|
||||||
in.setPosition(oldPosition);
|
in.setPosition(oldPosition);
|
||||||
|
|
||||||
|
if (((sign = parseToken(Token.MINUS)) != null
|
||||||
|
&& ((intConst = parseToken(Token.INTCONST))) != null)) {
|
||||||
|
tree.addLastChild(sign);
|
||||||
|
tree.addLastChild(intConst);
|
||||||
|
return tree;
|
||||||
|
}
|
||||||
|
in.setPosition(oldPosition);
|
||||||
|
|
||||||
if ((id = parseToken(Token.ID)) != null) {
|
if ((id = parseToken(Token.ID)) != null) {
|
||||||
tree.addLastChild(id);
|
tree.addLastChild(id);
|
||||||
return tree;
|
return tree;
|
||||||
|
|||||||
Reference in New Issue
Block a user