JavaCUP - 如何将这行 EBNF 转换为 CFG 语法?
几天前我发布了有关将 EBNF 语法转换为 CFG 的文章。好吧,我想我现在已经掌握了它的要点,但我对这个特定的问题有点困惑:
你会如何转换:
MultiplicativeExpr -> PrimaryExpr (( '*' | '/' ) PrimaryExpr)*
到 CFG?
我在这里的尝试是去掉末尾的 * (这意味着 0 或更多)并用递归的编写方式替换它。
I posted a couple days ago about converting EBNF grammar to CFG. Well I think I have the jist of it now, but I'm a bit stuck on this particular one:
How would you convert:
MultiplicativeExpr -> PrimaryExpr (( '*' | '/' ) PrimaryExpr)*
to CFG?
My attempt here is to get rid of the * at the end (which means 0 or more) and replace it with a recursive way of writing it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你的想法是正确的。使用附加变量(递归),您可以这样做:
当然这不是唯一的方法,例如您也可以执行类似
Sign ->; 的操作。 '*'| '/'
,并在SignExprList
中使用它...You have the correct idea. Using an additional variable (recursive), you can do it like this:
Of course this isn't the only way, for example you could also do something like
Sign -> '*' | '/'
, and use that inSignExprList
...