問題タブ [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.
grammar - 文法作成ツール
私は EBNF で文法を書こうとしています (本当に正当な理由がなければ、EBNF でなければなりません)。そのためのユーティリティをいくつか探しています。私が最も探しているのは、文法をチェックできるものです。たとえば、それが LALR( n ) であるかどうか、そうである場合はnの値は何かを確認できます。そのようなユーティリティは存在しますか? 他に知っておくべき便利な文法作成ツールはありますか (パーサー ジェネレーターは探していません)。
regex - 正規表現 BNF 文法
正規表現用の BNF 文法はありますか?
java - ANTLRでトークンの正確な出現回数を指定する方法は?
以下に示すようなファイルの文法を定義する必要があります。
//サンプルファイル
NameCount = 4
Name = a
Name = b
Name = c
Name = d
//ファイルの終わり
これで、 NameCountとNameのトークンを定義できるようになりました。しかし、 NameCountの後の値であるトークンNameのインスタンスの有効な数を含むファイル構造を定義する必要があります。値を解析して整数に変換し、文法のグローバルスコープで変数に保存します(変数ncなど)。
Nameが正確にnc回繰り返されるように文法で定義する方法は?
java - ANTLRWorks で生成されたクラス ファイルのコンパイル
ANTLRWorks を使用して ANTLR 文法を作成しています。有効な文法があり、パーサーとレクサーのソース ファイルも生成されます。生成されたコードのデバッグも試みましたが、出力はデバッガー出力で期待どおりです。
しかし、デバッガーによって生成された __Test__ クラスを呼び出そうとすると、コンソールに何も表示されません。同じクラスパスで __Test__.java を正常にコンパイルできるため、クラスパスを適切に設定しました。
問題は何でしょうか?antlr と antlrworks を使用してサンプル パーサーを作成およびコンパイルするための明確なチュートリアルはありますか?
mysql - BNF文法のリポジトリ?
一般的な言語の Backus-Naur Form または BNF 文法を見つけることができる場所はありますか? 検索してもあまり出てこないのですが、どこかに公開されているに違いないと思います。私が一番興味を持っているのは、Objective-C とおそらく MySQL 用のものです。
compiler-construction - 文法実装におけるファイル記述子の終わり
コンパイラの実装に取り組んでおり、ファイルの終わりに達したかどうかを確認したいですか?
これは lex ファイルの yywrap() 関数を使用して実行できることはわかっていますが、必要なのは、EOF が 16 進値 0x1a のように明示的に定義されている場合、それをどのように参照するかということです。
例:
main() { printf("EOFマーカーをチェック\n"); '0x1a' <-- 実際の EOF マーカー。
上記が構文エラーではなく、エラーとして報告されるようにしたい
上記はできますか?私の要件は、パーサーに EOF トークンを含めることだけですが、残念ながら、日付までそれを行うことができませんでした:-((、残りの作業は簡単に実行できます。ルールを指定するだけですそのような:
closures - クロージャと文脈自由文法
理論上のコンピューター サイエンス クラスのシラバスを調べていると、Context Free Grammars の見出しに「クロージャ プロパティ」がリストされています。私はこのテーマについて教科書を調べましたが、ほとんど見つかりませんでした。現時点では、私の頭の少し上にありますが(まだコースを受講していません)、少し理解しています.
文脈自由文法内のクロージャのこの考え方は、関数型プログラミング内のクロージャの考え方と同じか、または関連しているかどうか疑問に思っていました。私が知る限り、文法を組み合わせて重複を解決することについて話しています。この本のセクションにはまだ理解できない部分がたくさんあるので、これらのアイデアが同じかどうかはわかりません.
(もう少し文脈: Perl から Ruby または Python にコースを切り替えることができるかどうかを教授に尋ねるメールを書いています。これらの概念が関連している場合、Perl よりも Ruby を使用する必要がある別の理由になる可能性があります。)
parsing - 言語が LL(1) LR(0) SLR(1) かどうかを判断する方法
複雑な分析を行わずに文法を調べるだけで、文法が LL(1)、LR(0)、SLR(1) であるかどうかを判断する簡単な方法はありますか?
例: BNF Grammar が LL(1) であるかどうかを判断するには、First セットと Follow セットを計算する必要がありますが、これには時間がかかる場合があります。
これをより速く行う方法を知っている人はいますか? どんな助けでも本当に感謝します!
lisp - yacc の Lisp 文法
Lisp 文法を構築しようとしています。簡単ですよね?どうやらそうではありません。
これらの入力を提示すると、エラーが発生します...
これが文法...
私が知る限り、プログラムとして定義された単一の非端末が必要であり、その上で解析ツリー全体がハングアップします。しかし、私はそれを試してみましたが、うまくいかないようでした。
編集-これは私の「トップターミナル」アプローチでした:
ただし、次のような問題が発生する可能性があります。
Edit2: FLEX コードは...
オーバーマッチングの例...
ここでのエラーは何ですか?
編集: エラーはレクサーにありました。
datetime - 時間/日付範囲の文法
次のような期間を含む文字列を解析する必要があります。
- 木曜日の午前 6:30 ~ 7:30
- 2009 年 12 月 30 日~2010 年 1 月 1 日
- 2009 年 1 月 15 日、午後 7 時 30 分から 8 時 30 分
- 木曜日、午前 6 時 30 分から午前 7 時 30 分まで
- その他...
追加した
- 6:30~7:30
Wordのinsert->dateが生成できるほとんどのケースなどの日付/時刻
私がカバーする必要があるすべてのケースをカバーするものがあるとしたら、非常に驚くので、最初に文法を探しています。