問題タブ [jison]
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.
javascript - 単純なジソン文法による解析エラー
簡単なスクリプト言語を作成しようとしています。最初は、次のようなものが欲しかっただけです
そこで、jison の次の文法を作成しました。
文法に文句を言わずにパーサーを生成します。私の問題は、私がするときです
このエラーが発生します
これは私を完全に混乱させます:/ 最初に演算子を期待するルールはありません。演算子を期待する唯一のルールは AssignStatements ですが、それらはすべて最初のオブジェクトとして CHAR_SQUEENCE を期待しています。
私は何か間違ったことをしていますか?または、なぜ機能しないのですか?さらに情報が必要な場合は、お気軽にお問い合わせください:)
javascript - Jison で配列を作成する
プログラミング言語に配列のサポートを追加しようとしていますが、問題が発生しています
ただし、これは「[1,2,3,4]」を解析しません。Jison は、"]" を期待しているのに "," になったと教えてくれました。何か案は?
parsing - ジソンの文法定義が間違ったトークン認識につながる
私は最近プロジェクトjisonを見つけ、その Web サイトから電卓の例を変更しました。( http://zaach.github.io/jison/demos/calc/ )
上記の文法定義によって生成されたパーサーで文字列「aaabbbaaba」を解析すると、
残念ながら、なぜTOKEN1
が正しく見つからないのかわかりません。トークン INVALID を削除すると、解析エラーが発生します
Issue with a Jison Grammar, Strange error from generate dparserで、同様のエラー メッセージが表示される関連付けエラーの説明を見つけましたが、自分のコードで同様のものを見つけることができませんでした。
この問題の解決策は何ですか?
c - C プログラムの AST をビルドする際のコンテキスト条件
Javascript で C (サブセット) のインタープリターを作成しています (ブラウザーでプログラムの実行を視覚化したいと考えています)。
最初のステップとして、ユーザー プログラムの AST ツリーを作成します。これには、flex/bizon の組み合わせに似た Jison を使用しています。
今のところ、プログラムをトークン化し、解析して、標準で指定された文法に準拠しているかどうかを確認します (typedef によって導入されたあいまいさの問題はそのままにしておきます)。
ただし、C 文法に準拠していても、プログラムが意味を成すとは限りません。たとえば、
x は宣言されていませんが、文法に準拠しています ("jklfds" || "jklgfd") は関数ポインターではありません - 型はチェックされません。一般に、チェックされていない多くのコンテキスト条件があります。
ASTツリーを構築する際にどこまでチェックすればよいか悩んでいます。たとえば、この時点で理論的には、定数式を完全に計算して確認するのは簡単です。ただし、他のチェックの多くにはコンテキストが必要です。たとえば、解析中に、一部の識別子がプログラムで以前に宣言された構造体を参照していることを知ることは可能ですか?
ASTツリーをそのまま構築し、ASTを複数回分析/変換してコンテキストの制約をチェックし、ますます多くの条件が正しいことを証明するのはどうですか? 解析中のチェックよりも簡単/難しいでしょうか?
私は最も友好的な解決策を探しています。その速度は気にしません。
javascript - ジソン再帰
私はジソンのコツをつかもうとしています。ちょっと困りますけどね。次のパーサーは、何を指定しても常に [] を返します。
問題は明らかに、非終端記号の私の定義にありprogram
ます。それを宣言する適切な方法は何でしょうか?
parsing - 入力内の長さと位置に基づいてトークンを取得する
私の入力では、次のように、区切り記号で区切られていない文字のストリームがあります。
位置と長さに基づいてトークン化するパーサー (JISON を使用) を作成したいのですが、これが私のトークンである必要があります。
どうすればこれを達成できるかアドバイスをいただけますか。次のようにトークンを追加しようとしました。
しかし、予想どおり、これは機能していません:)
文字の長さで解析するこの種の入力を解析する方法はありますか?