问题标签 [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.
windows - Flex(Lex,而不是 actionscript 或其他)错误
我对 flex 完全陌生。
使用 flex 时出现构建错误。也就是说,我使用 flex 生成了一个 .c 文件,并且在运行它时,我收到了这个错误:
这是我正在使用的 lex 文件(从这里获取):
同样,为什么我必须在 lex 语法代码中放置一个“主”函数?我想要的是能够调用 yylex(); 从另一个c文件。
yacc - 如何从 yacc 中的命令行参数解析?
如何从 yacc 中的命令行参数解析?
当然,我在 lex 和 yacc 中都未定义输入,然后写了
其中 target 包含命令行参数。但是只有标准输入正在执行如何使 dis 输入函数得到执行。
c - c 中词法分析器的输出应该是什么?
如果这段代码通过词法分析器应该是什么输出
c++ - Flex/bison,错误:未声明
你好,我有一个问题,后面的程序返回一个错误,错误::未声明(第一次在函数中使用),为什么会出现这个错误所有标记都被声明了,但是这个错误来了,任何人都可以帮助我,这里是 lex 和yac 文件。谢谢
法:
雅加达:
c - 在 c 中编码词法分析器时出错
在这段代码中,我的 source.txt 存储了 if (a+b) 。但只有 ( , + 和 ) 被写入 lext.txt 而不是标识符 if 或变量 a 和 b 。有什么特别的原因吗?
c - Bison/Yacc 语法中的无意连接
我正在试验 lex 和 yacc 并遇到了一个奇怪的问题,但我认为最好在详细说明问题之前向您展示我的代码。这是我的词法分析器:
这是我的解析器:
一种非常简单的语言,仅由字符串和整数以及一个基本的 REPL 组成。现在,您将在解析器中注意到args 以前导冒号输出,其目的是,当与语句规则的第一个模式结合时,与 REPL 的交互将如下所示:
但是,交互是这样的:
为什么以下规则中的token ID
有总输入字符串的语义值,包括换行符?如何修改我的语法以实现我想要的交互?
c - 如何从 ac 文件中调用您的 yacc?
我想使用 yacc 解析命令行,但我想从 ac 文件中调用它。怎么可能?
lex - lex中无法识别的规则
我正在用 lex 编写一个程序,它给了我以下错误:
scanner.l:49:无法识别的规则
第 49 行是:{number} {return(NUM);}
编辑:但是,错误似乎与之前的行有关,{id} {return(ID);}
. 它将直接在该规则之后列出作为错误源的行,即使它是空白的。
这是我的代码:
这条规则有什么问题?谢谢。
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 上查找但没有运气)。
提前致谢。
yacc - lex 和 yacc 是否提供优化的代码?
Lex 和 Yacc 是否提供优化的代码,或者是否需要我们手动编写自己的代码以获得更高的性能?