【发布时间】:2019-03-02 13:43:15
【问题描述】:
我正在使用 Flex/Bison 和 VHDL 93。我对以下规则有疑问:
choices ::= choice { | choice }
如果我将其转换为 BNF:
N1 ::= %empty | choice
N2 ::= %empty | N2 N1
choices ::= choice N2
choices ::= choice | choice N2 N1
choices ::= choice | choices N1
choices ::= choice | choices | choices choice
但是选择:选择是无用的,所以最后
choices ::= choice | choices choice
那么,问题出在哪里?好吧,想象一下要转换的规则是:
choices ::= choice { choice }
我应用规则转换为 BNF:
N1 ::= choice
N2 ::= %empty | N2 N1
choices ::= choice N2
choices ::= choice | choice N2 N1
choices ::= choice | choices N1
choices ::= choice | choices choice
这和之前的结果是一样的!!!发生了什么?哪里有问题?一年多前我遇到了这条规则的问题,我在这个项目中再次工作,我的选择问题仍然存在:P
VHDL 93 标准关于选择的内容如下:
在第二种情况下,“choices”可以替换为“choice”列表 用竖线分隔。
我不知道“,”是从哪里来的。
谢谢。
【问题讨论】:
-
逗号就是标点符号,写这句话的人认为标点符号必须放在引号内。您的语法缺少的是“由竖线分隔”部分。
-
那么...关于如何解决这个错误的任何想法?