【发布时间】:2014-04-26 14:46:18
【问题描述】:
假设我有以下内容:
pattern { /* 在此处过滤/处理然后调用 */ yymore(); }
我想做的是在调用 yymore() 之前过滤/处理 yytext 中的一些内容。 yytext 的长度永远不会增长,只会通过处理变得更短。这需要能够缩短 yytext。作为一个起点,我试图看看是否有一种简单的方法来例如删除 yytext 的最后一个字符,但做一些幼稚的事情,比如
yytext[yyleng-1] = '\0'; yyleng--;
行不通。 yymore() 似乎在 NIL 字符之后附加了一些东西,这表明 flex 生成的代码中有一些指针指向 yytext 的当前结尾。有没有一些惯用的方式来做到这一点,而不必编写更复杂的规则集?
像 yyless 这样的东西会把东西放回输入流中,这不是我想要的。
【问题讨论】:
标签: flex-lexer