在flex中,我想爲正則表達式的一個匹配返回多個標記。有沒有辦法做到這一點?FLEX:有沒有辦法一次返回多個標記
7
A
回答
0
你是指所有比賽?你正在使用正則表達式函數或字符串函數嗎?使用全局標誌。
至於flex,我認爲你不能這樣做。您一次測試一種模式的匹配,因此可能超出範圍。你爲什麼要那個?作爲優化?範圍界定問題?
2
我一直這樣做的方法是創建一個待返回令牌隊列,並在yylex()
開頭,檢查令牌並返回它們。
-1
通常,這是由掃描器頂部的解析器處理的,它爲您提供了更簡潔的代碼。你可以模仿在一定程度上與各州:
%option noyywrap
%top {
#define TOKEN_LEFT_PAREN 4711
#define TOKEN_RIGHT_PAREN 4712
#define TOKEN_NUMBER 4713
}
%x PAREN_STATE
%%
"(" BEGIN(PAREN_STATE); return TOKEN_LEFT_PAREN;
<PAREN_STATE>{
[0-9]+ return TOKEN_NUMBER;
")" BEGIN(INITIAL); return TOKEN_RIGHT_PAREN;
.|\n /* maybe signal syntax error here */
}
%%
int main (int argc, char *argv [])
{
int i;
while ((i = yylex()))
printf ("%d\n", i);
return 0;
}
但是這將變得非常凌亂,只要你的語法變得更加複雜。
相關問題
- 1. 有沒有辦法標記一個方法原子?
- 2. 有沒有辦法在一個getter中返回三個容器?
- 3. 有沒有辦法在Enterprise Architect中刪除多個標記值?
- 4. 有沒有辦法多次使用.innerHTML?
- 5. 有沒有辦法讓YQL返回HTML?
- 6. 有沒有辦法將Java方法標記(例如註釋)爲永不返回?
- 7. PVRTexTool,有沒有辦法一次運行多個文件?
- 8. 有沒有辦法一次下載多個zip使用PHP
- 9. 有沒有辦法從vim一次打開多個文件?
- 10. 有沒有辦法一次向API發送多個JS請求?
- 11. ng-bootstrap Datepicker:有沒有辦法一次選擇多個日期?
- 12. 有沒有辦法一次運行多個iOS模擬器?
- 13. 有沒有辦法知道返回一個布爾
- 14. 有沒有辦法在Response中返回一個值?
- 15. 有沒有辦法從Python返回一個數據框到R?
- 16. 有沒有辦法簡單地返回一個BlockingCollection
- 17. 有沒有什麼辦法在SQLite中標記一個表?
- 18. (Mercurial)有沒有什麼辦法可以返回並標記分支的開始?
- 19. 有沒有辦法記錄這個?
- 20. 有沒有辦法在Java中說「方法返回這個」?
- 21. 有沒有辦法用字母標記我的地圖標記?
- 22. 有沒有辦法只回聲一次,而不是重複?
- 23. 有沒有辦法在JS中做一個提示返回一個數字?
- 24. 有沒有辦法一次批量更改winform標籤名稱?
- 25. 有沒有辦法在一個一次性的風格
- 26. 有沒有辦法不使用CoffeeScript返回一些東西?
- 27. 有沒有辦法只返回複合主鍵的一部分?
- 28. 有沒有辦法讓這個範圍批量返回結果
- 29. 有沒有辦法在一個if語句中有多個值?
- 30. 有沒有辦法從Twilio調用中檢索多個記錄?
說實話,我相當新的flex和我不確定。我以爲我正在使用正則表達式和字符串匹配的組合。 下面是一個例子 「(」 \t \t {返回L_PAREN;} {INT} {yylval.Int =的atoi(yytext中);返回INT;} 我想是能夠在一次返回兩個令牌。 – Eburetto 2009-02-22 09:44:23