衝突・構文エラーの解決ノウハウとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 衝突・構文エラーの解決ノウハウの意味・解説 

衝突・構文エラーの解決ノウハウ

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/16 05:20 UTC 版)

Yacc」の記事における「衝突・構文エラーの解決ノウハウ」の解説

Yacc実行時なんらかの衝突報告されるとき、および、上記パーサ実行時正しいはずの入力syntax errorとなるときの主な対処方法には、次のようなものがある。 syntax error発生時に少なくともそのときトークン値、状態スタック中の状態番号列およびソースファイル上の行番号文字番号出力するように作っておくことで、正確な調査可能にする。 ある非終端記号から別の非終端記号に至る呼び出しパス複数あれば、それは間違いなので直す前述)。 「トークンまたは空である」といった非終端記号をひとつの構文右辺中に複数並べることによって、衝突生じていることがある。ひとつの右辺中には省略のないトークンだけを使うようにする。そして、省略する、しないのすべての組合せは、右辺種類として列挙してOR(|)結合する形に変更する人間には等価ないし汚くなるように思えても、Yaccにとっては明瞭化になる。 リストのリストは、繰り返し要素にinなどの接頭辞的なトークン伴わない定義などでは、要素がどの段階リスト属するのかという曖昧性生じる。この場合リスト段階数を減らすように工夫して明瞭化する。 問題非終端記号を使う場面ごとに、元が同じ文字列でも別のトークンから構成するように、定義を変更して明瞭化する。そのためにそのトークン上述のようにLex段階で、場面に応じて変換し分ける。 パーサ実行時期待トークンで、あるトークン複数場面でどう絡んでいるかを調べるには、y.outputファイルでその状態番号を見つけて熟読し、その状態番号飛んでくる状態を1, 2段階さかのぼってたどってみると見えてくるものである。y.outputにはまた、状態番号に対して衝突種類トークンに対して実行されないアクションを囲むカッコ「[ ]」が出力されているので、場所や影響分かる原因調査難航している場合は、問題のある文法要素周辺の定義だけを抽出したミニ文法”をYacc定義し障害ぎりぎり再現する境目探しすことで切り分けるアプローチもある。 混乱招いているトークンを含む連続した2個以上のトークンを、Lex段階で1個の別トークンまとめて明瞭化する。 上記場面パーサシフト還元の状態だけでは記述しきれないとき、Lex段階その場面を識別するための内部状態をもち、はいってくるトークンを見ながら状態遷移することで問題箇所検出する。そして、検出時には別のトークン変更して出したり、特別なトークン挿入することで明瞭化する。 上記明瞭化努力によって、Bison実行報告される衝突数が減少した場合は、効果出ている場合が多いが、減少しなくても、特定の入力に対しての処理がエラーから正常に変わって改善している場合もある。増加した場合逆効果として調べ必要がある入力言語あまりに複雜な場合、またはプリプロセッサ命令含んでいる場合パース2段階の直列構成にするという大胆な解決策もある。すなわち、1段階めの前処理Yaccパーサ曖昧性解決するだけのための簡単な文法で動く。その出力曖昧性解決したトークン列を2段階めの本処理Yaccパーサに渡す。3段以上にすることが有効な場合もあろう。文法性格によっては、この構成にすることで、むしろそれぞれすっきりさせることができる(エラー位置表示処理は複雜になる)。

※この「衝突・構文エラーの解決ノウハウ」の解説は、「Yacc」の解説の一部です。
「衝突・構文エラーの解決ノウハウ」を含む「Yacc」の記事については、「Yacc」の概要を参照ください。

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



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

辞書ショートカット

すべての辞書の索引

「衝突・構文エラーの解決ノウハウ」の関連用語

1
6% |||||

衝突・構文エラーの解決ノウハウのお隣キーワード
検索ランキング

   

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



衝突・構文エラーの解決ノウハウのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS