簡體   English   中英

需要幫助編寫 Java 方法來執行遞歸下降解析

[英]Need help writing Java method to perform recursive descent parse

官方問題:

編寫 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
    }

我非常有信心我在這里有大致的想法,但我希望有人可以幫助我完善這個/確認我在正確的軌道上。

看起來(模糊地)您正在嘗試評估重復語句。 這不是遞歸下降解析所做的。 我期待這樣的事情(在偽代碼中):

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM