INTERFACETo reduce space requirementsM3AST_LX_F ; IMPORT M3AST, M3AST_LX; IMPORT SeqM3AST_LX_SRC_NODE; TYPE SRC_NODE = M3AST.NODE OBJECT lx_srcpos: M3AST_LX.SrcPos := 0; END; SRC_NODE_C = M3AST_LX.SRC_NODE OBJECT lx_node_s := SeqM3AST_LX_SRC_NODE.Null; END; ID = M3AST_LX.SRC_NODE OBJECT lx_symrep: M3AST_LX.Symbol_rep := NIL; END;
M3AST_AS
reveals a LITERAL to be
a subtype of EXP
, so we defer the exposure of the lx
component
until then.
LITERAL = M3AST_LX.SRC_NODE OBJECT lx_litrep: M3AST_LX.Literal_rep := NIL; END;
Whitespace = M3AST_LX.SRC_NODE OBJECT lx_whitespace_rep: M3AST_LX.Whitespace_rep := NIL; END; Comment = M3AST_LX.SRC_NODE OBJECT lx_comment_rep: M3AST_LX.Comment_rep := NIL; END; Pragma = M3AST_LX.SRC_NODE OBJECT lx_pragma_rep: M3AST_LX.Pragma_rep := NIL; END; BadChar = M3AST_LX.SRC_NODE OBJECT lx_badchar_rep: M3AST_LX.BadChar_rep := NIL; END; Token = M3AST_LX.SRC_NODE OBJECT lx_token_rep: M3AST_LX.Token_rep := NIL; END; REVEAL M3AST_LX.SRC_NODE <: SRC_NODE; M3AST_LX.SRC_NODE_C <: SRC_NODE_C; M3AST_LX.ID <: ID;
M3AST_LX.LITERAL <: LITERAL;
M3AST_LX.Whitespace <: Whitespace; M3AST_LX.Comment <: Comment; M3AST_LX.Pragma <: Pragma; M3AST_LX.BadChar <: BadChar; M3AST_LX.Token <: Token; END M3AST_LX_F.