[project @ 1996-07-19 18:36:04 by partain]
[ghc-hetmet.git] / ghc / docs / add_to_compiler / core-summary-fig.verb
1 \begin{figure} \fbox{
2 $\begin{array}{lrcll}
3 %\\
4 %\mbox{Program} & program & \rightarrow & binds & \\
5 %\\
6 \mbox{Bindings} & binds & \rightarrow & bind_1@;@ \ldots @;@~bind_n & n \geq 1 \\
7         & bind & \rightarrow & @nonrec@~ var ~@=@~ expr \\
8                && | & @rec@~ var_1 ~@=@~ expr_1 @;@ \ldots @;@~ var_n ~@=@~ expr_n & n \geq 1 \\
9 \\
10 \mbox{Expression} & expr 
11         & \rightarrow   & expr_1 ~ expr_2       & \mbox{Application} \\
12         && | & expr ~ type                      & \mbox{Type application} \\
13         && | & @\@~ var~ @->@ ~ expr            & \mbox{Lambda abstraction} \\
14         && | & @/\@~ tyvar~ @->@ ~ expr         & \mbox{Type abstraction} \\
15         && | & @case@ ~expr~ @of@ ~ alts        & \mbox{Case expression} \\
16         && | & @let@~ bind ~@in@~ expr          & \mbox{Local definition(s)} \\
17         && | & con~expr_1 \ldots expr_n         & \mbox{Saturated constructor}  \\
18         && | & prim~expr_1 \ldots expr_n        & \mbox{Saturated primitive}    \\
19         && | & var                              & \mbox{Variable}       \\
20         && | & literal                          & \\
21 \\
22 \mbox{Alternatives} & alts & \rightarrow 
23         & calt_1@;@ \ldots @;@~calt_n@; default ->@~ expr 
24                 & n \geq 0~\mbox{(Boxed)}       \\
25         && | & lalt_1@;@ \ldots @;@~lalt_n@;@~var ~@->@~ expr 
26                 & n \geq 0~\mbox{(Unboxed)}     \\
27 \\
28 \mbox{Constructor alt}  
29         & calt & \rightarrow & con~var_1 \ldots var_n~@->@~expr & n \geq 0 \\
30 \mbox{Literal alt}      
31         & lalt & \rightarrow & literal~@->@~expr &  \\
32 \\
33 \mbox{Literals} & literal 
34         & \rightarrow & integer                 & \mbox{machine-level numbers} \\
35         && | & \ldots & \\
36 \\
37 \mbox{Primitives} & prim
38         & \rightarrow & @+@ ~|~ @-@ ~|~ @*@ ~|~ @/@     & \mbox{machine-level ops} \\
39         && | & \ldots & \\
40 \\
41 \end{array}$
42 }
43 \caption{Abstract syntax of the Core language}
44 \label{fig:core-syntax}
45 \end{figure}