11得票2回答
使用Flex/Bison实现解释器的REPL

我用Flex和Bison为扫描器/解析器编写了类似C语言的语言的解释器。当执行完整程序文件时它可以正常工作。 现在我正在尝试为解释器实现REPL以供交互使用。我希望它能像Ruby或ML中的命令行解释器一样工作: 显示提示符 接受一条或多条语句 如果表达式不完整 显示继续提示符 允许用户...

11得票2回答
Haskell parsing tools - yacc:lex :: happy:?

因此,看起来在Haskell中,Happy似乎是yacc的一个强有力的替代品。是否存在同样强大的词法分析器生成器来替换lex/flex?

11得票1回答
从lex和yacc语法生成编译器

我正在尝试生成一个编译器,以便可以将.c文件传递给它。 我从http://www.quut.com/c/ANSI-C-grammar-y.html下载了YACC和LEX语法,并将它们命名为clexyacc.l和clexyacc.y。 在终端上生成时我执行了以下命令: yacc -d cl...

11得票1回答
Boost.Spirit:Lex + Qi 错误报告

我正在编写一个解析器,用于处理比较复杂的配置文件,其中包括缩进等格式。我决定使用Lex将输入分成标记,因为这样看起来会更容易处理。问题是,我找不到任何使用Qi错误报告工具 (on_error) 的示例,而这些解析器是基于标记流而不是基于字符流的。 on_error 中要使用的错误处理程序需要...

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

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

10得票1回答
在 lex 中如何使 yyin 指向 yacc 中的 main 函数所在的文件?

我将在yacc中存储传递给main的参数到一个文件中。现在我想让lex从这个文件中读取输入,而不是从终端。我知道我可以指向一个文件来设置yyin,例如yyin = fopen("fn","r");,但是这只适用于当main在lex中时。当我在yacc的main函数中使用这个yyin声明时,它会...

10得票6回答
如何在lex中使用yy_scan_string

我想解析一个字符串,我将在yacc的主函数中将其传递给解析器。我知道可以使用yy_scan_string来实现,但我不知道如何使用它。我在网上和手册中搜索了,但仍然不清楚。请帮帮我。

10得票1回答
无法在Lex中识别单行注释

我正在学习词法分析器,并为C语言生成标记。我试图识别单行注释“//”,但是与除法运算符产生冲突。 [1-9][0-9]*|0x[0-9a-fA-F][0-9a-fA-F]* return NUMBER; [a-zA-Z][a-zA-Z0-9]* ...

10得票3回答
我该如何处理Flex词法分析器中的词法错误?

我目前正在尝试使用Flex+Bison编写一个小型编译器,但是在错误处理方面有些迷茫,特别是如何使所有东西协调一致。为了激发讨论,考虑以下我用于字符串字面量的词法分析器片段:["] { BEGIN(STRING_LITERAL); init_string_buffer(); ...

9得票2回答
Ply Lex解析问题

我正在使用ply作为我的词法分析器。我的规范如下: t_WHILE = r'while' t_THEN = r'then' t_ID = r'[a-zA-Z_][a-zA-Z0-9_]*' t_NUMBER = r'\d+' t_LESSEQUAL = r'<=' ...