yacc

✍ dations ◷ 2025-05-19 21:48:18 #程序设计工具,编译器软件

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的功能和需求。

相关

  • 胶子在粒子物理学中,胶子(gluon)是负责在两个夸克之间传递强作用力的基本粒子,类似光子负责在两个带电粒子之间传递电磁力一般。用科学术语来说明,胶子是量子色动力学用来在两个夸克
  • 韩国历大韩民国是现在韩国的国号,也曾经是1948年8月15日到1948年9月24日期间韩国纪年法。大韩民国纪年并不是从1948年开始计算,而是以爆发三一独立运动的1919年为纪元元年。所以,建国
  • 固伦公主端庄固伦公主(满语:ᡩᠣᠩᡤᠣ,转写:Donggo;1578年-1652年),本名嫩哲,亦称东果格格、东果公主。清太祖之长女,生母为清太祖元妃。明万历六年(1578年)二月二十二日戌时出生。万历十六年(15
  • 布伦瑞克不伦瑞克公国(德语:Herzogtum Braunschweig)为一前德意志国家,首都为不伦瑞克。1815年维也纳会议建立此国家以取代前布伦瑞克-沃尔芬比特尔亲王国。19世纪该公国先后为德意志邦
  • 普鲁士王子阿尔布雷希特 (1837–1906)普鲁士的阿尔布雷希特(德语:,1837年5月8日—1906年9月13日),普鲁士国王腓特烈·威廉三世的孙子,不伦瑞克公国摄政。1884年,不伦瑞克公爵威廉逝世,原本应由同属韦尔夫王朝的汉诺威王
  • 三线棱背龟三线棱背龟(学名:)是潮龟属下的一种龟。三线棱背龟分布于孟加拉国和印度(阿萨姆邦、比哈尔邦、中央邦、拉贾斯坦邦、北方邦、西孟加拉邦),在尼泊尔可能也存在。
  • 耶稣会教堂 (曼海姆)坐标:49°29′10″N 8°27′40″E / 49.486°N 8.461°E / 49.486; 8.461耶稣会教堂(德语:) 是位于德国城市曼海姆的一座教堂。教堂修建于1733年至1756年期间。1906年曼海姆建城
  • 皮尔瓦尼山 (科拉尼区)坐标:13°48′45″S 70°39′47″W / 13.81250°S 70.66306°W / -13.81250; -70.66306皮尔瓦尼山(Pirhuani),是秘鲁的山峰,位于该国东南部普诺大区,由卡拉瓦亚省的科拉尼区负责管
  • 约瑟夫·阿马里约瑟夫·阿马里(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Keter Aram Tsova","
  • 阿布·卡利贾尔阿布·卡利贾尔(Abu Kalijar,?-1048年),中东阿拉伯白益(Buyid)王朝苏丹,他于1024年继承地位统治今伊朗一地,1033年起整军想并吞邻国伊拉克,连年征战后,终于于1044年被承认为伊拉克苏丹,而