解析模式后需要更好的错误报告,例如
enum MyEnum {
Key1,
Key2,
Key3
}
table Test {
field1: MyEnum = MyEnum.Key1;
field2: MyEnum = MyEnum.WrongKey;
}
我想报告找不到MyEnum.WrongKey
,但我也想要提取位置(line& col)
这里https://github.com/bog-dan-ro/flatbuffers/blob/pyfbsc/bin/fbsc.py是完整的解析器srcs
答案 0 :(得分:1)
您可以尝试定义解析器,以便MyEnum.WrongKey
不解析。然后打印出解析失败的位置:
try:
your_parser.parseString(your_schema)
except ParseException as pe:
print(pe)
print("at column: {}".format(pe.col))
答案 1 :(得分:0)
您可以使用pyparsing的locatedExpr
帮助程序包装任何表达式。来自在线文档(https://pythonhosted.org/pyparsing/pyparsing-module.html#locatedExpr):
示例:
wd = Word(alphas)
for match in locatedExpr(wd).searchString("ljsdf123lksdjjf123lkkjj1222"):
print(match)
打印:
[[0, 'ljsdf', 5]]
[[8, 'lksdjjf', 15]]
[[18, 'lkkjj', 23]]