問題タブ [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.
xml-parsing - bison/flex の単純な XML パーサー
bison/flex を使用して単純な xml パーサーを作成したいと考えています。検証、コメント、引数のみは必要ありません<tag>value</tag>
。値は数値、文字列、またはその他のいずれか<tag>value</tag>
です。
たとえば、次のようになります。
それが役に立てば、発生する可能性のあるすべてのタグの名前を知っています。特定のタグで保持できるサブタグの数を知っています。そのようなことをするバイソンパーサーを作成することは可能ですか:
タグとサブタグの数:
- 数値: 1 (値のみ)
- str: 1 (値のみ)
- 追加 | サブ | サブ | ムル | div: 2 (num | str | タグ、num | str | タグ)
上記のような AST を作成するための文法を教えていただけませんか?
localization - bison/flex からのエラー メッセージをローカライズする方法はありますか?
bison と flex を使用すると、ユーザーはエラー メッセージをネイティブにローカライズできますか? たとえば、次のメッセージを翻訳したいと思います:構文エラー、予期しない NUMBER、期待する $endを他の言語に変換し、NUMBER/$end をより人間が判読できるものに置き換えます。
parsing - flex/bison で Lisp/Scheme ライクな解析ツリーを構築する
単純な Lisp/scheme のようなコードを解析しようとしていました
それからツリーを構築すると、使用せずに C で解析を行うことができますbison
(つまり、
flex
トークンを返すためだけに使用し、再帰を使用してツリーを構築します)。しかし、bison
文法では、リストを構築するコードをどこに追加すればよいか (すなわち、どのルールを終端記号の蓄積に関連付け、構築されたリストを親ノードにリンクするか) がわかりません。
私の文法は次のようなものです: Lisp grammar in yacc 文法は正しく、コードを認識できます。
regex - 正規表現を提案する
誰かが以下のテキストの正規表現を提案できますか
サイン
テキストテキストもう少しテキスト
文章
..。
テキスト)
私は試しSignature\n.*\)
ましたが、これは
署名
テキスト)
基本的に、指定されたテキストで始まり、複数の新しい行を許可し、で終わる式)
。
ありがとう
regex - Flex がこれを「認識されていないルール」と言うのはなぜですか?
以下では:
エラー メッセージが表示される
の 2 番目のバージョンのコメントを外しarg_macro
、最初のバージョンのコメントを外すと、エラー メッセージは消えます。
理由はありますか?
lex - フレックスファイルでのコンパイルエラー
(科学的な)Cプログラム用の単純な入出力ライブラリと一緒に使用できる単純な字句解析プログラムを構築しようとしています。automake、libtool、autoconfなどのautotoolsでコンパイルすると、次のエラーが発生します。
これは通常、関数プロトタイプの最後にあるセミコロンを忘れたことを意味しますが、ヘッダーを確認したので、そのような欠落はありません。
simpleio_lex.lは次のとおりです。
*compilation*
Emacsのバッファハイパーリンク%}%
は、プリアンブルの最後にあるを参照しています。なぜこのエラーが発生するのですか?「of」という記号もありません。
ありがとう、
ジョエル
memory-leaks - 予期しないトークンによるフレックス/バイソンのメモリリークの修正
私はフレックスバイソンアプリケーションを持っています。いくつかのトークンについては、strdupを使用してflexからyytextをコピーします。これは、予期しないトークンのエラーがある場合を除いて、うまく機能します。
簡単な例
と
ここで、入力を渡したとします。
レクサーは最初のIDENTトークンを送信し、スタックにプッシュされます。最初のトークンの後、ブラケットトークンが必要ですが、代わりに別のIDENTトークンを取得します。これは構文エラーです。デストラクタは最初のIDENTトークンで呼び出されますが、2番目のトークン(予期しないもの)では呼び出されません。予期しないトークンを破壊する方法を見つけることができませんでした。誰かが私がそれをどのようにすべきか知っていますか?
bison - yyparse への未定義の参照 (flex & bison)
Flex/Bison を学ぼうとしていて、John Levine (O'Reilly) による Flex & Bison を読んでいます。実行する必要がある例がありますが、次のエラーが発生するため実行できません。
4 つのソース ファイルがあります。
fb3-1.h :
fb3-1.l
fb3-1.y
fb3-1funcs.c
ビルドするには:
パッケージ「flex」と「bison」がインストールされたUbuntu 10.04 x64を実行しています。このエラーが発生する理由と修正方法を知っている人はいますか? 前もって感謝します :)
c++ - Visual C++ で Flex を使用するにはどうすればよいですか?
Visual C++ で Flex を使用しようとしています。ただし、生成されたレクサー (空でルールがない) は、ビルド中に次のエラーをスローします。
ソースファイルは次のとおりです。
このターゲットを Visual Studio プロジェクトに追加してビルドしています。
Flex を MSVC で使用することはできますか?
c - パーサージェネレーターを使用するのが実際的なのはいつですか?
私が書いている Web アプリケーション用の単純なテキスト テンプレート言語を書いています (Google の ctemplate を考えてください)。完了すると、「評価して実行する」、「評価して印刷する」、「html を評価してエスケープする」、「コメントする」など、少数の可能なアクションのみを取り上げます。パーサー全体をゼロから手書きすることを考えていましたが、lex、flex、antlr などのパーサー ジェネレーターを調べ始めました。これらは、私の単純な構文に必要以上のもののようです。問題は、どの時点でパーサー ジェネレーターを使用するのが実用的かということです。