有什麼方法可以使用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