当我们的文法设计的有问题的时候,就需要开启bison的调试方式来检测文法错在哪里,那么如何开启bison的调试方式呢?
bison调式需要做的事情如下:
1 )在语法文件*.y定义段开启yydebug,最终如下:
%{
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int yydebug=1;
%}
2)在编译语法文件*.y的时候,使用-v参数,生成output文件,这个文件中的内容可以帮助我们分析语法分析过程,使用--debug参数,生成的C代码包含调试信息。
命令如下:
bison a.y -d -v --debug
-d是用来生成头文件的,与调试无关。
-v生成output文件,描述了我们创建的自动机,可以帮助我们分析调试内容。
output内容大致如下:
Grammar
0 $accept: S $end
1 S: '<' NAME PROPLIST '>' '<' '/' NAME '>'
2 PROPLIST: PROPNAME '=' PROPVAL
3 | PROPLIST PROPNAME '=' PROPVAL