【发布时间】:2021-02-25 23:21:04
【问题描述】:
import argparse
from parglare import Grammar
from parglare import Parser
formula = r"""
Formula : Number | (Formula Sign Formula)
Number : '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
Sign : '+' | '-'
"""
grammar = Grammar.from_string(formula)
parser = Parser(grammar, build_tree=True, prefer_shifts=True)
parser = argparse.ArgumentParser()
parser.add_argument('expression')
args = parser.parse_args()
expression = args.expression
print(parser.parse_args(expression))
请帮助我找到使用 EBNF func 编码的正常示例或解释我的错误。
【问题讨论】:
-
请提供预期的minimal, reproducible example (MRE)。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。不接受站外链接和文字图片;我们需要您的问题是独立的,以符合本网站的目的。
-
请从intro tour 重复on topic 和how to ask。要求推荐或参考被明确列为题外话;您对示例的要求不属于这里。当您正确记录您的问题时,我们也许可以帮助解决错误。
-
这显然不是您正在运行的代码。错误说它说“掩码> =:”,这里不存在。创建 parglare.Parser 后,立即用 argparse.ArgumentParser 覆盖它。你应该使用parglare吗?还是您应该使用 EBNF 作为指南手动进行解析?
-
顺便说一句,使用 argparse 的建议完全是假的。你只有一个参数。只需执行
import sys/expression = sys.argv[1]。 -
我应该使用 argparse ,这对我来说是导师
标签: python parsing ebnf ebnf-syntactic-exception