- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有以下内容:
pattern {/* 在这里过滤/处理然后调用 */yymore();
我想做的是在调用 yymore() 之前过滤/处理 yytext 中的一些内容。 yytext 的长度永远不会增长,只有在处理过程中可能会变短。这需要能够缩短 yytext。作为起点,我试图看看是否有一种简单的方法,例如删除 yytext 的最后一个字符,但是做一些天真的事情,比如
yytext[yyleng-1] = '\0'; yyleng--;
不会工作。 yymore() 似乎在 NIL 字符之后附加了一些东西,这表明在 flex 生成的代码中有一些指针指向 yytext 的当前结尾。有没有一些惯用的方法可以做到这一点而不必编写一组更复杂的规则?
像 yyless 这样的东西会把东西放回输入流中,这不是我想要的。
最佳答案
您不能在 C 版本的“flex”中这样做,因为 yytext
直接指向输入缓冲区。它不是副本。如果你修改输入缓冲区,你会把事情搞砸的。 flex 非常小心地处理每个字符一次且仅一次,并且除了您提供给它的任何源之外,它不会自己做任何额外的缓冲。我相信它在执行 Action 时会暂时将 NUL 放入缓冲区,并在 Action 返回时再次将其取出,为此它必须有一个指向 NUL 所在位置的指针。
我会在适当的位置将该处理移动到语法中,您必须在此处获取 yytext.
的副本。
关于flex-lexer - 在调用 yymore() 之前修改/过滤 yytext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22521406/
我正在尝试为 k 符号构建一个 flex 规范,例如:3k5 = 3500。我有以下内容: [0-9]+{LETTER} { yyless(yyleng-1); yy_push_state(
yytext [0]是什么意思?以及为什么要在lex和yacc程序中使用?我是学习者,所以不要介意这是一个愚蠢的问题。 最佳答案 yytext保存与当前标记匹配的文本。因此yytext [0]保留了与
帖子下面的评论中提到了解决方案我遇到了一个问题,我有一个声明,例如i = ary[4]; lex 打印出“ary”,但是 yacc 由于某种原因打印出“[”,这意味着 yytext 被某种方式覆盖。
我正在为一项大学作业编写一个带有 flex 和 bison 的编译器。我在向我的符号表中添加函数标识符时遇到了问题 - 在评估函数声明时,我在 yytext 中得到了我期望标识符的左括号。在我的 fl
我正在尝试创建一个词法分析器,它将返回文本文件中标记的长度。 我有一个文本文件,里面只有一个字母“a”。 下面是我的lex.l文件 %option noyywrap %{ %} /* regular
当我试图在 yacc&lex 中编译我的代码时,我得到了这个错误: yacc代码: %{ #include #include #include #define YYSTYPE struct no
我有一个程序正在使用 LEX 和 YACC 处理一些句子。我最初是在带有 lex 2.5.35 和 bison (GNU bison) 2.5 的 Debian 机器上开发的。我已将代码迁移到 Cen
本文整理了Java中jxl.biff.formula.Yylex.yytext()方法的一些代码示例,展示了Yylex.yytext()的具体用法。这些代码示例主要来源于Github/Stackove
本文整理了Java中com.ximpleware.xpath.Yylex.yytext()方法的一些代码示例,展示了Yylex.yytext()的具体用法。这些代码示例主要来源于Github/Stac
我花了两天的时间绞尽脑汁试图找出程序为什么会这样。对于一个类(class)项目,我正在尝试编写一个程序来解析地址并以某种方式输出它。在我真正到达程序的输出部分之前,我只是想确保我的 Bison-fu
我一直在处理一个示例问题来为表达式构造三地址代码。但令我惊讶的是,YACC 似乎跳过了我的第一个输入符号。我将在输出中附上一张图像以使其清晰。 规则并不太复杂,所以我似乎不明白问题出在哪里。 这是我的
本文整理了Java中org.json.simple.parser.Yylex.yytext()方法的一些代码示例,展示了Yylex.yytext()的具体用法。这些代码示例主要来源于Github/St
本文整理了Java中org.jooq.tools.json.Yylex.yytext()方法的一些代码示例,展示了Yylex.yytext()的具体用法。这些代码示例主要来源于Github/Stack
本文整理了Java中com.ximpleware.extended.xpath.Yylex.yytext()方法的一些代码示例,展示了Yylex.yytext()的具体用法。这些代码示例主要来源于Gi
本文整理了Java中org.teiid.json.simple.Yylex.yytext()方法的一些代码示例,展示了Yylex.yytext()的具体用法。这些代码示例主要来源于Github/Sta
拜托,我面临一个简单的问题..这就是问题所在,在我的 lex 文件中,我有类似的内容: char *ptr_String; "name = " { BEGIN sName; } .+ {
假设我有以下内容: pattern {/* 在这里过滤/处理然后调用 */yymore(); 我想做的是在调用 yymore() 之前过滤/处理 yytext 中的一些内容。 yytext 的长度永远
本文整理了Java中org.apache.chemistry.opencmis.commons.impl.json.parser.Yylex.yytext()方法的一些代码示例,展示了Yylex.yy
我正在尝试使用可重入 lex 和 yacc 编写一个简单的计算器应用程序。在这里我希望创建两个线程(解析器)来解析输入文件中提供的输入。输入文件中要解析的行被分成两个线程.. 我的简单计算器 lex
我是一名优秀的程序员,十分优秀!