由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 多次调用yyarse()的buffer flush问题。
相关主题
谁知道如何调试yacc程序?A question related to pipe
lex/yacc如何reset buffer?Python里边file writer的问题
does the system guarantee this? (转载)Smart Parser/Compiler Development
c字符串内存分配问题multi-thread 一问,
yacc/bison的调试和分析工具?OpenGL能否方便实现自定义图形的移动,擦除和分层显示?
关于C++中 extern "C"的问题。新人5个包子请教问题,redhat读写文件的内存问题 (转载)
求推荐一个search internet的API问一个vim的问题
A simple question on Flex为什么redbox比netflix好用的多?
相关话题的讨论汇总
话题: 调用话题: buffer话题: flush话题: yyarse话题: 序里
进入Programming版参与讨论
1 (共1页)
g*********s
发帖数: 1782
1
在一个程序里反复调用yyparse()的时候,第一次调用出错后,之后所有的调用都出错
,即使后面的文件是正取的。看上去是buffer没有flush/reset。
放狗搜了一下,看上去这篇文章最靠谱。但是怎么在程序里调用YY_FLUSH_BUFFER啊?
这个是flex自己生成的macro。
http://olympus.het.brown.edu/cgi-bin/info2www?(bison)How+Can+I+Reset+the+Parser
c*****t
发帖数: 1879
2
你找错方向了。
一般来说,跟 lexer 没关系。你最多改下 input 的 source 和 dfa state (回到
initial)而已。
至于 parser,我建议你仔细读下 bison 里面的 error handling 。里面讲的比较详
细。你要做的是 clear token stack 和 lookahead / error flag 。

【在 g*********s 的大作中提到】
: 在一个程序里反复调用yyparse()的时候,第一次调用出错后,之后所有的调用都出错
: ,即使后面的文件是正取的。看上去是buffer没有flush/reset。
: 放狗搜了一下,看上去这篇文章最靠谱。但是怎么在程序里调用YY_FLUSH_BUFFER啊?
: 这个是flex自己生成的macro。
: http://olympus.het.brown.edu/cgi-bin/info2www?(bison)How+Can+I+Reset+the+Parser

g*********s
发帖数: 1782
3
老大,原理明白了,再详细指点一下吧。又搜了半天,也看了bison的手册,还是没找
到具体操作。瞎猜了几个方案试了试,还是没解决问题。:(

【在 c*****t 的大作中提到】
: 你找错方向了。
: 一般来说,跟 lexer 没关系。你最多改下 input 的 source 和 dfa state (回到
: initial)而已。
: 至于 parser,我建议你仔细读下 bison 里面的 error handling 。里面讲的比较详
: 细。你要做的是 clear token stack 和 lookahead / error flag 。

g*********s
发帖数: 1782
4
误打误撞,问题居然解决了。
第一个文件有个/*,但没有匹配的*/,就一直找到文件尾,然后报错返回。
下面这个方案经过验证可行:
<> {printf("unfinished comments when file ends\n"); YY_FLUSH_
BUFFER; BEGIN INITIAL; }
但对flex/bison这套错误处理机制还是不太清楚。

【在 g*********s 的大作中提到】
: 老大,原理明白了,再详细指点一下吧。又搜了半天,也看了bison的手册,还是没找
: 到具体操作。瞎猜了几个方案试了试,还是没解决问题。:(

1 (共1页)
进入Programming版参与讨论
相关主题
为什么redbox比netflix好用的多?yacc/bison的调试和分析工具?
[转载] 简单的题都不敢做了.关于C++中 extern "C"的问题。
EOF一问求推荐一个search internet的API
code questionA simple question on Flex
谁知道如何调试yacc程序?A question related to pipe
lex/yacc如何reset buffer?Python里边file writer的问题
does the system guarantee this? (转载)Smart Parser/Compiler Development
c字符串内存分配问题multi-thread 一问,
相关话题的讨论汇总
话题: 调用话题: buffer话题: flush话题: yyarse话题: 序里