如何实现这种EBNF语法(前瞻性?)>

问题描述 投票:0回答:1

[我正在尝试使用TatSu(grako)中的EBNF语法解析字符串“ ###”:

grammar = """mask =
                  | ['()'] ['$'] {'#'} '#'
                  | ['()'] {'#'} '#%'
                  | ['()'] ['$'] {'#'} {'0'} '0' '.#' {'#'}
"""

我收到一个错误:

tatsu.exceptions.FailedToken: (1:1) expecting '#' :
#
^
mask
start

我怀疑搜索{'#'}

(匹配'#'零次或多次),然后找不到'#'(必需字符'#')。是否可以以某种方式实现它,这样一来我首先看到所需的字符'#',然后才查找{'#'}其他字符?

[我正在尝试使用TatSu(grako)中的EBNF语法解析字符串“ ###”:grammar =“”“ mask = | ['()'] ['$'] {'#' }'#'| ['()'] {'#'}'#%'...

python bnf ebnf grako tatsu
1个回答
0
投票

[您需要为可选的'#'前缀的所有实例提供&('#'|'0')正向前瞻:

© www.soinside.com 2019 - 2024. All rights reserved.