11得票1回答
Haskell编译器在实践中如何实现parse-error(t)规则?

Haskell报告中的布局规则中包含一个有点臭名昭著的条款,称为“parse-error(t)”。这个规则的目的是避免强制程序员在单行let表达式和类似情况下编写大括号。相关句子如下: “解析错误(t)”这个条件应该被解释为:如果L生成到目前为止的令牌以及下一个令牌t表示Haskell语法的...

10得票3回答
如何在yacc中使用字符串与yylval

我想要传递一个令牌的实际字符串。如果我有一个名为ID的令牌,那么我希望我的yacc文件实际上知道ID被称为什么。我认为我需要通过使用yylval从flex文件向yacc文件传递一个字符串。我该如何做到这一点?

10得票3回答
编写Z80汇编器 - 使用组合进行ASM词法分析和构建解析树?

我是一个很新的汇编器概念,即使阅读了大量资料,我仍然在一些概念上有困难。 实际上将源文件分解为标记的过程是什么?我相信这个过程被称为词法分析,我已经寻找了很多真正有意义的代码示例,但我什么也找不到,因此非常欢迎简单的代码示例;) 在解析时,信息是否需要向树上传递或向下传递?我之所以问这个问...

10得票5回答
JsLex有哪些错误的Javascript结构词法分析?

JsLex是我用Python编写的JavaScript词法分析器。它在一天左右的工作时间内做得很好,但我相信有些情况它会出错。特别是,它不理解关于自动插入分号的任何内容,可能有些情况对词法分析很重要,只是我不知道这些情况是什么。 JsLex在哪些JavaScript代码中无法正确进行词法分析...

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

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

10得票1回答
实现词法分析器时,使用DFA还是正则表达式?

我还在学习如何编写编译器,如有错误请纠正。 为什么还有人用代码实现DFA(使用goto语句、表驱动实现),而不是直接使用正则表达式呢?据我所知,词法分析器接受一串字符并生成令牌列表,在语言的语法定义中,这些令牌是终端符号,可以用正则表达式描述。如果只是在一堆正则表达式上循环,并在找到匹配时退...

9得票2回答
正则表达式 - 匹配空白字符

我在编写一个正则表达式来去除输入中的所有空格,但是一直遇到困难。 我尝试过 \s+ 和 [ \t\t\r]+ 但是都没有生效。 我需要这个正则表达式因为我正在使用 flex 编写一个扫描器,而且我卡在了匹配空格上。空格应该只是被匹配而不是被移除。 例如输入: program 3.3 ...

9得票1回答
`InputElementDiv`在ECMAScript词法语法中代表什么?

ECMAScript的词法语法列出了以下用于词法分析器(lexer)的令牌类别: 词法语法 InputElementDiv:: WhiteSpace LineTerminator Comment CommonToken DivPunctuator ...

9得票1回答
yytext[0]的含义是什么?

yytext[0]是什么意思?在lex和yacc程序中为什么要使用它?作为学习者,如果这是一个愚蠢的问题,请不要介意。

9得票1回答
使用Flex编写可重入的词法分析器

我是一个新手,想要学习flex。我试图使用flex编写一个简单的可重入词法分析器/扫描器。下面是词法分析器的定义。但是我遇到了编译错误,如下所示(yyg问题): reentrant.l: /* Definitions */ digit [0-9] letter ...