問題タブ [flex-lexer]
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.
bison - FlexスキャナーでBisonのエラートークンを返すにはどうすればよいですか?
Bisonは、エラーから回復するためにBisonパーサーで使用できる特別なエラートークン(「エラー」と呼ばれる)を使用します。Flexによって生成されたスキャナーからこの特定のトークンを返す方法はありますか?
visual-c++ - Windows での Flex/bison コンパイル エラー
Linux で問題なくコンパイルできる lex および yacc ファイルがあります。lex.yy.c & y.tab.c ファイルを使用して Visual C++ を使用して Windows でコンパイルしようとすると、次のエラーが発生します。
184行目は
bison - FLEX/BISON : ルールが認識されないのはなぜですか?
FLEX と BISON で少しエクササイズをしようとしています。
ここに私が書いたコードがあります:
calc_pol.y
calc_pol.l
メイクファイル
何が悪いのか分かりますか?ありがとう
編集: エラー メッセージは
flex calc_pol.l: calc_pol.l:18: règle non reconnue
18 行目は で始まる行{reel}
であり、エラー メッセージは「認識されないルール」として英語に変換されます。
parsing - yacc / byacc/bisonおよびlex/flexの適切な使用
これらのユーティリティに関して私が読んだほとんどの投稿は、通常、同じ効果を得るために他の方法を使用することを提案しています。たとえば、通常これらのツールに言及している質問には、次のいくつかを含む少なくとも1つの回答があります。
- ブーストライブラリを使用します(ここに適切なブーストライブラリを挿入します)
- DSLの使用を作成しないでください(ここにお気に入りのスクリプト言語を挿入してください)
- Antlrの方が優れています
開発者を想定して...
- ...C言語に慣れている
- ...少なくとも1つのスクリプト言語(Python、Perlなど)を知っています
- ...作業中のほぼすべてのプロジェクトで解析コードを作成する必要があります
だから私の質問は:
- これらのユーティリティに適した適切な状況は何ですか?
- yaccとlex(または派生物)よりも問題のより良い代替手段がない(合理的な)状況はありますか?
- 実際の構文解析の問題で、yaccとlexの欠点に遭遇することがどれくらいの頻度で予想できますか?これらは、より最近の解決策によってより適切に対処されますか?
- これらのツールにまだ精通していない開発者にとって、構文/イディオムの学習に時間を費やす価値はありますか?これらは他のソリューションとどのように比較されますか?
c - YACC、Lex、および C ファイル間でメモリを共有する
YACC (Bison) 文法、Lex (Flex) トークナイザー、およびstruct
(または実際には任意の変数) を共有する必要がある C プログラムがあります。現在、文法ファイルで実際のオブジェクトを宣言し、extern
それを必要な場所 (つまり、私の C ソース ファイル) で宣言します。通常はポインターを使用して操作します。C ファイルと文法ファイルの間に、データ構造の操作に役立つ関数を含む共有ヘッダー (および実装) ファイルがあります。これは機能しますが、少し不快に感じます。文法とプログラムの間でメモリを共有するより良い方法はありますか?
c - 同じプログラムで使用するために、lex/yacc から異なる yyparse 関数を生成するにはどうすればよいですか?
lex/yacc から 2 つの別個の解析関数を生成したいと考えています。通常、yacc は関数 yyparse() を提供します。これは、何らかの構文解析を行う必要があるときに呼び出すことができますが、それぞれが異なるレクサーと文法に関連付けられたいくつかの異なる yyparse が必要です。man ページでは -p (プレフィックス) フラグが提案されているようですが、これはうまくいきませんでした。yylval が適切に再ラベル付けされていないことを示す gcc からのエラーを受け取りました (つまり、いくつかの異なるトークンが定義されていないと主張しています)。これらの個別の関数を生成するための一般的な手順を知っている人はいますか?
ありがとう
makefile - YaccとLexの包含の混乱
yyparseの呼び出しを含むMakefileを使用してプログラムを正しくコンパイルする方法を知りたいですか?
これが私がすることです:
私はすべての通常のファイルをコンパイルするMakefileを持っていますが、それらはy.tab.cまたはlex.yy.cへの接続を持っていません(私はそれらを持っているはずですか?)
私は自分のコードに加えてこれを行います:
これは私がプログラムを作ろうとすると何が起こるかです:
「make」と入力するだけで、多くの警告が表示されます。いくつかの例を以下に示します。
関数yywrap':
/src/parser.y:12: multiple definition of
yywrap'server.o:/src/parser.y:12:最初にここで定義されたutils.o:
関数yyparse':
/src/y.tab.c:1175: multiple definition of
yyparse'でserver.o:/src/y.tab.c:1175:最初にここで定義されたutils.o
さまざまなyy_***ファイルを参照するとさまざまなエラーが発生します。過去にyyparseを複数回呼び出して正常にコンパイルしましたが、今回は違うようです。どこかの包含問題のようにひどいようですが、それが何であるかはわかりません。すべてのヘッダーファイルにもifndef条件があります。
ご協力いただきありがとうございます!
flex-lexer - flex のコンパイル エラー (字句解析器)
Windows コンピュータに flex (Adobe プログラムではなく字句解析プログラム) をインストールしようとしています。MSYSをインストールしました。flex を untar して ./configure しますが、作成しようとすると次のエラーが発生します。
最近まで、私は .exe を使用してインストールしただけだったので、これにはかなり混乱しています。bison と m4 のインストールはどちらもスムーズに進みました。何か案は?
dll - flex ファイルを dll にコンパイルする
flex (cygwin) で作成されたレクサーがあります。通常、私はそれを .exe ファイルにコンパイルします。
最新のプロジェクトでは、Windows XP で実行されるより大きな C# プログラムで使用するレクサーが必要です。もちろん、System.Diagnostics.Process を使用してファイルを実行できます。しかし、そのプログラムを複数のマシンで実行したいので、それは私にとって最良の解決策ではありません。
レキサーのソースコードを持つ cygwin で dll を作成するにはどうすればよいですか?
前もって感謝します... Szpilona