1

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

4

0 回答 0