首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ragel中暂停和恢复解析

在Ragel中暂停和恢复解析
EN

Stack Overflow用户
提问于 2012-12-13 06:51:53
回答 1查看 412关注 0票数 0

我正在使用Ragel来解析C++中的字符串。我需要能够无限期地暂停解析,然后从中断的地方继续解析。

现在,我正在尝试通过将fbreak放在结束操作的末尾来实现这一点。这似乎工作得很好,将控制权交还给了父程序。但是,我不确定如何恢复解析。我认为仅仅调用%write exec生成的代码就足够了,但事实似乎并非如此。当它返回到解析时,对原始字符串的引用似乎是错误的/丢失的。

我不确定我在C++中做错了什么(这不是我的母语),或者我对Ragel采取了错误的方法。

下面是我的开始和简历代码:

代码语言:javascript
复制
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()时,我的状态机最终输出了fbreak,然后我调用resume() (希望)继续解析。

我可能做错了什么,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-12-13 08:51:31

看起来像是某种悬空指针的问题。将theString的初始化转移到其他地方似乎已经解决了这个问题。所以基本上,我的C还是很烂。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13850080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档