問題タブ [bisonc++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Bison/flex はルールを認識した後、入力を待ちます
字句解析および構文解析用に次のファイルがあります。
lexico.l
シンタクティコ
次のエントリは正しい必要があります: mkdisk -size=20。size ルールのコードは実行されますが、instr ルールのコードを実行するには CTRL + D を押す必要があります。コードに追加するために何が欠けていますか? パーサーは語彙的ですか、それとも構文的ですか?
編集: パーサーから EOL トークンを削除しました。私が本当に理解していないのは、パーサーがエントリが終了したことをどのように認識するのですか? コンソールで mkdisk -size = 20 コマンドを入力した後、ENTER キーを押します。入力が ENTER で終わることを Bison に伝えるにはどうすればよいですか? アナライザーがエントリーを待って分析を終了するのはなぜですか?
c++ - C++ で Flex と Bison を使用するときに yylval を設定するにはどうすればよいですか
C++ で Flex と Bison を使用しています。両方の C バージョンでは、yylval はトークンに関する情報を格納するグローバル ユニオン変数です。
Bison C++では、yylvalはsemantic_typeと呼ばれ、クラスメンバー変数です。Flex C++ からトークンのセマンティック情報を設定するにはどうすればよいですか? Flex C++ では、lexer もクラスであり、メンバ変数として semantic_type を持ちません。
私はこのようなことをしたい: