使用ebnf和空格的pyparsing

2 投票
1 回答
955 浏览
提问于 2025-04-17 02:37

我正在使用http://pyparsing.wikispaces.com/file/view/ebnf.py来转换我的ebnf定义。

ebnf定义看起来是这样的:

TEST = A, SPACE, A;

A = "AA" | "BB";
SPACE = " ";

如果我加载这个文件,然后尝试解析一个像这样的字符串:

e = ebnf.parse(ebnf_file)
e['TEST'].leaveWhitespace().parseString('AA BB') # same without leaveWhitespace()

我得到:

ParseException: Expected " " (at char 3), (line:1, col:4)

有没有人有什么想法或解决方案?

1 个回答

1

要使用 leaveWhitespace() 这个功能,你得把它应用到原本带有空格的标签上。所以可以试试下面的代码:

e = ebnf.parse(ebnf_file)
e['SPACE'] = e['SPACE'].leaveWhitespace()
e['TEST'].parseString('AA BB')

撰写回答