DIRECTORY Atom; ParseTable: DEFINITIONS = BEGIN Handle: TYPE = REF HandleRep; HandleRep: TYPE = RECORD [foo: INT _ 0]; NewHandle: PROC RETURNS [Handle]; Enter: PROC [h: Handle, p: Properties]; Search: PROC[h: Handle, a: REF ANY, default: Properties] RETURNS [Properties]; Properties: TYPE = REF PRec; PRec: TYPE = RECORD [name: ATOM, alias: REF ANY _ NIL, -- should be an ATOM or NIL. closer: Properties _ NIL, infix: BOOL _ FALSE, prefix: BOOL _ FALSE, postfix: BOOL _ FALSE, matchfix: BOOL _ FALSE, subfix: BOOL _ FALSE, busfix: BOOL _ FALSE, closefix: BOOL _ FALSE, bindingPower: INT _ 0, identifier: BOOL _ FALSE, unparserType: INT _ 0]; END. ì JunoParseTable.mesa (was ParseTable.mesa) Coded September 6, 1982 12:25 am Last Edited by: Gnelson, August 24, 1983 10:30 pm Last Edited by: Stolfi March 13, 1984 3:19:36 am PST sets h(p.name) := p; h(p.alias) := p; these fields must be ATOMs returns h(a), unless this is undefined, in which case returns default -- typically called with default = NIL. The name should be the atom whose pname is the preferred representation for the operator; it will be used by the unparser. The alias field should be nil or else an atom whose pname is an alternate way of typing the operator; this is to allow typing english names for operators that have no keys, such as "forall" or "and". The unparserType is explained in JunoUnparserImpl.mesa ÊT˜™*™J™ J™1Jšœ7™7——JšœÏk œ˜Jšœ ˜J˜Jšœ˜Jšœ œœ ˜Jšœ œœœ˜)JšœÏn œœœ ˜"šœžœœ˜(Jšœ@™@—š œžœœœœœ˜OJšœo™o—Jšœ œœ˜š5œœœ œ œœœÏcœœ œœ œœœœœœ œœ œœœœœœœœ˜ýJšœý™ý—Jšœœ˜—…—¾þ