現在你知道為什麼我們需要了解遞歸下降解析中消除左遞迴的方式,以下面文法來說
我們可能會將定義改成
這個解法在對應的 parser combinator 中看起來像是
mutual def term := parse_int <|> parens expr def expr : Parsec E := let l <- term match '+' let r <- term return E.add l r end
現在你知道為什麼我們需要了解遞歸下降解析中消除左遞迴的方式,以下面文法來說
我們可能會將定義改成
這個解法在對應的 parser combinator 中看起來像是
mutual def term := parse_int <|> parens expr def expr : Parsec E := let l <- term match '+' let r <- term return E.add l r end