для ARGUMENTS вы можете использовать последовательность выражений EXPRESSION, чтобы что-то вроде списка EXPRESSION работало нормально (скобки нужно анализировать, но вам не нужно хранить их в вашем типе, так как они всегда есть)).
для ВЫРАЖЕНИЯ, вам нужно объединить подход, который вы использовали в ОПЕРАТОРЕ (где у вас есть альтернативы), с тем, что вы сделали в INT (где у вас есть of ...
).другими словами, он будет иметь вид A of B | C of D | ...
.
. Кроме того, вам не нужно INT of int
- вы можете просто использовать простой int
(то есть целое число) для INT - и яПодозреваю, что ML имеет логический тип, который можно использовать вместо определения типа данных для BOOL (другими словами, вам, вероятно, вообще не нужно определять тип данных ни для одного из них - просто используйте то, что уже присутствует в языке).
ps также нормально добавить тэг "homework" для домашней работы.
[редактировать для OPERATOR у вас есть несколько типов, но это нормально - просто вставьте их в кортеж, как (A,B)
, чейтип написан a * b
.для последовательности выражений используйте список, как для ARGUMENTS.]