是否可以使用
解析正则表达式https://en.wikipedia.org/wiki/Operator-precedence_parser
如果没有,例如在这里使用什么解析器
https://en.wikipedia.org/wiki/Thompson“s_construction#Application_of_the_algorithm
您诚挚的
答案 0 :(得分:1)
我认为正则表达式不存在Operator Precedence Grammar,如果是这种情况,则不能使用运算符优先级解析器。
这是正则表达式的语法,我从a Perl-style one简化了
<RE> ::= <union> | <simple-RE>
<union> ::= <RE> "|" <simple-RE>
<simple-RE> ::= <concatenation> | <basic-RE>
<concatenation> ::= <simple-RE> <basic-RE>
<basic-RE> ::= <star> | <plus> | <elementary-RE>
<star> ::= <elementary-RE> "*"
<plus> ::= <elementary-RE> "+"
<elementary-RE> ::= <group> | <any> | <char>
<group> ::= "(" <RE> ")"
<any> ::= "."
<char> ::= any non metacharacter | "\" metacharacter
请注意,<concatenation>
右侧有两个相邻的非终结符号,这意味着这不是运算符优先级语法。
我认为解析正则表达式的选择方法可能是Recursive Descent parser。