Я пишу небольшого переводчика, чтобы показать пример формы Бэкуса-Наура, и я хотел бы попросить помощи для представления некоторых данных.
<statement> : <assignment> | HALT | PRINT(<variable>)
<assignment> : <variable> = <expression>
<expression> : <term> | <term><operator><expression>
<term> : <number> | <variable>
<variable> : x | y | z
<operator> : + | -
<number> : 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Как вы можете видеть, все заключено в утверждение. Тогда есть назначения и выражения. Выражение инкапсулирует термин, который инкапсулирует число и переменную. Присвоение включает в себя переменную и выражение. У меня вопрос, какую структуру данных я использую, чтобы представить все это? Я думаю, что это должен быть набор, но тогда возникает вопрос, должен ли я иметь вложенные наборы?