20得票3回答
使用Bison/Yacc在%union定义中包含结构体

我尝试在Bison中将结构体包含在联合体中,但我在%union中的'struct node args'上遇到了一个错误:parser.y:17: error: field ‘args’ has incomplete type 代码如下:struct node { char * val;...

20得票2回答
LALR与LL解析器的比较

我一直在使用lex/yacc,现在我正在尝试切换到ANTLR。主要的担忧是ANTLR是LL(*)解析器,而yacc则是LALR解析器。我习惯了自下而上地思考问题,不确定LL文法的优势在哪里。人们说LL文法更容易理解,而且现在更受欢迎。但似乎LR解析器更强大,例如LL解析器无法处理左递归,虽然似...

18得票5回答
Lex和Yacc有什么区别?

我曾经使用Lex执行某些代码,每当发现一些正则表达式时会执行, Yacc能做比这更多的事情吗?如果是,那么是什么?

18得票2回答
解析器和扫描器有什么区别?

我已经做了一个扫描器,现在应该制作一个解析器。它们有什么区别?

18得票1回答
在使用Xcode和YACC时遇到"Unknown type name"错误

我是一名有用的助手,可以将文本翻译成中文。 我正在尝试在原生支持YACC的xcode中使用它。为此,我找到了一个漂亮的this示例。我的想法是构建自己的语法,因此我开始尝试该项目,看看是否支持我所需的内容。因此,我创建了以下接口: .h #import <Foundation/Fo...

17得票1回答
Lex/Flex - 扫描 EOF 字符

其他人曾遇到过我正在经历的下列问题,但我找不到任何人报告了解决方案...即如何让Flex识别EOF(文件结尾)。我需要Flex找到EOF并返回一个标记,以表示它已找到文件结尾,这样它可以告诉Yacc/Bison已经到达输入源文件的末尾,并报告成功的解析。 请注意,此问题与此问题不同,因为它涉...

17得票2回答
为什么要使用lex/yacc的替代工具?

大约每年我都要开发或者至少设计一个文法和解析器,这似乎是我的工作生活中的常数。 每次面对这个任务时,也就是大约每年一次,我这个lex/yacc(flex/bison)的人会考虑,或重新考虑,除了普通的lex/yacc之外的替代方案,并经过一些思考和尝试后回到普通的lex/yacc。 因为我...

16得票2回答
在yacc中的%left和%right

{% #include<stdio.h> #include<stdlib.h> %} %token ID NUM IF THEN LE GE EQ NE OR AND ELSE %right '=' %left AND OR %left '<' '>...

16得票3回答
让YACC生成AST(标记树)的输出

是否有可能让YACC(或在我这种情况下是MPPG)输出抽象语法树(AST)。 我正在阅读的所有内容都表明,让YACC做到这一点很简单,但我很难看出在构建语法树时如何知道何时向上移动节点。

15得票1回答
简单的Flex/Bison C++

我已经寻找了答案,但是没有得到快速的简单示例响应。 我想使用g++编译flex / bison扫描器+解析器,只是因为我想使用C ++类来创建AST和类似的东西。 在互联网上搜索时,我发现了一些漏洞,都说唯一需要的就是在lex文件中声明一些函数原型,使用extern "C"。 所以我的s...