問題タブ [grammar]

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 投票する
2 に答える
8346 参照

parsing - yacc/ocamlyacc での reduce/reduce 競合の解決

演算子なしの関数適用 (Ocaml や Haskell など) と、2 項演算子と単項演算子の通常の組み合わせをサポートする ocamlyacc (通常の yacc とほぼ同じ) で文法を解析しようとしています。減算と否定の両方に使用できる「-」演算子との削減/削減の競合が発生しています。ここに私が使用している文法のサンプルがあります:

問題は、"a - b" のような式を取得した場合、パーサーはこれを "a (-b)" (b の否定、その後に適用) と縮小するか、"a - b" (減算)。減算削減は正しいです。そのルールを優先して競合を解決するにはどうすればよいですか?

0 投票する
4 に答える
2636 参照

c++ - C++ テンプレートのあいまいさ

友人と私は C++ テンプレートについて話し合っていました。彼は私にこれが何をすべきか尋ねました:

main の最後の行には、2 つの妥当な解析があります。'b' はb > (c)テンプレート引数ですか、それともテンプレート引数ですか?

これをコンパイルして何が得られるかを確認するのは簡単ですが、何が曖昧さを解決するのか疑問に思っていました。

0 投票する
5 に答える
1160 参照

grammar - 解析木と文法情報

文法と解析ツリーの作成方法の例を含む優れたオンライン リソースの場所を知っている人はいますか? できれば入門資料。n00b フレンドリーな情報ですが、Google で良いことは何も見つかりませんでした。

編集:特定のパーサーソフトウェアではなく、理論について考えています。

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

parsing - オメタの特別なところは何ですか?

Ometaは「パターン マッチング用の新しいオブジェクト指向言語」です。Lexx/Yacc や Pyparsing などの文法を解析するための Oz ツールなどの言語で、パターン マッチングに遭遇したことがあります。サンプル コードを見たり、ディスカッションを読んだり、友人と話したりしても、Ometa が特別な理由 (または、少なくとも一部の人々がそれをそう考える理由) を理解することはできません。説明はありますか?

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

antlr - Antlr: 日付と数字を認識する最も簡単な方法は?

同じ文法で有効な日付と数値の両方を解析する最も簡単な (最短で、ルールが最も少なく、警告がない) 方法は何ですか? 私の問題は、有効な月 (1 ~ 12) に一致するレクサー ルールが、1 ~ 12 のすべての出現に一致することです。したがって、数値を一致させたい場合は、次のような解析ルールが必要です。

日と年のレクサー規則を追加すると、さらに複雑になります。次のような日付の解析ルールが必要です。

同じツリー構造になる限り、月、日、年が解析規則であるかレクサー規則であるかは気にしません。また、他の場所で数字を認識できる必要があります。たとえば、次のようになります。

0 投票する
6 に答える
10256 参照

delphi - 完全なDelphi(オブジェクトパスカル)構文を探しています

完全なObjectPascal構文(できればDelphi 2009)が必要です。一部の構文はヘルプファイルによって提供されますが、すべての情報が提供されるわけではありません。それで私はゆるい情報を集め始めました。最近、私はこれらを多かれ少なかれ完全な構文記述に追加しました(EBNFのような)。

見た目は広範囲ですが、まだバグがあり、(特に.NET構文で)一部が欠落していると確信しています。だから私はSODelphiコミュニティに尋ねています。何か情報がありますか、それともエラーを修正できますか?その見返りに、私はコミュニティに完全な構文を提供します。それはおそらくあなたにいくらかの時間を節約します;-)。将来的には、他の言語(C#/ C ++ / Javaなど)でも同じことをしたいと思っています。

私がすでに持っている構文の説明は与えられています:MySyntaxsofarまたは、テキストバージョンが好きな場合。(XHTMLはテキストバージョンから生成されます)。

字句部分は実際には問題ではないため、構文は構文部分に焦点を合わせていることに注意してください。

アップデート

Delphi構文の新しいバージョンがあります。htmlバージョン。2009年を含むすべてのバージョンが含まれています。Prism拡張機能はまだtodoリストにあります。そして、私がそれらを一緒に保つつもりかどうかはわかりません。

実際の純粋主義者にとっては、完全なアセンブラーコードも含まれています(これは、Intelセットの完全な100%をサポートしていませんが、いくつかの命令だけが欠落しています)。

0 投票する
6 に答える
9426 参照

grammar - シフト削減コンフリクト

あいまいさがないとわかっている文法の shift/reduce 競合を理解するのに問題があります。ケースはif elseタイプの1つですが、コードブロックを区切る必須のEND句があるため、「ぶら下がっているelse」の問題ではありません。

gppg の文法は次のとおりです (これは Bison のようなコンパイラ コンパイラです ... エコーではありません)。

競合の出力は次のとおりです。

私はすでにすべてを切り替えており、それを解決する方法を知っていますが、その解決策には、右再帰のために「elseif」で左再帰を放棄することが含まれます。

この問題に関してインターネットで見つけたすべての希少なドキュメントを調べましたが (最後にいくつかのリンクを投稿します)、まだエレガントな解決策を見つけていません。ANTLR については知っていますが、今は検討したくありません。ソリューションを Yacc/Bison パーサーに制限してください。

/* empty */ ルールを削除し、空のリストを必要とするすべてのものを複製することでなんとかそれを実現できましたが、私が取り組んでいるより大きな文法では、「スパルゲッティ文法症候群」のようになってしまいます。

ここにいくつかのリンクがあります:

http://nitsan.org/~maratb/cs164/bison.html

http://compilers.iecc.com/comparch/article/98-01-079

GPPG、私が使用しているパーサー

バイソンマニュアル

0 投票する
51 に答える
16440 参照

nlp - 人間が読めるプログラミング言語はありますか?

つまり、人間のスタイルのコーディングを備えたコード化された言語はありますか? 例えば:

あまり役に立たないことはわかっていますが、そのような文法を作成するのは興味深いことです。

0 投票する
9 に答える
7689 参照

singleton - 「シングルトンではない」という意味の名前はありますか?

「シングルトンではない」という意味の名前はありますか?

0 投票する
6 に答える
31933 参照

c++ - LR(1)パーサーでC ++を解析できないのはなぜですか?

私はパーサーとパーサージェネレーターについて読んでいて、ウィキペディアのLR解析ページでこのステートメントを見つけました:

多くのプログラミング言語は、LRパーサーのバリエーションを使用して解析できます。注目すべき例外の1つはC++です。

なんでそうなの?C ++のどの特定のプロパティにより、LRパーサーで解析できなくなりますか?

グーグルを使用して、私はCがLR(1)で完全に解析できることを発見しただけですが、C ++はLR(∞)を必要とします。