问题标签 [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.
parsing - 如何使用 Flex 和 YACC 实现 #include 构造?
在解析过程中,如果我遇到包含标记,我想指示 YACC 打开指定为输入的文件并开始解析它。一旦这个解析完成,我想指示 YACC 返回文件并在包含表达式之后直接继续解析。我会将包含深度级别限制为 1。
c - Lex:如何防止它与子字符串匹配?
例如,我应该将“int”转换为“INT”。但是如果有“整数”这个词,我认为它不应该变成“整数”。
如果我定义"int" printf("INT");
子字符串匹配。有没有办法防止这种情况发生?
c - 在 YACC、Lex 和 C 文件之间共享内存
我有一个 YACC (Bison) 语法、一个 Lex (Flex) 标记器和一个 C 程序,我需要在其中共享一个struct
(或实际上任何变量)。目前,我在语法文件中声明实际对象,并extern
在我需要它的任何地方(也就是说,我的 C 源文件),通常使用指针来操作它。我在 C 文件和语法文件之间有一个共享的头文件(和实现)文件,其中的函数对操作我的数据结构很有用。这行得通,但感觉有点不舒服。有没有更好的方法在语法和程序之间共享内存?
java - 寻找 lex/yacc 格式的 Java 语法
有人知道 lex/yacc 格式语法的在线存储库吗?我正在寻找一种 Java 语法来制作一个快速的源代码转换器。
谢谢!
编辑:我更喜欢寻找 lex/yacc,因为我想使用 fslex/fsyacc 并尽可能少地重写语法。
c - 如何从 lex/yacc 生成不同的 yyparse 函数以在同一程序中使用?
我想从 lex/yacc 生成两个单独的解析函数。通常,yacc 会为您提供一个函数 yyparse(),您可以在需要进行一些解析时调用该函数,但我需要有几个不同的 yyparse,每个都与不同的词法分析器和语法相关联。手册页似乎建议使用 -p (前缀)标志,但这对我不起作用。我从 gcc 收到错误,表明 yylval 没有被正确地重新标记(即它声称没有定义几个不同的标记)。有谁知道生成这些单独功能的一般程序?
谢谢
makefile - Yacc 和 Lex 包含混淆
我想知道如何正确编译带有调用 yyparse 的 Makefile 的程序?
这就是我所做的:
我有一个编译所有常规文件的 Makefile,它们与 y.tab.c 或 lex.yy.c 没有连接(我应该拥有它们吗?)
我在我的代码之上执行此操作:
这是我尝试制作程序时发生的情况:
当我只输入“make”时,它给了我很多警告。一些示例如下所示。
在函数yywrap':
/src/parser.y:12: multiple definition of
yywrap' server.o :/src/parser.y:12: 这里首先定义 utils.o:
在函数yyparse':
/src/y.tab.c:1175: multiple definition of
yyparse' server.o:/src/y.tab.c:1175: 这里首先定义 utils.o
我收到许多不同的错误,涉及不同的 yy_*** 文件。我过去通过多次调用 yyparse 成功编译,但这次似乎有所不同。这似乎很像某个地方的包含问题,但我不知道它是什么。我所有的头文件也有 ifndef 条件。
谢谢你的帮助!
c - Lex(词法分析器)中正则表达式的大问题
我有一些这样的内容:
而且我需要抓住title的双引号之间的所有内容。我的第一次尝试是这样的:
^(" "|\t)+"title"" "*=" "*"\"".+"\","
它抓住了第一个例子,但没有抓住其他两个。另一个有多行,这就是问题所在。我想在\n
某处更改为允许多行的东西,如下所示:
^(" "|\t)+"title"" "*=" "*"\""(.|\n)+"\","
但这无济于事,相反,它捕获了一切。
比我虽然,“我想要的是在双引号之间,如果我抓住所有东西,直到我找到另一个"
后跟的东西,
怎么办?这样我就可以知道我是否在标题的末尾,无论行数如何,比如这:
^(" "|\t)+"title"" "*=" "*"\""[^"\""]+","
但这还有另一个问题......上面的例子没有它,但是双引号("
)可以在标题声明之间。例如:
是的,它总是以反斜杠 ( \
) 开头。
有什么建议可以解决这个正则表达式吗?
java - 用 flex 区分字符串
我需要标记一些字符串,这些字符串将根据= and !=
. 在字符串具有运算符之前,我成功使用了正则表达式!=
。在我的情况下,字符串被分成两部分,这是意料之中的,但!
标记在左侧,即使它是给定运算符的一部分。因此,我认为 regex 不适合它,我想从中受益lex
。由于我对 lex 没有足够的知识和经验,我不确定它是否适合我的工作。基本上,我试图用来自其他数据的实际值替换运算符的右侧。你们认为这对我的案子有帮助吗?
谢谢。
ruby - 解析 ERB 文件的库
我试图以 Hpricot/Nokogiri 类型的方式解析而不是评估 rails ERB 文件。我尝试解析的文件包含与使用 ERB(标准 Rails 视图文件)生成的动态内容混合的 HTML 片段ERB 符号、<%、<%= 等,就好像它们是 html/xml 标记一样。
理想情况下,我会得到一个类似 DOM 的结构,其中 <%、<%= 等符号将作为它们自己的节点类型包含在内。
我知道可以使用正则表达式一起破解某些东西,但我正在寻找更可靠的东西,因为我正在开发一个工具,我需要在一个非常大的视图代码库上运行,其中 html 内容和 erb 内容是重要的。
例如,内容如:
将返回一个树结构,如:
gcc - 无法编译 lex 的输出
当我尝试编译这个微不足道的 lex 程序的输出时:
使用:
我得到:
lex --version 告诉我我实际上使用的是“flex 2.5.35”,尽管 ls -fla `which lex` 不是符号链接。为什么输出无法编译的任何想法?