如何在 Lark 中实现前瞻?

问题描述

我目前正在研究使用 Lark 编写 Python 3.8 语法所做的工作,我想知道如何使用 Python 3.9 语法规范来完成,这对我来说看起来有点简单。请注意,我不确定下面描述的方法是否正确。

在 Python 3.9 语法规范中,我们有一些使用否定前瞻的规则,如下所示:

named_expression:
    | NAME ':=' ~ expression 
    | expression !':='    <--- This rule

我尝试使用正则表达式来定义这种负前瞻:

negative_lookahead: /(?!:=)/

但它会产生以下异常:LexError: Lexer does not allow zero-width terminals. 有没有办法用 Lark 定义前瞻?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)