yacc

✍ dations ◷ 2025-09-13 17:03:28 #程序设计工具,编译器软件

yacc(Yet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)。yacc生成的编译器主要是用C语言写成的语法解析器(Parser),需要与词法解析器Lex一起使用,再把两部分产生出来的C程序一并编译。yacc本来只在(类)Unix系统上才有,但现时已普遍移植往Windows及其他平台。

yacc的输入是巴科斯范式(BNF)表达的语法规则以及语法规约的处理代码,输出的是基于表驱动的编译器,包含输入的语法规约的处理代码部分。

yacc是开发编译器的一个有用的工具,采用LALR(1)语法分析方法。

yacc最初由AT&T的Steven C. Johnson为Unix操作系统开发,后来一些兼容的程序如Berkeley Yacc,GNU bison,MKS yacc和Abraxas yacc陆续出现。它们都在原先基础上做了少许改进或者增加,但是基本概念是相同的。

由于所产生的解析器需要词法分析器配合,因此Yacc经常和词法分析器的产生器——一般就是Lex——联合使用。IEEE POSIX P1003.2标准定义了Lex和Yacc的功能和需求。

相关

  • 语言美国最广泛的语言是英语,但美国联邦政府并没有设有官方语言。历史上存在过很多语言。其他有美国本土的语言,也有来自欧洲、亚洲等地区的语言。目前美国所使用的语言约有430种,
  • 腕骨对具有四肢的动物来说,腕骨是指上肢的多块小骨,以人类而言,腕骨位于桡骨、尺骨和掌骨之间,形成手腕的部分。对马、牛等动物,形成前腿膝的部分。人类的腕骨有8块,接近前臂的四块为
  • 阿珀尔多伦阿珀尔多伦(荷兰语:Apeldoorn)是一个位于荷兰中部省份海尔德兰省的东部的一个城市和市镇。2009年荷兰女王贝娅特丽克丝在阿珀尔多伦参加女王日的庆祝活动时,其乘坐的汽车遭一名
  • 巴里洛切圣卡洛斯-德巴里洛切(西班牙语:San Carlos de Bariloche)是阿根廷内格罗河省 (阿根廷)的一座城市。
  • 罗什波特罗什波特(英语:Rocheport)是美国密苏里州布恩县的一个城市,是哥伦比亚都会区的组成部分,在2010年的人口普查中有人口239名。罗什波特的历史地区列入国家史迹名录。
  • 杜长城杜长城,绥远包头人,1914年生,毕业于警校二期,陆军大学,曾任保密局技术总队总队长。四平街保卫战杜长城得了首功,少校队长破格晋升三级成为国防部技术总队少将总队长。国军撤离大陆
  • 马哈巴德共和国马哈巴德共和国(库尔德语:کۆماری مەھاباد‎),也称库尔德斯坦共和国,是第二次世界大战结束后,伊朗库尔德人在苏联的支持下在伊朗西北部建立的短暂的库尔德人自治政权
  • 威廉·波格威廉·里德·波格(William Reid Pogue,1936年2月29日-2014年3月4日)曾是一位美国国家航空航天局的宇航员,执行过天空实验室4号任务。
  • 布莱文·內特布莱文·阿东·內特(英语:Brevin Adon Knight,1975年11月8日-),美国NBA联盟职业篮球运动员。他在1997年的NBA选秀中第1轮第16顺位被克利夫兰骑士选中。
  • 斯蒂芬妮·迈耶斯蒂芬妮·摩根·迈耶(英语:Stephenie Morgan Meyer,1973年12月24日-),美国作家。她是畅销小说暮光之城:暮色系列的作者,著有:《暮光之城:暮色》、《暮光之城:新月》、《暮光之城:月食》