官方问题:
编写Java方法,对以下结果进行递归下降解析:
<repeat_statement> -> REPEAT <statement> UNTIL <expression> ;这就是我想出来的:
void repeatStatement() {
if(token == REPEAT) {
token = getNextToken();
if(parseStatement()) {
if(token == UNTIL) {
token = getNextToken();
if(parseExpression()) {
if(token == ;) {
return true
}
}
}
} return false
}我很有信心在这里我已经有了大概的想法,但我希望有人能帮我完善/确认我在正确的轨道上。在进阶时谢谢!
发布于 2012-01-30 04:52:45
它看起来(模糊地)看起来像是您在尝试计算repeat语句。这不是递归下降解析所做的。我希望是这样的(在伪代码中):
RepeatStatement repeat_statement() throws ParseException {
if (!consume("REPEAT")) {
throw new ParseException("no REPEAT token");
}
Statement statement = statement();
if (!consume("UNTIL")) {
throw new ParseException("no UNTILtoken");
}
Expression expression = expression();
if (!consume(";")) {
throw new ParseException("no closing semicolon");
}
return new RepeatStatement(statement, expression);
}https://stackoverflow.com/questions/9056596
复制相似问题