問題タブ [context-free-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.
closures - クロージャと文脈自由文法
理論上のコンピューター サイエンス クラスのシラバスを調べていると、Context Free Grammars の見出しに「クロージャ プロパティ」がリストされています。私はこのテーマについて教科書を調べましたが、ほとんど見つかりませんでした。現時点では、私の頭の少し上にありますが(まだコースを受講していません)、少し理解しています.
文脈自由文法内のクロージャのこの考え方は、関数型プログラミング内のクロージャの考え方と同じか、または関連しているかどうか疑問に思っていました。私が知る限り、文法を組み合わせて重複を解決することについて話しています。この本のセクションにはまだ理解できない部分がたくさんあるので、これらのアイデアが同じかどうかはわかりません.
(もう少し文脈: Perl から Ruby または Python にコースを切り替えることができるかどうかを教授に尋ねるメールを書いています。これらの概念が関連している場合、Perl よりも Ruby を使用する必要がある別の理由になる可能性があります。)
context-free-grammar - 通常の文法と文脈自由文法
私はコンピューティング言語のテストのために勉強していますが、頭を悩ませているアイデアが 1 つあります。
通常の文法は単純であいまいさを含むことはできませんが、プログラミング言語に必要な多くのタスクを実行できないことを理解しました。また、文脈自由文法ではあいまいさが許容されますが、プログラミング言語に必要ないくつかのこと (回文など) が許容さ れることも理解しました。
私が問題を抱えているのは、通常の文法の非終端記号が終端または非終端記号の後に終端記号が続くこと、または文脈自由な非終端記号が終端記号と非終端記号の任意の組み合わせにマップされることを知ることによって、上記のすべてを導き出す方法を理解することです。 .
誰かがこれをすべてまとめるのを手伝ってくれますか?
regex - 現代のプログラミング言語の「正規表現」は本当に「文脈依存文法」ですか?
何年にもわたって、「正規表現」パターン マッチングはますます強力になり、疑問に思うところまで来ました。それは本当に単なる文脈依存文法マッチングなのでしょうか? 文脈自由文法マッチングのバリエーション/拡張ですか? それは今どこにあるのでしょうか?古い制限的な「正規表現」の代わりに、単にそれと呼んでみませんか?
context-free-grammar - 文脈自由文法をどのように書くことができますか?
私はアルファベットの上に CFG を書き込もうとしていΣ = {a,b}
ます.a
b
これで、CFG、変数、プロダクション ルールなどの基本的な概念を理解できました。残念ながら、前述の CFG を作成するためのアイデアは尽きてしまいました。私がこれまでに持っているのは
プロダクション ルールでは、両側に 2 つの ** **があり、真ん中に好きなだけ** **がある文字列が得られると思います。ただし、各側に正確に同じ数の ** ** があることを確認しながら、 ** ** の両側にできるだけ多くの ** ** を配置する方法がわかりません。S
X
a
b
a
b
a
任意の提案、解決策をいただければ幸いです。ありがとう。
regex - オンラインパーサーが正規表現で止まるように見えるのはなぜですか?
さまざまなライブラリで正規表現のように動作する、たとえばBNFのパーサーがないように見える理由を長い間疑問に思っていました。
確かに、ANTLR、Yacc 、およびCFGを解析できるコードを生成する他の多くのものがありますが、中間ステップなしでそれを実行できるライブラリはないようです。
私はPackrat パーサーを作成して、正規表現に関連するネストされた括弧の癖をすべて起動することに興味があります (そして、おそらく、そのスポーツのためにさらにそうです) が、どういうわけか、私はちょうど歩いているような気がします別の停止問題のような沼地のクラス。
これらのパーサーには技術的/理論的な制限がありますか、それとも何か不足していますか?
java - 文字列の分割 (特に Java で java.util.regex などを使用)
エスケープシーケンスを考慮して文字列を分割する方法を知っている人はいますか?
たとえば、文字が「:」の場合、「a:b」は 2 つの部分 (「a」と「b」) に分割されますが、「a:b」はまったく分割されません。
これは正規表現では難しい(無理?)と思います。
前もって感謝します、
ケダル
parsing - 文脈自由パーサー文法を作成するためのインタラクティブなユーティリティを探しています
テキストの一部を (テキスト ボックスに) 与え、パーサーの文法 (同様の BNF を編集することによって) とトークン構造を実験しながら、解析ツリーがどのように見えるか (そしてそれが現在の文法を使用してテキストを解析できない場合、どこで停止したかがわかります)。
キーワードは双方向性です。たとえば、flex と bison を使用してこれを行うこともできますが、レクサーとパーサーを常に再作成する必要があります。
このようなものはありますか?私は何も見つけていません。理想的には、Linux で動作し、無料である必要があります。それがオプションでない場合でも、興味深いものです。
compiler-theory - どのプログラミング言語が文脈自由ですか?
または、もう少し正確に言うと、どのプログラミング言語が文脈自由文法によって定義されているのでしょうか。
私が収集したものから、C ++は、マクロやテンプレートなどの理由で文脈自由ではありません。私の腸は、関数型言語は文脈自由かもしれないと言っていますが、それをバックアップするためのハードデータはありません。
簡潔な例のための追加の担当者:-)