構文解析アルゴリズムとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 構文解析アルゴリズムの意味・解説 

構文解析アルゴリズム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/11/21 17:57 UTC 版)

LR法」の記事における「構文解析アルゴリズム」の解説

LR法アルゴリズム次のように動作する: スタックは [0] で初期化される。現在状態は常にスタックトップにある状態で表される。 現在状態と入力にある記号からアクション表を参照する。ここで4つケースがある:sn に従って状態遷移する。現在の終端記号入力ストリームから取り除く。 状態 n をスタックプッシュし、それを現在状態とする。 rm に従って文法規則適用する番号 m を出力ストリーム書き出す。 m 番の規則右側にある各記号についてスタックから状態を削除する例えば E * B なら3個ポップする)。 その時点のスタックトップを状態とし、それと m 番の文法規則左側からGOTO表参照し、そこにある状態をスタックプッシュして新たな態とする。 受容場合文字列構文解析完了アクション指定されていない場合文法エラー報告する上のステップを「受容」となるか「文法エラー」となるまで繰り返す。 このアルゴリズムが何故うまく動作するのかを説明するため、文字列 "1 + 1" をこの構文解析器解析する例を示す。下記の表はその処理の各ステップ示したのである。状態はスタックトップ示されている(一番右の値)。次のアクション上にあるアクション表を参照して決めている。また、入力最後を示すため、 $ が追加されている。 状態入力ストリーム出力ストリームスタック次のアクション0 1+1$ [0] Shift 2 2 +1$ [0,2] Reduce 5 4 +1$ 5 [0,4] Reduce 3 3 +1$ 5,3 [0,3] Shift 6 6 1$ 5,3 [0,3,6] Shift 2 2 $ 5,3 [0,3,6,2] Reduce 5 8 $ 5,3,5 [0,3,6,8] Reduce 2 3 $ 5,3,5,2 [0 3] Accept 構文解析開始したとき、常に状態 0 から始まる。スタック次のようになっている: [0] 構文解析器最初に見る入力記号は '1' であり、アクション表を参照すると状態 2 への遷移指示されているので、スタック次のうになる: [0 '1' 2] スタックトップ右端である。なお、説明のために状態遷移原因となった記号(ここでは '1')をその前に記している。もちろん、本当スタックにはこのような記号プッシュされない。 状態 2 ではアクションによれば次の入力記号何であれ5 番文法規則適用しなければならない。これはつまり、5 番規則右辺認識したことを示す。そこで、出力ストリームに 5 を書き出しスタックから1個の状態をポップし、GOTO表から(状態 0 で非終端記号 B)状態 4 をスタックプッシュする。結果としてスタック次のうになる: [0 B 4] 状態 4 の場合アクション表を見ると文法規則 3 番適用をしなければならない。そこで出力ストリームに 3 を書き出しスタックから1個の状態をポップして、GOTO表から(0、E)状態 3 を新たにプッシュする。スタック次のうになる: [0 E 3] 次の入力記号を見ると '+' であり、アクションによれば状態 6 に遷移なければならない。 [0 E 3 '+' 6] このスタック有限オートマトン動作履歴のようなものであり、現在は非終端記号 E を読んだ直後終端記号 '+' を読んだ状態を示している。このオートマトン状態遷移表アクション表の shift 指定GOTO表から構成される次の入力記号は '1' なので、アクション表から状態 2 への遷移となる: [0 E 3 '+' 6 '1' 2] 前に '1' を読んだときと同様、文法規則適用により B に還元されスタック次のうになる: [0 E 3 '+' 6 B 8] これは有限オートマトンが、非終端記号 E と 終端記号 '+' と 非終端記号 B を順に読んだ状態である。状態 8 では常に規則 2 番適用する。従ってスタック上の3個の状態がその文法規則右辺の3個の記号対応する。 [0 E 3] 最後に '$' を入力ストリームから読むと、現在状態は 3 なので「受容」すなわち構文解析完了である。以上から出力ストリーム書かれる規則番号の列は [5, 3, 5, 2] となる。これは "1 + 1" という文字列右端導出する際の適用規則列を逆転させたものと同じである。

※この「構文解析アルゴリズム」の解説は、「LR法」の解説の一部です。
「構文解析アルゴリズム」を含む「LR法」の記事については、「LR法」の概要を参照ください。

ウィキペディア小見出し辞書の「構文解析アルゴリズム」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「構文解析アルゴリズム」の関連用語

構文解析アルゴリズムのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



構文解析アルゴリズムのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのLR法 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS