|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ 法 : [ほう] 1. (n,n-suf) Act (law: the X Act)
LR法またはLR構文解析器とは、文脈自由文法の構文解析手法/構文解析器である。LR法では、入力を左(Left)から右に読んでいき、右端導出(Rightmost derivation)を行う。このためLRと名づけられている。「LR(''k'')」といった場合、''k'' は、消費をともなうことなく「先読み」が進められる入力記号の最大数を意味する。通常、''k'' は 1 であり、その場合省略されることが多い。LR(''k'')の構文解析器が対応する文脈自由文法も LR(''k'') と呼ばれる。 == 概要 == LR法はいわゆるボトムアップ構文解析を行う。つまり、葉から始めて最上位の構文要素にたどり着く。 ほとんどのプログラミング言語の文法は LR(1) で表されるため、LR法はコンパイラがソースコードの構文を解析する際によく使われる。 一般にLR構文解析器と言った場合、文脈自由文法に基づいた特定の言語を理解する特定の構文解析器を意味していることが多い。 LR法には次のような利点がある: * 多くのプログラミング言語がLR法(およびそれを一部改変したもの)で構文解析できる。例外として、C++とPerlがある。 * LR法の実装は非常に効率的である。 * 入力を左から右に読んでいく構文解析器の中では、LR構文解析器は構文エラーを可能な限り素早く検出できる。 LR法には次のような欠点がある: * LL法に比べ、コンパイルエラー時のエラーメッセージを適切に出しにくい。 LR構文解析器を1から書くのは難しく、パーサジェネレータを使って生成するのが一般的である。構文解析表の生成手法の違いにより、単純LR法(SLR)、LALR法、正規LR法に分類される。後者ほど大規模な文法を扱える(LALR法はSLR法より強力で、正規LR法はLALR法より強力である)。yaccはLALR法による構文解析器を生成する。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「LR法」の詳細全文を読む スポンサード リンク
|