問題タブ [bison]
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.
ide - Flex / Bison IDE?
フレックスまたはバイソン、あるいはその両方で作業できる優れた開発環境を探しています。
これらの機能を備えている、および/またはこれに適しているIDEはありますか?
(次の最も一般的な質問ではない場合、IDEを備えたレクサー/パーサジェネレーターはありますか?)
ありがとう〜アレックス
bison - 生成されたファイルを配布に追加する最良の方法は?
autoconf / automakeを使用した非常に複雑な(C ++)プロジェクトがあります。これには、いくつかの「生成された」ファイル(foo.yy-> foo.cc)が含まれています。実際のビルドは、さまざまなプラットフォームで「制御スクリプト」(概念に精通している人のためのGentoo .ebuild)を使用して行われます。
現在、ターゲットプラットフォームの1つはfoo.yy-> foo.ccステップを適切にサポートしておらず、Linuxボックスで生成されたfoo.ccファイルを使用する必要があります。
今、私はこれについて行く2つの方法があります:
1)foo.ccをプロジェクトリポジトリにチェックインし、configure.in(またはその他)にパッチを適用してfoo.yy / foo.ccにタイムスタンプチェックを含め、問題のターゲットで古いターゲットで実行すると、わかりやすいエラーメッセージを生成します。 foo.cc;
2)foo.ccを制御スクリプトリポジトリにチェックインし、スクリプト制御のタイムスタンプを取得して、エラーメッセージを表示します。
2)問題ありませんが、foo.ccを配置するのに適切な場所ではないと思います。
一方、私はautoconf / automakeについてあまり知りませんし、configure.in(またはどこでも)にタイムスタンプチェック/エラーメッセージを実装する方法を知りません。
あなたの提案は何ですか、そしてここの誰かが解決策1)について行く方法を知っていますか?
編集:解決策3)を使用して解決し、foo.yy->foo.ccステップ自体を実行できるようになるまで問題のあるターゲットボックスを微調整します。私の問題は解決しました。
しかし、私は質問を開いたままにしておきます-autoconf / automakeでタイムスタンプチェック/わかりやすいエラーメッセージを実行する方法は?
c - レクサーをプログラミングするとき、tokens.h は何に使用されますか?
C でレクサーをプログラミングしていて、ヘッダー ファイルについてどこかで読みましたtokens.h
。そこにいますか?もしそうなら、その用途は何ですか?
c++ - vc6でバイソンとフレックスを使用する
vc6でbison&flexを使用すると、以下のエラーが発生しました
lex.yy.c(395):エラーC2146:構文エラー:欠落している';' 識別子'YY_PROTO'の前lex.yy.c(395):致命的なエラーC1004:予期しないファイルの終わりが見つかりました
これの原因は何でしょうか?助けてください。
コメントからコピー:
c - Bison の %union 値を初期化するには?
バイソンには組合があります
そしてこんな風に使いたい
レックスでは:
それよりも
簡単にメモリリークを防ぐには
ただし、最初に std::string を sval に割り当てる方法が必要です。
どうやってやるの?
c - yaccまたはBisonとFlexを使用してforeachキーワードを作成する
インタプリタプログラミング言語を開発しました。これはCに強く基づいています。問題は、foreach
ディレクティブを追加したいのですが、その方法がわかりません。
パーサーとレクサージェネレーターとしてBisonとFlexを使用しています。
yacc - Yacc/Bison、数学演算をグループ化して量を最小限に抑える
ここで計算ソースを見ていますhttp://epaperpress.com/lexandyacc/
calc.y にこれらの行が表示されます
それらをグループ化する方法はありますか?代わりに以下のようなものを書くことができますか?
注: バイソンを使用しています。
compiler-construction - bison と flex でインデントをブロック区切りとして使用する方法
bison + flex でブロック区切り文字としてインデントを実装する方法を知りました。ちょうどパイソンのように。私は独自のプログラミング言語を書いています (主に楽しみのためですが、ゲーム エンジンと一緒に使用するつもりです)。
私はすでに C でコンパイラ (実際には「langToy」から Nasm へのトランスレータ) を作成しましたが、失敗しました。なんらかの理由で、ソース ファイル全体で 1 つの文字列しか処理できませんでした (まあ、私は 48 時間以上起きていたので... ご存知のように、脳のメルトダウンです)。
中括弧および/または begin -> end の実装が簡単なのか (それを行うのに問題はありません)、それともロックアップするのは私の脳だけなのかはわかりません。
前もって感謝します!
更新:わかりました、フレックスでそれを行う方法についての手がかりがありません。複数の DEDENT をパーサーに返すのに問題があります。Flex/Bison は私にとって比較的新しいものです。
更新 2: これは、これまでに思いついたフレックス ファイルです。よくわかりません:
あなたはそれをいじってみることができます、多分あなたは私が欠けているものを見るでしょう. 複数の dedent を返すことは、Haxe では簡単です ( return t_dedent( num ); )。
このコードは、インデント/デデントと常に正しく一致するとは限りません。
更新 3: flex への希望をあきらめて、自分のやり方でやろうと思います。誰かが flex でそれを行う方法を知っていれば、とにかくそれを聞いてうれしいです.
parsing - yacc での可変長リストの許可
次の構造を解析できるようにしたいと思います。
私はフレックスを使用してトークン化していますが、それは完全に機能しています。解析には yacc (bison) を使用しています。
この構造を許可するための推奨される方法は何ですか? 現在、私のtest.yファイルには次のものがあります。
strcat() は本当に、本当に悪い考えだと思います。私は lex/yacc に関してはまったくの初心者なので (約 3 時間の経験があります)、手首を叩いて正しい方向を示すポインターがあれば最高です。
編集: これの目的は、外部アプリケーション用のテスト ハーネスを作成できるようにすることです。字句解析/解析は、ユーザーが提供するテスト スクリプトを解釈するために使用されます。1 つのコマンドで、ユーザーはアプリケーションにメッセージを送信できます。次に、複数行の応答を読み取り、ユーザーがスクリプトで提供した可変長の文字列リストと比較します。上に投稿したフラグメントは、考えられる応答をユーザーに定義させようと考えた方法です。
例えば:
また
c - Bison/Yacc と再帰規則を使用して配列を構築する方法
Bison を使用して、次のようにすべてを 1 つの長い文字列にまとめる方法を見つけました。
と:
しかし、問題は、2 番目のルールで $2 を再度分割して解析する必要があることです。連結を使用する代わりに配列を設定する方法はありますか? 私はこれについて間違った方法で進んでいますか?
理にかなっているリンクされたリストのようなものを構築する必要がある場合は、arg_list にバインドしてメモリをクリーンアップする適切な方法がわからないだけです。