Нужна помощь в написании метода Java для выполнения анализа рекурсивного спуска
Официальная проблема:
Напишите метод 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
}
Я довольно уверен, что у меня есть общая идея, но я надеялся, что кто-то может помочь мне отшлифовать это / подтвердить, что я на правильном пути.. Спасибо заранее!
1 ответ
Решение
Похоже (смутно), что вы пытаетесь оценить повторное утверждение. Это не то, что делает анализ рекурсивного спуска. Я ожидаю что-то вроде этого (в псевдокоде):
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);
}