bison

    4

    1答えて

    lex/yacc(flex/bison)を使用するときにメッセージ/プロンプトを表示する方法を理解しようとしています。例えば が、メインはそうのようになります。yylexのを呼び出してyacc呼び出す int main(int argc, char *argv[]) { yyparse(); } 、()。これにより、STDINを待機する空白行が生成されます。どのように私は...の

    40

    2答えて

    「...には宣言された型を持っていない」: warning: $$ of 'exp' has no declared type. それが何を意味する: %{ #include <iostream> int yylex(); void yyerror(const char*); %} %union { char name[100]; int

    0

    1答えて

    Name=Valueペアのリストを解析しようとしています。値には空白以外の値を含めることができます(値には等号を含めることができます)。 名前は通常の識別子文字に制限されています。 問題は、 'Value'トークンがすべて一致することです。例えば、入力のために: dude=sweet パーサは「値」トークン(およびMismatchedTokenExceptionを投げる)と全体入力と一致します

    6

    5答えて

    私はYACC(実際はBison)に文法を書いていますが、シフト/リダクションの問題があります。これは、後置インクリメントおよびデクリメント演算子をインクルードすることによって発生します。ここでは文法のトリムダウンバージョンです: %token NUMBER ID INC DEC %left '+' '-' %left '*' '/' %right PREINC %left POS

    6

    4答えて

    私はすでにある種の文法のパーサを持っているアプリケーションを持っています。もう1つ別の文法を追加する必要があります。 複数の可能性がありますか? もしそうなら、別のエントリーポイントはどうやって手に入りますか? おかげ デビッド・アラン・フィンチ

    5

    2答えて

    私はLexとYACC(実際にFlexとBison)を使ってコンパイラを作成しています。この言語は、任意のシンボル(C#など)への無制限の前方参照を可能にします。問題は、識別子が何であるか知らずに言語を解析することは不可能だということです。 私が知っている唯一の解決策は、ソース全体をレックスし、次に「幅優先」解析を行うことです。クラス宣言や関数宣言などの上位レベルのものは、関数を使用する関数の前に解

    8

    3答えて

    私は、UTF-8文字を処理するBisonパーサを作成しようとしています。パーサが実際にUnicode文字の値を解釈するのは望ましくありませんが、UTF-8文字列を一連のバイトとして解析する必要があります。 今、バイソンには問題がある次のコード生成: if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF

    49

    7答えて

    フレックス/バイソンパーサーを使ってread-eval-printループを作成します。問題は、フレックス生成されたレクサーはFILE *型の入力を望んでおり、char *にしたいと思います。これを行うためにとにかくありますか? パイプを作成し、それに文字列を送り、ファイル記述子を開いてレクサーに送信することをお勧めします。これはかなりシンプルですが、複雑なプラットフォームではありません。より良い方

    11

    3答えて

    私はPHPでFlex/Bison(またはLex/Yacc、et。al。)のサポートを受ける方法を探しています。具体的には、Web UIにブール値のクエリパーサーを実装しています.Cのパーサーを呼び出したり、Pythonなどに渡すのではなく、PHPの内部ですべての操作を保持しています。 PHPのための

    2

    1答えて

    Bison(.y)ファイルとflex(.lex)ファイルを書くためのコーディング規則とガイドラインは何ですか? コードセクションの長さとスタイルを記述してください。 おかげで、 アサフ P.S.、 あり、それhereについての古いスレッドですが、私は、より詳細な回答を探しています(とSOそれを持っています!)。