我想使用yy_scan_bytes(),因爲我有定義規則的空字符。我的問題是我的字符串可以匹配多個規則。我想要掌握所有匹配的規則。我想一次性提供yylex()函數一個字符,並檢查是否匹配。我嘗試了下面的代碼進行測試,但這不起作用。帶有多個緩衝區的lex flex掃描程序
for(int i=0;i<length;i++)
{
yy_scan_bytes(&temp[i],1);
index=TomsonTalkslex();
}
爲了簡單起見,我只是返回從掃描儀匹配規則的索引。 temp是一個char緩衝區。我嘗試使用yy_switch_to_buffer(yy_scan_bytes(& temp [i],1));但這沒有奏效。
如何告訴掃描程序不要重置其狀態並繼續處理具有相同狀態的後續緩衝區。
爲什麼你需要使用掃描字節?默認情況下,yylex每次讀取一個字符直到EOF,所以空字節應該正常讀取。另外,您是否希望保存當前緩衝區狀態,以便以後使用此緩衝區,或者在切換緩衝區時使用新緩衝區的*最後一個緩衝區狀態保持狀態*? –
我在運行時輸入了數據,所以我需要使用掃描字節。我也想爲每個字符調用yylex,我不想讓它重置狀態機,這就是爲什麼我想保存緩衝區狀態。我想用新的緩衝區使用我的最後緩衝區狀態。例如,我有2個規則,一個用於匹配ab和另一個用於遊行cd。如果我輸入「abcd」來掃描字節,它將只返回一個我認爲是cd的匹配。我想要規則,ab處理時需要ab規則,cd處理時cd,這隻能通過掃描字節完成。 – Saba