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)

Другие вопросы по тегам