您好、欢迎来到现金彩票网!
当前位置:最新捕鱼棋牌 > 文件规约 >

Bison生成文件分析 学步园

发布时间:2019-06-27 00:47 来源:未知 编辑:admin

  Bison功能很强大,可以加参数-v可以生成可阅读的.output文件,还可以生成dot转换图

  yy1[] {}  产生式左端符号的编号,阅读Bison生成的.output文件开头即可明白

  yyr2[] { }       产生式右端长度,阅读Bison生成的.output文件开头即可明白,规约的时候从栈中弹出多少个状态用到

  yydefact[] { }    对于每个状态的缺省规约表达式,对应于状态图中def这一列+1

  yypact[] { }    如果某个状态只有默认动作,则为设置默认操作值,这儿是-6,  没有向前看token的情况下执行判断

  实 际上BISON就是给我们造表,至于怎么用这个表是我们的事,这些好比是个瓤子,在这个瓤子外头套个毛衣,一个翻译程序就出来了。当然一般来说都是直接用 嵌在BISON里头的毛衣,这样就得到一个LALR(1)分析程序,BISON程序多半支持一个``-S参数可以用来切换毛衣。

  想 了想,明白为什么昨天搞的那个parse tree那么庞大了,因为那个语法是从c99手册扒出来的一点都没有改造过。c99为了严谨用的是优先级级联的无二义性的文法(所以c99里头用不着说明 什么优先级了),这个文法的毛病就是实现太不方便,太多的单一产生式(右端只有一个文法符号的产生式),所以parse tree打印出来就成了一个个很大的锯齿。反观gcc的语法文件就很不一样,引入优先级说明之后,文法变的很简单,所以分析树也得到了简化。

http://kentdale-scouts.com/wenjianguiyue/278.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有