DIRECTORY JunoParseUnparse USING [Se, SyntacticPredicate]; JunoExpressions: DEFINITIONS = BEGIN OPEN Parse: JunoParseUnparse; Se: TYPE = Parse.Se; -- Se = "symbolic expression" and: READONLY ATOM; approx: READONLY ATOM; -- '~' symbol (hint/initial value for local variable) assign: READONLY ATOM; -- ':=' symbol at: READONLY ATOM; -- 'at' constraint ccw: READONLY ATOM; colon: READONLY ATOM; -- ':' infix operator (lambda expression) comma: READONLY ATOM; -- ',' (concatenate sequences of values) cong: READONLY ATOM; cons: READONLY ATOM; -- list cons dec: READONLY ATOM; -- decrement by 1 dist: READONLY ATOM; -- double minus infix operator (distance) div: READONLY ATOM; -- '/' operator (infix) do: READONLY ATOM; draw: READONLY ATOM; ends: READONLY ATOM; face: READONLY ATOM; -- infix; sets face (bold, italic, etc) for folowing prints fill: READONLY ATOM; first: READONLY ATOM; -- first element of list (car) floor: READONLY ATOM; -- integer part font: READONLY ATOM; -- infix; sets font for following prints hor: READONLY ATOM; if: READONLY ATOM; inc: READONLY ATOM; -- increment by one justified: READONLY ATOM; -- infix; sets justification (left, center, right) for folowing prints. lambda: READONLY ATOM; -- infix; separates parms from body in lambdas (faked for now). leftPren: READONLY ATOM; minus: READONLY ATOM; -- '-' operator (prefix or infix) obox: READONLY ATOM; -- "or" ("else if") box to separate alternatives in if/do statements paint: READONLY ATOM; para: READONLY ATOM; perp: READONLY ATOM; plus: READONLY ATOM; -- '+' operator (infix) print: READONLY ATOM; rel: READONLY ATOM; rest: READONLY ATOM; -- cdr of list rightArrow: READONLY ATOM; -- '->' ("then") operator for if/do sataements semicolon: READONLY ATOM; size: READONLY ATOM; -- infix; sets font size for folowing prints skip: READONLY ATOM; -- 'skip' ("do nothing") statement stroke: READONLY ATOM; suchThat: READONLY ATOM; -- '|' (separates declaations from constraints) times: READONLY ATOM; -- '*' operator (infix) true: READONLY ATOM; -- 'true' atom (for empty constraint lists) ver: READONLY ATOM; width: READONLY ATOM; xcoord: READONLY ATOM; ycoord: READONLY ATOM; Lambda: Parse.SyntacticPredicate; Expr: Parse.SyntacticPredicate; Command: Parse.SyntacticPredicate; Definition: Parse.SyntacticPredicate; Car: PROC [r: Se] RETURNS [Se]; Cdr: PROC [r: Se] RETURNS [Se]; Cadr: PROC [r: Se] RETURNS [Se]; Caddr: PROC [r: Se] RETURNS [Se]; Cddr: PROC [r: Se] RETURNS [Se]; Caadr: PROC [r: Se] RETURNS [Se]; Cdar: PROC [r: Se] RETURNS [Se]; Cddar: PROC [r: Se] RETURNS [Se]; END. ¾JunoExpressions.mesa (was OldJunoParserEtc.mesa) Last Edited by: Gnelson, October 11, 1983 9:39 pm Last Edited by: Stolfi, June 13, 1984 11:50:30 am PDT This module defines the internal Juno expression (Se) syntax. It exports the static syntax checker and the reserved atoms. - - - - IMPORTED TYPES - - - - RESERVED ATOMS Tokens that have special meaning for the Juno interpreter: - - - - SYNTAX CHECKING - - - - CAR, CDR, ETC ÊR˜™0™J™1J™8—J™{šœÏk œ˜ Jšœœ˜1——JšœÏbœ ˜šœ˜šœ˜Jšœ˜——šÏnœ™Jšœ4˜4—™™Jšœœœ˜Jšœœœ  ˜!Jšœœœ˜%Jšœœœ+˜>Jšœœœ˜+Jšœœœ˜Jšœœœ˜Jšœœœ˜Jšœœœ ;˜PJšœœœ˜Jšœœœ ˜4Jšœœœ˜%Jšœœœ (˜=Jšœœœ˜Jšœœœ˜Jšœœœ˜'Jšœ œœ G˜aJšœœœ ?˜VJšœ œœ˜Jšœœœ !˜7Jšœœœ D˜YJšœœœ˜Jšœœœ˜Jšœœœ˜Jšœœœ ˜,Jšœœœ˜Jšœœœ˜Jšœœœ ˜#Jšœ œœ /˜JJšœ œœ˜Jšœœœ œ  ˜AJšœœœ "˜7Jšœœœ˜Jšœ œœ 0˜IJšœœœ ˜-Jšœœœ +˜@Jšœœœ˜Jšœœœ˜Jšœœœ˜Jšœœœ˜——™Jšœžœ˜"Jšœžœ˜ Jšœžœ˜#Jšœž œ˜&—šœ™JšœŸœœ œ˜ JšœŸœœ œ˜ JšœŸœœ œ˜!JšœŸœœ œ˜"JšœŸœœ œ˜!JšœŸœœ œ˜"JšœŸœœ œ˜!JšœŸœœ œ˜"—Jšœœ˜J˜—…— 0