【发布时间】:2012-12-12 22:51:52
【问题描述】:
我正在使用 Ragel 解析 C++ 中的字符串。我需要能够无限期地暂停解析,然后从中断的地方继续解析。
现在我正在尝试通过在完成操作的末尾放置一个fbreak 来做到这一点。这似乎工作正常,将控制权交还给父程序。但是,我不确定如何恢复解析。我以为只调用%write exec 生成的代码就足够了,但似乎并非如此。当它重新解析时,对原始字符串的引用似乎是错误的/丢失了。
不确定我在这里用 C++ 做错了什么(这不是我的母语),或者我对 Ragel 采取了错误的方法。
这是我的开始和恢复代码:
const char *p;
const char *pe;
void start()
{
int len = theString.length();
char chars[len+1];
theString.toCharArray(chars, len+1);
p = chars;
pe = chars + len;
resume();
}
void resume() {
%% write exec;
}
我第一次调用start(),我的状态机最终fbreaks 出来,然后我调用resume()(希望)继续解析。
关于我可能做错了什么的任何指示?
【问题讨论】: