我正在尝试为家庭作业的正则表达式开发一个递归体面的解析器。我只是想问问社区我开发的语法是否正确,或者我是否走在正确的轨道上:
-= 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 菜鸟