Represent semantic scopes in the language. Depending on the language scopes can have visibility restriction and can act as namespaces to avoid name collisions.
Scopes are nested and therefore have a parent child relationship, this two members will help navigate through the scopes,e.g. when looking up variables.