「正規表現」のパターンマッチングは、文脈に敏感な文法マッチングというだけで、ますますパワフルになっています。それは文脈自由文法マッチングの変形/拡張ですか?それは今どこにあるのですか?古い、制限的な "正規表現"の代わりに、それを単に呼び出すのはなぜですか?現代プログラミング言語の「正規表現」は本当に「文脈依存文法」ですか?
7
A
答えて
9
特に、カッコをキャプチャする後方参照は、正規表現を文脈自由文法や文脈依存文法よりも複雑にします。名前は単に歴史的に(多くの単語として)成長しています。 Wikipediaのthis sectionとPerlのexplanation with an exampleも参照してください。
3
私はそれを参照してください方法:
- 正規言語:
- ステートマシンで一致しました。唯一の変数が一致する文法に現在 「位置」を表すために使用することができる:スタックマシンで一致
- :再帰は
- 文脈自由言語を実装することができません。文法の現在の「場所」は、1つまたは別の形式のスタックで表されます。すべてのほとんどの人間の言語
私は定期の
- ステートマシンで一致しました。唯一の変数が一致する文法に現在 「位置」を表すために使用することができる:スタックマシンで一致
知っています
- ほとんどのプログラミング言語
-
:
ただし、洗練された正規表現パーサーは、文脈自由文法の明確な要件である規則の再帰的な適用を考慮していません。
用語正規表現は、私の意見では、主にそれらの正規文法(星と疑問符)を発現するために使用さ構文を指します。
3
最新の正規表現の実装には、classic regular expression definitionの規則を破る機能があります。例えばMicrosoft’s .NET Balancing Group(?<
name1
-
name2
> …)
について
:
^(?:0(?<L>)|1(?<-L>))*(?(L)(?!))$
このは一致言語L₀₁= {ε、01、0011、000111、...}を行います。しかし、この言語はPumping Lemmaによれば規則的ではありません。
+0
私はそれが古典的な正規表現を超えていることを知っていますが、私はどのくらいそれをさらに疑問に思っています。上記のFabianのリンクは興味深い。 – notnot
関連する問題
- 1. 正規表現を記述する文脈自由文法?
- 2. posixベースの正規表現をサポートするプログラミング言語は?
- 3. 任意の言語の単語文字用正規表現
- 4. 文法の正規表現
- 5. 正規表現:捕捉基に代替文字正規表現で
- 6. 正規表現プログラミング
- 7. 多言語文字列の正規表現
- 8. ルアの日本語の正規表現
- 9. Symfonyの表現言語での正規表現検索。
- 10. 正規表現は、文
- 11. 文脈依存文法
- 12. Javascript正規表現と日本語
- 13. URLのテキスト本文をチェックする正規表現ですか?
- 14. PHPは完全に文脈自由言語ですか、文脈依存部分を持っていますか?
- 15. Atom言語文法のマルチライン表現
- 16. Pythonの正規表現検索日本語/中国語の文字
- 17. VimとPython:言語メソッドの文脈に依存しないオートコンプリート
- 18. 文字の正規表現、
- 19. 正規表現の構文
- 20. PHP正規表現に相当するJavascriptの正規表現
- 21. Jenkinsの正規表現の正規表現文字列パラメータプラグイン
- 22. 正規表現Rプログラミング
- 23. 有効な正規表現の正規表現文字列
- 24. 文字列または正規表現のリテラルにない正規表現と一致する正規表現
- 25. 文法上のPHPの正規表現
- 26. 正規表現 - SQL文
- 27. 正規表現文字列
- 28. 正規表現 - 文字
- 29. 正規表現文字
- 30. 正規表現エスケープ文字
'regular language'と' regular expression'の違いを教えてください。 –
CSGよりも本当に強力ですか?例を挙げていただけますか? – notnot
通常の言語は通常の文法(http://en.wikipedia.org/wiki/Regular_grammarを参照)で記述できますが、正規表現は制限の少ないパターンマッチング言語なので、処理が複雑です。 –