[英]Parse rules CF-grammar using Regular Expressions (how using templates)
我有CF语法。 它的规则如下:
S-> a | AS
A-> AB | a | b
B-> b
我想使用正则表达式解析这些规则。
我的正则表达式:
\\ b([AZ])->(?:([A-Za-z] +)\\ |?)+
对于:“ A-> AB | a | b”结果:
0:A-> AB | a | b
1:A
2:b
但我想这样:
0:A-> AB | a | b
1:A
2:AB
3:
4:b
正则表达式的功能不足以完成任务,但是正则表达式在EBFN中用于增强语法的表达能力。 您可以考虑使用自上而下的解析器(通过递归调用进行成形)来解析您的输入。 在所有允许相互递归调用的语言中,这很容易实现。 它要求语法有一些限制(如果您有兴趣,请参见Wikipedia)。 乍一看,您的语法应为LL(1),即需要1个令牌超前。
您可以使用->|\\|
拆分所有规则 获得所需的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.