Programs
program
®
sc1 ; ¼;  scn
n ³ 1
Supercombinators
sc
®
var var1¼varn   =   expr
n ³ 0
Expressions
expr
®
expr   aexpr
Application
|
expr1  binop  expr2
Infix binary application
|
let defns in expr
Local definitions
|
letrec defns in expr
Local recursive definitions
|
case expr of alts
Case expression
|
\  var1¼varn - >   expr
Lambda abstraction (n ³ 1)
|
aexpr
Atomic expression
aexpr
®
var
Variable
|
num
Number
|
Pack { num , num }
Constructor
|
(  expr  )
Parenthesised expression
Definitions
defns
®
defn1 ; ¼;  defnn
n ³ 1
defn
®
var   =   expr
Alternatives
alts
®
alt1 ; ¼;  altn
n ³ 1
alt
®
< num >  var1 ¼varn - >   expr
n ³ 0
Binary operators
binop
®
arithop  |  relop  |  boolop
arithop
®
+ | - | * | /
Arithmetic
relop
®
<  |  < =  |  = =  | / =  |  > =  |  >
Comparison
boolop
®
&& | ||
Boolean
Variables
var
®
alpha  varch1 ¼varchn
n ³ 0
alpha
®
an alphabetic character
varch
®
alpha  |  digit  |  _
Numbers
num
®
digit1 ¼digitn
n ³ 1


File translated from TEX by TTH, version 1.41.