Automata-theory-pda-and-parsing

提供:Dev Guides
移動先:案内検索

プッシュダウンオートマトンと解析

構文解析は、文法の生成規則を使用して文字列を導出するために使用されます。 文字列の受け入れ可能性を確認するために使用されます。 コンパイラは、文字列が構文的に正しいかどうかを確認するために使用されます。 パーサーは入力を受け取り、解析ツリーを構築します。

パーサーは2種類あります-

  • トップダウンパーサー-トップダウン解析は、start-symbolで先頭から開始し、解析ツリーを使用して文字列を取得します。
  • Bottom-Up Parser -ボトムアップ解析は、文字列で下から始まり、解析ツリーを使用して開始シンボルに到達します。

トップダウンパーサーの設計

トップダウン解析の場合、PDAには次の4種類の遷移があります-

  • スタックの最上部のプロダクションの左側にある非ターミナルをポップし、右側の文字列を押します。
  • スタックの一番上のシンボルが読み取られている入力シンボルと一致する場合、それをポップします。
  • スタックに開始記号「S」を押し込みます。 *入力文字列が完全に読み込まれ、スタックが空の場合、最終状態「F」に進みます。

次のプロダクションルールを使用して、文法Gの式「x + y* z」のトップダウンパーサーを設計します-

P:S→S + X | X、X→X * Y | Y、Y→(S)| id

  • 溶液 *

PDAが(Q、∑、S、δ、q〜0〜、I、F)の場合、トップダウン解析は-

(x + y* z、I)⊢(x + y z、SI)⊢(x + y z、S + XI)⊢(x + y *z、X + XI)

⊢(x + y* z、Y + X I)⊢(x + y z、x + XI)⊢(+ y z、+ XI)⊢(y *z、XI)

⊢(y* z、X YI)⊢(y z、y * YI)⊢(* z、* YI)⊢(z、YI)⊢(z、zI)⊢(ε、I)

ボトムアップパーサーの設計

ボトムアップ解析の場合、PDAには次の4種類の遷移があります-

  • 現在の入力シンボルをスタックにプッシュします。
  • スタックの最上部にあるプロダクションの右側を左側に置き換えます。
  • スタック要素の上部が現在の入力シンボルと一致する場合、ポップします。 *入力文字列が完全に読み取られ、開始記号「S」がスタックに残っている場合のみ、それをポップして最終状態「F」に進みます。

次のプロダクションルールを使用して、文法Gの式「x + y* z」のトップダウンパーサーを設計します-

P:S→S + X | X、X→X * Y | Y、Y→(S)| id

  • 溶液 *

PDAが(Q、∑、S、δ、q〜0〜、I、F)の場合、ボトムアップ解析は-

(x + y* z、I)⊢(+ y z、xI)⊢(+ y z、YI)⊢(+ y z、XI)⊢(+ y z、SI)

⊢(y * z、+ SI)⊢(* z、y + SI)⊢(* z、Y + SI)⊢(* z、X + SI)⊢(z、 *X + SI)

(ε、z* X + SI)⊢(ε、Y * X + SI)⊢(ε、X + SI)⊢(ε、SI)