問題タブ [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.

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

grammar - ジソン: 実際には競合がないところに競合を減らす

小さなプロジェクト用の型付き変数も含む小さな JavaScript パーサーを生成しようとしています。

幸いなことに、jison はすでに jscore.js を提供しており、これを自分のニーズに合わせて調整しました。タイプを追加した後、削減の競合に遭遇しました。この最小の JISON に問題を最小化しました。

ジソン:

実際、このスクリプトは 2 つのステートメントを解析するだけです。

変数ステートメント

ExpStatement

これは非常に最小化された JISON スクリプトであるため、単純に「Type」を「IDENT」に置き換えることはできません (ところで、これはうまくいきました)。

パーサーを生成すると、次の競合がスローされます。

この競合を解決するためのトリックはありますか?

よろしくお願いします!〜ベンジャミン

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

javascript - 文法のあいまいさを扱う Jison でパーサーを生成するにはどうすればよいですか?

言語ChucKの Jison を介して JavaScript でパーサーを生成しようとしていますが、生成されたパーサーが処理できない言語にあいまいさがあることを除いて、良いスタートを切りました。元の ChucK コンパイラは Bison によって生成されたものであり、これらのあいまいさを何らかの形で解決できるはずです。

この質問の目的のために、私は問題を解釈された文法に単純化し、曖昧さを 1 つだけ提示しました。参考までに、関連するすべてのファイル (生成されたパーサーを含む) の要旨を掲載しました。プロジェクトの構造は次のとおりです。

文法自体は次のようになります。

あいまいさは、非終端 DeclExpression が または のいずれTypeDecl VarDeclListかに一致する可能性があることPrimaryExpressionです。これにより、Jison は次の警告を発します。

Type var => out;生成されたパーサーは、次のようにテスト コード ( )の解析に失敗します。

私の理解では=>、パーサーがルールと照合しようとするのは、演算子の後の部分TypeDecl VarDeclListです。

では、このあいまいさに対処できるパーサーを生成するにはどうすればよいでしょうか?

0 投票する
0 に答える
399 参照

javascript - Jison で EBNF グループを適切に使用する方法

Jison で EBNF 拡張機能を使用しているときに発生する状況に対処する方法を見つけようとしています (Jison はデフォルトで BNF のみをサポートします。必要に応じてそのオプションを有効にすることができます)。

単純な XML パーサーを作成しようとしています。XML には、空のタグと空でないタグがあります。空でないタグには、開始タグ、コンテンツ、および終了タグがあります。コンテンツ EBNF ルールは次のように定義されます。

これで、デバッグによって、Jison がキャプチャ グループを $2 に割り当て、一致するものを配列で渡すことがわかりました。ここに一致のリストがあることを期待しているので、これは理にかなっています。しかし、私を本当に驚かせたのは、含まれている配列に要素だけがあり、文字データがない理由です。

たとえば、次の入力文字列を想定します。

ここで、上記の規則により、h、x、および y の表現が得られます。しかし、i と j は欠落します。

私は何かが欠けていると思いますが、それが何であるかはわかりません...

必要に応じて完全な文法を提供できますが、問題を切り分けようとしました。

よろしくお願いします!

よろしく、ハラルド

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

regex - JISON: 正規表現で「.」を使用する理由 それ以外の \。?

http://zaach.github.io/jison/docs/#specifying-a-languageの例から

なぜこの正規表現で"."代わりに使用されるの\.ですか?

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

bison - この S/R 競合を解決する方法

以下は、私の作業中の EBNF 文法の単純化です。

\n と EOF の両方がトークンとして NEWLINE を吐き出します (EOF の前に単一の末尾の NEWLINE が必要ないように)。次のようなストリームで動作します。

少なくとも 1 つが必須で、残りは で区切られてlineいます。例えば:blockNEWLINE

私はこれをやってみました:

しかし、先読みが の場合、Jison は S/R 競合について不平を言いNEWLINEます。NEWLINEステート マシンは、が新しいブロックの一部なのlineか、最後のNEWLINE*ブロックなのかを判断するのに混乱していると思いfileます (ファイルが NEWLINE/EOF で終わる可能性があるため、これが必要です)。

どうすればこれを修正できますか?

0 投票する
3 に答える
689 参照

parsing - コード置換 (a la #define)。レクサー?またはパーサー?

tl;dr:#define前処理ステップを実行せずに、jison を使用してC に相当するものをどのようにエミュレートしますか?

私は、簡潔にするために後で再利用できるコードのチャンクに識別子を割り当てる機能を備えた比較的単純な文法に取り組んでいます。例:

これまでのところ、コードの割り当て行を正しく識別し、「->」の右側の部分を他のパーサー アクションで使用できる辞書に格納するようにパーサーをセットアップしました。以下に示す定義アクションに関連するコード:

保存されたコードのスニペットを実際にトークン化して解析するように jison を取得するにはどうすればよいですか? AST アプローチを採用する必要がありますか? コードをパーサーに挿入する方法はありますか? これは字句解析段階または解析段階で発生する必要がありますか? 短い例のスニペットを使用して、複数の戦略を採用できることを楽しみにしています。

ありがとう!

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

bison - バイソン/ジソンを理解する

現在、不器用な「手作り」の C# および Java パーサーがある既存の言語用の JavaScript パーサーを作成しようとしています。私はジソンを使いたいと思っており、バイソンの基礎も学ぼうとしています。

答え方がわからない質問は、Bison/Jison の出力は正確には何ですか? 何かを自動的に取得しますか (AST など)? または、bison ファイルを書いている人によるルール アクションを使用してすべてが行われます。たとえば、ルールに適合する新しい変数の割り当てを指定するルールがあるとします。

VariableStatement : VAR VariableDeclarationList ';'

{ var var1 = {name: $1, value: $2 } などのアクションを指定する必要がありますか (まあ、この特定のルールでは機能しませんが、$2 は何らかの端末トークンであると仮定します)。ジソンは実際に新しい変数を作成しますか? それとも私はそれを間違っていますか?

ありがとう!