私は自分の言語のために小さなコンパイラを作ろうとしています。 私はすでにflexとbisonを使ってレクサーとパーサを書いていますが、パーサーではタイプチェックなどのためにどのように使用するのか分からないのでセマンティックアクションを使用していません。 私はセマンティックアナライザについて読んできました。パーサを使ってセマンティクス分析を実行するためには、どのステップを実行する必要があるのかを知りたいだけです。 NODE、ASTなどを作成する必要がありますか?その場合、どのようにするかの例をお勧めしますか?flexとbison:パーサーにセマンティクスアクションを追加する方法は?
-1
A
答えて
0
基本的なbison
パーサーは、文法で記述された言語と入力が一致するかどうかブール型の答えを返すだけです。それ以上のことをしたい場合(例えば、何らかの方法で記述されたプログラムをコンパイルするなど)、セマンティックアクションを追加する必要があります。
bisonのセマンティックアクションは非常に柔軟性があります。これらは任意のコードで、必要な処理を行うことができます。だからあなたは、あなたのプログラムの目標が何であれ、それを達成するためにあなたがそれらの行動で何をしたいかを決める必要があります。
bisonセマンティックアクションの背後にある一般的な考え方は、関連付けられたルールが縮小されたときにパーサーが各アクションを実行するため、ルールが縮小されるときに認識されるようにアクションを設定できるということです。このようにして、縮小されたルールの「意味」を評価して何らかの効果を生み出すか、後で処理するために便利な形式でASTの断片を生成することができます。ルールアクションは、以前に削減されたルールアクションの結果にボトムアップ方式でアクセスできます。あなたがすることは、あなたが望むものによって決まります。
関連する問題
- 1. yylex(bison/flex内)に引数を追加する方法は?
- 2. flex + bisonアセンブラにプリプロセッサを追加する方法はありますか?
- 3. 紛争Bisonは、パーサー
- 4. bison/flexシンタックスハイライターのインストール方法は?
- 5. フレックスとBisonを使用するパーサー
- 6. bisonへのflexエラーの発生方法
- 7. Flex-BISON:文を定義する方法は?
- 8. Flex/Bison IDE?
- 9. Bison&flexエラー
- 10. ターミナルエミュレータのバックエンドにパーサーとしてFlex/Bisonを使用するのは悪い考えですか?
- 11. Yacc/BisonパーサーとC++プログラムとのインターフェイス
- 12. XcodeにBison/Flex/Yaccを統合する
- 13. ArgvのFlex&Bison yyin []
- 14. flex + bison in php extension
- 15. bison 3.0.4とflexでWindows上でmingwとQt5.7を使用する方法
- 16. LexとYacc/Flexとbison構文エラー
- 17. flex/bisonソースコードにコメントを追加するにはどうすればいいですか?
- 18. CMake with flex/bison with CLION
- 19. BisonとFlexヘッダーの指示エラー
- 20. BisonパーサーでFlexの開始条件を処理する際に間違ったトークンがあります
- 21. Flex/Bisonの文字列を出力するインタプリタを作成する方法
- 22. nomパーサーに状態を追加する
- 23. GNUmakefileはbisonとflexプログラムをコンパイルできません
- 24. FlexでCoverFlowにコンポーネントを追加する
- 25. FlexをSpringに追加する利点
- 26. C、FlexとBison:エラー: 'yyerror'の相反するタイプ
- 27. yyinをargvに変更する[1] Flex&Bison
- 28. bison + flexを使って電卓を書くには
- 29. ベクトルへの引数の追加(Yacc/Bison)
- 30. Flexはbisonとの文字列一致を返すことができます