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

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

7得票2回答
BISON中什么时候调用%destructor?

在BISON中,什么时候会调用%destructor?我有以下的bison代码: %union{ char * sval; Variable * vval; } %token VARIABLE %token Literal %type <vval> E...

15得票2回答
#error "在包含Support/DataTypes.h之前必须定义__STDC_LIMIT_MACROS"。

我一直在尝试按照http://gnuu.org/2009/09/18/writing-your-own-toy-compiler/5/上的教程(使用flex、bison和llvm)进行操作,但在输入以下命令时: g++ -o parser parser.cpp tokens.cpp m...

7得票1回答
如何管理保留关联规则的相互递归?

整体问题是: 为了允许任意嵌套的expr := '(' expr ')' => expr | expr_without_short_closure和expr_without_short_closure := [expr_without_short_closure => expr]...

7得票2回答
Bison:如果一个标记不符合规则,如何忽略它

我正在编写一个处理评论以及其他一些内容的程序。如果评论位于特定位置,那么我的程序会执行某些操作。 Flex在找到评论时传递一个标记,然后Bison查看该标记是否符合特定规则。如果是,则采取与该规则相关联的操作。 问题在于:我接收到的输入可能实际上在错误的位置有注释。在这种情况下,我只想忽略...

8得票6回答
M4 "没有这个文件或目录"。Bison

这是我在skener.y文件中的代码。 %{ #include <stdio.h> %} %token T_Int %% exp: T_Int { $$ = $1; } | exp exp '+' { $$ = $1 + ...

8得票3回答
解析SPARQL查询

我需要测试几百万个SPARQL查询的某些结构属性,为此我需要 WHERE 语句的结构。目前我正尝试使用fyzz来完成这项任务,但不幸的是它的文档并不是很有用。解析查询很容易,但问题是我还没有能够恢复语句的结构。例如: >>> from fyzz import parse &...

11得票2回答
收到警告:规则无法匹配。

我正在构建一个词法和语法分析器。当我尝试使用flex处理我的.l文件时,出现了以下警告。 littleDuck.l:26: warning, rule cannot be matched 第26条规则以{cteI}开头,我的规则部分如下: [ \t\n] ; {RW} ...

7得票1回答
使用转义字符的 Flex / Lex 编码字符串

以下是一些背景信息的参考: 在flex / lex中用于字符串字面值的正则表达式 我遇到的问题是在我的词法分析器中处理带有转义字符的输入,我认为这可能与字符串的编码有关,但我不确定。 以下是我在词法分析器中处理字符串字面值的方法: \"(\\.|[^\\"])*\" { ...

10得票1回答
如何在Flex/bison中实现If语句

我不理解这个错误,请你帮帮我,这里有 .l 和 .y 文件。谢谢。 %{ #include "ifanw.tab.h" extern int yylval; %} %% "=" { return EQ; } "!=" { return NE; } "<" {...