我想处理Scala语法以创建数据结构,我想创建一个图形来对其进行建模。我遇到的问题是我想摆脱EBNF语法的一些语法糖,以便以有效的方式解析它。
例如,如果我有以下规则:
Expr ::= (Bindings | id | '_') '=>' Expr | Expr1
我想要相应的规则:
Expr ::= LeftExpr '=>' Expr | Expr1
LeftExpr ::= Bindings | id | '_'
我真正理解的是一个可以自动转换这些规则的工具,以便只使用OR运算符生成左关联规则,以避免手动执行。我认为可能是这样的事情,也许没有新的增加规则的语义意义,例如如果LeftExpr
是Foo
或其他任何名称,它都是相同的。
我查看了网络资源但这个论点太混乱了,以至于找不到合适的答案。任何帮助都很受欢迎,也只是一个与问题相关的链接(真的)。谢谢