2013-08-20 58 views
3

我正在嘗試使用re2c與迭代器對定義的輸入,而不是空終止的字符串。在C++迭代器源re2c掃描儀

從手冊:

YYCURSOR 
[...] 
On entry, YYCURSOR is assumed to point to the first character of the current token. 
On exit, YYCURSOR will point to the first character of the following token. 

最後這一點意味着它正試圖重複過去的結束。

有沒有什麼竅門可以使re2c與迭代器一起工作? (除了沒有使用檢查的迭代器)。

回答

1

AFAICT,所有你需要做的是設置YYLIMIT指向過去的結束一個字符,如果不存在進一步的數據有YYFILL()回報(而你的情況可能是永遠)。

你可能想看看re2c的例子,特別是strip_comments例子,它從文件中讀取而不是以空字符結尾的字符串。

3

你是否在拉模型中使用re2c,它通過傳遞-f調用YYFILL(n)或推模型?

在拉模型中,當您的迭代器耗盡時,聲明YYFILL(n)來返回。

在推模式中,您的迭代器循環將決定何時輸入完成,並且不會再次調用解析器。