AttributeError: объект 'tuple' не имеет атрибута 'asjson'
Когда я хочу проверить свою грамматику EBNF, я получаю ошибку:
AttributeError: объект 'tuple' не имеет атрибута 'asjson'
Код:
if not filename or filename == '-':
text = sys.stdin.read()
else:
with open(filename) as f:
text = f.read()
grammarname = 'grammars/CTEST.ebnf'
grammarData = open(grammarname).read()
parser = tatsu.compile(grammarData, asmodel=True)
model = parser.parse(text)
print()
print('# MODEL TYPE IS:', type(model).__name__)
print(json.dumps(model.asjson(), indent=4))
print()
Как я могу проверить свой файл грамматики?
1 ответ
Это полностью зависит от того, что parser.parse
возвращается. Он может вернуть несколько значений.
Например: return a_variable, another_variable
- допустимый синтаксис в Python. Если он возвращает несколько значений, они приходят как кортеж. Вы должны читать их какmodel[0]
или, альтернативно, вы можете сделать a, b = parser.parse(text)