《编译与反编译技术实战 》一1.3 语法分析生成器YACC

本节书摘来自华章出版社《编译与反编译技术实战 》一书中的第1章,第1.3节,庞建民 主编 ,刘晓楠 陶红伟 岳 峰 戴超 编著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 语法分析生成器YACC

语法分析的任务是分析句子是否符合语法规范。YACC(Yet Another Compiler Compiler)是一个经典的语法分析生成器。YACC最初是由AT&T公司的Steven C. Johnson为UNIX操作系统开发的,后来一些兼容的程序如Berkeley YACC、GNU Bison、MKS YACC和Abraxas YACC陆续出现,它们都是在此基础上做了少许改进或者增强,但是基本概念是相同的。现在YACC也已普遍移植到Windows及其他平台上。
语法分析生成器是一个指定某个格式中的一种语言的语法作为它的输入,并为该语言产生分析过程以作为它的输出的程序。在历史上,语法分析生成器被称作编译–编译程序,这是由于按照规律可将所有的编译步骤作为包含在语法分析程序中的动作来执行。现在的观点是将语法分析程序仅考虑为编译处理的一个部分,所以这个术语也就有些过时了。YACC迄今为止仍是常用的语法分析生成器之一。
作为YACC对说明文件中的“%token NUMBER”声明的对应,YACC 坚持定义所有的记号本身,而不是从别的地方引入一个定义,但是却有可能通过在记号声明中的记号名之后书写一个值来指定将赋给记号的数字值。
YACC的输入是巴科斯范式(BNF)表达的语法规则以及语法归约的处理代码,YACC输出的是基于表驱动的编译器,包含输入的语法归约的处理代码部分。
由于所产生的解析器需要词法分析器的配合,因此YACC经常和词法分析器的产生器(通常就是LEX)联合使用,把两部分产生的C程序一并编译。IEEE POSIX P1003.2标准定义了LEX和YACC的功能和需求。
需要指出的是,本书的第4章还有对YACC及其用法更加详细的介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值