当前位置: 首页 > 知识库问答 >
问题:

Antlr C解析器能从无效令牌中恢复吗

冯元徽
2023-03-14
    null

共有1个答案

董花蜂
2023-03-14

您需要使用上面描述的方法重写Match(),并执行解析器的恢复(这是C#伪代码):

    public override object Match(IIntStream input, int ttype, BitSet follow)
    {
        if (needs recover)
        {
            ... Recover from mismatch, i.e. skip until next valid terminal.
        }

        return base.Match(input, ttype, follow);
    }

此外,还需要从不匹配的令牌中恢复:

    protected override object RecoverFromMismatchedToken(IIntStream input, int ttype, BitSet follow)
    {
        if (needs recover)
        {
            if (unwanted token(input, ttype))
            {

                .. go to the next valid terminal
                .. consume as if ok
                .. return next valid token

            }

            if (missing token(input, follow))
            {
                .. go to the next valid terminal
                .. insert missing symbol and return
            }

            .. othwerwise throw
        }

        .. call base recovery(input, ttype, follow);
    }

如果有其他问题请告诉我。

 类似资料:
  • 问题内容: 尝试为变量分配值时出现问题。当我尝试按以下顺序将日期作为元组或列表时,问题就会出现: 为什么要打apping? 我如何解决它? 令牌在Python中是什么意思? 问题答案: 在Python 3中,数字前导零是不允许的。例如: 等是不允许的,但应改为和。 但是,在Python 2中,前导零表示该数字是一个 八进制数 (以8为底),因此,或分别表示和,并且以八进制表示,但由于它不是有效的八

  • 我在中间件中添加了以下代码,用于JWT Auth的用户身份验证,这对于中间件处理的所有路由都很有效。 但是对于一个使用Post方法的路由,令牌被正确传递,但我仍然得到: JWTException-无法从请求中分析令牌 在我尝试的同一路线上: 输出: 我能够看到我用来访问其他路由的有效令牌,并且该令牌在所有其他路由上都能正常工作。 提前感谢!!!

  • 我正在使用lxml的解析一些大的XML文件(3-5Gig)。由于其中一些文件具有无效字符a。 当使用lxml时。埃特里。parse I可以提供一个解析器,用于恢复无效字符: 有没有办法让iterparse获得相同的功能? 编辑:编码不是这里的问题。这些XML文件中存在无效的字符,可以通过定义一个具有恢复=True的XMLParser来清理这些字符。因为我需要为此使用迭代解析,所以我不能使用自定义解

  • 我遵循本教程使用JWT令牌。令牌到期时间设置为仅5分钟,但如果我想在使用1分钟后使令牌无效,该怎么办?我希望能够对API进行调用,以删除我的令牌。 我正在使用Express和Node。 从我能收集到的信息来看,我的选择是拥有一个存储令牌的令牌db。当我想让我的令牌过期时,我会从DB中过期/删除该令牌。 我还看到人们随意地说“移除”物理硬盘空间中的令牌,但我无法找出令牌的物理存储位置,以便我移除它。

  • 问题内容: 对于我正在研究的一个新的node.js项目,我正在考虑从基于cookie的会话方法切换(这意味着,将ID存储到包含用户会话的键值存储中的用户浏览器中)到使用JSON Web令牌(jwt)的基于令牌的会话方法(无键值存储)。 该项目是一个利用socket.io的游戏-在单个会话(web和socket.io)中会有多个通信渠道的情况下,基于令牌的会话将非常有用。 如何使用jwt方法从服务器

  • 对于我正在进行的一个新的Node.js项目,我正在考虑从基于cookie的会话方法(我的意思是,将id存储到包含用户浏览器中用户会话的键值存储)切换到使用JSON Web令牌(jwt)的基于令牌的会话方法(无键值存储)。 这个项目是一个利用socket.io的游戏--在一个会话中有多个通信通道(web和socket.io)的情况下,拥有一个基于令牌的会话会很有用 如何使用jwt方法从服务器提供令牌