我目前正在研究使用 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 定义前瞻?