当我将文件传递给bison(通常的方式)时,它工作正常,它解析文件并检查语法.但是当我传递相同的字符串时:
yy_scan_string(string);
yylex();
yyparse();
Run Code Online (Sandbox Code Playgroud)
它在第一个令牌后崩溃,它表示期待$end.我应该以某种方式重置某些东西 这里的例子没有说什么.
你错误地使用了Bison.使用Bison时,只调用yyparse().你不调用yylex() - 只要需要一个令牌,yyparse()就会调用该函数.
你正在做的是设置字符串作为输入,调用yylex找到一个令牌并推进输入流.然后你调用yyparse().这个yyparse()调用期望在当前点(在被yylex()抓取的第一个标记之后)到输入结尾处的输入上找到某些内容,这会减少到语法中的句子.
问题是由于你的yylex()调用,它已经错过了一个令牌.
| 归档时间: |
|
| 查看次数: |
853 次 |
| 最近记录: |