-- -- A view on symbol tables -- -- Table structure DATA FileV | File tables : TablesV TYPE TablesV = [TableV] DATA TableV | Table classes : ClassesV methods : MethodsV -- Class structure TYPE ClassesV = [ClassV] DATA ClassV | Class ref : ClassRef nm : NmV mbSuper : MbSuperV itfs : ItfsV dynTraits : TraitsV staTraits : TraitsV TYPE MbSuperV = MAYBE SuperV DATA SuperV | Super tp : TypeV DATA TypeV | Type isNull : Bool nm : NmV TYPE ItfsV = [ItfV] DATA ItfV | Itf tp : TypeV TYPE TraitsV = [TraitV] DATA TraitV | Method nm : NmV sig : SigV | Field nm : NmV tp : TypeV | Other nm : NmV -- Method signatures TYPE MethodsV = [MethodV] DATA MethodV | Method mbNm : MbStrV sig : SigV DATA SigV | Sig id : MethodRef ret : TypeV params : ParamsV TYPE ParamsV = [ParamV] DATA ParamV | Param mbNm : MbStrV tp : TypeV -- Names TYPE NmsV = [NmV] TYPE MbNmV = MAYBE NmV DATA NmV | Qual id : NameRef ns : NsV nm : StrV -- fully qualified name | Quals id : NameRef set : NsSetV nm : StrV -- name in multiple namespaces | Other id : NameRef -- not an easily resolveable name DATA NsV | Ns id : NamespaceRef nm : StrV DATA NsSetV | Set id : NamesetRef spaces : NssV TYPE NssV = [NsV] TYPE MbStrV = MAYBE StrV DATA StrV | Str id : StringRef val : String