问题标签 [lex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1255 浏览

windows - Flex(Lex,而不是 actionscript 或其他)错误

我对 flex 完全陌生。

使用 flex 时出现构建错误。也就是说,我使用 flex 生成了一个 .c 文件,并且在运行它时,我收到了这个错误:

这是我正在使用的 lex 文件(从这里获取):

同样,为什么我必须在 lex 语法代码中放置一个“主”函数?我想要的是能够调用 yylex(); 从另一个c文件。

0 投票
1 回答
1894 浏览

yacc - 如何从 yacc 中的命令行参数解析?

如何从 yacc 中的命令行参数解析?

当然,我在 lex 和 yacc 中都未定义输入,然后写了

其中 target 包含命令行参数。但是只有标准输入正在执行如何使 dis 输入函数得到执行。

0 投票
2 回答
2508 浏览

c - c 中词法分析器的输出应该是什么?

如果这段代码通过词法分析器应该是什么输出

0 投票
2 回答
7986 浏览

c++ - Flex/bison,错误:未声明

你好,我有一个问题,后面的程序返回一个错误,错误::未声明(第一次在函数中使用),为什么会出现这个错误所有标记都被声明了,但是这个错误来了,任何人都可以帮助我,这里是 lex 和yac 文件。谢谢

法:

雅加达:

0 投票
3 回答
457 浏览

c - 在 c 中编码词法分析器时出错

在这段代码中,我的 source.txt 存储了 if (a+b) 。但只有 ( , + 和 ) 被写入 lext.txt 而不是标识符 if 或变量 a 和 b 。有什么特别的原因吗?

0 投票
2 回答
1197 浏览

c - Bison/Yacc 语法中的无意连接

我正在试验 lex 和 yacc 并遇到了一个奇怪的问题,但我认为最好在详细说明问题之前向您展示我的代码。这是我的词法分析器:

这是我的解析器:

一种非常简单的语言,仅由字符串和整数以及一个基本的 REPL 组成。现在,您将在解析器中注意到args 以前导冒号输出,其目的是,当与语句规则的第一个模式结合时,与 REPL 的交互将如下所示:

但是,交互是这样的:

为什么以下规则中的token ID

有总输入字符串的语义值,包括换行符?如何修改我的语法以实现我想要的交互?

0 投票
1 回答
385 浏览

c - 如何从 ac 文件中调用您的 yacc?

我想使用 yacc 解析命令行,但我想从 ac 文件中调用它。怎么可能?

0 投票
1 回答
16867 浏览

lex - lex中无法识别的规则

我正在用 lex 编写一个程序,它给了我以下错误:

scanner.l:49:无法识别的规则

第 49 行是:{number} {return(NUM);}

编辑:但是,错误似乎与之前的行有关,{id} {return(ID);}. 它将直接在该规则之后列出作为错误源的行,即使它是空白的。

这是我的代码:

这条规则有什么问题?谢谢。

0 投票
2 回答
2223 浏览

c++ - 开发类似 Python 的小型语言时的缩进控制

我正在使用 flex、byacc(用于词法和解析)和 C++ 开发类似 Python 的小型语言,但我对范围控制有一些疑问。

就像python一样,它使用空格(或制表符)进行缩进,不仅如此,我还想实现索引中断,例如,如果你在另一个while循环内的while循环内键入“break 2”,它不仅会从最后一个,但也从第一个循环开始(因此中断后的数字为 2)等等。

例子:

但由于我没有“反”制表符来检查作用域何时结束(例如 C,我只会使用 '}' 字符)我想知道这种方法是否是最好的:

我会在我的 yacc 文件上定义一个全局变量,例如“int tabIndex”,我将使用 extern 在我的 lex 文件中访问它。然后每次我在我的 lex 文件中找到一个制表符时,我都会将该变量增加 1。在解析我的 yacc 文件时,如果我找到一个“break”关键字,我会减少从 tabIndex 变量中键入的数量,当我在编译后到达和 EOF,我得到一个 tabIndex != 0 我会输出编译错误。

现在的问题是,查看缩进是否减少的最佳方法是什么,我应该从 lex 读取 \b (退格)字符,然后减少 tabIndex 变量(当用户不使用 break 时)?

另一种方法来实现这一点?

也只是另一个小问题,我希望每个可执行文件都有一个名为 start() 的函数的起点,我应该将它硬编码到我的 yacc 文件中吗?

很抱歉这个问题很长,非常感谢任何帮助。另外,如果有人可以为 python 提供一个 yacc 文件作为指导(尝试在 Google 上查找但没有运气)。

提前致谢。

0 投票
2 回答
1768 浏览

yacc - lex 和 yacc 是否提供优化的代码?

Lex 和 Yacc 是否提供优化的代码,或者是否需要我们手动编写自己的代码以获得更高的性能?