精华内容
参与话题
问答
  • yacc

    千次阅读 2012-08-21 16:54:46
    根据BNF自动生成语法分析器代码的程序,最后输出一颗语法树出来。...yacc生成的编译器主要是用C语言写成的语法解析器(Parser),需要与词法解析器Lex一起使用,再把两部份产生出来的C程序一并编译。y

    根据BNF自动生成语法分析器代码的程序,最后输出一颗语法树出来。

    全称

      yacc(Yet Another Compiler Compiler)

    编辑本段简介

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

    编辑本段分析程序生成器

      分析程序生成器(parser generator)是一个指定某个格式中的一种语言的语法作为它的输入,并为该种语言产生分析过程以作为它的输出的程序。在历史上,分析程序生成器被称作编译-编译程序( compiler- compiler ),这是由于按照规律可将所有的编译步骤作为包含在分析程序中的动作来执行。现在的观点是将分析程序仅考虑为编译处理的一个部分,所以这个术语也就有些过时了。合并 LALR(1) 分析算法是一种常用的分析生成器,它被称作 Yacc( yet another compiler- compiler )。给出 Yacc 的概貌来,将使用Yacc为 TINY 语言开发一个分析程序。
      作为 Yacc 对说明文件中的 %token NUMBER 声明的对应。Yacc 坚持定义所有的符号记号本身,而不是从别的地方引入一个定义。但是却有可能通过在记号声明中的记号名之后书写一个值来指定将赋给记号的数字值。
      yacc的输入是巴科斯范式(BNF)表达的语法规则以及语法规约的处理代码,Yacc输出的是基于表驱动的编译器,包含输入的语法规约的处理代码部分。
      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的功能和需求。
      http://dickey.his.com/byacc/byacc.html Berkeley Yacc 一般认为是目前最好的yacc变种。与bison相比,避免了对特定编译器的依赖。
      http://www.informatik.uni-freiburg.de/proglang/software/essence/ Essence,Scheme的LR(1)语法解析器的生成器
      http://download.plt-scheme.org/scheme/plt/collects/parser-tools/ 用于DrScheme的语法解析工具
      http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/ Coco/R Java和C#的扫描和解析器
      http://mhss.nease.net/unix/yacc.html Yacc: 另一个编译器的编译器,Stephen C. Johnson
    展开全文
  • yacc conflicts

    2020-11-30 11:23:02
    <div><p>yacc warns about some conflicts and then chooses whatever default it seems was more likely intended. We should remove those conflicts. I don't understand the yacc language that well, but ...
  • Yacc基本语法

    2019-05-03 01:40:51
    <p>I started to look into <a href="https://github.com/ircmaxell/PHP-Yacc" rel="nofollow noreferrer">PHP-Yacc</a> and I'm having the hard time with examples. <p>Here is a basic grammar: <pre><code> ...
  • 一个Lex/Yacc完整的示例(可使用C++)

    热门讨论 2013-04-27 17:56:08
    本框架是一个lex/yacc完整的示例,用于学习lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以编译和执行。 本例子虽小却演示了lex/yacc程序最常见和重要的特征: * lex/yacc文件格式、程序结构。 * 如何...
  • Remove YACC from bison

    2020-12-01 20:03:28
    <div><p>Having YACC makes my recipe build fail. Removing it makes it work. <p>Helped me figure that out earlier. <p>Specify library name and version: <strong>bison</strong></p> <ul><li>[ ] I've ...
  • m trying to get the whois server running through travis-ci.org but it fails because yacc.linux somehow is not able to run on 64-bit machines. <p>Where did yacc.linux and yacc.macosx come from? Isnt ...
  • Travis CI + Yacc replacement

    2020-12-02 10:13:52
    ve located the sources of the yacc.linux and yacc.macosx binairies that were included in this git repository. The inclusion of these 32-bit binaries seemed to prevent building through Travis CI, ...
  • 使用yacc的模态解析器

    2016-06-07 19:17:35
    <p>I am writing my first parser in yacc. I would like to parse a file that has 3 "modes": <li>Statement mode <li>Table heading mode <li>Table row mode <p>I would like my parser to start out in ...
  • Lex与Yacc(第二版)

    2019-07-22 16:56:06
    资源名称:Lex与Yacc(第二版)内容简介: 《lex与yacc》(第二版)是惟一一本专门介绍这两个重要的UNIX编程工具的书。这本新版本是完全的修订版,并以很多新的扩充示例代替了旧的示例。几个介绍性章节已经完全重写...
  • Token objects in yacc parser

    2020-11-29 10:02:53
    I specially add type and value fields to be compatible with yacc parser API. <p>I define tokens in this like way and return contstructed objects as tokens: <pre><code> class Comment(Source): pass def...
  • 很多人都知道lex&yacc,特别是计算机科班毕业的。因为在unix上自带的bshell就有这些功能。 cygwin里面也有这些。 可是,这种基本的功能,在win32平台下,微软似乎忘了。 有个外国人写了个软件Parser Generator (bum...
  • LEX/YACC环境安装

    2018-06-09 21:24:11
    压缩包包含两个程序: bison-2.4.1-setup.exe\flex-2.5.4a-1.exe 下载后直接点击安装就可以,接着右键计算机,打开属性->高级系统设置->环境变量,在...之后你就可以在cmd中通过命令编译你的lex\yacc文件了。 绝对可用
  • 在开发程序的过程中经常会遇到文本解析的问题,例如:解析 ...本系列文档就是专门用来由浅入深的介绍两 个有名的 Unix 工 具 Lex 和 Yacc,并会一步一步的详细解释如何用这两个工具 来实现我们想要的任何 功能的解析程序
  • <p>I am trying to create a parser using <a href="https://golang.org/cmd/yacc/" rel="noreferrer">golang's yacc tool</a>. I found <a href="https://github.com/blynn/nex" rel="noreferrer">nex</a> to ...
  • lex yacc for windows

    热门讨论 2012-06-19 23:50:01
    windows下的yacc 和 flex工具,安装时注意不要有空格,然后命令行进入bin目录,就可以用命令行调用这两个工具了,命令行如下: flex xx.l bison -d xx.y
  • 网上当前Lex与Yacc的书籍分两个版本,非扫描的清晰版本(但只有前5章)和非清晰扫描版本(书里头的代码都看不清)。 虽然看完前5章能大体掌握Lex与Yacc的用法,但要写出类型编程语言解析器等复杂的解析器,没有深入...
  • import ply.yacc as yacc string = """<?php if (isset($_REQUEST['name'])){ $name = $_REQUEST['name']; $msg = "Hello, " . $name . "!"; $encoded = htmlspecialchars($msg); } ?>""" delimeters = ...
  • Yacc fixes

    2020-11-25 00:22:29
    <div><p>该提问来源于开源项目:9fans/plan9port</p></div>
  • <p>I used the variable(yylval) in the action part of grammar rules in the yacc file(some.y file). The code worked in Go 1.5. But the same code didn't compile in Go 1.6. When I checked the generated y....
  • <p>I'm writing a grammar for a toy language in Yacc (the one packaged with Go) and I have an expected shift-reduce conflict due to the following pseudo-issue. I have to distilled the problem grammar ...
  • <p>It panics,"Index out of range in yacc.go:891" When I looked at the file <a href="https://golang.org/src/cmd/yacc/yacc.go" rel="nofollow">https://golang.org/src/cmd/yacc/yacc.go</a>, I saw this ...
  • Lex 和 Yacc 是 UNIX 两个非常重要的、功能强大的工具。事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 FORTRAN 和 C 的编译器如同儿戏。本书为您详细的讨论了编写自己的语言和编译器所用到的这两...
  • lex_yacc.zip

    2020-05-29 17:52:08
    lex与yacc第二版配套 源码 及程序。包含lex及yacc的替代程序,可在win7 win10下运行,还包括ch1-02.l 的一个vs2010的工程例子,详细使用说明见: https://blog.csdn.net/lacoucou/article/details/106429068 资源...
  • 介绍如何使用lex和yacc(用于生成词法分析器和解析器的工具)构造编译器。
  • <p>This patch provides that same behaviour for byacc by symlinking yacc to byacc and yacc.1 to byacc.1 for the man pages. <p>This patch can indirectly also fix two partially broken formula (as for as...
  • LexYacc教程

    2014-04-02 23:51:34
    包含教程呢,还有工具
  • lex与yacc.pdf

    2020-08-05 10:27:44
    这是关于编译原理, 词法分析lex, 与语法分析yacc的相关文档,高清版,但是这只有该书的前5章 第一章 lex与yacc 第二章 lex使用 第三章 yacc使用 第四章 菜单生成与语言 第五章 SQL分析
  • 什么是yacc

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

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

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

     

     

    展开全文
  • 压缩包包含两个程序: bison-2.4.1-setup.exe\flex-2.5.4a-1...绝对可用,本人亲试,如果编译不成功的可能是你写的lex\yacc文件有问题,用一个好的示例文件进行编译就知道这可以用了(血泪教训啊,当初还以为不能用呢)

空空如也

1 2 3 4 5 ... 20
收藏数 2,117
精华内容 846
关键字:

yacc