packages feed

asil-1.2: src/SymViewAst.ag

--
-- 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