LR剖析器 LR剖析器是一種由下而上bottomup的上下文無關語法剖析器LR意指由左Left至右處理輸入字串並以最右邊優先衍生Right derivation的推導順序相對於LL剖析器建構語法樹能以此方式剖析的語法稱為LR語法而在LRk這樣的名稱中k代表的是剖析時所需前瞻符號lookahead symbol的數量也就是除了目前處理到的輸入符號之外還得再向右參照幾個符號之意省略 k時即視為LR而非LR 由於LR剖析器嘗試由剖析樹的葉節點開始向上一層層透過文法規則的化簡最後规约回到樹的根部起始符號所以它是一種由下而上的剖析方法許多程式語言使用LR描述文法因此許多編譯器都使用LR剖析器分析原始碼的文法結構來源請求LR剖析的優點如下 眾多的程式語言都可以用某種LR剖析器或其變形分析文法C是個著名的例外 LR剖析器可以很有效率的建置 對所有由左而右掃描原始碼的剖析器而言LR剖析器可以在最短的時間內偵測到文法錯誤這是指文法無法描述的字串 然而LR剖析器很難以人工的方式設計一般使用剖析產生器parser generator或編譯器的編譯器compilercompiler產生編譯器的工具來建構它LR剖析器可根據剖析表parsing table的建構方式分類為簡單LR剖析器SLR Simple LR parser前瞻LR剖析器LALR Lookahead LR parser以及正統LR剖析器 Canonical LR parser這些解析器都可以處理大量的文法規則其中LALR剖析器較SLR剖析器強大而正統LR剖析器又比LALR剖析器能處理更多的文法著名的Yacc即是用來產生LALR剖析器的工具