Token currentToken = sjavaTokenManager.getNextToken();
boolean checkToken(int expectedTokenType) {
if (currentToken.kind == expectedTokenType) {
currentToken = sjavaTokenManager.getNextToken();
} else {
error("Parse error")
}
}
void ParseS() {
switch(currentToken.kind) {
case sjavaConstants.PRINT:
checkToken(sjavaConstants.PRINT);
checkToken(sjavaConstants.LEFT_PARENTHESIS);
ParseE();
checkToken(sjavaConstants.RIGHT_PARENTHESIS);
break;
case sjavaConstants.WHILE:
checkToken(sjavaConstants.WHILE);
checkToken(sjavaConstants.LEFT_PARENTHESIS);
ParseE();
checkToken(sjavaConstants.RIGHT_PARENTHESIS);
ParseS();
break;
case sjavaConstants.LEFT_BRACE:
checkToken(sjavaConstants.LEFT_BRACE);
ParseL();
checkToken(sjavaConstants.RIGHT_BRACE);
break;
default:
error("Parse error");
}
}
void ParseE() {
switch(currentToken.kind) {
case sjavaConstants.IDENTIFIER:
checkToken(sjavaConstants.IDENTIFIER);
break;
case sjavaConstants.INTEGER_LITERAL
checkToken(sjavaConstants.INTEGER_LITERAL)
break;
default:
error("Parse Error");
}
}
void ParseL() {
switch(currentToken.kind) {
case RIGHT_BRACE:
break;
default:
ParseS();
ParseL();
}
}