|
c*****t 发帖数: 1879 | 2 你找错方向了。
一般来说,跟 lexer 没关系。你最多改下 input 的 source 和 dfa state (回到
initial)而已。
至于 parser,我建议你仔细读下 bison 里面的 error handling 。里面讲的比较详
细。你要做的是 clear token stack 和 lookahead / error flag 。 |
|
g*********s 发帖数: 1782 | 3 老大,原理明白了,再详细指点一下吧。又搜了半天,也看了bison的手册,还是没找
到具体操作。瞎猜了几个方案试了试,还是没解决问题。:( |
|
g*********s 发帖数: 1782 | 4 误打误撞,问题居然解决了。
第一个文件有个/*,但没有匹配的*/,就一直找到文件尾,然后报错返回。
下面这个方案经过验证可行:
<> {printf("unfinished comments when file ends\n"); YY_FLUSH_
BUFFER; BEGIN INITIAL; }
但对flex/bison这套错误处理机制还是不太清楚。 |
|