BISON语法分析工具.doc
《BISON语法分析工具.doc》由会员分享,可在线阅读,更多相关《BISON语法分析工具.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-作者xxxx-日期xxxxBISON语法分析工具【精品文档】自动语法分析工具Bison(2015-01-30 12:42:55)转载标签:杂谈BISON用于语法分析器的自动生成,它可以很方便地生成一个所谓的抽象语法树,树的每一个子树都代表了一个特定的语法成分,便于后期处理。这个工具可以在网上下载获得。化点时间学习这个工具的用法,并用于SQL语言的分析,可以让我们把精力专注在语法规则上,而不是具体的分析函数编写上。对整个DBMS来说,使用自动化工具进行语言处理程序的自动生成,使得语言分析模块成为最可靠最方便维护的模块之一。BISON源文件的结构我们需要按照BISON的要求,书写BISON的源程
2、序()。遵循它的规则是必须的,BISON会把它的源文件翻译为C文件。因此,BISON是编译程序的翻译器。BISON的源文件通常由八个部分组成:一自由定义部分:%这部分被BISON原封不动地复制到输出的.C文件中。通常用于定义一些在规则程序中需要使用的一些常量,函数原形等。二语法栈的联合(UNION)结构语法分析程序使用一个堆栈来存放规约到的各个语法成分,堆栈用一个数组表示,这个数组的每个元素需要能够描述每一个语法成分,所以采用一个UNION:%unionUnion中的每一个项,都是一个语法规则的每一个非终结符;以整数四则表达式为例:exp : exp exp| exp - exp| exp *
3、 exp| exp / exp| ( exp )| lt_integer;lt_integer: LT_INTEGER;这里有两个语法规则,对应了两个非终结符号: exp是表达式,lt_integer表示整数常量(LT_INTEGER表示词法分析程序返回的一个确认为整数的单词)。对应的,这个union可以书写为:%par_exp_t*exp;intlt_integer;其中par_exp_t用来描述被识别出的exp的信息,int存放被识别出的整数的值。上面的例子很简单,所以union只有两个字段;在DM6的语法分析程序中,这个UNION大约有490个字段,也就是,大概有490个语法规则产生式。
4、当然你也可以不采用这个UNION,那么每一个规约出来的语法成分都是一个C指针,需要上层做类型转换来解释。三非终结符的类型声明上面定义了分析栈的UNION类型,还需要把字段名与语法非终结符号对应起来:%type 非终结符号如上例,这部分应该写为:%type exp%type lt_integer看上去似乎有点多余,每一行都是一个简单的重复。但前面一个表示的是UNION中对应的字段名,后一个是语法符号;如果我们把UNION改为:%par_exp_t*eeee;intiiii;那么对应的类型声明需要改为:%type exp%type lt_integer;这种不一致的写法,事实上会造成混乱,所以应该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BISON 语法分析 工具
限制150内