我正在尝试使用TatSu(grako)中的EBNF语法解析字符串“####”:
grammar = """mask =
| ['()'] ['$'] {'#'} '#'
| ['()'] {'#'} '#%'
| ['()'] ['$'] {'#'} {'0'} '0' '.#' {'#'}
"""
我得到一个错误:
tatsu.exceptions.FailedToken: (1:1) expecting '#' :
#
^
mask
start
我怀疑搜索{'#'}(匹配'#'零次或多次)是首先执行的,之后无法找到'#'(必需字符'#')。 是否可以以某种方式实现它,以便首先看到所需的字符'#',然后再查找{'#'}其他字符
您需要为可选“#”前缀的所有实例提供
&('#'|'0')
正向前瞻:请注意,最后一行中重复的“0”前缀将有相同的问题。您还需要向它添加一个
&'0'
前瞻检查相关问题 更多 >
编程相关推荐