問題タブ [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.
c - Lemon のトークン デストラクタのカスタム割り当て解除関数
私は、Lemon に単純な C に似た式を解析させ、既知の名前を持つ事前定義された一連の変数に対する整数と文字列の比較をサポートしてもらいたいと考えています。簡単にするために、文字列比較のみをサポートしているとしましょう。したがって、次の文字列は、私が話している式の種類の良い例です。
したがって、レクサーは次の順序でパーサーに値を入力する必要があります。
最初にデコードしなければならないエスケープ シーケンスが含まれている可能性があるため、パーサーに渡されるリテラル文字列の複製を作成する必要があります。しかし、解析が完了した後、誰がメモリを解放する責任があるのでしょうか? 幸いなことに、Lemon がその%destructor
指令で助けに来てくれるので、次のように書くことができます。
しかし実際には、パーサーとレクサーmalloc
でstrdup
との使用法をハードコーディングしたくありません。free
アロケーターとデアロケーター関数をパラメーターとして渡すことができるようにしたいのですが、それらをparserInit
andだけでなくparserFree
、トークンの割り当てと割り当て解除にも使用します。
parserAlloc
両方malloc
をfree
同時に渡すための追加のパラメーターを宣言するにはどうすればよいですか? Lemon には%extra_argument
ディレクティブがありますが、トークンをフィードするたびにパラメーターを渡す必要があります。
c - CMake を使用したビルド エラー
CMake で flex とレモンのプロジェクトをビルドしようとすると、ビルド エラーが発生します。何が間違っているかを見つけるのを手伝ってもらえますか?
私のCMakeビルドファイルは
c - flex-lexer と cmake を使用したビルド エラー
私はcmakeとflex-lexerを学んでいますが、makeからのエラーメッセージによると、エラーコード2でビルドの問題が発生します:
私のビルドファイルは
変更する必要があるのはコンパイラ オプションですか? 私のファイル構造は次のとおりです。
私のフレックス文法は
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 };
c - 不明な変数「mystring」はなぜですか?
mystring
以前の質問に従っているべきだと思うのに、変数が不明な理由をデバッグしようとしています
私の文法は
次に、私のメインループは
mystring
null が何かであると期待しているのに、なぜnull なのですか? セグメンテーション違反が発生します:
プロジェクト全体は私の githubにあります。