問題タブ [lemon]

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.

0 投票する
1 に答える
129 参照

c - Lemon のトークン デストラクタのカスタム割り当て解除関数

私は、Lemon に単純な C に似た式を解析させ、既知の名前を持つ事前定義された一連の変数に対する整数と文字列の比較をサポートしてもらいたいと考えています。簡単にするために、文字列比較のみをサポートしているとしましょう。したがって、次の文字列は、私が話している式の種類の良い例です。

したがって、レクサーは次の順序でパーサーに値を入力する必要があります。

最初にデコードしなければならないエスケープ シーケンスが含まれている可能性があるため、パーサーに渡されるリテラル文字列の複製を作成する必要があります。しかし、解析が完了した後、誰がメモリを解放する責任があるのでしょうか? 幸いなことに、Lemon がその%destructor指令で助けに来てくれるので、次のように書くことができます。

しかし実際には、パーサーとレクサーmallocstrdupとの使用法をハードコーディングしたくありません。freeアロケーターとデアロケーター関数をパラメーターとして渡すことができるようにしたいのですが、それらをparserInitandだけでなくparserFree、トークンの割り当てと割り当て解除にも使用します。

parserAlloc両方mallocfree同時に渡すための追加のパラメーターを宣言するにはどうすればよいですか? Lemon には%extra_argumentディレクティブがありますが、トークンをフィードするたびにパラメーターを渡す必要があります。

0 投票する
1 に答える
1354 参照

c - CMake を使用したビルド エラー

CMake で flex とレモンのプロジェクトをビルドしようとすると、ビルド エラーが発生します。何が間違っているかを見つけるのを手伝ってもらえますか?

私のCMakeビルドファイルは

0 投票する
2 に答える
727 参照

c - flex-lexer と cmake を使用したビルド エラー

私はcmakeとflex-lexerを学んでいますが、makeからのエラーメッセージによると、エラーコード2でビルドの問題が発生します:

私のビルドファイルは

変更する必要があるのはコンパイラ オプションですか? 私のファイル構造は次のとおりです。

私のフレックス文法は

0 投票する
2 に答える
133 参照

c - バグは文法にあるのか、それともコードにあるのか?

この文法が、単一引用符と二重引用符も実行できるはずのシェル コマンド言語に対して正しいかどうかはわかりません。重要なコマンドは機能するようですが、単純なコマンドls -al | sort | wc -lは単一引用符では機能しません:echo 'foo bar'機能しません。

シェルをスキャンして解析する私のコードは

CMakeのビルドファイルは

私のプロジェクトは私の githubで利用できます。バグのために一部のコマンドしか機能しない典型的なシェル セッションは次のとおりです。

両方のコマンドに同じバグがあることがわかります。シェルが引用符を取り除き、次のようにコマンドを実行するように、結果が必要なときにecho 'foo bar'文字化けします{echo} {'}{echo} {foo bar}

char *cmd[] = { "/usr/bin/echo", "foo bar", 0 };

0 投票する
2 に答える
105 参照

c - 不明な変数「mystring」はなぜですか?

mystring以前の質問に従っているべきだと思うのに、変数が不明な理由をデバッグしようとしています

バグは文法にあるのか、それともコードにあるのか?

私の文法は

次に、私のメインループは

mystringnull が何かであると期待しているのに、なぜnull なのですか? セグメンテーション違反が発生します:

プロジェクト全体は私の githubにあります。