【发布时间】:2013-07-24 09:52:57
【问题描述】:
我有一个 BISON 为 Verilog 的子集生成的解析器。我看到解析器在读取整个文件之前跳转到文件末尾。我正在从解析器和我试图解析的文件中粘贴日志的 sn-p。
Stack now 0 1 6 10 13 29 13 29 13 29 13 29 13 29 13 29 13 29 13 29 13
Entering state 29
Reading a token: --accepting rule at line 85(";")
Next token is token SEMICOLON (design.v:1.207: )
Shifting token SEMICOLON (design.v:1.207: )
Entering state 13
Reading a token: --accepting rule at line 100("0")
Next token is token NUMBER (design.v:1.208: )
Reducing stack by rule 12 (line 174):**
$1 = token SEMICOLON (design.v:1.207: )
-> $$ = nterm module_item_list (design.v:1.207: )
Stack now 0 1 6 10 13 29 13 29 13 29 13 29 13 29 13 29 13 29 13 29 13 29
Entering state 44
Reducing stack by rule 11 (line 172):
$1 = token SEMICOLON (design.v:1.185: )
正在解析的代码在下面
wire [3:0] z;
wire w1, w2, w3, w4, w5, w6, w7;
not (z[0], a[0]);
xnor (z[1], a[0], a[1]);
在 "not();" 结束时失败
任何意见表示赞赏.. 谢谢。
【问题讨论】:
-
其实这行好像是对的。你确定它不会因为之前的一些错误而失败吗?
-
这是一个 Bison/yacc 问题,而不是 Verilog 问题。如果您需要任何帮助,您需要发布解析器的相关部分以及您遇到的错误。这是作业吗?
-
如果该日志未经编辑,那么您的词法分析器似乎正在读取
;0,它不会连续出现在您的输入中。所以这可能是词法分析器问题,而不是解析器问题。您有什么证据表明解析器“跳转到文件末尾”?你引用的sn-p是文件的结尾吗?如果是这样,您的词法分析器将返回NUMBER而不是文件结尾标记,这也指向词法分析器问题。看看你的flex规则会很有用。
标签: parsing bison flex-lexer