|
|
1.1 root 1: (* Copyright 1989 by AT&T Bell Laboratories *)
2: (* bareabsyn.sig *)
3:
4: signature BAREABSYN = sig
5:
6: structure Basics : BASICS
7: structure Access : ACCESS
8: type linenum
9:
10: datatype numberedLabel = LABEL of {name : Basics.Symbol.symbol, number: int};
11:
12: datatype exp = VARexp of Basics.var ref
13: | CONexp of Basics.datacon
14: | INTexp of int
15: | REALexp of string
16: | STRINGexp of string
17: | RECORDexp of (numberedLabel * exp) list
18: | SEQexp of exp list
19: | APPexp of exp * exp
20: | CONSTRAINTexp of exp * Basics.ty
21: | HANDLEexp of exp * handler
22: | RAISEexp of exp
23: | LETexp of dec * exp
24: | CASEexp of exp * rule list
25: | FNexp of rule list
26: | MARKexp of exp * linenum * linenum
27:
28: and rule = RULE of pat * exp
29:
30: and handler = HANDLER of exp
31:
32: and pat = WILDpat
33: | VARpat of Basics.var
34: | INTpat of int
35: | REALpat of string
36: | STRINGpat of string
37: | CONpat of Basics.datacon
38: | RECORDpat of
39: {fields : (Basics.label * pat) list,
40: flex : bool,
41: typ : Basics.ty ref,
42: pats : pat list ref}
43: | APPpat of Basics.datacon * pat
44: | CONSTRAINTpat of pat * Basics.ty
45: | LAYEREDpat of pat * pat
46:
47: and strexp = VARstr of Basics.structureVar
48: | STRUCTstr of
49: {body: dec list,
50: locations: Basics.trans list} (* component paths *)
51: | APPstr of
52: {oper: Basics.functorVar,
53: argexp: strexp,
54: argthin: Basics.thinning}
55: | LETstr of dec * strexp
56:
57: and dec = VALdec of vb list
58: | VALRECdec of rvb list
59: | TYPEdec of tb list
60: | DATATYPEdec of
61: {datatycs: Basics.tycon ref list,
62: withtycs: tb list}
63: | ABSTYPEdec of
64: {abstycs: Basics.tycon ref list,
65: withtycs: tb list,
66: body: dec}
67: | EXCEPTIONdec of eb list
68: | STRdec of strb list
69: | ABSdec of strb list
70: | FCTdec of fctb list
71: | SIGdec of Basics.signatureVar list
72: | OPENdec of Basics.structureVar list
73: | LOCALdec of dec * dec
74: | SEQdec of dec list
75: | IMPORTdec of string list
76: | MARKdec of dec * linenum * linenum
77:
78: and vb = VB of
79: {pat:pat,
80: exp:exp,
81: tyvars: Basics.tyvar list}
82: and rvb = RVB of
83: {var:Basics.var,
84: exp:exp,
85: resultty: Basics.ty option,
86: tyvars: Basics.tyvar list}
87: and fb = FB of
88: {var:Basics.var,
89: clauses: clause list,
90: tyvars: Basics.tyvar list}
91: and clause = CLAUSE of
92: {pats: pat list,
93: resultty: Basics.ty option,
94: exp:exp}
95: and tb = TB of
96: {tyc : Basics.tycon ref,
97: def : Basics.ty}
98: and eb = EBgen of
99: {exn: Basics.datacon,
100: etype: Basics.ty option}
101: | EBdef of
102: {exn: Basics.datacon,
103: edef: Basics.datacon}
104: and strb = STRB of
105: {strvar: Basics.structureVar,
106: def: strexp,
107: thin: Basics.thinning,
108: constraint: Basics.Structure option} (* info only *)
109: and fctb = FCTB of
110: {fctvar: Basics.functorVar,
111: param: Basics.structureVar,
112: def: strexp,
113: thin: Basics.thinning,
114: constraint: Basics.Structure option} (* info only *)
115:
116: end (* signature BAREABSYN *)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.