私は、宿題のための正規表現のための再帰的なまともなパーサーを開発しようとしています。私はちょうど私が開発した文法が正しいかどうかのコミュニティをお願いしたかったか、私は正しい軌道に乗ってる場合:(最高に記載されているために:正規表現の曖昧でない文法
-= Regex Grammar (EBNF) =-
<start> -> <expr> '\n'
<expr> -> <expr> { '|' <term> } // Union
| <expr> { <expr> } // Concatenation
| <expr> '*' // Closure
| <term>
<term> -> '(' <expr> ')' | <char> // Grouping
| <char>
<char> -> a|b|c| ... |z
いくつかのガイドライン:
1.優先順位最も低い)閉鎖、連結、連合
2.連合性:閉鎖は右結合である。連結/連合は左結合です
3.括弧でグループ化する必要があります
私の質問:上記の文法はガイドラインを満たしていますか?私は確信していますが、私は100%ではなく、いくつかの熟練した目がいくつかの問題/エラーを指摘できると考えていました。
TIA Noobの
predecenceに問題があります。 PEG-Parserでこの文法を使用すると、間違った優先順位が使用され、LL-およびLR-パーサーはあいまいさについて不平を言うでしょう。それらを削除するには、演算ごとに1つのルールが必要です( 'expr'のためだけでなく)。 – CoronA