Это называется Абстрактное синтаксическое дерево (или AST для краткости).
То есть ... дерево, поэтому его можно смоделировать как список списков, но вы можетехотите использовать что-то с немного большей структурой (зависит от того, насколько «типизированным» вы хотите, чтобы ваш AST был).
Я бы пошел с наличием объекта для каждого узла, каждый из которых имеет «Операцию» и нольили более листьев (т.е. подвыражения или подвыражения).
Для более жестко типизированной структуры число листьев будет ограничено (т.е. использовать кортеж) для всего, кроме общих «блоков», «тела», которые являются просто списком операторов, то есть функцией или если/ while / для тел ..