有什么方法可以使用Flex将令牌放回到输入流中?我想象yyunlex()
一些功能。如何使用Flex(快速词法分析器)unlex?
3
A
回答
2
您有几个选项。
您可以使用unput(ch)
将令牌的每个字符放回到输入流中,其中ch是字符。该调用将ch作为输入流中的下一个字符(下一个要在扫描中考虑的字符)。所以如果在令牌匹配期间保存字符串,你可以这样做。
您可能希望查看yyless(0)
这将把令牌中的所有字符都放回到输入流中。我从来没有使用过这个,所以我不确定是否有任何陷阱。您可以指定一个整数n
hwich将除了前n个字符之外的所有字符都放回输入流。
现在,如果您要在扫描/解析过程中经常这样做,您可能希望仅使用lex来构建令牌并将令牌放置到您自己的数据结构中进行解析。这与野牛和yacc生成的yyparse()
函数的作用类似。
3
有宏REJECT
这将把令牌回流,并继续匹配其他规则,就好像第一次匹配没有。如果你只是想把一些char返回给流@ Kizaru的答案就足够了。
例片段:
%%
a |
ab |
abc |
abcd ECHO; REJECT;
.|\n printf("xx%c", *yytext);
%%
相关问题
- 1. 正则表达式匹配小写字词,但使用Flex排除某些单词(快速词法分析器)
- 2. 如何在jflex(flex)词法分析器中使用“\ S”?
- 3. Mac上安装flex(词法分析器)
- 4. Xcode flex词法分析器未生成
- 5. Flex(词法分析器){+}和{ - }运算符
- 6. 错误编译flex(词法分析器)
- 7. 找出Flex(词法分析器)yy_push_state
- 8. FLEX(词法分析器) - 匹配的Unicode
- 9. Flex ++的多个词法分析器
- 10. 如何在JavaCC分析器中使用JFlex词法分析器?
- 11. 如何更改Flex词法分析器的错误行为?
- 12. 如何在Flex(词法分析器)中定义数字格式?
- 13. ANTLR:如何用python生成词法分析器和分析器?
- 14. 有没有Flex(“快速LEXical分析仪”)调试器?
- 15. 词法分析器
- 16. 词法分析器用C++
- 17. ocaml分析器和词法分析器
- 18. ANTLR的使用分析器内词法
- 19. 为什么使用词法分析器?
- 20. FLEX(词法分析器)正则表达式 - 重用定义
- 21. 词法分析器如何返回分析器使用的语义值?
- 22. 如何编写Python词法分析器?
- 23. pygments如何猜测词法分析器?
- 24. Flex:如何使用Flex Builder分析器计算UI操作?
- 25. 如何启用flex中的最短匹配规则(词法分析器)?
- 26. 如何快速分析HTTP Post响应
- 27. 如何快速分析postgres数据库
- 28. 在flex(词法分析器)中可以使用反向引用吗?
- 29. 如何使用类似的词法分析器
- 30. “Ad Hoc”词法分析器
这是一个Adobe Flex的相关问题,或者它应该被标记瓦特/ GNU-FLEX?这个问题是如此缺乏细节,我不知道。 – JeffryHouser
将标签从flex更改为gnu-flex。前者是指Adobe Flex框架,后者是指快速词法分析器。 – Kizaru
@Kizaru谢谢 – saadtaame