Exp: Term Binop If Let Map
Exp      ::= Term ( Binop Term )*
           | If
           | Let
           | Map
referenced by: Def ExpList Factor If Let Map If: if Exp then Exp else Exp
If       ::= if Exp then Exp else Exp
referenced by: Exp Let: let Def in Exp
Let      ::= let Def+ in Exp
referenced by: Exp Map: map IdList to Exp
Map      ::= map IdList to Exp
referenced by: Exp Term: Unop Factor ( ExpList ) Empty Int Bool
Term     ::= Unop?* ( Factor ( '(' ExpList ')' )? | Empty | Int | Bool )
referenced by: Exp Factor: ( Exp ) Prim Id
Factor   ::= '(' Exp ')'
           | Prim
           | Id
referenced by: Term ExpList: Exp ,
ExpList  ::= ( Exp ( ',' Exp )* )?
referenced by: Term IdList: Id ,
IdList   ::= ( Id ( ',' Id )* )?
referenced by: Map Def: Id := Exp ;
Def      ::= Id ':=' Exp ';'
referenced by: Let Empty: empty
Empty    ::= empty
referenced by: Term Bool: true false
Bool     ::= true
           | false
referenced by: Term Unop: Sign ~
Unop     ::= Sign
           | '~'
referenced by: Term Sign: + -
Sign     ::= '+'
           | '-'
referenced by: Binop Unop Binop: Sign * / = != < > <= >= & |
Binop    ::= Sign
           | '*'
           | '/'
           | '='
           | '!='
           | '<'
           | '>'
           | '<='
           | '>='
           | '&'
           | '|'
referenced by: Exp Prim: number? function? list? empty? cons? cons first rest arity
Prim     ::= 'number?'
           | 'function?'
           | 'list?'
           | 'empty?'
           | 'cons?'
           | 'cons'
           | 'first'
           | 'rest'
           | 'arity'
referenced by: Factor   ... generated by RR - Railroad Diagram Generator R R