菜鸟教程小白 发表于 2022-12-12 23:39:57

ios - 暂停/继续解析 PEGKit 解析器?


                                            <p><p>我有一个从 <a href="https://github.com/itod/pegkit" rel="noreferrer noopener nofollow">PEGKit</a> 创建的解析器(示例项目 <a href="https://github.com/itod/PEGKitMiniMathTutorial" rel="noreferrer noopener nofollow">here</a> )。</p>
<p>我想暂停解析,而不停止主线程。由于 <code>PEGKit</code> 具有无限回溯,并且知道光标/头部在输入字符串中的位置,因此应该可以恢复解析。</p>
<p>这将非常有帮助,这样我就可以逐步创建解析器。所以解析器必须等待一个 uiAction ,比如按下 <code>UIButton</code>。</p>
<p>如何实现或暂停然后恢复解析?</p>
<hr/>
<p>作为一个例子,我会<strong>想在到达某个符号时暂停解析​​</strong>。这是在 <code>;</code>(分号或 <code>EXPRESSIONPARSER_TOKEN_KIND_SEMI_COLON</code>)之后。</p>
<p>所以在 token<code>;</code> 之后应该保存状态,所以我可以从这个位置返回和解析。</p>
<h3>代码:</h3>
<pre><code>- (void)start {
    ;
    ;
}

- (void)__main {
   
    while (; }]) {
      ;
    }

    ;
}

- (void)__expression {
   
    if ([self speculate:...) {
      if ([self predicts:...) {
            ;
      } else {
            ;
      }
    }
    ;

    ;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这里是 PEGKit 的开发者。</p>

<p>我认为当您考虑它时会很明显,PEGKit + 线程就是您正在寻找的东西。并且不需要为此向 PEGKit 添加额外的功能。</p>

<p>您正在寻找通过 PEGKit 暂停和恢复执行解析的功能。您已经可以通过线程访问此功能。</p>

<p>只需在后台线程上执行解析,并通过调用一个方法暂停该线程,该方法会一直阻塞,直到用户表示她想继续。这本质上与终端提供的环境/体验类型相同:在等待用户输入时执行和暂停。 (我自己用一些 <a href="https://github.com/itod/threadutils" rel="noreferrer noopener nofollow">thread utils I posted here</a> 实现了这个东西。)</p>

<p>所以我认为将线程直接提供的所有功能添加到 PEGKit 是错误的方法。</p>

<p>如果您想跟踪 PEGKit 解析的状态,只需在解析器委托(delegate)回调中管理一堆方法名称。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 暂停/继续解析 PEGKit 解析器?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/24557169/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/24557169/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 暂停/继续解析 PEGKit 解析器?