Expression:
    | number
    | MathJsonIdentifier
    | string
    | MathJsonNumber
    | MathJsonString
    | MathJsonSymbol
    | MathJsonFunction
    | MathJsonDictionary
    | [Expression, ...Expression[]]

A MathJSON expression is a recursive data structure.

The leaf nodes of an expression are numbers, strings and symbols. The dictionary and function nodes can contain expressions themselves.