]> git.lizzy.rs Git - metalua.git/commitdiff
manual page width reduced
authorFabien Fleutot <fabien@macfabien.local>
Fri, 25 Jan 2008 09:13:47 +0000 (10:13 +0100)
committerFabien Fleutot <fabien@macfabien.local>
Fri, 25 Jan 2008 09:13:47 +0000 (10:13 +0100)
doc/manual/metalua-manual.log
doc/manual/metalua-manual.pdf
doc/manual/metalua-manual.tex

index 0a86d9041650023380c8254fcf7219ad72aad6b5..7a587950a20fa79e9380b31c05d4f11cb68d440f 100644 (file)
@@ -1,4 +1,4 @@
-This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=pdflatex 2006.6.6)  24 JAN 2008 19:55
+This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=pdflatex 2006.6.6)  25 JAN 2008 10:10
 entering extended mode
 **metalua-manual.tex
 (./metalua-manual.tex
@@ -40,10 +40,6 @@ Package: palatino 2004/09/15 PSNFSS-v9.2 (SPQR)
 \f@ncyO@olf=\skip50
 \f@ncyO@orf=\skip51
 )
-(/sw/share/texmf-dist/tex/latex/preprint/fullpage.sty
-Package: fullpage 1999/02/23 1.1 (PWD)
-\FP@margin=\skip52
-)
 (/sw/share/texmf-dist/tex/latex/base/alltt.sty
 Package: alltt 1997/06/16 v2.0g defines alltt environment
 )
@@ -87,19 +83,13 @@ LaTeX Warning: No \author given.
 [1
 
 
-{/sw/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
-
-Package Fancyhdr Warning: \headheight is too small (0.0pt): 
- Make it at least 12.0pt.
- We now make it that large for the rest of the document.
- This may cause the page layout to be inconsistent, however.
-
-[2
+{/sw/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2
 
 ]
 LaTeX Font Info:    Font shape `OT1/ppl/bx/n' in size <24.88> not available
 (Font)              Font shape `OT1/ppl/b/n' tried instead on input line 32.
- (./metalua-manual.toc
+
+(./metalua-manual.toc
 LaTeX Font Info:    External font `cmex10' loaded for size
 (Font)              <7> on input line 1.
 LaTeX Font Info:    External font `cmex10' loaded for size
@@ -110,11 +100,17 @@ LaTeX Font Info:    Try loading font information for OT1+pcr on input line 68.
  (/sw/share/texmf-dist/tex/latex/psnfss/ot1pcr.fd
 File: ot1pcr.fd 2001/06/04 font definitions for OT1/pcr.
 )
-[3])
+Underfull \vbox (badness 2452) has occurred while \output is active []
+
+ [3]
+Underfull \vbox (badness 1694) has occurred while \output is active []
+
+ [4])
 \tf@toc=\write3
 \openout3 = `metalua-manual.toc'.
 
- [4]
+
+[5]
 \openout2 = `intro.aux'.
 
  (./intro.tex
@@ -126,647 +122,1634 @@ File: omsppl.fd
 )
 LaTeX Font Info:    Font shape `OMS/ppl/m/n' in size <10> not available
 (Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 22.
-
-[5
+ [6
 
 ]
-Overfull \hbox (17.36078pt too wide) in paragraph at lines 95--97
-[]\OT1/ppl/m/n/10 A com-pact ref-er-ence sheet (gram-mar and stan-dard li-brari
-es) by En-rico Colom-bini: $\OT1/pcr/m/n/10 http : / / lua-[]users .
+Overfull \hbox (10.8078pt too wide) in paragraph at lines 99--102
+[]\OT1/ppl/m/n/10 The mail-ing list ($\OT1/pcr/m/n/10 http : / / www . lua . or
+g / lua-[]l . html$\OT1/ppl/m/n/10 ) and the IRC chan-
  []
 
 
-Overfull \hbox (15.47256pt too wide) in paragraph at lines 99--102
-[]\OT1/ppl/m/n/10 The mail-ing list ($\OT1/pcr/m/n/10 http : / / www . lua . or
-g / lua-[]l . html$\OT1/ppl/m/n/10 ) and the IRC chan-nel ($\OT1/pcr/m/n/10 irc
- : / / irc . freenode .
+Overfull \hbox (2.75807pt too wide) in paragraph at lines 99--102
+\OT1/ppl/m/n/10 nel ($\OT1/pcr/m/n/10 irc : / / irc . freenode . net / #lua$\OT
+1/ppl/m/n/10 ) are pop-u-lated with a very help-
+ []
+
+[7]
+Overfull \hbox (4.66658pt too wide) in paragraph at lines 135--144
+[]\OT1/ppl/m/n/10 Macro-systems bolted on ex-ist-ing lan-guages (Tem-plate Hask
+ell[], CamlP4[],
  []
 
-[6]) [7]
+[8]) [9]
 \openout2 = `syntax-ext.aux'.
 
  (./syntax-ext.tex
 LaTeX Font Info:    Font shape `OT1/ppl/bx/n' in size <12> not available
 (Font)              Font shape `OT1/ppl/b/n' tried instead on input line 7.
+
+Overfull \hbox (39.20924pt too wide) in paragraph at lines 8--14
+\OT1/pcr/m/n/10 argn) return some[]expr end\OT1/ppl/m/n/10 '' can be writ-ten `
+`\OT1/pcr/m/n/10 |arg1,arg2,argn| some[]exp\OT1/ppl/m/n/10 ''. 
+ []
+
+
+Overfull \hbox (1.36873pt too wide) in paragraph at lines 15--19
+\OT1/ppl/m/n/10 that re-turn func-tions: ``\OT1/pcr/m/n/10 function(x) return f
+unction(y) return x+y
+ []
+
 LaTeX Font Info:    Try loading font information for OMS+pcr on input line 51.
- (/sw/share/texmf-dist/tex/latex/psnfss/omspcr.fd
+(/sw/share/texmf-dist/tex/latex/psnfss/omspcr.fd
 File: omspcr.fd 
 )
 LaTeX Font Info:    Font shape `OMS/pcr/m/n' in size <10> not available
 (Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 51.
-)
-[8
+) [10
 
 
-]
+] [11]
 \openout2 = `data.aux'.
 
- (./data.tex [9
-
-
-] [10]
-LaTeX Font Info:    Font shape `OMS/pcr/m/n' in size <8> not available
-(Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 160.
- [11]
-Overfull \hbox (24.72232pt too wide) in paragraph at lines 215--219
- \OT1/ppl/b/n/10 Bi-nary Op-er-a-tors[] \OT1/ppl/m/n/10 Bi-nary op-er-a-tions a
-re rep-re-sented by []\OT1/pcr/m/n/10 `Op{ operator, left, right}\OT1/ppl/m/n/1
-0 , where []\OT1/pcr/m/n/10 operator
- []
+ (./data.tex
+[12
 
 
-Overfull \hbox (5.87431pt too wide) in paragraph at lines 259--261
-[][]\OT1/pcr/m/n/10 1+2*3 \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m/n/10
- `Op{ `Add, `Number 1, `Op{ `Mul, `Number 2, `Number 3 } }\OT1/ppl/m/n/10 ; 
+]
+Overfull \hbox (1.5184pt too wide) in paragraph at lines 88--91
+\OT1/ppl/m/n/10 fore, []\OT1/pcr/m/n/10 { tag = "Nil" } \OT1/ppl/m/n/10 can be 
+ab-bre-vi-ated as []\OT1/pcr/m/n/10 `Nil \OT1/ppl/m/n/10 (al-though []\OT1/pcr/
+m/n/10 `Nil{ }
  []
 
 
-Overfull \hbox (15.37431pt too wide) in paragraph at lines 261--263
-[][]\OT1/pcr/m/n/10 (1+2)*3 \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m/n/
-10 `Op{ `Mul, `Op{ `Add, `Number 1, `Number 2 }, `Number 3 } 
+Overfull \hbox (63.0pt too wide) in paragraph at lines 104--104
+[]      \OT1/pcr/m/n/10 `Formula{ "Multiplication", `Variable "i", `Variable "p
+i" } },[] 
  []
 
-[12]
-Overfull \hbox (12.21016pt too wide) in paragraph at lines 346--351
-[]\OT1/ppl/m/n/10 Notice that method in-vo-ca-tions can be used as ex-pres-sion
-s, but also as state-ments. No-tice also that ``\OT1/pcr/m/n/10 function
+[13]
+Overfull \hbox (0.74602pt too wide) in paragraph at lines 142--147
+\OT1/ppl/m/n/10 based on unary or bi-nary op-er-a-tors, func-tion def-i-ni-tion
+s, func-tion calls, method
  []
 
 
-Overfull \hbox (18.0821pt too wide) in paragraph at lines 346--351
-\OT1/pcr/m/n/10 o:m (x) return x end\OT1/ppl/m/n/10 '' is not a method in-vo-ca
--tion, but syn-tax sugar for state-ment ``\OT1/pcr/m/n/10 o["f"] = function
+Overfull \hbox (2.99579pt too wide) in paragraph at lines 148--154
+\OT1/ppl/m/n/10 with can be re-turned through eval-u-a-tion, whereas state-ment
+s just ex-e-cute them-
  []
 
-[13]
-Overfull \hbox (9.9041pt too wide) in paragraph at lines 407--414
-\OT1/ppl/m/n/10 ``\OT1/pcr/m/n/10 local function f() return 1, 2, 3 end; return
- \OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 f() \OMS/cmsy/m/n/10 g\OT1/ppl/m/n/10 '' wi
-ll re-turn ``\OMS/cmsy/m/n/10 f\OT1/pcr/m/n/10 1, 2, 3\OMS/cmsy/m/n/10 g\OT1/pp
-l/m/n/10 '', whereas
+LaTeX Font Info:    Font shape `OMS/pcr/m/n' in size <8> not available
+(Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 160.
+
+Overfull \hbox (9.88669pt too wide) in paragraph at lines 156--161
+\OT1/ppl/m/n/10 the num-ber value as its sole child. For in-stance, []\OT1/pcr/
+m/n/10 6 \OT1/ppl/m/n/10 is rep-re-sented by []\OT1/pcr/m/n/10 `Number 6[]\OT1/
+ppl/m/n/10 . 
  []
 
 
-Overfull \hbox (4.31364pt too wide) in paragraph at lines 407--414
-\OT1/ppl/m/n/10 ``\OT1/pcr/m/n/10 local function f() return 1, 2, 3 end; return
- \OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 (f()) \OMS/cmsy/m/n/10 g\OT1/ppl/m/n/10 '' 
-will re-turn ``\OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 1 \OMS/cmsy/m/n/10 g\OT1/ppl/
-m/n/10 '' (no-tice the
+Overfull \hbox (35.12733pt too wide) in paragraph at lines 163--166
+\OT1/ppl/m/n/10 string as its sole child. For in-stance, []\OT1/pcr/m/n/10 "foo
+bar" \OT1/ppl/m/n/10 is rep-re-sented by []\OT1/pcr/m/n/10 `String "foobar"\OT1
+/ppl/m/n/10 . 
  []
 
 [14]
-LaTeX Font Info:    Font shape `OT1/ppl/bx/it' in size <10> not available
-(Font)              Font shape `OT1/ppl/b/it' tried instead on input line 505.
- [15] [16]
-Overfull \hbox (10.52077pt too wide) in paragraph at lines 625--629
-[]\OT1/ppl/m/n/10 Identifiers, string AST or plain strings are equiv-a-lent: ``
-\OT1/pcr/m/n/10 `Label\OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 `Id "foo"\OMS/cmsy/m/n
-/10 g\OT1/ppl/m/n/10 '' is syn-ony-mous for ``\OT1/pcr/m/n/10 `Label\OMS/cmsy/m
-/n/10 f
+Overfull \hbox (0.27684pt too wide) in paragraph at lines 173--174
+ \OT1/ppl/b/n/10 Other atomic val-ues[] \OT1/ppl/m/n/10 Here are the trans-la-t
+ions of other keyword-based atomic
  []
 
-[17]) [18]
-\openout2 = `meta.aux'.
 
- (./meta.tex
-Overfull \hbox (1.66148pt too wide) in paragraph at lines 19--21
-[]\OT1/ppl/m/n/10 If you want to quote a state-ment, just sub-sti-tute ``expr:'
-' with ``stat:'': \OT1/pcr/m/n/10 +\OMS/cmsy/m/n/10 f\OT1/pcr/m/n/10 stat: if x
->3 then foo(bar)
+Overfull \hbox (108.50003pt too wide) in paragraph at lines 204--207
+[]\OT1/pcr/m/n/10 `Table{ `Key{ `String "x", `Number 1 }, `Key{ `String "y", `N
+umber 2} }\OT1/ppl/m/n/10 ; 
  []
 
-[19
-
 
-]
-Overfull \hbox (16.24498pt too wide) in paragraph at lines 79--79
-[]\OT1/pcr/m/n/10 Y = +{stat: four = -{block: local two=`Number 2; return `Op{ 
-`Add, two, two } } }[] 
+Overfull \hbox (8.57785pt too wide) in paragraph at lines 208--211
+[]\OT1/ppl/m/n/10 indexed and non-indexed en-tries can be mixed: []\OT1/pcr/m/n
+/10 { 1, [100]="foo", 3}
  []
 
 
-Overfull \hbox (108.92116pt too wide) in paragraph at lines 81--85
-\OT1/ppl/m/n/10 compined with the upper-level one. For in-stance, you can write
- []\OT1/pcr/m/n/10 -{block: f(); g()} \OT1/ppl/m/n/10 in-stead of []\OT1/pcr/m/
-n/10 -{stat:f()}; -{stat:g()}\OT1/ppl/m/n/10 . 
+Overfull \hbox (72.50003pt too wide) in paragraph at lines 208--211
+[]\OT1/pcr/m/n/10 `Table{ `Number 1, `Key{ `Number 100, `String "foo"}, `Number
+ 3 }\OT1/ppl/m/n/10 ; 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 134--134
+Overfull \hbox (70.04755pt too wide) in paragraph at lines 215--219
+ \OT1/ppl/b/n/10 Bi-nary Op-er-a-tors[] \OT1/ppl/m/n/10 Bi-nary op-er-a-tions a
+re rep-re-sented by []\OT1/pcr/m/n/10 `Op{ operator, left, right}\OT1/ppl/m/n/1
+0 ,
+ []
 
+[15]
+Overfull \hbox (130.62933pt too wide) in paragraph at lines 259--261
+[][]\OT1/pcr/m/n/10 1+2*3 \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m/n/10
+ `Op{ `Add, `Number 1, `Op{ `Mul, `Number 2, `Number 3 } }\OT1/ppl/m/n/10 ; 
  []
 
-[20]
-Underfull \hbox (badness 10000) in paragraph at lines 149--150
 
+Overfull \hbox (140.12933pt too wide) in paragraph at lines 261--263
+[][]\OT1/pcr/m/n/10 (1+2)*3 \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m/n/
+10 `Op{ `Mul, `Op{ `Add, `Number 1, `Number 2 }, `Number 3 } 
  []
 
-[21]
-Underfull \hbox (badness 10000) in paragraph at lines 213--213
 
+Overfull \hbox (68.12933pt too wide) in paragraph at lines 294--296
+[][]\OT1/pcr/m/n/10 -(1+2) \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m/n/1
+0 `Op{ `Sub, `Op{ `Add, `Number 1, `Number 2 } } 
  []
 
+[16]
+Overfull \hbox (94.62933pt too wide) in paragraph at lines 307--309
+[][]\OT1/pcr/m/n/10 x[3][5] \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m/n/
+10 `Index{ `Index{ `Id "x", `Number 3 }, `Number 5 }\OT1/ppl/m/n/10 ; 
+ []
 
-Underfull \hbox (badness 10000) in paragraph at lines 240--241
 
+Overfull \hbox (97.28851pt too wide) in paragraph at lines 309--311
+[][]\OT1/pcr/m/n/10 x.y \OT1/ppl/m/n/10 is syn-tax sugar for []\OT1/pcr/m/n/10 
+x["y"]\OT1/ppl/m/n/10 , and is rep-re-sented as []\OT1/pcr/m/n/10 `Index{ `Id "
+x", `String "y" }\OT1/ppl/m/n/10 ; 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 258--258
-
+Overfull \hbox (16.62933pt too wide) in paragraph at lines 324--326
+[][]\OT1/pcr/m/n/10 f(x, 1) \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m/n/
+10 `Call{ `Id "f", `Id "x", `Number 1 }\OT1/ppl/m/n/10 ; 
  []
 
-[22]
-Underfull \hbox (badness 10000) in paragraph at lines 280--281
 
+Overfull \hbox (4.62933pt too wide) in paragraph at lines 326--328
+[][]\OT1/pcr/m/n/10 f(x, ...) \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m/
+n/10 `Call{ `Id "f", `Id "x", `Dots }\OT1/ppl/m/n/10 . 
  []
 
-) [23] [24
 
+Overfull \hbox (118.62933pt too wide) in paragraph at lines 340--342
+[][]\OT1/pcr/m/n/10 o:f(x, 1) \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m/
+n/10 `Invoke{ `Id "o", `String "f", `Id "x", `Number 1 }\OT1/ppl/m/n/10 ; 
+ []
 
-]
-Chapter 1.
-LaTeX Font Info:    Font shape `OT1/ppl/bx/n' in size <20.74> not available
-(Font)              Font shape `OT1/ppl/b/n' tried instead on input line 37.
-[25]
-\openout2 = `gg-ref.aux'.
 
- (./gg-ref.tex [26
+Overfull \hbox (106.62933pt too wide) in paragraph at lines 342--344
+[][]\OT1/pcr/m/n/10 o:f(x, ...) \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/
+m/n/10 `Invoke{ `Id "o", `String "f", `Id "x", `Dots }\OT1/ppl/m/n/10 ; 
+ []
+
 
-]
-Overfull \hbox (28.69221pt too wide) in paragraph at lines 76--80
-[][]\OT1/pcr/m/n/10 builder = <string>\OT1/ppl/m/n/10 : the string is added as 
-a tag to the list of sub-parser re-sults. []\OT1/pcr/m/n/10 builder = "foobar"
+Overfull \hbox (9.7182pt too wide) in paragraph at lines 346--351
+\OT1/ppl/m/n/10 ments. No-tice also that ``\OT1/pcr/m/n/10 function o:m (x) ret
+urn x end\OT1/ppl/m/n/10 '' is not a method
  []
 
-[27]
-Overfull \hbox (12.38098pt too wide) in paragraph at lines 153--159
-\OT1/ppl/m/n/10 se-lected parser's re-sult is sim-ply re-turned. It can be up-d
-ated at any-time with []\OT1/pcr/m/n/10 x.builder = <newval>\OT1/ppl/m/n/10 . 
+[17]
+Overfull \hbox (11.12653pt too wide) in paragraph at lines 360--363
+[]\OT1/ppl/m/n/10 The block is a list of state-ment AST, op-tion-naly ter-mi-na
+ted with a []\OT1/pcr/m/n/10 `Return{...}
  []
 
 
-Overfull \hbox (28.69221pt too wide) in paragraph at lines 159--163
-[][]\OT1/pcr/m/n/10 builder = <string>\OT1/ppl/m/n/10 : the string is added as 
-a tag to the list of sub-parser re-sults. []\OT1/pcr/m/n/10 builder = "foobar"
+Overfull \hbox (16.00003pt too wide) in paragraph at lines 383--385
+[][]\OT1/pcr/m/n/10 function (fmt, ...) print (string.format (fmt, ...)) end
  []
 
-[28] [29]
-Overfull \hbox (32.44073pt too wide) in paragraph at lines 277--283
-\OT1/ppl/m/n/10 the list of sub-parser re-sults is sim-ply re-turned. It can be
- up-dated at any-time with []\OT1/pcr/m/n/10 x.builder = <newval>\OT1/ppl/m/n/1
-0 . 
+
+Overfull \hbox (88.00003pt too wide) in paragraph at lines 391--391
+ []                    \OT1/pcr/m/n/10 `Call{ `Index{ `Id "string", `String "fo
+rmat" },[] 
  []
 
 
-Overfull \hbox (28.69221pt too wide) in paragraph at lines 284--288
-[][]\OT1/pcr/m/n/10 builder = <string>\OT1/ppl/m/n/10 : the string is added as 
-a tag to the list of sub-parser re-sults. []\OT1/pcr/m/n/10 builder = "foobar"
+Overfull \hbox (3.18822pt too wide) in paragraph at lines 393--397
+[][]\OT1/pcr/m/n/10 function f (x) return x end \OT1/ppl/m/n/10 is not an ex-pr
+es-sion, but a state-ment:
  []
 
-[30] [31] [32]) [33]
-\openout2 = `mlp-ref.aux'.
 
- (./mlp-ref.tex
-Underfull \hbox (badness 2426) in paragraph at lines 33--33
-\OT1/ppl/m/n/10 ments' open-ning paren-the-sis to the fi-nal
+Overfull \hbox (51.02776pt too wide) in paragraph at lines 393--397
+\OT1/ppl/m/n/10 it is ac-tu-ally syn-tax sugar for the as-sign-ment []\OT1/pcr/
+m/n/10 f = function (x) return x end\OT1/ppl/m/n/10 ,
  []
 
 
-Underfull \hbox (badness 1642) in paragraph at lines 33--33
-\OT1/pcr/m/n/10 end\OT1/ppl/m/n/10 , but ex-clud-ing the ini-tial \OT1/pcr/m/n/
-10 function
+Overfull \hbox (22.00003pt too wide) in paragraph at lines 400--400
+ []      \OT1/pcr/m/n/10 { `Function{ { `Id x } { `Return{ `Id "x" } } } } }[] 
+
  []
 
 
-Underfull \hbox (badness 4805) in paragraph at lines 33--33
-\OT1/ppl/m/n/10 key-word, so that it can be used both
+Overfull \hbox (9.95673pt too wide) in paragraph at lines 407--414
+ \OT1/ppl/b/n/10 Paren-the-ses[] \OT1/ppl/m/n/10 In Lua, paren-the-ses are some
+-times se-man-ti-cally mean-ing-ful: when
  []
 
 
-Underfull \hbox (badness 2922) in paragraph at lines 33--33
-\OT1/ppl/m/n/10 for anony-mous func-tions, for \OT1/pcr/m/n/10 function
+Overfull \hbox (0.51523pt too wide) in paragraph at lines 407--414
+\OT1/ppl/m/n/10 the paren-the-sised ex-pres-sion re-turns mul-ti-ple val-ues, p
+utting it be-tween paren-
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 33--33
-\OT1/pcr/m/n/10 some[]name(...) end \OT1/ppl/m/n/10 and for \OT1/pcr/m/n/10 loc
-al
+Overfull \hbox (0.88937pt too wide) in paragraph at lines 407--414
+\OT1/pcr/m/n/10 f() return 1, 2, 3 end; return \OMS/cmsy/m/n/10 f \OT1/pcr/m/n/
+10 f() \OMS/cmsy/m/n/10 g\OT1/ppl/m/n/10 '' will re-turn ``\OMS/cmsy/m/n/10 f\O
+T1/pcr/m/n/10 1, 2, 3\OMS/cmsy/m/n/10 g\OT1/ppl/m/n/10 '',
  []
 
 
-Underfull \hbox (badness 1147) in paragraph at lines 65--65
-[]\OT1/ppl/m/n/10 Try to read an iden-ti-fier, or an iden-ti-fier
+Overfull \hbox (15.64977pt too wide) in paragraph at lines 407--414
+\OT1/ppl/m/n/10 whereas ``\OT1/pcr/m/n/10 local function f() return 1, 2, 3 end
+; return \OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 (f())
  []
 
-
-Underfull \hbox (badness 4279) in paragraph at lines 78--78
-[]\OT1/ppl/m/n/10 Read a se-quence of state-ments, op-tion-
+[18]
+Overfull \hbox (105.0pt too wide) in paragraph at lines 423--423
+[]                          \OT1/pcr/m/n/10 `Return{ `Number 1, `Number 2, `Num
+ber 3 } } } },[] 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 78--78
-\OT1/ppl/m/n/10 ally sep-a-rated by semi-colons. When
+Overfull \hbox (12.50003pt too wide) in paragraph at lines 442--444
+[]\OT1/pcr/m/n/10 `Set{ { `Index{ `Id "x", `Number 1 } }, { `Number 2 } }\OT1/p
+pl/m/n/10 ; 
  []
 
 
-Underfull \hbox (badness 4805) in paragraph at lines 78--78
-\OT1/ppl/m/n/10 in-tro-duc-ing syn-tax ex-ten-sions, it's of-ten
+Overfull \hbox (0.50003pt too wide) in paragraph at lines 445--447
+[]\OT1/pcr/m/n/10 `Set{ { `Id "a",`Id "b" }, { `Number 1, `Number 2 } }\OT1/ppl
+/m/n/10 ; 
  []
 
 
-Underfull \hbox (badness 2591) in paragraph at lines 78--78
-\OT1/ppl/m/n/10 nec-es-sary to add block ter-mi-na-tors with
+Overfull \hbox (18.50003pt too wide) in paragraph at lines 448--450
+[]\OT1/pcr/m/n/10 `Set{ { `Id "a" }, { `Number 1, `Number 2, `Number 3 } }\OT1/
+ppl/m/n/10 ; 
  []
 
-[34
 
+Overfull \hbox (95.70926pt too wide) in paragraph at lines 451--454
+[][]\OT1/pcr/m/n/10 function f(x) return x end \OT1/ppl/m/n/10 is syn-tax sugar
+ for []\OT1/pcr/m/n/10 f = function (x) return x end\OT1/ppl/m/n/10 ,
+ []
 
-]) [35]
-\openout2 = `stdlib.aux'.
-
- (./stdlib.tex
-Underfull \hbox (badness 10000) in paragraph at lines 12--13
 
+Overfull \hbox (100.00003pt too wide) in paragraph at lines 451--454
+[]\OT1/pcr/m/n/10 `Set{ { `Id "f" }, { `Function{ { `Id x } { `Return{ `Id "x" 
+} } } } } 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 17--18
-
+Overfull \hbox (6.48944pt too wide) in paragraph at lines 455--458
+[]\OT1/pcr/m/n/10 o["f"] = function (self, x) return x end\OT1/ppl/m/n/10 , and
+ as such, is rep-
  []
 
+[19]
+Overfull \hbox (28.62933pt too wide) in paragraph at lines 474--476
+[][]\OT1/pcr/m/n/10 local x=2 \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m/
+n/10 `Local{ { `Id "x" }, { `Number 2 } }\OT1/ppl/m/n/10 ; 
+ []
 
-Underfull \hbox (badness 10000) in paragraph at lines 22--23
 
+Overfull \hbox (22.62933pt too wide) in paragraph at lines 477--479
+[][]\OT1/pcr/m/n/10 local a, b \OT1/ppl/m/n/10 is rep-re-sented as []\OT1/pcr/m
+/n/10 `Local{ { `Id "a",`Id "b" }, { } }\OT1/ppl/m/n/10 ; 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 29--30
-
+Overfull \hbox (9.0pt too wide) in paragraph at lines 500--500
+[]                        \OT1/pcr/m/n/10 { `Call{ `Id "f", `Id "x" } } } } }[]
  []
 
+LaTeX Font Info:    Font shape `OT1/ppl/bx/it' in size <10> not available
+(Font)              Font shape `OT1/ppl/b/it' tried instead on input line 505.
+[20]
+Overfull \hbox (18.77942pt too wide) in paragraph at lines 549--552
+ \OT1/ppl/b/n/10 For state-ments[] \OT1/pcr/m/n/10 for x=<first>,<last>,<step> 
+do <foo>; <bar>; ...
+ []
 
-Underfull \hbox (badness 10000) in paragraph at lines 34--35
 
+Overfull \hbox (0.12932pt too wide) in paragraph at lines 549--552
+\OT1/pcr/m/n/10 end \OT1/ppl/m/n/10 is rep-re-sented as \OT1/pcr/m/n/10 `Fornum
+\OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 `Id "x", <first>, <last>, <step>,
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 39--40
-
+Overfull \hbox (15.00009pt too wide) in paragraph at lines 562--565
+\OT1/pcr/m/n/10 `Forin\OMS/cmsy/m/n/10 f f\OT1/pcr/m/n/10 `Id "x1",`Id "x2",...
+\OMS/cmsy/m/n/10 g\OT1/pcr/m/n/10 , \OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 <e1>, <e
+2>,... \OMS/cmsy/m/n/10 g f \OT1/pcr/m/n/10 <foo>,
  []
 
+[21]
+Overfull \hbox (122.0293pt too wide) in paragraph at lines 577--579
+[][]\OT1/pcr/m/n/10 if <foo> then <bar>; <baz> end \OT1/ppl/m/n/10 is rep-re-se
+nted as: []\OT1/pcr/m/n/10 `If{ <foo>, { <bar>, <baz> } }\OT1/ppl/m/n/10 ; 
+ []
 
-Underfull \hbox (badness 10000) in paragraph at lines 43--44
 
+Overfull \hbox (7.08931pt too wide) in paragraph at lines 580--583
+[][]\OT1/pcr/m/n/10 if <foo> then <bar1> else <bar2>; <baz2> end \OT1/ppl/m/n/1
+0 is rep-re-sented
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 51--52
+Overfull \hbox (82.00003pt too wide) in paragraph at lines 585--588
+[][]\OT1/pcr/m/n/10 if <foo1> then <bar1>; <baz1> elseif <foo2> then <bar2>; <b
+az2> end 
+ []
+
 
+Overfull \hbox (42.50003pt too wide) in paragraph at lines 585--588
+[]\OT1/pcr/m/n/10 `If{ <foo1>, { <bar1>, <baz1> }, <foo2>,{ <bar2>, <baz2> } }\
+OT1/ppl/m/n/10 ; 
  []
 
-[36
 
+Overfull \hbox (25.56914pt too wide) in paragraph at lines 609--611
+ \OT1/ppl/b/n/10 Ex-am-ple[] \OT1/pcr/m/n/10 return 1, 2, 3 \OT1/ppl/m/n/10 is 
+rep-re-sented as \OT1/pcr/m/n/10 `Return\OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 `Num
+ber 1, `Number
+ []
 
-]
-Underfull \hbox (badness 10000) in paragraph at lines 61--62
 
+Overfull \hbox (4.76651pt too wide) in paragraph at lines 625--629
+[]\OT1/ppl/m/n/10 Identifiers, string AST or plain strings are equiv-a-lent: ``
+\OT1/pcr/m/n/10 `Label\OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 `Id "foo"\OMS/cmsy/m/n
+/10 g\OT1/ppl/m/n/10 ''
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 66--67
+Overfull \hbox (2.47899pt too wide) in paragraph at lines 625--629
+\OT1/ppl/m/n/10 is syn-ony-mous for ``\OT1/pcr/m/n/10 `Label\OMS/cmsy/m/n/10 f 
+\OT1/pcr/m/n/10 `String "foo"\OMS/cmsy/m/n/10 g\OT1/ppl/m/n/10 '' and ``\OT1/pc
+r/m/n/10 `Label "foo"\OT1/ppl/m/n/10 ''. The
+ []
+
+[22]) [23]
+\openout2 = `meta.aux'.
 
+ (./meta.tex
+Overfull \hbox (7.37595pt too wide) in paragraph at lines 2--5
+\OT1/ppl/m/n/10 As the pre-vi-ous sec-tion shows, AST are not ex-tremely read-a
+ble, and as promized,
  []
 
+[24
 
-Underfull \hbox (badness 10000) in paragraph at lines 70--71
 
+]
+Overfull \hbox (45.0pt too wide) in paragraph at lines 68--68
+[]\OT1/pcr/m/n/10 Y = `Let{ { `Id "four" }, { `Op{ `Add, `Number 2, `Number 2 }
+ } }[] 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 80--81
-
+Overfull \hbox (51.0pt too wide) in paragraph at lines 68--68
+[]\OT1/pcr/m/n/10 X = +{ 2+2 };                          Y = +{stat: four = -{ 
+X } }[] 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 106--107
+Overfull \hbox (51.0pt too wide) in paragraph at lines 68--68
+[]\OT1/pcr/m/n/10 X = `Op{ `Add, +{2}, +{2} };           Y = +{stat: four = -{ 
+X } }[] 
+ []
 
+
+Overfull \hbox (51.0pt too wide) in paragraph at lines 68--68
+[]\OT1/pcr/m/n/10 X = `Op{ `Add, `Number 2, `Number 2 }; Y = +{stat: four = -{ 
+X } }[] 
  []
 
 
-Overfull \hbox (0.674pt too wide) in paragraph at lines 111--113
-[]\OT1/ppl/m/n/10 For in-stance, \OT1/pcr/m/n/10 table.imap((|x,y|x+y), 2, \OMS
-/cmsy/m/n/10 f\OT1/pcr/m/n/10 "foo", 1, 2, 3\OMS/cmsy/m/n/10 g\OT1/pcr/m/n/10 ,
- \OMS/cmsy/m/n/10 f\OT1/pcr/m/n/10 "bar", 10, 20, 30\OMS/cmsy/m/n/10 g\OT1/pcr/
-m/n/10 ) \OT1/ppl/m/n/10 will re-
+Overfull \hbox (9.0pt too wide) in paragraph at lines 68--68
+[]\OT1/pcr/m/n/10 Y = +{stat: four = -{ `Op{ `Add, `Number 2, `Number 2 } } }[]
  []
 
-[37]
-Underfull \hbox (badness 10000) in paragraph at lines 114--115
 
+Overfull \hbox (39.0pt too wide) in paragraph at lines 68--68
+[]\OT1/pcr/m/n/10 Y = +{stat: four = -{ +{ -{ +{ -{ +{ -{ +{ 2+2 } } } } } } } 
+} }[] 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 128--129
+Overfull \hbox (141.0pt too wide) in paragraph at lines 79--79
+[]\OT1/pcr/m/n/10 Y = +{stat: four = -{block: local two=`Number 2; return `Op{ 
+`Add, two, two } } }[] 
+ []
+
 
+Overfull \hbox (27.0pt too wide) in paragraph at lines 109--109
+[]\OT1/pcr/m/n/10 +-----------+    /      \    +---+    /        \    +--------
++[] 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 135--136
+Overfull \hbox (27.0pt too wide) in paragraph at lines 109--109
+[]\OT1/pcr/m/n/10 |SOURCE FILE|-->< Parser >-->|AST|-->< Compiler >-->|BYTECODE
+|[] 
+ []
 
+
+Overfull \hbox (27.0pt too wide) in paragraph at lines 109--109
+[]\OT1/pcr/m/n/10 +-----------+    \______/    +---+    \________/    +--------
++[] 
  []
 
+[25]
+Overfull \hbox (33.0pt too wide) in paragraph at lines 128--128
+[]                                                     \OT1/pcr/m/n/10 +-------
+-+[] 
+ []
 
-Underfull \hbox (badness 10000) in paragraph at lines 140--141
 
+Overfull \hbox (33.0pt too wide) in paragraph at lines 128--128
+[]                  \OT1/pcr/m/n/10 ______               ________   +->|BYTECOD
+E|[] 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 145--146
+Overfull \hbox (33.0pt too wide) in paragraph at lines 128--128
+[]\OT1/pcr/m/n/10 +-----------+    /      \    +---+    /        \  |  +-------
+-+[] 
+ []
 
+
+Overfull \hbox (33.0pt too wide) in paragraph at lines 128--128
+[]\OT1/pcr/m/n/10 +-----------+    \______/    +-^-+    \________/  |  +-------
+-+[] 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 155--156
+Overfull \hbox (33.0pt too wide) in paragraph at lines 128--128
+[]                              \OT1/pcr/m/n/10 /|\      ________   +->|BYTECOD
+E|[] 
+ []
+
 
+Overfull \hbox (33.0pt too wide) in paragraph at lines 128--128
+[]                               \OT1/pcr/m/n/10 |      /        \     +---+---
+-+[] 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 160--161
+Overfull \hbox (3.0pt too wide) in paragraph at lines 128--128
+[]                               \OT1/pcr/m/n/10 +-----<   Eval   ><-------+[] 
 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 165--166
+Underfull \hbox (badness 10000) in paragraph at lines 134--134
 
  []
 
-[38]
-Underfull \hbox (badness 10000) in paragraph at lines 171--172
 
+Overfull \hbox (47.00006pt too wide) in paragraph at lines 137--137
+[]\OT1/pcr/m/n/10 -\OMS/cmsy/m/n/10 f\OT1/pcr/m/n/10 block: print "META HELLO";
+ return +\OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 print "GENERATED HELLO" \OMS/cmsy/m
+/n/10 g g[] 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 177--178
+Underfull \hbox (badness 10000) in paragraph at lines 149--150
 
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 182--183
+Overfull \hbox (74.17773pt too wide) in paragraph at lines 159--163
+\OT1/ppl/m/n/10 piler is the AST rep-re-sent-ing []\OT1/pcr/m/n/10 print "GENER
+ATED HELLO"; []print "NORMAL HELLO"\OT1/ppl/m/n/10 . 
+ []
 
+[26]
+Overfull \hbox (25.81767pt too wide) in paragraph at lines 186--189
+[]\OT1/ppl/m/n/10 Here is the prob-lem: in Lua, choices are made by us-ing []\O
+T1/pcr/m/n/10 if _ then _ else _ end
  []
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 191--192
+Underfull \hbox (badness 10000) in paragraph at lines 213--213
 
  []
 
+[27]
+Overfull \hbox (21.0pt too wide) in paragraph at lines 217--217
+[]  \OT1/pcr/m/n/10 -- Declaring the [ternary] metafunction. As a metafunction,
+[] 
+ []
 
-Underfull \hbox (badness 10000) in paragraph at lines 202--203
 
+Overfull \hbox (49.00003pt too wide) in paragraph at lines 218--218
+[]  \OT1/pcr/m/n/10 -- it only exists within -\OMS/cmsy/m/n/10 f\OT1/pcr/m/n/10
+ ...\OMS/cmsy/m/n/10 g\OT1/pcr/m/n/10 , i.e. not in the program itself.[] 
  []
 
-[39]) [40]
-\openout2 = `clopts-ref.aux'.
-
- (./clopts-ref.tex) [41
 
+Overfull \hbox (7.00012pt too wide) in paragraph at lines 225--225
+[]\OT1/pcr/m/n/10 hi = -\OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 ternary ( +\OMS/cmsy
+/m/n/10 f\OT1/pcr/m/n/10 lang=="fr"\OMS/cmsy/m/n/10 g\OT1/pcr/m/n/10 , +\OMS/cm
+sy/m/n/10 f\OT1/pcr/m/n/10 "Bonjour"\OMS/cmsy/m/n/10 g\OT1/pcr/m/n/10 , +\OMS/c
+msy/m/n/10 f\OT1/pcr/m/n/10 "Hello"\OMS/cmsy/m/n/10 g\OT1/pcr/m/n/10 ) \OMS/cms
+y/m/n/10 g[] 
+ []
 
-]
-\openout2 = `springs-ref.aux'.
 
- (./springs-ref.tex) [42
+Overfull \hbox (7.00012pt too wide) in paragraph at lines 229--229
+[]\OT1/pcr/m/n/10 hi = -\OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 ternary ( +\OMS/cmsy
+/m/n/10 f\OT1/pcr/m/n/10 lang=="fr"\OMS/cmsy/m/n/10 g\OT1/pcr/m/n/10 , +\OMS/cm
+sy/m/n/10 f\OT1/pcr/m/n/10 "Bonjour"\OMS/cmsy/m/n/10 g\OT1/pcr/m/n/10 , +\OMS/c
+msy/m/n/10 f\OT1/pcr/m/n/10 "Hello"\OMS/cmsy/m/n/10 g\OT1/pcr/m/n/10 ) \OMS/cms
+y/m/n/10 g[] 
+ []
 
 
-]
-\openout2 = `walk-ref.aux'.
+Underfull \hbox (badness 10000) in paragraph at lines 240--241
 
- (./walk-ref.tex
-[43
+ []
 
 
-] [44]
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 217--217
-[]\OT1/pcr/m/n/10 -------------------------------------------------------------
--------------------[] 
+Overfull \hbox (10.44992pt too wide) in paragraph at lines 249--257
+[]\OT1/pcr/m/n/10 x=x+1 \OT1/ppl/m/n/10 is []\OT1/pcr/m/n/10 `Let{ { `Id x }, {
+ `Op{ `Add, `Id x, `Number 1 } } }\OT1/ppl/m/n/10 .
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 217--217
-[]\OT1/pcr/m/n/10 -------------------------------------------------------------
--------------------[] 
- []
+Underfull \hbox (badness 10000) in paragraph at lines 258--258
 
-[45]
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 243--243
-[]      \OT1/pcr/m/n/10 | `Id{ name } -> if not scope.current[name] then freeva
-rs[name] = true end[] 
  []
 
-[46]
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 278--278
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+[28]
+Overfull \hbox (13.00012pt too wide) in paragraph at lines 265--265
+[]      \OT1/pcr/m/n/10 return `Let\OMS/cmsy/m/n/10 f f \OT1/pcr/m/n/10 var \OM
+S/cmsy/m/n/10 g\OT1/pcr/m/n/10 , \OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 `Op\OMS/cms
+y/m/n/10 f \OT1/pcr/m/n/10 `Add, var, `Number 1 \OMS/cmsy/m/n/10 g g g[] 
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 278--278
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+Underfull \hbox (badness 10000) in paragraph at lines 280--281
+
  []
 
+) [29] [30
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
- []
 
+]
+Chapter 1.
+LaTeX Font Info:    Font shape `OT1/ppl/bx/n' in size <20.74> not available
+(Font)              Font shape `OT1/ppl/b/n' tried instead on input line 37.
+[31]
+\openout2 = `gg-ref.aux'.
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+ (./gg-ref.tex
+Overfull \hbox (69.0pt too wide) in paragraph at lines 54--54
+[]                         \OT1/pcr/m/n/10 func_params_content, ")", mlp.block,
+ "end" }[] 
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]      \OT1/pcr/m/n/10 | `Id{ name } -> if not scope.current[name] then freeva
-rs[name] = true end[] 
- []
+Overfull \hbox (3.0pt too wide) in paragraph at lines 54--54
+[]\OT1/pcr/m/n/10 func_stat = gg.sequence{ "local", "function", mlp.id, "(",[] 
 
-[47]
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+Overfull \hbox (69.0pt too wide) in paragraph at lines 54--54
+[]                         \OT1/pcr/m/n/10 func_params_content, ")", mlp.block,
+ "end" }[] 
  []
 
+[32
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+]
+Overfull \hbox (3.68726pt too wide) in paragraph at lines 80--85
+\OT1/ppl/m/n/10 and the builder re-turns \OT1/pcr/m/n/10 x\OT1/ppl/m/n/10 , the
+n the whole parser re-turns \OT1/pcr/m/n/10 f3(f2(f1(x)))\OT1/ppl/m/n/10 . 
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+Overfull \hbox (0.7478pt too wide) in paragraph at lines 100--102
+[]\OT1/ppl/m/n/10 It can also be di-rectly called as sim-ply []\OT1/pcr/m/n/10 
+x(lexer) \OT1/ppl/m/n/10 in-stead of []\OT1/pcr/m/n/10 x:parse(lexer)\OT1/ppl/m
+/n/10 . 
  []
 
-
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+[33]
+Overfull \hbox (39.0pt too wide) in paragraph at lines 125--125
+[]  \OT1/pcr/m/n/10 mlp.do_stat, mlp.while_stat, mlp.repeat_stat, mlp.if_stat..
+. }[] 
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+Overfull \hbox (25.36647pt too wide) in paragraph at lines 133--143
+\OT1/ppl/m/n/10 struc-tor, and are con-verted into se-quence parsers on-the-fly
+ by call-ing []\OT1/pcr/m/n/10 gg.sequence
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+Overfull \hbox (2.07597pt too wide) in paragraph at lines 153--159
+\OT1/ppl/m/n/10 turn value is re-turned as the parser's re-sult. If ab-sent, th
+e se-lected parser's
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 355--355
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+Overfull \hbox (62.307pt too wide) in paragraph at lines 153--159
+\OT1/ppl/m/n/10 re-sult is sim-ply re-turned. It can be up-dated at any-time wi
+th []\OT1/pcr/m/n/10 x.builder = <newval>\OT1/ppl/m/n/10 . 
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 385--385
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+Overfull \hbox (58.00003pt too wide) in paragraph at lines 159--163
+[]\OT1/pcr/m/n/10 builder = function(x) return { tag = "foobar"; unpack (x) } e
+nd 
  []
 
-[48]
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 385--385
-[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
--------------------[] 
+[34]
+Overfull \hbox (0.7478pt too wide) in paragraph at lines 179--181
+[]\OT1/ppl/m/n/10 It can also be di-rectly called as sim-ply []\OT1/pcr/m/n/10 
+x(lexer) \OT1/ppl/m/n/10 in-stead of []\OT1/pcr/m/n/10 x:parse(lexer)\OT1/ppl/m
+/n/10 . 
  []
 
-[49]
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 490--490
-[]\OT1/pcr/m/n/10 -------------------------------------------------------------
--------------------[] 
- []
 
+Overfull \hbox (11.24693pt too wide) in paragraph at lines 188--194
+[]\OT1/ppl/m/n/10 Take a se-quence parser, or a con-fig ta-ble that would be ac
+-cepted by []\OT1/pcr/m/n/10 gg.sequence
+ []
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 490--490
-[]\OT1/pcr/m/n/10 -------------------------------------------------------------
--------------------[] 
+[35] [36]
+Overfull \hbox (58.00003pt too wide) in paragraph at lines 284--288
+[]\OT1/pcr/m/n/10 builder = function(x) return { tag = "foobar"; unpack (x) } e
+nd 
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 490--490
-[]\OT1/pcr/m/n/10 -------------------------------------------------------------
--------------------[] 
+Overfull \hbox (0.7478pt too wide) in paragraph at lines 308--310
+[]\OT1/ppl/m/n/10 It can also be di-rectly called as sim-ply []\OT1/pcr/m/n/10 
+x(lexer) \OT1/ppl/m/n/10 in-stead of []\OT1/pcr/m/n/10 x:parse(lexer)\OT1/ppl/m
+/n/10 . 
  []
 
-
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 490--490
-[]\OT1/pcr/m/n/10 -------------------------------------------------------------
--------------------[] 
+[37]
+Overfull \hbox (69.0pt too wide) in paragraph at lines 341--345
+[]\OT1/pcr/m/n/10 { "+",  prec=60, assoc="left", builder= |a, _, b| `Op{ `Add, 
+a, b } } 
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 490--490
-[]\OT1/pcr/m/n/10 -------------------------------------------------------------
--------------------[] 
+Overfull \hbox (5.62663pt too wide) in paragraph at lines 348--351
+ \OT1/ppl/b/n/10 In-fix op-er-a-tors[] \OT1/ppl/m/n/10 In-fix op-er-a-tors are 
+de-scribed by a ta-ble whose array-part works
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 490--490
+Overfull \hbox (4.10693pt too wide) in paragraph at lines 353--357
+[][]\OT1/pcr/m/n/10 prec = <number> \OT1/ppl/m/n/10 its prece-dence. The higher
+ the prece-dence, the tighter
+ []
+
+[38]
+Overfull \hbox (20.18748pt too wide) in paragraph at lines 397--399
+ \OT1/ppl/b/n/10 Suf-fix op-er-a-tors[] \OT1/ppl/m/n/10 Same as pre-fix op-er-a
+-tors, ex-cept that []\OT1/pcr/m/n/10 builder \OT1/ppl/m/n/10 takes \OT1/pcr/m/
+n/10 |operand,
+ []
+
+[39]
+Overfull \hbox (0.7478pt too wide) in paragraph at lines 443--445
+[]\OT1/ppl/m/n/10 It can also be di-rectly called as sim-ply []\OT1/pcr/m/n/10 
+x(lexer) \OT1/ppl/m/n/10 in-stead of []\OT1/pcr/m/n/10 x:parse(lexer)\OT1/ppl/m
+/n/10 . 
+ []
+
+[40]
+Overfull \hbox (0.7478pt too wide) in paragraph at lines 488--490
+[]\OT1/ppl/m/n/10 It can also be di-rectly called as sim-ply []\OT1/pcr/m/n/10 
+x(lexer) \OT1/ppl/m/n/10 in-stead of []\OT1/pcr/m/n/10 x:parse(lexer)\OT1/ppl/m
+/n/10 . 
+ []
+
+) [41]
+\openout2 = `mlp-ref.aux'.
+
+ (./mlp-ref.tex
+Underfull \hbox (badness 2426) in paragraph at lines 33--33
+\OT1/ppl/m/n/10 ments' open-ning paren-the-sis to the fi-nal
+ []
+
+
+Underfull \hbox (badness 1642) in paragraph at lines 33--33
+\OT1/pcr/m/n/10 end\OT1/ppl/m/n/10 , but ex-clud-ing the ini-tial \OT1/pcr/m/n/
+10 function
+ []
+
+
+Underfull \hbox (badness 4805) in paragraph at lines 33--33
+\OT1/ppl/m/n/10 key-word, so that it can be used both
+ []
+
+
+Underfull \hbox (badness 2922) in paragraph at lines 33--33
+\OT1/ppl/m/n/10 for anony-mous func-tions, for \OT1/pcr/m/n/10 function
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 33--33
+\OT1/pcr/m/n/10 some[]name(...) end \OT1/ppl/m/n/10 and for \OT1/pcr/m/n/10 loc
+al
+ []
+
+
+Underfull \hbox (badness 1147) in paragraph at lines 65--65
+[]\OT1/ppl/m/n/10 Try to read an iden-ti-fier, or an iden-ti-fier
+ []
+
+
+Overfull \hbox (40.1871pt too wide) in paragraph at lines 23--71
+[] 
+ []
+
+
+Underfull \hbox (badness 4279) in paragraph at lines 78--78
+[]\OT1/ppl/m/n/10 Read a se-quence of state-ments, op-tion-
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 78--78
+\OT1/ppl/m/n/10 ally sep-a-rated by semi-colons. When
+ []
+
+
+Underfull \hbox (badness 4805) in paragraph at lines 78--78
+\OT1/ppl/m/n/10 in-tro-duc-ing syn-tax ex-ten-sions, it's of-ten
+ []
+
+
+Underfull \hbox (badness 2591) in paragraph at lines 78--78
+\OT1/ppl/m/n/10 nec-es-sary to add block ter-mi-na-tors with
+ []
+
+
+Overfull \hbox (53.21857pt too wide) in paragraph at lines 74--83
+[] 
+ []
+
+
+Underfull \vbox (badness 4341) has occurred while \output is active []
+
+ [42
+
+
+])
+[43]
+\openout2 = `stdlib.aux'.
+
+ (./stdlib.tex
+Underfull \hbox (badness 10000) in paragraph at lines 12--13
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 17--18
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 22--23
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 29--30
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 34--35
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 39--40
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 43--44
+
+ []
+
+[44
+
+
+]
+Overfull \hbox (34.82903pt too wide) in paragraph at lines 48--50
+[]\OT1/pcr/m/n/10 for x in values(t) do [...] end \OT1/ppl/m/n/10 is equiv-a-le
+nt to \OT1/pcr/m/n/10 for [], x in pairs(t)
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 51--52
+
+ []
+
+
+Overfull \hbox (22.82903pt too wide) in paragraph at lines 57--59
+[]\OT1/pcr/m/n/10 for k in keys(t) do [...] end \OT1/ppl/m/n/10 is equiv-a-lent
+ to \OT1/pcr/m/n/10 for k, [] in pairs(t)
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 61--62
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 66--67
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 70--71
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 80--81
+
+ []
+
+[45]
+Underfull \hbox (badness 10000) in paragraph at lines 106--107
+
+ []
+
+
+Overfull \hbox (15.66942pt too wide) in paragraph at lines 111--113
+[]\OT1/ppl/m/n/10 For in-stance, \OT1/pcr/m/n/10 table.imap((|x,y|x+y), 2, \OMS
+/cmsy/m/n/10 f\OT1/pcr/m/n/10 "foo", 1, 2, 3\OMS/cmsy/m/n/10 g\OT1/pcr/m/n/10 ,
+ \OMS/cmsy/m/n/10 f\OT1/pcr/m/n/10 "bar",
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 114--115
+
+ []
+
+
+Overfull \hbox (17.5pt too wide) in paragraph at lines 122--127
+\OT1/pcr/m/n/10 table.ifold( (|acc, xi, yi| acc + max (xi, yi)), 0, 2, x, y)\OT
+1/ppl/m/n/10 . 
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 128--129
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 135--136
+
+ []
+
+[46]
+Underfull \hbox (badness 10000) in paragraph at lines 140--141
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 145--146
+
+ []
+
+
+Overfull \hbox (2.17764pt too wide) in paragraph at lines 147--149
+[]\OT1/ppl/m/n/10 Flatten a list of lists into a list. for in-stance, \OT1/pcr/
+m/n/10 table.iflatten\OMS/cmsy/m/n/10 ff\OT1/pcr/m/n/10 1,2\OMS/cmsy/m/n/10 g\O
+T1/pcr/m/n/10 , \OMS/cmsy/m/n/10 f\OT1/pcr/m/n/10 3,4\OMS/cmsy/m/n/10 gg
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 155--156
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 160--161
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 165--166
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 171--172
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 177--178
+
+ []
+
+[47]
+Underfull \hbox (badness 10000) in paragraph at lines 182--183
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 191--192
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 202--203
+
+ []
+
+[48]
+Overfull \hbox (5.48813pt too wide) in paragraph at lines 221--229
+\OT1/ppl/m/n/10 aliases to other stan-dard func-tions such as \OT1/pcr/m/n/10 l
+oadstring() \OT1/ppl/m/n/10 or \OT1/pcr/m/n/10 string.dump()\OT1/ppl/m/n/10 ;
+ []
+
+) [49]
+\openout2 = `clopts-ref.aux'.
+
+ (./clopts-ref.tex) [50
+
+
+]
+\openout2 = `springs-ref.aux'.
+
+ (./springs-ref.tex
+Overfull \hbox (2.28566pt too wide) in paragraph at lines 21--23
+\OT1/ppl/m/n/10 Notice how-ever that the Pluto ver-sion used in met-alua has si
+g-nif-i-cantly patched
+ []
+
+) [51
+
+
+]
+\openout2 = `walk-ref.aux'.
+
+ (./walk-ref.tex
+Overfull \hbox (1.67618pt too wide) in paragraph at lines 3--12
+\OT1/ppl/m/n/10 check for some prop-erty, you of-ten need to de-sign a func-tio
+n that walks through
+ []
+
+[52
+
+
+]
+Overfull \hbox (19.36885pt too wide) in paragraph at lines 74--79
+\OT1/ppl/m/n/10 There are 3 main tree walk-ers: \OT1/pcr/m/n/10 walk.expr()\OT1
+/ppl/m/n/10 , \OT1/pcr/m/n/10 walk.stat() \OT1/ppl/m/n/10 and \OT1/pcr/m/n/10 w
+alk.block()\OT1/ppl/m/n/10 ,
+ []
+
+
+Overfull \hbox (3.61923pt too wide) in paragraph at lines 80--85
+[]\OT1/pcr/m/n/10 cfg.stat.down(node, parent, grandparent...)\OT1/ppl/m/n/10 , 
+which ap-plies
+ []
+
+
+Overfull \hbox (0.66913pt too wide) in paragraph at lines 85--89
+[]\OT1/pcr/m/n/10 cfg.stat.up(node, parent, grandparent...)\OT1/ppl/m/n/10 , wh
+ich is ap-plies
+ []
+
+
+Overfull \hbox (3.22891pt too wide) in paragraph at lines 89--94
+[]\OT1/pcr/m/n/10 cfg.expr.down() \OT1/ppl/m/n/10 and \OT1/pcr/m/n/10 cfg.expr.
+up()\OT1/ppl/m/n/10 , which work just as their \OT1/pcr/m/n/10 stat
+ []
+
+[53]
+Overfull \hbox (8.72974pt too wide) in paragraph at lines 96--99
+[]\OT1/pcr/m/n/10 cfg.binder(identifier, id[]parent, id[]grandparent...)\OT1/pp
+l/m/n/10 : this
+ []
+
+[54]
+Overfull \hbox (135.0pt too wide) in paragraph at lines 217--217
+[]\OT1/pcr/m/n/10 -------------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (27.0pt too wide) in paragraph at lines 217--217
+[]\OT1/pcr/m/n/10 -- Scope handling: ':push()' saves the current scope, ':pop()
+'[] 
+ []
+
+
+Overfull \hbox (57.0pt too wide) in paragraph at lines 217--217
+[]\OT1/pcr/m/n/10 -- restores the previously saved one. ':add(identifiers_list)
+' adds[] 
+ []
+
+
+Overfull \hbox (33.0pt too wide) in paragraph at lines 217--217
+[]\OT1/pcr/m/n/10 -- identifiers to the current scope. Current scope is stored 
+in[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 217--217
+[]\OT1/pcr/m/n/10 -------------------------------------------------------------
+-------------------[] 
+ []
+
+[55]
+Overfull \hbox (33.0pt too wide) in paragraph at lines 217--217
+[]   \OT1/pcr/m/n/10 table.insert (self.stack, table.shallow_copy (self.current
+))[] 
+ []
+
+
+Overfull \hbox (3.0pt too wide) in paragraph at lines 217--217
+[]      \OT1/pcr/m/n/10 match id with `Id{ x } -> self.current[x] = true end[] 
+
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 243--243
+[]      \OT1/pcr/m/n/10 | `Id{ name } -> if not scope.current[name] then freeva
+rs[name] = true end[] 
+ []
+
+[56]
+Overfull \hbox (33.98691pt too wide) in paragraph at lines 250--254
+\OT1/ppl/m/n/10 when we leave it. That will be done by pro-vid-ing func-tions \
+OT1/pcr/m/n/10 cfg.block.down()
+ []
+
+
+Overfull \hbox (0.13757pt too wide) in paragraph at lines 250--254
+\OT1/ppl/m/n/10 and \OT1/pcr/m/n/10 cfg.block.up()\OT1/ppl/m/n/10 . Sav-ing and
+ restor-ing will be per-formed by meth-
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 278--278
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (63.0pt too wide) in paragraph at lines 278--278
+[]   \OT1/pcr/m/n/10 -- Create a separate scope for each block, close it when l
+eaving.[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 278--278
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+[57]
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 -- Check identifiers; add functions parameters to newly cr
+eated scope.[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]      \OT1/pcr/m/n/10 | `Id{ name } -> if not scope.current[name] then freeva
+rs[name] = true end[] 
+ []
+
+
+Overfull \hbox (51.0pt too wide) in paragraph at lines 355--355
+[]      \OT1/pcr/m/n/10 | `Function{ params, _ } -> scope:push(); scope:add (pa
+rams)[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 -- Create a new scope and register loop variable[s] in it[
+] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (33.0pt too wide) in paragraph at lines 355--355
+[]      \OT1/pcr/m/n/10 | `Forin{ vars, ... }    -> scope:push(); scope:add(var
+s)[] 
+ []
+
+
+Overfull \hbox (27.0pt too wide) in paragraph at lines 355--355
+[]      \OT1/pcr/m/n/10 | `Fornum{ var, ... }    -> scope:push(); scope:add{var
+}[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+[58]
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (63.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 -- Create a separate scope for each block, close it when l
+eaving.[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 355--355
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 385--385
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 385--385
+[]   \OT1/pcr/m/n/10 -- Create a new scope and register loop variable[s] in it[
+] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 385--385
+[]   \OT1/pcr/m/n/10 ----------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (33.0pt too wide) in paragraph at lines 385--385
+[]      \OT1/pcr/m/n/10 | `Forin{ vars, ... }    -> scope:push(); scope:add(var
+s)[] 
+ []
+
+
+Overfull \hbox (27.0pt too wide) in paragraph at lines 385--385
+[]      \OT1/pcr/m/n/10 | `Fornum{ var, ... }    -> scope:push(); scope:add{var
+}[] 
+ []
+
+
+Overfull \hbox (75.0pt too wide) in paragraph at lines 385--385
+[]      \OT1/pcr/m/n/10 | `Repeat{ block, cond } -> -- 'cond' is in the scope o
+f 'block'[] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 385--385
+[]         \OT1/pcr/m/n/10 for s in values (block) do walk.stat(cfg)(s) end -- 
+no new scope[] 
+ []
+
+
+Overfull \hbox (117.0pt too wide) in paragraph at lines 385--385
+[]         \OT1/pcr/m/n/10 return 'break' -- No automatic walking of subparts '
+cond' and 'body'[] 
+ []
+
+[59]
+Overfull \hbox (2.89964pt too wide) in paragraph at lines 414--416
+[]\OT1/pcr/m/n/10 cfg.id.free(identifier, parent, grandparent...)\OT1/ppl/m/n/1
+0 , which is
+ []
+
+
+Overfull \hbox (18.50003pt too wide) in paragraph at lines 416--419
+[]\OT1/pcr/m/n/10 cfg.id.bound(identifier, binder, parent, grandparent...)\OT1/
+ppl/m/n/10 ,
+ []
+
+[60]
+Overfull \hbox (135.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -------------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (69.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -- bound_vars keeps a binder node -> old_name -> new_name dic
+tionary.[] 
+ []
+
+
+Overfull \hbox (51.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -- It allows to associate all instances of an identifier toge
+ther,[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -------------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -------------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (51.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -- local_renames will keep all identifier nodes to rename as 
+keys,[] 
+ []
+
+
+Overfull \hbox (33.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -- and their new name as values. The renaming must happen aft
+er[] 
+ []
+
+
+Overfull \hbox (87.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -- the whole tree has been visited, in order to avoid breakin
+g captures.[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -------------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -------------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (81.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -- Associate a new name in bound_vars when a local variable i
+s created.[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 -------------------------------------------------------------
+-------------------[] 
+ []
+
+
+Overfull \hbox (99.0pt too wide) in paragraph at lines 490--490
+[]   \OT1/pcr/m/n/10 local new_name         = mlp.gensym(old_name)[1] -- genera
+te a new name[] 
+ []
+
+
+Overfull \hbox (87.0pt too wide) in paragraph at lines 490--490
+[]   \OT1/pcr/m/n/10 binder_table[old_name] = new_name -- remember name for nex
+t instances[] 
+ []
+
+
+Overfull \hbox (57.0pt too wide) in paragraph at lines 490--490
+[]   \OT1/pcr/m/n/10 local_renames[id]      = new_name -- add to the rename tod
+o-list[] 
+ []
+
+
+Overfull \hbox (135.0pt too wide) in paragraph at lines 490--490
 []\OT1/pcr/m/n/10 -------------------------------------------------------------
 -------------------[] 
  []
 
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 490--490
+Overfull \hbox (135.0pt too wide) in paragraph at lines 490--490
 []\OT1/pcr/m/n/10 -------------------------------------------------------------
 -------------------[] 
  []
 
+[61]
+Overfull \hbox (39.0pt too wide) in paragraph at lines 490--490
+[]\OT1/pcr/m/n/10 for id, new_name in pairs(local_renames) do id[1] = new_name 
+end[] 
+ []
+
+) [62]
+Chapter 2.
+[63
+
+
+]
+\openout2 = `match-ref.aux'.
+
+ (./match-ref.tex
+Overfull \hbox (6.73804pt too wide) in paragraph at lines 14--25
+\OT1/ppl/m/n/10 match-ing: it lets you give a list of (\OT1/pcr/m/n/10 pattern 
+-> code[]to[]execute[]if[]match\OT1/ppl/m/n/10 )
+ []
+
 
-Overfull \hbox (10.24498pt too wide) in paragraph at lines 490--490
-[]\OT1/pcr/m/n/10 -------------------------------------------------------------
--------------------[] 
+Overfull \hbox (32.70644pt too wide) in paragraph at lines 49--54
+[]\OT1/ppl/m/n/10 When the match state-ment is ex-e-cuted, the first pat-tern w
+hich matches \OT1/pcr/m/n/10 <some[]value>
  []
 
-[50]) [51] [52
-
+[64
 
 ]
-Chapter 2.
-[53]
-\openout2 = `match-ref.aux'.
+Overfull \hbox (0.31627pt too wide) in paragraph at lines 85--91
+ \OT1/ppl/b/n/10 Iden-ti-fiers[] \OT1/ppl/m/n/10 The other fun-da-men-tal kind 
+of pat-terns are iden-ti-fiers: they match
+ []
 
- (./match-ref.tex
-Overfull \hbox (16.25949pt too wide) in paragraph at lines 2--7
-\OT1/ppl/m/n/10 tasks. There is a pat-tern match-ing ex-ten-sion for met-alua, 
-which is ex-tremely use-ful for most meta-programming
+
+Overfull \hbox (117.0pt too wide) in paragraph at lines 97--97
+[]\OT1/pcr/m/n/10 | `Local{ identifiers, values } -> table.foreach(identifiers,
+ |x| print(x[1])[] 
  []
 
-[54
+[65] [66]
+Overfull \hbox (45.0pt too wide) in paragraph at lines 167--167
+[]\OT1/pcr/m/n/10 | "^(%w+) +(%w+) +(%w+)$"/{ w1, w2, w3 } -> do_stuff (w1, w2,
+ w3)[] 
+ []
 
-] [55]) [56]
+) [67]
 \openout2 = `dollar-ref.aux'.
 
- (./dollar-ref.tex) [57
+ (./dollar-ref.tex) [68
 
 
 ]
 \openout2 = `clist-ref.aux'.
 
- (./clist-ref.tex [58
+ (./clist-ref.tex
+Overfull \hbox (13.74886pt too wide) in paragraph at lines 43--49
+\OT1/ppl/m/n/10 have been \OT1/pcr/m/n/10 y = \OMS/cmsy/m/n/10 f\OT1/pcr/m/n/10
+ i for i=1,3; i for i=1,3; i for i=1,3\OMS/cmsy/m/n/10 g \OT1/ppl/m/n/10 (no-ti
+ce how-
+ []
 
+[69
 
-]) [59]
-\openout2 = `hygiene-ref.aux'.
 
+]) [70]
+\openout2 = `hygiene-ref.aux'.
 
-(./hygiene-ref.tex) [60
+ (./hygiene-ref.tex) [71
 
 
 ]
 \openout2 = `samples.aux'.
 
- (./samples.tex) [61
+ (./samples.tex) [72
 
 
 ]
 \openout2 = `sample-exception.aux'.
 
- (./sample-exception.tex
-Overfull \hbox (7.86198pt too wide) in paragraph at lines 51--58
-[]\OT1/ppl/m/n/10 We use \OT1/pcr/m/n/10 gg.sequence \OT1/ppl/m/n/10 to chain t
-he var-i-ous parsers; \OT1/pcr/m/n/10 gg.optkeyword \OT1/ppl/m/n/10 lets us al-
-low the op-tional ``\OT1/pcr/m/n/10 |\OT1/ppl/m/n/10 ''; \OT1/pcr/m/n/10 gg.lis
-t
+
+(./sample-exception.tex
+Overfull \hbox (21.0pt too wide) in paragraph at lines 32--32
+[]  \OT1/pcr/m/n/10 <exception_1> -> <block of statements handling exception 1>
+[] 
+ []
+
+
+Overfull \hbox (21.0pt too wide) in paragraph at lines 32--32
+[]\OT1/pcr/m/n/10 | <exception_2> -> <block of statements handling exception 2>
+[] 
+ []
+
+
+Overfull \hbox (21.0pt too wide) in paragraph at lines 32--32
+[]\OT1/pcr/m/n/10 | <exception_n> -> <block of statements handling exception n>
+[] 
+ []
+
+
+Overfull \hbox (33.0pt too wide) in paragraph at lines 49--49
+[]   \OT1/pcr/m/n/10 gg.sequence{ "try",  mlp.block,  "with",  gg.optkeyword "|
+",[] 
+ []
+
+
+Overfull \hbox (63.0pt too wide) in paragraph at lines 49--49
+[]                \OT1/pcr/m/n/10 gg.list{ gg.sequence{ mlp.expr,  "->",  mlp.b
+lock },[] 
+ []
+
+
+Overfull \hbox (45.0pt too wide) in paragraph at lines 49--49
+[]                         \OT1/pcr/m/n/10 separators = "|", terminators = "end
+" },[] 
+ []
+
+[73
+
+
+]
+Overfull \hbox (44.87628pt too wide) in paragraph at lines 51--58
+\OT1/ppl/m/n/10 word. The parser del-e-gates the build-ing of the re-sult-ing s
+tate-ment to \OT1/pcr/m/n/10 trywith[]builder\OT1/ppl/m/n/10 ,
+ []
+
+
+Overfull \hbox (0.56863pt too wide) in paragraph at lines 77--80
+[]\OT1/ppl/m/n/10 The fun-da-men-tal mech-a-nism is \OT1/pcr/m/n/10 pcall(func,
+ arg1, arg2, ..., argn)\OT1/ppl/m/n/10 :
+ []
+
+[74]
+Overfull \hbox (11.217pt too wide) in paragraph at lines 125--130
+[]\OT1/ppl/m/n/10 To com-pile a \OT1/pcr/m/n/10 try/with \OT1/ppl/m/n/10 block,
+ af-ter hav-ing put the guarded block into a \OT1/pcr/m/n/10 pcall()
+ []
+
+
+Overfull \hbox (69.0pt too wide) in paragraph at lines 154--154
+[]\OT1/pcr/m/n/10 | exn_nomorecofee -> print "you shouldn't see that: uncompara
+ble exn"[] 
+ []
+
+
+Overfull \hbox (87.0pt too wide) in paragraph at lines 154--154
+[]\OT1/pcr/m/n/10 | exn_nullarg     -> print "you shouldn't see that: too speci
+alized exn"[] 
  []
 
-[62
 
+Overfull \hbox (51.0pt too wide) in paragraph at lines 154--154
+[]\OT1/pcr/m/n/10 | exception       -> print "execution should never reach that
+ far"[] 
+ []
 
-] [63]
+[75]
 Underfull \vbox (badness 10000) has occurred while \output is active []
 
- [64]
-[65] [66]) [67]
+ [76]
+Overfull \hbox (15.0pt too wide) in paragraph at lines 219--219
+[]   \OT1/pcr/m/n/10 ---------------------------------------------------------[
+] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 219--219
+[]   \OT1/pcr/m/n/10 ---------------------------------------------------------[
+] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 219--219
+[]   \OT1/pcr/m/n/10 ---------------------------------------------------------[
+] 
+ []
+
+
+Overfull \hbox (33.0pt too wide) in paragraph at lines 219--219
+[]   \OT1/pcr/m/n/10 -- [catchers] is the big [if] statement which handles erro
+rs[] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 219--219
+[]   \OT1/pcr/m/n/10 ---------------------------------------------------------[
+] 
+ []
+
+
+Overfull \hbox (27.0pt too wide) in paragraph at lines 219--219
+[]      \OT1/pcr/m/n/10 -- insert the corresponding block to execute on success
+:[] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 219--219
+[]   \OT1/pcr/m/n/10 ---------------------------------------------------------[
+] 
+ []
+
+
+Overfull \hbox (27.0pt too wide) in paragraph at lines 219--219
+[]   \OT1/pcr/m/n/10 -- Finally, put an [else] block to rethrow uncought errors
+:[] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 219--219
+[]   \OT1/pcr/m/n/10 ---------------------------------------------------------[
+] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 219--219
+[]   \OT1/pcr/m/n/10 ---------------------------------------------------------[
+] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 219--219
+[]   \OT1/pcr/m/n/10 ---------------------------------------------------------[
+] 
+ []
+
+
+Overfull \hbox (27.0pt too wide) in paragraph at lines 219--219
+[]      \OT1/pcr/m/n/10 local status, exn  = { pcall (function() -{block} end) 
+}[] 
+ []
+
+[77] [78]
+Overfull \hbox (3.47722pt too wide) in paragraph at lines 290--292
+[]\OT1/ppl/m/n/10 Coroutines can't yield across a \OT1/pcr/m/n/10 pcall()\OT1/p
+pl/m/n/10 . There-fore, a yield in the guarded
+ []
+
+
+Overfull \hbox (87.0pt too wide) in paragraph at lines 320--320
+[]   \OT1/pcr/m/n/10 throw (exn_invalid:new "I'm sorry Dave, I'm afraid I can't
+ do that.")[] 
+ []
+
+
+Overfull \hbox (9.0pt too wide) in paragraph at lines 320--320
+[]\OT1/pcr/m/n/10 | exn_invalid e -> printf ("The computer choked: %s", e[1])[]
+ []
+
+[79]) [80]
 \openout2 = `sample-match.aux'.
 
- (./sample-match.tex [68
+ (./sample-match.tex [81
 
 
 ]
+Overfull \hbox (33.0pt too wide) in paragraph at lines 80--80
+[]   \OT1/pcr/m/n/10 | `Op{ op, a, b } -> return binopfuncs[op](eval(a), eval(b
+))[] 
+ []
+
+[82]
 Overfull \hbox (9.28348pt too wide) in paragraph at lines 166--166
 []  \OT1/pcr/m/n/10 if type(v2) == "string" then[] 
  []
@@ -822,68 +1805,398 @@ Underfull \hbox (badness 10000) in paragraph at lines 104--169
  []
 
 
+Underfull \hbox (badness 10000) in paragraph at lines 104--169
+
+ []
+
+
+Overfull \hbox (2.13712pt too wide) in paragraph at lines 170--174
+\OT1/ppl/m/n/10 not put all as-sign-ments on one side, and all tests on an othe
+r, e.g. []\OT1/pcr/m/n/10 v2 = v1.tag
+ []
+
+
 Underfull \vbox (badness 10000) has occurred while \output is active []
 
- [69]
-[70] [71]
-Overfull \hbox (17.15016pt too wide) in paragraph at lines 279--284
-[]\OT1/ppl/m/n/10 To fully un-der-stand this func-tion, one must re-mem-ber tha
-t test op-er-a-tions are trans-lated into \OT1/pcr/m/n/10 `Op\OMS/cmsy/m/n/10 f
- \OT1/pcr/m/n/10 <opname>,
+ [83]
+Overfull \hbox (93.0pt too wide) in paragraph at lines 215--215
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+
+Overfull \hbox (57.0pt too wide) in paragraph at lines 215--215
+[]      \OT1/pcr/m/n/10 -- Turn a pattern into a list of conditions and assigna
+tions,[] 
+ []
+
+
+Overfull \hbox (81.0pt too wide) in paragraph at lines 215--215
+[]      \OT1/pcr/m/n/10 -- stored into [acc]. [n] is the depth of the subpatter
+n into the[] 
+ []
+
+
+Overfull \hbox (69.0pt too wide) in paragraph at lines 215--215
+[]      \OT1/pcr/m/n/10 -- toplevel pattern; [tested_term] is the AST of the te
+rm to be[] 
+ []
+
+
+Overfull \hbox (87.0pt too wide) in paragraph at lines 215--215
+[]      \OT1/pcr/m/n/10 -- tested; [pattern] is the AST of a pattern, or a subt
+ree of that[] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 215--215
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+
+Overfull \hbox (57.0pt too wide) in paragraph at lines 215--215
+[]         \OT1/pcr/m/n/10 if "Number" == pattern.tag or "String" == pattern.ta
+g then[] 
+ []
+
+
+Overfull \hbox (3.0pt too wide) in paragraph at lines 215--215
+[]            \OT1/pcr/m/n/10 accumulate (+{stat: local -{pattern} = -{v} })[] 
+
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 215--215
+[]               \OT1/pcr/m/n/10 then key = x[1];           sub_pattern = x[2][
+] 
+ []
+
+
+Overfull \hbox (87.0pt too wide) in paragraph at lines 215--215
+[]               \OT1/pcr/m/n/10 else key = `Number{ idx }; sub_pattern = x; id
+x=idx+1 end[] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 215--215
+[]               \OT1/pcr/m/n/10 accumulate (+{stat: (-{w}) = -{v} [-{key}] })[
+] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 215--215
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+
+Overfull \hbox (104.39642pt too wide) in paragraph at lines 229--237
+[]\OT1/ppl/m/n/10 In the quotes, you might no-tice the paren-the-ses around the
+ vari-able in ``[]\OT1/pcr/m/n/10 (-{w}) = -{v} [-{key}]\OT1/ppl/m/n/10 '':
+ []
+
+[84]
+Overfull \hbox (93.0pt too wide) in paragraph at lines 277--277
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+
+Overfull \hbox (39.0pt too wide) in paragraph at lines 277--277
+[]      \OT1/pcr/m/n/10 -- Turn a list of tests and assignations into [acc] int
+o a[] 
+ []
+
+
+Overfull \hbox (15.0pt too wide) in paragraph at lines 277--277
+[]      \OT1/pcr/m/n/10 -- single term of nested conditionals and assignments.[
+] 
+ []
+
+
+Overfull \hbox (81.0pt too wide) in paragraph at lines 277--277
+[]      \OT1/pcr/m/n/10 -- [inner_term] is the AST of a term to be put into the
+ innermost[] 
+ []
+
+
+Overfull \hbox (81.0pt too wide) in paragraph at lines 277--277
+[]      \OT1/pcr/m/n/10 -- conditionnal, after all assignments. [n] is the inde
+x in [acc][] 
+ []
+
+
+Overfull \hbox (69.0pt too wide) in paragraph at lines 277--277
+[]      \OT1/pcr/m/n/10 -- This is a recursive function, which builds the inner
+ part of[] 
+ []
+
+
+Overfull \hbox (9.0pt too wide) in paragraph at lines 277--277
+[]      \OT1/pcr/m/n/10 -- the statement first, then surrounds it with nested[]
+ []
+
+
+Overfull \hbox (69.0pt too wide) in paragraph at lines 277--277
+[]      \OT1/pcr/m/n/10 -- [if ... then ... end], [local ... = ...] and [let ..
+. = ...][] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 277--277
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+
+Overfull \hbox (105.0pt too wide) in paragraph at lines 277--277
+[]         \OT1/pcr/m/n/10 assert (not inner_term.tag, "collapse inner term mus
+t be a block")[] 
+ []
+
+
+Overfull \hbox (45.0pt too wide) in paragraph at lines 277--277
+[]         \OT1/pcr/m/n/10 assert (not inside.tag, "collapse must produce a blo
+ck")[] 
+ []
+
+
+Overfull \hbox (99.0pt too wide) in paragraph at lines 277--277
+[]            \OT1/pcr/m/n/10 -- [it] is a test, put it in an [if ... then .. e
+nd] statement[] 
+ []
+
+
+Overfull \hbox (105.0pt too wide) in paragraph at lines 277--277
+[]            \OT1/pcr/m/n/10 -- [it] is a statement, just add it at the result
+'s  beginning.[] 
+ []
+
+[85]
+Overfull \hbox (21.0pt too wide) in paragraph at lines 322--322
+[]  \OT1/pcr/m/n/10 local v1, v2, ... vx -- variables used to store subpatterns
+[] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 343--343
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+
+Overfull \hbox (63.0pt too wide) in paragraph at lines 343--343
+[]      \OT1/pcr/m/n/10 -- parse all [pattern ==> block] pairs. Result goes in 
+[body].[] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 343--343
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+
+Overfull \hbox (117.0pt too wide) in paragraph at lines 343--343
+[]         \OT1/pcr/m/n/10 parse_pattern (1, case[1], var(1)) -- fill [acc] wit
+h conds and lets[] 
+ []
+
+
+Overfull \hbox (111.0pt too wide) in paragraph at lines 343--343
+[]            \OT1/pcr/m/n/10 table.insert (case[2], `Break) -- to skip other c
+ases on success[] 
+ []
+
+[86]
+Overfull \hbox (93.0pt too wide) in paragraph at lines 343--343
+[]         \OT1/pcr/m/n/10 for _, x in ipairs (compiled_case) do table.insert (
+body, x) end[] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 364--364
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+
+Overfull \hbox (39.0pt too wide) in paragraph at lines 364--364
+[]      \OT1/pcr/m/n/10 for i = 1, max_n do table.insert (local_vars, var(i))  
+end[] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 364--364
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+
+Overfull \hbox (87.0pt too wide) in paragraph at lines 364--364
+[]      \OT1/pcr/m/n/10 -- cases are put inside a [repeat until true], so that 
+the [break][] 
+ []
+
+
+Overfull \hbox (105.0pt too wide) in paragraph at lines 364--364
+[]      \OT1/pcr/m/n/10 -- inserted after the value will jump after the last ca
+se on success.[] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 364--364
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+
+Overfull \hbox (93.0pt too wide) in paragraph at lines 364--364
+[]      \OT1/pcr/m/n/10 -------------------------------------------------------
+------------[] 
+ []
+
+[87]
+Overfull \hbox (75.0pt too wide) in paragraph at lines 406--406
+[]\OT1/pcr/m/n/10 -------------------------------------------------------------
+---------[] 
+ []
+
+
+Overfull \hbox (9.0pt too wide) in paragraph at lines 406--406
+[]\OT1/pcr/m/n/10 mlp.stat:add{ "match", mlp.expr, "with", gg.optkeyword "|",[]
+ []
+
+
+Overfull \hbox (39.0pt too wide) in paragraph at lines 406--406
+[]              \OT1/pcr/m/n/10 gg.list{ gg.sequence{ mlp.expr, "->", mlp.block
+ },[] 
+ []
+
+
+Overfull \hbox (75.0pt too wide) in paragraph at lines 406--406
+[]\OT1/pcr/m/n/10 -------------------------------------------------------------
+---------[] 
+ []
+
+
+Overfull \hbox (4.38596pt too wide) in paragraph at lines 421--425
+\OT1/ppl/m/n/10 tem pre-sented above. Some of these pro-pos-als can be im-ple-m
+ented very quickly,
  []
 
-[72] [73]
-Overfull \hbox (1.022pt too wide) in paragraph at lines 426--428
+
+Overfull \hbox (15.27702pt too wide) in paragraph at lines 426--428
 []\OT1/ppl/m/n/10 The code of the ba-sic ver-sion, as pre-sented here, is avail
--able at $\OT1/pcr/m/n/10 http : / / metalua . luaforge . net / FIXME$\OT1/ppl/
-m/n/10 . 
+-able at $\OT1/pcr/m/n/10 http : / / metalua .
+ []
+
+[88]
+Overfull \hbox (9.30801pt too wide) in paragraph at lines 441--446
+[]\OT1/ppl/m/n/10 Labels and go-tos in met-alua ASTs are rep-re-sented as \OT1/
+pcr/m/n/10 `Label\OMS/cmsy/m/n/10 f \OT1/pcr/m/n/10 id \OMS/cmsy/m/n/10 g \OT1/
+ppl/m/n/10 and \OT1/pcr/m/n/10 `Goto\OMS/cmsy/m/n/10 f
+ []
+
+
+Overfull \hbox (3.56679pt too wide) in paragraph at lines 441--446
+\OT1/pcr/m/n/10 id \OMS/cmsy/m/n/10 g \OT1/ppl/m/n/10 re-spec-tively, with \OT1
+/pcr/m/n/10 id \OT1/ppl/m/n/10 an iden-ti-fier, typ-i-cally gen-er-ated by \OT1
+/pcr/m/n/10 mlp.gensym()\OT1/ppl/m/n/10 .
+ []
+
+[89]
+Overfull \hbox (7.66571pt too wide) in paragraph at lines 535--539
+\OT1/ppl/m/n/10 dummy, un-used vari-able. Non-linear oc-curences of it should p
+rob-a-bly be silently
+ []
+
+
+Overfull \hbox (161.43729pt too wide) in paragraph at lines 541--549
+\OT1/ppl/m/n/10 ``[]\OT1/pcr/m/n/10 foo=bar\OT1/ppl/m/n/10 '' as-sign-ment. See
+n this way, it al-lows to write things such as ``[]\OT1/pcr/m/n/10 `If{ cond, b
+lock } = some_ast }\OT1/ppl/m/n/10 ''
+ []
+
+[90]
+Overfull \hbox (1.14665pt too wide) in paragraph at lines 556--564
+\OT1/ppl/m/n/10 and take state-ments as right-hand sides of cases. We could al-
+low pat-tern match-
+ []
+
+[91]
+Overfull \hbox (23.63799pt too wide) in paragraph at lines 595--600
+\OT1/ppl/m/n/10 tent to strings and num-ber. For in-stance, ``\OT1/pcr/m/n/10 <
+foo bar=3><baz/>eek</foo>\OT1/ppl/m/n/10 ''
+ []
+
+)
+Overfull \hbox (6.67633pt too wide) in paragraph at lines 610--52
+\OT1/ppl/m/n/10 Most of the im-prove-ments pro-posed here are ac-tu-ally im-ple
+-mented in the \OT1/pcr/m/n/10 match
  []
 
-[74] [75] [76]) [77]
+[92]
 \openout2 = `src-hints.aux'.
 
- (./src-hints.tex [78
+ (./src-hints.tex [93
 
 
 ]
-Overfull \hbox (2.09998pt too wide) in paragraph at lines 80--85
-[]\OT1/ppl/b/n/10 mlp[]expr.lua \OT1/ppl/m/n/10 parses ex-pres-sions, ex-cept l
-it-eral ta-bles and quotes. It in-cludes other con-stants (booleans,
+Overfull \hbox (5.47766pt too wide) in paragraph at lines 93--101
+\OT1/ppl/m/n/10 scaf-fold-ing from Kein-Hong Man's Yueliang project ($\OT1/pcr/
+m/n/10 http : / / luaforge . net /
  []
 
-) [79] [80]
+[94]
+Overfull \hbox (10.8356pt too wide) in paragraph at lines 106--109
+[]\OT1/ppl/m/n/10 it's rather easy to get bitwise-identical com-pi-la-tions, be
+-tween what Yueliang
+ []
+
+
+Overfull \hbox (2.92763pt too wide) in paragraph at lines 128--133
+[]\OT1/ppl/m/n/10 So, the files bor-rowed from Yueliang are \OT1/ppl/b/n/10 lop
+-code.lua\OT1/ppl/m/n/10 , \OT1/ppl/b/n/10 lcode.lua\OT1/ppl/m/n/10 , and \OT1/
+ppl/b/n/10 ldump.lua\OT1/ppl/m/n/10 .
+ []
+
+) [95]
 \openout2 = `ast.aux'.
 
- (./ast.tex) [81
+ (./ast.tex) [96
 
 
-] (./metalua-manual.aux (./intro.aux)
-(./syntax-ext.aux) (./data.aux) (./meta.aux) (./gg-ref.aux) (./mlp-ref.aux)
-(./stdlib.aux) (./clopts-ref.aux) (./springs-ref.aux) (./walk-ref.aux)
-(./match-ref.aux) (./dollar-ref.aux) (./clist-ref.aux) (./hygiene-ref.aux)
-(./samples.aux) (./sample-exception.aux) (./sample-match.aux) (./src-hints.aux)
-(./ast.aux)) ) 
+] (./metalua-manual.aux (./intro.aux) (./syntax-ext.aux)
+(./data.aux) (./meta.aux) (./gg-ref.aux) (./mlp-ref.aux) (./stdlib.aux)
+(./clopts-ref.aux) (./springs-ref.aux) (./walk-ref.aux) (./match-ref.aux)
+(./dollar-ref.aux) (./clist-ref.aux) (./hygiene-ref.aux) (./samples.aux)
+(./sample-exception.aux) (./sample-match.aux) (./src-hints.aux) (./ast.aux)) ) 
 Here is how much of TeX's memory you used:
802 strings out of 94500
- 9581 string characters out of 1176115
- 60737 words of memory out of 1000000
- 3857 multiletter control sequences out of 10000+50000
782 strings out of 94500
+ 9251 string characters out of 1176115
+ 60690 words of memory out of 1000000
+ 3841 multiletter control sequences out of 10000+50000
  24604 words of font info for 62 fonts, out of 500000 for 2000
  580 hyphenation exceptions out of 1000
- 34i,11n,43p,209b,372s stack positions out of 1500i,500n,5000p,200000b,5000s
+ 32i,11n,43p,209b,429s stack positions out of 1500i,500n,5000p,200000b,5000s
 PDF statistics:
299 PDF objects out of 300000
346 PDF objects out of 300000
  0 named destinations out of 131072
  1 words of extra memory for PDF output out of 65536
-</sw/share/texmf-dist/fonts/type1/bluesky/cm/cmr7.pfb></sw/share/
-texmf-dist/fonts/type1/bluesky/cm/cmsy7.pfb></sw/share/texmf-dist/fonts/type1/b
-luesky/cm/cmex10.pfb>{/sw/share/texmf-dist/fonts/enc/dvips/psnfss/8r.enc}</sw/s
-hare/texmf-dist/fonts/type1/urw/palatino/uplbi8a.pfb></sw/share/texmf-dist/font
-s/type1/bluesky/cm/cmsy8.pfb></sw/share/texmf-dist/fonts/type1/bluesky/cm/cmr10
-.pfb></sw/share/texmf-dist/fonts/type1/bluesky/cm/cmmi7.pfb></sw/share/texmf-di
-st/fonts/type1/bluesky/cm/cmmi10.pfb></sw/share/texmf-dist/fonts/type1/urw/pala
-tino/uplri8a.pfb></sw/share/texmf-dist/fonts/type1/urw/palatino/uplr8a.pfb></sw
-/share/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb></sw/share/texmf-dist/font
-s/type1/bluesky/cm/cmsy10.pfb></sw/share/texmf-dist/fonts/type1/urw/palatino/up
-lb8a.pfb></sw/share/texmf-dist/fonts/type1/urw/palatino/uplr8a.pfb>
-Output written on metalua-manual.pdf (81 pages, 321896 bytes).
+<
+/sw/share/texmf-dist/fonts/type1/bluesky/cm/cmr7.pfb></sw/share/texmf-dist/font
+s/type1/bluesky/cm/cmsy7.pfb></sw/share/texmf-dist/fonts/type1/bluesky/cm/cmex1
+0.pfb>{/sw/share/texmf-dist/fonts/enc/dvips/psnfss/8r.enc}</sw/share/texmf-dist
+/fonts/type1/urw/palatino/uplbi8a.pfb></sw/share/texmf-dist/fonts/type1/bluesky
+/cm/cmsy8.pfb></sw/share/texmf-dist/fonts/type1/bluesky/cm/cmr10.pfb></sw/share
+/texmf-dist/fonts/type1/bluesky/cm/cmmi7.pfb></sw/share/texmf-dist/fonts/type1/
+bluesky/cm/cmmi10.pfb></sw/share/texmf-dist/fonts/type1/urw/palatino/uplri8a.pf
+b></sw/share/texmf-dist/fonts/type1/urw/palatino/uplr8a.pfb></sw/share/texmf-di
+st/fonts/type1/urw/courier/ucrr8a.pfb></sw/share/texmf-dist/fonts/type1/bluesky
+/cm/cmsy10.pfb></sw/share/texmf-dist/fonts/type1/urw/palatino/uplb8a.pfb></sw/s
+hare/texmf-dist/fonts/type1/urw/palatino/uplr8a.pfb>
+Output written on metalua-manual.pdf (96 pages, 338205 bytes).
index b648f5d9ca53e96102481fbc35f5a94c87228617..abb947aa224ef159ac6785bf92359bdfd7c2df2e 100644 (file)
Binary files a/doc/manual/metalua-manual.pdf and b/doc/manual/metalua-manual.pdf differ
index 6d1544a7c9466ddb238020c97430f932a303fa0a..12f199f693e65146aca667ca70ef6400f5414bb3 100755 (executable)
@@ -4,7 +4,7 @@
 %\author{Fabien \sc Fleutot}
 
 \usepackage{fancyhdr}
-\usepackage{fullpage}
+%\usepackage{fullpage}
 \usepackage{alltt}
 \usepackage{url}