X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fdocs%2Fadd_to_compiler%2Fstg-summary-fig.verb;fp=ghc%2Fdocs%2Fadd_to_compiler%2Fstg-summary-fig.verb;h=99dad9cc035561bd62fbc619539580278e63ab44;hb=e7d21ee4f8ac907665a7e170c71d59e13a01da09;hp=0000000000000000000000000000000000000000;hpb=e48474bff05e6cfb506660420f025f694c870d38;p=ghc-hetmet.git diff --git a/ghc/docs/add_to_compiler/stg-summary-fig.verb b/ghc/docs/add_to_compiler/stg-summary-fig.verb new file mode 100644 index 0000000..99dad9c --- /dev/null +++ b/ghc/docs/add_to_compiler/stg-summary-fig.verb @@ -0,0 +1,55 @@ +\begin{figure} \fbox{ +$\begin{array}{lrcll} +%\mbox{Program} & prog & \rightarrow & binds & \\ +%\\ +\mbox{Bindings} & binds & \rightarrow + & bind_1 @;@ \ldots @;@~ bind_n & n \geq 1 \\ +& bind & \rightarrow & var ~@=@~ vars_f ~@\@ upd~ vars_a ~@->@~expr + & \mbox{Closure} \\ + &&&& (vars_f = \freevars{expr} \setminus vars_a) \\ +\\ +\mbox{Update flag} & upd & \rightarrow & @u@ & \mbox{Updatable} \\ + && | & @n@ & \mbox{Not updatable} \\ +\\ +\mbox{Expression} & expr + & \rightarrow & @let@~binds~@in@~ expr + & \mbox{Local definition} \\ + && | & @letrec@~binds~@in@~expr + & \mbox{Local recursive definition} \\ + && | & @case@~expr~@of@~alts + & \mbox{Case expression} \\ + && | & var~vars & \mbox{Application}\\ + && | & con~vars + & \mbox{Saturated constructor} \\ + && | & prim~vars + & \mbox{Saturated primitive} \\ + && | & literal & \\ +\\ + +\mbox{Alternatives} & alts & \rightarrow + & calt_1@;@ \ldots @;@~calt_n@; default ->@~ expr + & n \geq 0~\mbox{(Boxed)} \\ + && | & lalt_1@;@ \ldots @;@~lalt_n@;@~var ~@->@~ expr + & n \geq 0~\mbox{(Unboxed)} \\ +\\ +\mbox{Constructor alt} + & calt & \rightarrow & con~vars~@->@~expr & \\ +\mbox{Literal alt} + & lalt & \rightarrow & literal~@->@~expr & \\ +\\ +\mbox{Literals} & literal + & \rightarrow & integer & \\ + && | & \ldots & \\ +\\ +\mbox{Primitives} & prim + & \rightarrow & @+@ ~|~ @-@ ~|~ @*@ ~|~ @/@ \\ + && | & \ldots & \\ +\\ +\mbox{Variable lists} & vars & \rightarrow & + @[@var_1@,@ \ldots @,@~var_n@]@ & n \geq 0 \\ +\\ +\end{array}$ +} +\caption{Syntax of the STG language} +\label{fig:stg-syntax} +\end{figure}