summaryrefslogtreecommitdiff
path: root/web/funnelAC/results
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/funnelAC/results
Initial commit
Diffstat (limited to 'web/funnelAC/results')
-rw-r--r--web/funnelAC/results/0testres.dif8167
-rw-r--r--web/funnelAC/results/an01.lis11
-rw-r--r--web/funnelAC/results/an02.lis11
-rw-r--r--web/funnelAC/results/an03.lis86
-rw-r--r--web/funnelAC/results/an04.lis28
-rw-r--r--web/funnelAC/results/ex01.lis12
-rw-r--r--web/funnelAC/results/ex01.out1
-rw-r--r--web/funnelAC/results/ex02.lis12
-rw-r--r--web/funnelAC/results/ex02.out1
-rw-r--r--web/funnelAC/results/ex03.lis50
-rw-r--r--web/funnelAC/results/ex04.lis12
-rw-r--r--web/funnelAC/results/ex04.out18
-rw-r--r--web/funnelAC/results/ex05.lis12
-rw-r--r--web/funnelAC/results/ex05.out18
-rw-r--r--web/funnelAC/results/ex06.lis12
-rw-r--r--web/funnelAC/results/ex06.out22
-rw-r--r--web/funnelAC/results/ex07.lis12
-rw-r--r--web/funnelAC/results/ex07.out24
-rw-r--r--web/funnelAC/results/ex08.lis12
-rw-r--r--web/funnelAC/results/ex08.out107
-rw-r--r--web/funnelAC/results/ex09.lis12
-rw-r--r--web/funnelAC/results/ex09.out6
-rw-r--r--web/funnelAC/results/ex10.lis12
-rw-r--r--web/funnelAC/results/ex10.out2
-rw-r--r--web/funnelAC/results/ex11.lis12
-rw-r--r--web/funnelAC/results/ex11.tex384
-rw-r--r--web/funnelAC/results/ex12.lis12
-rw-r--r--web/funnelAC/results/ex12.tex385
-rw-r--r--web/funnelAC/results/ex13.lis12
-rw-r--r--web/funnelAC/results/ex13.tex499
-rw-r--r--web/funnelAC/results/ex14.lis12
-rw-r--r--web/funnelAC/results/ex14.tex369
-rw-r--r--web/funnelAC/results/ex15.lis12
-rw-r--r--web/funnelAC/results/ex15.tex390
-rw-r--r--web/funnelAC/results/ex16.lis13
-rw-r--r--web/funnelAC/results/ex16.out18
-rw-r--r--web/funnelAC/results/ex16.tex448
-rw-r--r--web/funnelAC/results/generate.lis15
-rw-r--r--web/funnelAC/results/hi01.lis12
-rw-r--r--web/funnelAC/results/hi01.out9
-rw-r--r--web/funnelAC/results/hi02.lis12
-rw-r--r--web/funnelAC/results/hi02.out6
-rw-r--r--web/funnelAC/results/hi03.lis12
-rw-r--r--web/funnelAC/results/hi03.out6
-rw-r--r--web/funnelAC/results/hi04.lis12
-rw-r--r--web/funnelAC/results/hi04.out3
-rw-r--r--web/funnelAC/results/hi05.lis12
-rw-r--r--web/funnelAC/results/hi05.out7
-rw-r--r--web/funnelAC/results/hi06.lis13
-rw-r--r--web/funnelAC/results/hi06a.out3
-rw-r--r--web/funnelAC/results/hi06b.out3
-rw-r--r--web/funnelAC/results/hi07.lis13
-rw-r--r--web/funnelAC/results/hi07a.out4
-rw-r--r--web/funnelAC/results/hi07b.out4
-rw-r--r--web/funnelAC/results/hi08.lis12
-rw-r--r--web/funnelAC/results/hi08.out8
-rw-r--r--web/funnelAC/results/hi09.lis12
-rw-r--r--web/funnelAC/results/hi09.out98
-rw-r--r--web/funnelAC/results/hi10.lis12
-rw-r--r--web/funnelAC/results/hi10.out23
-rw-r--r--web/funnelAC/results/pr01.lis544
-rw-r--r--web/funnelAC/results/pr02.lis249
-rw-r--r--web/funnelAC/results/pr03.lis557
-rw-r--r--web/funnelAC/results/pr04.lis751
-rw-r--r--web/funnelAC/results/pr05.lis1105
-rw-r--r--web/funnelAC/results/pr06.lis791
-rw-r--r--web/funnelAC/results/pr07.lis703
-rw-r--r--web/funnelAC/results/pr08.lis1360
-rw-r--r--web/funnelAC/results/pr09.lis2234
-rw-r--r--web/funnelAC/results/pr10.lis487
-rw-r--r--web/funnelAC/results/sc01.lis35
-rw-r--r--web/funnelAC/results/sc02.lis143
-rw-r--r--web/funnelAC/results/sc03.lis154
-rw-r--r--web/funnelAC/results/sc04.lis157
-rw-r--r--web/funnelAC/results/sc05.lis158
-rw-r--r--web/funnelAC/results/sc06.lis166
-rw-r--r--web/funnelAC/results/sc07.lis187
-rw-r--r--web/funnelAC/results/sc08.lis190
-rw-r--r--web/funnelAC/results/sc09.lis106
-rw-r--r--web/funnelAC/results/sc10.lis882
-rw-r--r--web/funnelAC/results/sc11.lis307
-rw-r--r--web/funnelAC/results/sc12.lis77
-rw-r--r--web/funnelAC/results/sc13.lis500
-rw-r--r--web/funnelAC/results/sc14.lis477
-rw-r--r--web/funnelAC/results/sc15.lis355
-rw-r--r--web/funnelAC/results/sc16.lis456
-rw-r--r--web/funnelAC/results/sc17.lis352
-rw-r--r--web/funnelAC/results/sc18.lis261
-rw-r--r--web/funnelAC/results/sc19.lis96
-rw-r--r--web/funnelAC/results/sc20.lis198
-rw-r--r--web/funnelAC/results/sc21.lis411
-rw-r--r--web/funnelAC/results/sc22.lis165
-rw-r--r--web/funnelAC/results/sc23.lis188
-rw-r--r--web/funnelAC/results/sc24.lis162
-rw-r--r--web/funnelAC/results/sc25.lis85
-rw-r--r--web/funnelAC/results/sc26.lis87
-rw-r--r--web/funnelAC/results/sc27.lis145
-rw-r--r--web/funnelAC/results/sc28.lis253
-rw-r--r--web/funnelAC/results/sc29.lis170
-rw-r--r--web/funnelAC/results/tg01.lis12
-rw-r--r--web/funnelAC/results/tg01.out3
-rw-r--r--web/funnelAC/results/tg02.lis12
-rw-r--r--web/funnelAC/results/tg02.out23
-rw-r--r--web/funnelAC/results/tg03.lis12
-rw-r--r--web/funnelAC/results/tg03.out21
-rw-r--r--web/funnelAC/results/tg04.lis12
-rw-r--r--web/funnelAC/results/tg04.out22
-rw-r--r--web/funnelAC/results/tg05.lis17
-rw-r--r--web/funnelAC/results/tg05.out4
-rw-r--r--web/funnelAC/results/tg06.lis17
-rw-r--r--web/funnelAC/results/tg06.out6
-rw-r--r--web/funnelAC/results/tg07.lis12
-rw-r--r--web/funnelAC/results/tg07.out2
-rw-r--r--web/funnelAC/results/tg08.lis12
-rw-r--r--web/funnelAC/results/tg08.out7
-rw-r--r--web/funnelAC/results/tg09.lis12
-rw-r--r--web/funnelAC/results/tg09.out23
-rw-r--r--web/funnelAC/results/wv01.lis12
-rw-r--r--web/funnelAC/results/wv01.tex367
-rw-r--r--web/funnelAC/results/wv02.lis12
-rw-r--r--web/funnelAC/results/wv02.tex454
-rw-r--r--web/funnelAC/results/wv03.lis12
-rw-r--r--web/funnelAC/results/wv03.tex568
-rw-r--r--web/funnelAC/results/wv04.lis12
-rw-r--r--web/funnelAC/results/wv04.tex397
-rw-r--r--web/funnelAC/results/wv05.lis12
-rw-r--r--web/funnelAC/results/wv05.tex442
-rw-r--r--web/funnelAC/results/wv06.lis12
-rw-r--r--web/funnelAC/results/wv06.tex443
129 files changed, 30213 insertions, 0 deletions
diff --git a/web/funnelAC/results/0testres.dif b/web/funnelAC/results/0testres.dif
new file mode 100644
index 0000000000..734f06a09d
--- /dev/null
+++ b/web/funnelAC/results/0testres.dif
@@ -0,0 +1,8167 @@
+
+
+Comparing "/usr/var/tmp/funnelweb/results/generate.lis"
+ with "/usr/var/tmp/funnelweb/answers/generate.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc01.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc01.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc02.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc02.lis".
+
+ +-----
+00040|------------------- Start of Macro Dump --------------------
+00041|Macro Name : "#file"
+00042|Defined? : Yes.
+00043|Parameters : 0
+00044|Additive? : No.
+00045|Zero Calls? : Yes.
+00046|Many Calls? : Yes.
+00047|Output File?: No.
+00048|Automatic Line Directive Macro?: No.
+00049|Call list :
+00050|Macro body :
+00051|
+00052|--Start of List of Body Parts--
+00053|This macro has 1 body part.
+00054|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00055|
+00056|---- Start of Expression ----
+00057|
+00058|--- Start Special Function ---
+00059|---- End Special Function ----
+00060|
+00061|----- End of Expression -----
+00062|
+00063|---End of List of Body Parts---
+00064|
+00065|-------------------- End of Macro Dump ---------------------
+00066|
+00067|
+00068|
+00069|------------------- Start of Macro Dump --------------------
+00070|Macro Name : "#line"
+00071|Defined? : Yes.
+00072|Parameters : 0
+00073|Additive? : No.
+00074|Zero Calls? : Yes.
+00075|Many Calls? : Yes.
+00076|Output File?: No.
+00077|Automatic Line Directive Macro?: No.
+00078|Call list :
+00079|Macro body :
+00080|
+00081|--Start of List of Body Parts--
+00082|This macro has 1 body part.
+00083|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00084|
+00085|---- Start of Expression ----
+00086|
+00087|--- Start Special Function ---
+00088|---- End Special Function ----
+00089|
+00090|----- End of Expression -----
+00091|
+00092|---End of List of Body Parts---
+00093|
+00094|-------------------- End of Macro Dump ---------------------
+00095|
+00096|
+00097|
+00098|------------------- Start of Macro Dump --------------------
+00099|Macro Name : "#timestamp"
+00100|Defined? : Yes.
+00101|Parameters : 0
+00102|Additive? : No.
+00103|Zero Calls? : Yes.
+ +-----
+00040|=========================== End of MACRO TABLE DUMP ============================
+00041|
+00042|
+00043|========================= Start of DOCUMENT LIST DUMP ==========================
+00044|
+00045|
+00046|========================== End of DOCUMENT LIST DUMP ===========================
+00047|
+00048|E: No macros defined.
+00049|E: No output files specified.
+00050|
+00051|Global Local| Input File
+00052|------------+-------------------------------------------------------------------
+00053| | <End-Of-File>
+00054| Warning|.^Input file is empty (not a byte in syte)!
+00055|------------+-------------------------------------------------------------------
+00056|
+00057|There were 2 Errors and 1 Warning.
+ +-----
+
+ +-----
+00104|Many Calls? : Yes.
+00105|Output File?: No.
+00106|Automatic Line Directive Macro?: No.
+00107|Call list :
+00108|Macro body :
+00109|
+00110|--Start of List of Body Parts--
+00111|This macro has 1 body part.
+00112|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00113|
+00114|---- Start of Expression ----
+00115|
+00116|--- Start Special Function ---
+00117|---- End Special Function ----
+00118|
+00119|----- End of Expression -----
+00120|
+00121|---End of List of Body Parts---
+00122|
+00123|-------------------- End of Macro Dump ---------------------
+00124|
+00125|
+00126|
+00127|=========================== End of MACRO TABLE DUMP ============================
+00128|
+00129|
+00130|========================= Start of DOCUMENT LIST DUMP ==========================
+00131|
+00132|
+00133|========================== End of DOCUMENT LIST DUMP ===========================
+00134|
+00135|E: No output files specified.
+00136|
+00137|Global Local| Input File
+00138|------------+-------------------------------------------------------------------
+00139| | <End-Of-File>
+00140| Warning|.^Input file is empty (not a byte in syte)!
+00141|------------+-------------------------------------------------------------------
+00142|
+00143|There was 1 Error and 1 Warning.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc03.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc03.lis".
+
+ +-----
+00044|------------------- Start of Macro Dump --------------------
+00045|Macro Name : "#file"
+00046|Defined? : Yes.
+00047|Parameters : 0
+00048|Additive? : No.
+00049|Zero Calls? : Yes.
+00050|Many Calls? : Yes.
+00051|Output File?: No.
+00052|Automatic Line Directive Macro?: No.
+00053|Call list :
+00054|Macro body :
+00055|
+00056|--Start of List of Body Parts--
+00057|This macro has 1 body part.
+00058|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00059|
+00060|---- Start of Expression ----
+00061|
+00062|--- Start Special Function ---
+00063|---- End Special Function ----
+00064|
+00065|----- End of Expression -----
+00066|
+00067|---End of List of Body Parts---
+00068|
+00069|-------------------- End of Macro Dump ---------------------
+00070|
+00071|
+00072|
+00073|------------------- Start of Macro Dump --------------------
+00074|Macro Name : "#line"
+00075|Defined? : Yes.
+00076|Parameters : 0
+00077|Additive? : No.
+00078|Zero Calls? : Yes.
+00079|Many Calls? : Yes.
+00080|Output File?: No.
+00081|Automatic Line Directive Macro?: No.
+00082|Call list :
+00083|Macro body :
+00084|
+00085|--Start of List of Body Parts--
+00086|This macro has 1 body part.
+00087|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00088|
+00089|---- Start of Expression ----
+00090|
+00091|--- Start Special Function ---
+00092|---- End Special Function ----
+00093|
+00094|----- End of Expression -----
+00095|
+00096|---End of List of Body Parts---
+00097|
+00098|-------------------- End of Macro Dump ---------------------
+00099|
+00100|
+00101|
+00102|------------------- Start of Macro Dump --------------------
+00103|Macro Name : "#timestamp"
+00104|Defined? : Yes.
+00105|Parameters : 0
+00106|Additive? : No.
+00107|Zero Calls? : Yes.
+ +-----
+00044|=========================== End of MACRO TABLE DUMP ============================
+00045|
+00046|
+00047|========================= Start of DOCUMENT LIST DUMP ==========================
+00048|
+00049|
+00050|TEXT COMPONENT: Pos(L,C)=(1,1).
+00051|
+00052|-- Start of Text Scrap List --
+00053|Text scrap[White]="<010>
+00054|"
+00055|--- End of Text Scrap List ---
+00056|
+00057|
+00058|========================== End of DOCUMENT LIST DUMP ===========================
+00059|
+00060|E: No macros defined.
+00061|E: No output files specified.
+00062|
+00063|Global Local| Input File
+00064|------------+-------------------------------------------------------------------
+00065|.................
+00066|------------+-------------------------------------------------------------------
+00067|
+00068|There were 2 Errors.
+ +-----
+
+ +-----
+00108|Many Calls? : Yes.
+00109|Output File?: No.
+00110|Automatic Line Directive Macro?: No.
+00111|Call list :
+00112|Macro body :
+00113|
+00114|--Start of List of Body Parts--
+00115|This macro has 1 body part.
+00116|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00117|
+00118|---- Start of Expression ----
+00119|
+00120|--- Start Special Function ---
+00121|---- End Special Function ----
+00122|
+00123|----- End of Expression -----
+00124|
+00125|---End of List of Body Parts---
+00126|
+00127|-------------------- End of Macro Dump ---------------------
+00128|
+00129|
+00130|
+00131|=========================== End of MACRO TABLE DUMP ============================
+00132|
+00133|
+00134|========================= Start of DOCUMENT LIST DUMP ==========================
+00135|
+00136|
+00137|TEXT COMPONENT: Pos(L,C)=(1,1).
+00138|
+00139|-- Start of Text Scrap List --
+00140|Text scrap[White]="<010>
+00141|"
+00142|--- End of Text Scrap List ---
+00143|
+00144|
+00145|========================== End of DOCUMENT LIST DUMP ===========================
+00146|
+00147|E: No output files specified.
+00148|
+00149|Global Local| Input File
+00150|------------+-------------------------------------------------------------------
+00151|.................
+00152|------------+-------------------------------------------------------------------
+00153|
+00154|There was 1 Error.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc04.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc04.lis".
+
+ +-----
+00046|------------------- Start of Macro Dump --------------------
+00047|Macro Name : "#file"
+00048|Defined? : Yes.
+00049|Parameters : 0
+00050|Additive? : No.
+00051|Zero Calls? : Yes.
+00052|Many Calls? : Yes.
+00053|Output File?: No.
+00054|Automatic Line Directive Macro?: No.
+00055|Call list :
+00056|Macro body :
+00057|
+00058|--Start of List of Body Parts--
+00059|This macro has 1 body part.
+00060|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00061|
+00062|---- Start of Expression ----
+00063|
+00064|--- Start Special Function ---
+00065|---- End Special Function ----
+00066|
+00067|----- End of Expression -----
+00068|
+00069|---End of List of Body Parts---
+00070|
+00071|-------------------- End of Macro Dump ---------------------
+00072|
+00073|
+00074|
+00075|------------------- Start of Macro Dump --------------------
+00076|Macro Name : "#line"
+00077|Defined? : Yes.
+00078|Parameters : 0
+00079|Additive? : No.
+00080|Zero Calls? : Yes.
+00081|Many Calls? : Yes.
+00082|Output File?: No.
+00083|Automatic Line Directive Macro?: No.
+00084|Call list :
+00085|Macro body :
+00086|
+00087|--Start of List of Body Parts--
+00088|This macro has 1 body part.
+00089|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00090|
+00091|---- Start of Expression ----
+00092|
+00093|--- Start Special Function ---
+00094|---- End Special Function ----
+00095|
+00096|----- End of Expression -----
+00097|
+00098|---End of List of Body Parts---
+00099|
+00100|-------------------- End of Macro Dump ---------------------
+00101|
+00102|
+00103|
+00104|------------------- Start of Macro Dump --------------------
+00105|Macro Name : "#timestamp"
+00106|Defined? : Yes.
+00107|Parameters : 0
+00108|Additive? : No.
+00109|Zero Calls? : Yes.
+ +-----
+00046|=========================== End of MACRO TABLE DUMP ============================
+00047|
+00048|
+00049|========================= Start of DOCUMENT LIST DUMP ==========================
+00050|
+00051|
+00052|TEXT COMPONENT: Pos(L,C)=(1,1).
+00053|
+00054|-- Start of Text Scrap List --
+00055|Text scrap[White]="<010>
+00056|<010>
+00057|"
+00058|--- End of Text Scrap List ---
+00059|
+00060|
+00061|========================== End of DOCUMENT LIST DUMP ===========================
+00062|
+00063|E: No macros defined.
+00064|E: No output files specified.
+00065|
+00066|Global Local| Input File
+00067|------------+-------------------------------------------------------------------
+00068|.................
+00069|------------+-------------------------------------------------------------------
+00070|
+00071|There were 2 Errors.
+ +-----
+
+ +-----
+00110|Many Calls? : Yes.
+00111|Output File?: No.
+00112|Automatic Line Directive Macro?: No.
+00113|Call list :
+00114|Macro body :
+00115|
+00116|--Start of List of Body Parts--
+00117|This macro has 1 body part.
+00118|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00119|
+00120|---- Start of Expression ----
+00121|
+00122|--- Start Special Function ---
+00123|---- End Special Function ----
+00124|
+00125|----- End of Expression -----
+00126|
+00127|---End of List of Body Parts---
+00128|
+00129|-------------------- End of Macro Dump ---------------------
+00130|
+00131|
+00132|
+00133|=========================== End of MACRO TABLE DUMP ============================
+00134|
+00135|
+00136|========================= Start of DOCUMENT LIST DUMP ==========================
+00137|
+00138|
+00139|TEXT COMPONENT: Pos(L,C)=(1,1).
+00140|
+00141|-- Start of Text Scrap List --
+00142|Text scrap[White]="<010>
+00143|<010>
+00144|"
+00145|--- End of Text Scrap List ---
+00146|
+00147|
+00148|========================== End of DOCUMENT LIST DUMP ===========================
+00149|
+00150|E: No output files specified.
+00151|
+00152|Global Local| Input File
+00153|------------+-------------------------------------------------------------------
+00154|.................
+00155|------------+-------------------------------------------------------------------
+00156|
+00157|There was 1 Error.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc05.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc05.lis".
+
+ +-----
+00048|------------------- Start of Macro Dump --------------------
+00049|Macro Name : "#file"
+00050|Defined? : Yes.
+00051|Parameters : 0
+00052|Additive? : No.
+00053|Zero Calls? : Yes.
+00054|Many Calls? : Yes.
+00055|Output File?: No.
+00056|Automatic Line Directive Macro?: No.
+00057|Call list :
+00058|Macro body :
+00059|
+00060|--Start of List of Body Parts--
+00061|This macro has 1 body part.
+00062|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00063|
+00064|---- Start of Expression ----
+00065|
+00066|--- Start Special Function ---
+00067|---- End Special Function ----
+00068|
+00069|----- End of Expression -----
+00070|
+00071|---End of List of Body Parts---
+00072|
+00073|-------------------- End of Macro Dump ---------------------
+00074|
+00075|
+00076|
+00077|------------------- Start of Macro Dump --------------------
+00078|Macro Name : "#line"
+00079|Defined? : Yes.
+00080|Parameters : 0
+00081|Additive? : No.
+00082|Zero Calls? : Yes.
+00083|Many Calls? : Yes.
+00084|Output File?: No.
+00085|Automatic Line Directive Macro?: No.
+00086|Call list :
+00087|Macro body :
+00088|
+00089|--Start of List of Body Parts--
+00090|This macro has 1 body part.
+00091|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00092|
+00093|---- Start of Expression ----
+00094|
+00095|--- Start Special Function ---
+00096|---- End Special Function ----
+00097|
+00098|----- End of Expression -----
+00099|
+00100|---End of List of Body Parts---
+00101|
+00102|-------------------- End of Macro Dump ---------------------
+00103|
+00104|
+00105|
+00106|------------------- Start of Macro Dump --------------------
+00107|Macro Name : "#timestamp"
+00108|Defined? : Yes.
+00109|Parameters : 0
+00110|Additive? : No.
+00111|Zero Calls? : Yes.
+ +-----
+00048|=========================== End of MACRO TABLE DUMP ============================
+00049|
+00050|
+00051|========================= Start of DOCUMENT LIST DUMP ==========================
+00052|
+00053|
+00054|TEXT COMPONENT: Pos(L,C)=(1,1).
+00055|
+00056|-- Start of Text Scrap List --
+00057|Text scrap[Grey]="SC05: This input file contains a single line containing this text!<010>
+00058|"
+00059|--- End of Text Scrap List ---
+00060|
+00061|
+00062|========================== End of DOCUMENT LIST DUMP ===========================
+00063|
+00064|E: No macros defined.
+00065|E: No output files specified.
+00066|
+00067|Global Local| Input File
+00068|------------+-------------------------------------------------------------------
+00069|.................
+00070|------------+-------------------------------------------------------------------
+00071|
+00072|There were 2 Errors.
+ +-----
+
+ +-----
+00112|Many Calls? : Yes.
+00113|Output File?: No.
+00114|Automatic Line Directive Macro?: No.
+00115|Call list :
+00116|Macro body :
+00117|
+00118|--Start of List of Body Parts--
+00119|This macro has 1 body part.
+00120|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00121|
+00122|---- Start of Expression ----
+00123|
+00124|--- Start Special Function ---
+00125|---- End Special Function ----
+00126|
+00127|----- End of Expression -----
+00128|
+00129|---End of List of Body Parts---
+00130|
+00131|-------------------- End of Macro Dump ---------------------
+00132|
+00133|
+00134|
+00135|=========================== End of MACRO TABLE DUMP ============================
+00136|
+00137|
+00138|========================= Start of DOCUMENT LIST DUMP ==========================
+00139|
+00140|
+00141|TEXT COMPONENT: Pos(L,C)=(1,1).
+00142|
+00143|-- Start of Text Scrap List --
+00144|Text scrap[Grey]="SC05: This input file contains a single line containing this text!<010>
+00145|"
+00146|--- End of Text Scrap List ---
+00147|
+00148|
+00149|========================== End of DOCUMENT LIST DUMP ===========================
+00150|
+00151|E: No output files specified.
+00152|
+00153|Global Local| Input File
+00154|------------+-------------------------------------------------------------------
+00155|.................
+00156|------------+-------------------------------------------------------------------
+00157|
+00158|There was 1 Error.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc06.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc06.lis".
+
+ +-----
+00018|| 72 6B 65 72 2E 0A 0A | rker... |
+ +-----
+00018|| 72 6B 65 72 2E 0A 0A 48 65 72 65 20 69 73 20 74 | rker...Here is t |
+00019|| 68 65 20 69 6D 70 72 6F 70 65 72 20 74 65 72 6D | he improper term |
+00020|| 69 6E 61 74 69 6F 6E 21 2D 2D 2D 2D 3E | ination!----> |
+ +-----
+
+ +-----
+00029|00004 00004| <End-Of-File><010>
+ +-----
+00031|00004 00004| Here is the improper termination!----><010>
+00032|00005 00005| <End-Of-File><010>
+ +-----
+
+ +-----
+00046|"
+00047|0004[01]: End Of File.
+ +-----
+00049|Here is the improper termination!----><010>
+00050|"
+00051|0005[01]: End Of File.
+ +-----
+
+ +-----
+00054|------------------- Start of Macro Dump --------------------
+00055|Macro Name : "#file"
+00056|Defined? : Yes.
+00057|Parameters : 0
+00058|Additive? : No.
+00059|Zero Calls? : Yes.
+00060|Many Calls? : Yes.
+00061|Output File?: No.
+00062|Automatic Line Directive Macro?: No.
+00063|Call list :
+00064|Macro body :
+00065|
+00066|--Start of List of Body Parts--
+00067|This macro has 1 body part.
+00068|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00069|
+00070|---- Start of Expression ----
+00071|
+00072|--- Start Special Function ---
+00073|---- End Special Function ----
+00074|
+00075|----- End of Expression -----
+00076|
+00077|---End of List of Body Parts---
+00078|
+00079|-------------------- End of Macro Dump ---------------------
+00080|
+00081|
+00082|
+00083|------------------- Start of Macro Dump --------------------
+00084|Macro Name : "#line"
+00085|Defined? : Yes.
+00086|Parameters : 0
+00087|Additive? : No.
+00088|Zero Calls? : Yes.
+00089|Many Calls? : Yes.
+00090|Output File?: No.
+00091|Automatic Line Directive Macro?: No.
+00092|Call list :
+00093|Macro body :
+00094|
+00095|--Start of List of Body Parts--
+00096|This macro has 1 body part.
+00097|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00098|
+00099|---- Start of Expression ----
+00100|
+00101|--- Start Special Function ---
+00102|---- End Special Function ----
+00103|
+00104|----- End of Expression -----
+00105|
+00106|---End of List of Body Parts---
+00107|
+00108|-------------------- End of Macro Dump ---------------------
+00109|
+00110|
+00111|
+00112|------------------- Start of Macro Dump --------------------
+00113|Macro Name : "#timestamp"
+00114|Defined? : Yes.
+00115|Parameters : 0
+00116|Additive? : No.
+00117|Zero Calls? : Yes.
+ +-----
+00058|=========================== End of MACRO TABLE DUMP ============================
+00059|
+00060|
+00061|========================= Start of DOCUMENT LIST DUMP ==========================
+00062|
+00063|
+00064|TEXT COMPONENT: Pos(L,C)=(1,1).
+00065|
+00066|-- Start of Text Scrap List --
+00067|Text scrap[Grey]="SC06: Test FunnelWeb on a file whose last line is not terminated properly<010>
+00068|with an end of line marker.<010>
+00069|<010>
+00070|Here is the improper termination!----><010>
+00071|"
+00072|--- End of Text Scrap List ---
+00073|
+00074|
+00075|========================== End of DOCUMENT LIST DUMP ===========================
+00076|
+00077|E: No macros defined.
+00078|E: No output files specified.
+00079|
+00080|Global Local| Input File
+00081|------------+-------------------------------------------------------------------
+00082| 1 1| SC06: Test FunnelWeb on a file whose last line is not terminated properly
+00083| 2 2| with an end of line marker.
+00084| 3 3|
+00085| 4 4| Here is the improper termination!---->
+00086| | <End-Of-File>
+00087| Warning|.^The last line of the input file was terminated by EOF.
+00088| |.^An EOL was inserted at the end of the last line.
+00089|------------+-------------------------------------------------------------------
+00090|
+00091|There were 2 Errors and 1 Warning.
+ +-----
+
+ +-----
+00118|Many Calls? : Yes.
+00119|Output File?: No.
+00120|Automatic Line Directive Macro?: No.
+00121|Call list :
+00122|Macro body :
+00123|
+00124|--Start of List of Body Parts--
+00125|This macro has 1 body part.
+00126|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00127|
+00128|---- Start of Expression ----
+00129|
+00130|--- Start Special Function ---
+00131|---- End Special Function ----
+00132|
+00133|----- End of Expression -----
+00134|
+00135|---End of List of Body Parts---
+00136|
+00137|-------------------- End of Macro Dump ---------------------
+00138|
+00139|
+00140|
+00141|=========================== End of MACRO TABLE DUMP ============================
+00142|
+00143|
+00144|========================= Start of DOCUMENT LIST DUMP ==========================
+00145|
+00146|
+00147|TEXT COMPONENT: Pos(L,C)=(1,1).
+00148|
+00149|-- Start of Text Scrap List --
+00150|Text scrap[Grey]="SC06: Test FunnelWeb on a file whose last line is not terminated properly<010>
+00151|with an end of line marker.<010>
+00152|<010>
+00153|"
+00154|--- End of Text Scrap List ---
+00155|
+00156|
+00157|========================== End of DOCUMENT LIST DUMP ===========================
+00158|
+00159|E: No output files specified.
+00160|
+00161|Global Local| Input File
+00162|------------+-------------------------------------------------------------------
+00163|.................
+00164|------------+-------------------------------------------------------------------
+00165|
+00166|There was 1 Error.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc07.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc07.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc08.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc08.lis".
+
+ +-----
+00066|------------------- Start of Macro Dump --------------------
+00067|Macro Name : "#file"
+00068|Defined? : Yes.
+00069|Parameters : 0
+00070|Additive? : No.
+00071|Zero Calls? : Yes.
+00072|Many Calls? : Yes.
+00073|Output File?: No.
+00074|Automatic Line Directive Macro?: No.
+00075|Call list :
+00076|Macro body :
+00077|
+00078|--Start of List of Body Parts--
+00079|This macro has 1 body part.
+00080|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00081|
+00082|---- Start of Expression ----
+00083|
+00084|--- Start Special Function ---
+00085|---- End Special Function ----
+00086|
+00087|----- End of Expression -----
+00088|
+00089|---End of List of Body Parts---
+00090|
+00091|-------------------- End of Macro Dump ---------------------
+00092|
+00093|
+00094|
+00095|------------------- Start of Macro Dump --------------------
+00096|Macro Name : "#line"
+00097|Defined? : Yes.
+00098|Parameters : 0
+00099|Additive? : No.
+00100|Zero Calls? : Yes.
+00101|Many Calls? : Yes.
+00102|Output File?: No.
+00103|Automatic Line Directive Macro?: No.
+00104|Call list :
+00105|Macro body :
+00106|
+00107|--Start of List of Body Parts--
+00108|This macro has 1 body part.
+00109|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00110|
+00111|---- Start of Expression ----
+00112|
+00113|--- Start Special Function ---
+00114|---- End Special Function ----
+00115|
+00116|----- End of Expression -----
+00117|
+00118|---End of List of Body Parts---
+00119|
+00120|-------------------- End of Macro Dump ---------------------
+00121|
+00122|
+00123|
+00124|------------------- Start of Macro Dump --------------------
+00125|Macro Name : "#timestamp"
+00126|Defined? : Yes.
+00127|Parameters : 0
+00128|Additive? : No.
+00129|Zero Calls? : Yes.
+ +-----
+00066|=========================== End of MACRO TABLE DUMP ============================
+00067|
+00068|
+00069|========================= Start of DOCUMENT LIST DUMP ==========================
+00070|
+00071|
+00072|TEXT COMPONENT: Pos(L,C)=(1,1).
+00073|
+00074|-- Start of Text Scrap List --
+00075|Text scrap[Grey]="SC08: Detection of trailing spaces.<010>
+00076|<010>
+00077|This line has zero trailing spaces |<010>
+00078|This line has one trailing space | <010>
+00079|This line has two trailing spaces | <010>
+00080|This line has three trailing spaces | <010>
+00081|"
+00082|--- End of Text Scrap List ---
+00083|
+00084|
+00085|========================== End of DOCUMENT LIST DUMP ===========================
+00086|
+00087|E: No macros defined.
+00088|E: No output files specified.
+00089|
+00090|Global Local| Input File
+00091|------------+-------------------------------------------------------------------
+00092| 1 1| SC08: Detection of trailing spaces.
+00093| 2 2|
+00094| 3 3| This line has zero trailing spaces |
+00095| 4 4| This line has one trailing space |
+00096| Warning|......................................^Line has trailing spaces up to and including this space.
+00097| 5 5| This line has two trailing spaces |
+00098| Warning|.......................................^Line has trailing spaces up to and including this space.
+00099| 6 6| This line has three trailing spaces |
+00100| Warning|........................................^Line has trailing spaces up to and including this space.
+00101| | <End-Of-File>
+00102|------------+-------------------------------------------------------------------
+00103|
+00104|There were 2 Errors and 3 Warnings.
+ +-----
+
+ +-----
+00130|Many Calls? : Yes.
+00131|Output File?: No.
+00132|Automatic Line Directive Macro?: No.
+00133|Call list :
+00134|Macro body :
+00135|
+00136|--Start of List of Body Parts--
+00137|This macro has 1 body part.
+00138|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00139|
+00140|---- Start of Expression ----
+00141|
+00142|--- Start Special Function ---
+00143|---- End Special Function ----
+00144|
+00145|----- End of Expression -----
+00146|
+00147|---End of List of Body Parts---
+00148|
+00149|-------------------- End of Macro Dump ---------------------
+00150|
+00151|
+00152|
+00153|=========================== End of MACRO TABLE DUMP ============================
+00154|
+00155|
+00156|========================= Start of DOCUMENT LIST DUMP ==========================
+00157|
+00158|
+00159|TEXT COMPONENT: Pos(L,C)=(1,1).
+00160|
+00161|-- Start of Text Scrap List --
+00162|Text scrap[Grey]="SC08: Detection of trailing spaces.<010>
+00163|<010>
+00164|This line has zero trailing spaces |<010>
+00165|This line has one trailing space | <010>
+00166|This line has two trailing spaces | <010>
+00167|This line has three trailing spaces | <010>
+00168|"
+00169|--- End of Text Scrap List ---
+00170|
+00171|
+00172|========================== End of DOCUMENT LIST DUMP ===========================
+00173|
+00174|E: No output files specified.
+00175|
+00176|Global Local| Input File
+00177|------------+-------------------------------------------------------------------
+00178| 1 1| SC08: Detection of trailing spaces.
+00179| 2 2|
+00180| 3 3| This line has zero trailing spaces |
+00181| 4 4| This line has one trailing space |
+00182| Warning|......................................^Line has trailing spaces up to and including this space.
+00183| 5 5| This line has two trailing spaces |
+00184| Warning|.......................................^Line has trailing spaces up to and including this space.
+00185| 6 6| This line has three trailing spaces |
+00186| Warning|........................................^Line has trailing spaces up to and including this space.
+00187| | <End-Of-File>
+00188|------------+-------------------------------------------------------------------
+00189|
+00190|There was 1 Error and 3 Warnings.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc09.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc09.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc10.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc10.lis".
+
+ +-----
+00752| |......^ @p typesetter = none | tex | hypertext | html
+00753| |......^ @p no_doc_header
+00754| |......^ @p raw_macro_and_section_names
+00755| |......^ @p ignore_text_after_special_minus
+00756| |......^ @p no_paragraph_markups
+00757| |......^ @p declare_source_code_type "<name>"
+00758| |......^ @p automatic_line_directive_macro = "<name>"
+00759| |......^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+00760| |......^ @p #line_offset = <num>
+00761| |......^ @p #line_depth = <num>
+ +-----
+00752| |......^ @p typesetter = none | tex
+ +-----
+
+ +-----
+00833| |......^ @p typesetter = none | tex | hypertext | html
+00834| |......^ @p no_doc_header
+00835| |......^ @p raw_macro_and_section_names
+00836| |......^ @p ignore_text_after_special_minus
+00837| |......^ @p no_paragraph_markups
+00838| |......^ @p declare_source_code_type "<name>"
+00839| |......^ @p automatic_line_directive_macro = "<name>"
+00840| |......^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+00841| |......^ @p #line_offset = <num>
+00842| |......^ @p #line_depth = <num>
+ +-----
+00824| |......^ @p typesetter = none | tex
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc11.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc11.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc12.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc12.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc13.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc13.lis".
+
+ +-----
+00118|| 2E 0A 0A | ... |
+ +-----
+00118|| 2E 0A 0A 48 65 72 65 20 69 73 20 74 68 65 20 69 | ...Here is the i |
+00119|| 6D 70 72 6F 70 65 72 20 74 65 72 6D 69 6E 61 74 | mproper terminat |
+00120|| 69 6F 6E 21 2D 2D 2D 2D 3E | ion!----> |
+ +-----
+
+ +-----
+00192|00033 00026| After include<010>
+00193|00034 00027| <010>
+00194|00035 00028| 6. Include file is ordinary.<010>
+00195|00036 00029| Before include<010>
+00196|00037 00030| @i sc13f<010>
+00197|00038 00001| This is the include file for tests SC13.6 and SC13.7.<010>
+00198|00039 00002| There are only two lines, and this is the second one.<010>
+00199|00040 00031| After include<010>
+00200|00041 00032| <010>
+00201|00042 00033| 7. Test upper case I and file extension inheritance.<010>
+00202|00043 00034| Before include<010>
+00203|00044 00035| @I sc13f<010>
+00204|00045 00001| This is the include file for tests SC13.6 and SC13.7.<010>
+00205|00046 00002| There are only two lines, and this is the second one.<010>
+00206|00047 00036| After include<010>
+00207|00048 00037| <010>
+00208|00049 00038| End of test File.<010>
+00209|00050 00039| <End-Of-File><010>
+ +-----
+00194|00033 00004| Here is the improper termination!----><010>
+00195|00034 00026| After include<010>
+00196|00035 00027| <010>
+00197|00036 00028| 6. Include file is ordinary.<010>
+00198|00037 00029| Before include<010>
+00199|00038 00030| @i sc13f<010>
+00200|00039 00001| This is the include file for tests SC13.6 and SC13.7.<010>
+00201|00040 00002| There are only two lines, and this is the second one.<010>
+00202|00041 00031| After include<010>
+00203|00042 00032| <010>
+00204|00043 00033| 7. Test upper case I and file extension inheritance.<010>
+00205|00044 00034| Before include<010>
+00206|00045 00035| @I sc13f<010>
+00207|00046 00001| This is the include file for tests SC13.6 and SC13.7.<010>
+00208|00047 00002| There are only two lines, and this is the second one.<010>
+00209|00048 00036| After include<010>
+00210|00049 00037| <010>
+00211|00050 00038| End of test File.<010>
+00212|00051 00039| <End-Of-File><010>
+ +-----
+
+ +-----
+00258|"
+00259|0033[01]: Text. Text scrap[Grey]="After include<010>
+ +-----
+00261|Here is the improper termination!----><010>
+00262|"
+00263|0034[01]: Text. Text scrap[Grey]="After include<010>
+ +-----
+
+ +-----
+00264|0038[01]: Text. Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+00265|There are only two lines, and this is the second one.<010>
+00266|"
+00267|0040[01]: Text. Text scrap[Grey]="After include<010>
+ +-----
+00268|0039[01]: Text. Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+00269|There are only two lines, and this is the second one.<010>
+00270|"
+00271|0041[01]: Text. Text scrap[Grey]="After include<010>
+ +-----
+
+ +-----
+00272|0045[01]: Text. Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+00273|There are only two lines, and this is the second one.<010>
+00274|"
+00275|0047[01]: Text. Text scrap[Grey]="After include<010>
+ +-----
+00276|0046[01]: Text. Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+00277|There are only two lines, and this is the second one.<010>
+00278|"
+00279|0048[01]: Text. Text scrap[Grey]="After include<010>
+ +-----
+
+ +-----
+00279|0050[01]: End Of File.
+ +-----
+00283|0051[01]: End Of File.
+ +-----
+
+ +-----
+00286|------------------- Start of Macro Dump --------------------
+00287|Macro Name : "#file"
+00288|Defined? : Yes.
+00289|Parameters : 0
+00290|Additive? : No.
+00291|Zero Calls? : Yes.
+00292|Many Calls? : Yes.
+00293|Output File?: No.
+00294|Automatic Line Directive Macro?: No.
+00295|Call list :
+00296|Macro body :
+00297|
+00298|--Start of List of Body Parts--
+00299|This macro has 1 body part.
+00300|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00301|
+00302|---- Start of Expression ----
+00303|
+00304|--- Start Special Function ---
+00305|---- End Special Function ----
+00306|
+00307|----- End of Expression -----
+00308|
+00309|---End of List of Body Parts---
+00310|
+00311|-------------------- End of Macro Dump ---------------------
+00312|
+00313|
+00314|
+00315|------------------- Start of Macro Dump --------------------
+00316|Macro Name : "#line"
+00317|Defined? : Yes.
+00318|Parameters : 0
+00319|Additive? : No.
+00320|Zero Calls? : Yes.
+00321|Many Calls? : Yes.
+00322|Output File?: No.
+00323|Automatic Line Directive Macro?: No.
+00324|Call list :
+00325|Macro body :
+00326|
+00327|--Start of List of Body Parts--
+00328|This macro has 1 body part.
+00329|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00330|
+00331|---- Start of Expression ----
+00332|
+00333|--- Start Special Function ---
+00334|---- End Special Function ----
+00335|
+00336|----- End of Expression -----
+00337|
+00338|---End of List of Body Parts---
+00339|
+00340|-------------------- End of Macro Dump ---------------------
+00341|
+00342|
+00343|
+00344|------------------- Start of Macro Dump --------------------
+00345|Macro Name : "#timestamp"
+00346|Defined? : Yes.
+00347|Parameters : 0
+00348|Additive? : No.
+00349|Zero Calls? : Yes.
+ +-----
+00290|=========================== End of MACRO TABLE DUMP ============================
+00291|
+00292|
+00293|========================= Start of DOCUMENT LIST DUMP ==========================
+00294|
+00295|
+00296|TEXT COMPONENT: Pos(L,C)=(1,1).
+00297|
+00298|-- Start of Text Scrap List --
+00299|Text scrap[Grey]="SC13: Various kinds of include file.<010>
+00300|<010>
+00301|1. Include file is empty.<010>
+00302|Before include<010>
+00303|"
+00304|Text scrap[Grey]="After include<010>
+00305|<010>
+00306|2. Include file contains a single blank line.<010>
+00307|Before include<010>
+00308|"
+00309|Text scrap[White]="<010>
+00310|"
+00311|Text scrap[Grey]="After include<010>
+00312|<010>
+00313|3. Include file contains two blank lines.<010>
+00314|Before include<010>
+00315|"
+00316|Text scrap[White]="<010>
+00317|<010>
+00318|"
+00319|Text scrap[Grey]="After include<010>
+00320|<010>
+00321|4. Include file contains a single line with text on it.<010>
+00322|Before include<010>
+00323|"
+00324|Text scrap[Grey]="This is the include file for test SC13d. Just a file containing one line.<010>
+00325|"
+00326|Text scrap[Grey]="After include<010>
+00327|<010>
+00328|5. Include file's last line is not properly terminated.<010>
+00329|Before include<010>
+00330|"
+00331|Text scrap[Grey]="This is the include file for test SC13e. The test is to see how FunnelWeb<010>
+00332|copes with an include file that has an improperly terminated last line.<010>
+00333|<010>
+00334|Here is the improper termination!----><010>
+00335|"
+00336|Text scrap[Grey]="After include<010>
+00337|<010>
+00338|6. Include file is ordinary.<010>
+00339|Before include<010>
+00340|"
+00341|Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+00342|There are only two lines, and this is the second one.<010>
+00343|"
+00344|Text scrap[Grey]="After include<010>
+00345|<010>
+00346|7. Test upper case I and file extension inheritance.<010>
+00347|Before include<010>
+00348|"
+00349|Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+00350|There are only two lines, and this is the second one.<010>
+00351|"
+00352|Text scrap[Grey]="After include<010>
+00353|<010>
+ +-----
+
+ +-----
+00350|Many Calls? : Yes.
+00351|Output File?: No.
+00352|Automatic Line Directive Macro?: No.
+00353|Call list :
+00354|Macro body :
+00355|
+00356|--Start of List of Body Parts--
+00357|This macro has 1 body part.
+00358|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00359|
+00360|---- Start of Expression ----
+00361|
+00362|--- Start Special Function ---
+00363|---- End Special Function ----
+00364|
+00365|----- End of Expression -----
+00366|
+00367|---End of List of Body Parts---
+00368|
+00369|-------------------- End of Macro Dump ---------------------
+00370|
+00371|
+00372|
+00373|=========================== End of MACRO TABLE DUMP ============================
+00374|
+00375|
+00376|========================= Start of DOCUMENT LIST DUMP ==========================
+00377|
+00378|
+00379|TEXT COMPONENT: Pos(L,C)=(1,1).
+00380|
+00381|-- Start of Text Scrap List --
+00382|Text scrap[Grey]="SC13: Various kinds of include file.<010>
+00383|<010>
+00384|1. Include file is empty.<010>
+00385|Before include<010>
+00386|"
+00387|Text scrap[Grey]="After include<010>
+00388|<010>
+00389|2. Include file contains a single blank line.<010>
+00390|Before include<010>
+00391|"
+00392|Text scrap[White]="<010>
+00393|"
+00394|Text scrap[Grey]="After include<010>
+00395|<010>
+00396|3. Include file contains two blank lines.<010>
+00397|Before include<010>
+00398|"
+00399|Text scrap[White]="<010>
+00400|<010>
+00401|"
+00402|Text scrap[Grey]="After include<010>
+00403|<010>
+00404|4. Include file contains a single line with text on it.<010>
+00405|Before include<010>
+00406|"
+00407|Text scrap[Grey]="This is the include file for test SC13d. Just a file containing one line.<010>
+00408|"
+00409|Text scrap[Grey]="After include<010>
+00410|<010>
+00411|5. Include file's last line is not properly terminated.<010>
+00412|Before include<010>
+00413|"
+ +-----
+00354|End of test File.<010>
+00355|"
+00356|--- End of Text Scrap List ---
+00357|
+00358|
+00359|========================== End of DOCUMENT LIST DUMP ===========================
+00360|
+00361|E: No macros defined.
+00362|E: No output files specified.
+00363|
+00364|Global Local| Input File
+00365|------------+-------------------------------------------------------------------
+00366| 1 1| SC13: Various kinds of include file.
+00367| 2 2|
+00368| 3 3| 1. Include file is empty.
+00369| 4 4| Before include
+00370| 5 5| @i sc13a
+00371| Warning|.^Include file is empty (not a byte in syte)!
+00372| 6 6| After include
+00373| 7 7|
+00374| 8 8| 2. Include file contains a single blank line.
+00375| 9 9| Before include
+00376| 10 10| @i sc13b
+00377| 11 1|
+00378| 12 11| After include
+00379| 13 12|
+00380| 14 13| 3. Include file contains two blank lines.
+00381| 15 14| Before include
+00382| 16 15| @i sc13c
+00383| 17 1|
+00384| 18 2|
+00385| 19 16| After include
+00386| 20 17|
+00387| 21 18| 4. Include file contains a single line with text on it.
+00388| 22 19| Before include
+00389| 23 20| @i sc13d
+00390| 24 1| This is the include file for test SC13d. Just a file containing one line.
+00391| 25 21| After include
+00392| 26 22|
+00393| 27 23| 5. Include file's last line is not properly terminated.
+00394| 28 24| Before include
+00395| 29 25| @i sc13e
+00396| 30 1| This is the include file for test SC13e. The test is to see how FunnelWeb
+00397| 31 2| copes with an include file that has an improperly terminated last line.
+00398| 32 3|
+00399| 33 4| Here is the improper termination!---->
+00400| 34 26| After include
+00401| Warning|.^The last line of the include file was terminated by EOF.
+00402| |.^An EOL was inserted at the end of the last line.
+00403| 35 27|
+00404| 36 28| 6. Include file is ordinary.
+00405| 37 29| Before include
+00406| 38 30| @i sc13f
+00407| 39 1| This is the include file for tests SC13.6 and SC13.7.
+00408| 40 2| There are only two lines, and this is the second one.
+00409| 41 31| After include
+00410| 42 32|
+00411| 43 33| 7. Test upper case I and file extension inheritance.
+00412| 44 34| Before include
+00413| 45 35| @I sc13f
+00414| 46 1| This is the include file for tests SC13.6 and SC13.7.
+00415| 47 2| There are only two lines, and this is the second one.
+00416| 48 36| After include
+00417| 49 37|
+ +-----
+
+ +-----
+00414|Text scrap[Grey]="This is the include file for test SC13e. The test is to see how FunnelWeb<010>
+00415|copes with an include file that has an improperly terminated last line.<010>
+00416|<010>
+00417|"
+00418|Text scrap[Grey]="After include<010>
+00419|<010>
+00420|6. Include file is ordinary.<010>
+00421|Before include<010>
+00422|"
+00423|Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+00424|There are only two lines, and this is the second one.<010>
+00425|"
+00426|Text scrap[Grey]="After include<010>
+00427|<010>
+00428|7. Test upper case I and file extension inheritance.<010>
+00429|Before include<010>
+00430|"
+00431|Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+00432|There are only two lines, and this is the second one.<010>
+00433|"
+00434|Text scrap[Grey]="After include<010>
+00435|<010>
+00436|End of test File.<010>
+00437|"
+00438|--- End of Text Scrap List ---
+00439|
+00440|
+00441|========================== End of DOCUMENT LIST DUMP ===========================
+00442|
+00443|E: No output files specified.
+00444|
+00445|Global Local| Input File
+00446|------------+-------------------------------------------------------------------
+00447| 1 1| SC13: Various kinds of include file.
+00448| 2 2|
+00449| 3 3| 1. Include file is empty.
+00450| 4 4| Before include
+00451| 5 5| @i sc13a
+00452| Warning|.^Include file is empty (not a byte in syte)!
+00453| 6 6| After include
+00454| 7 7|
+00455| 8 8| 2. Include file contains a single blank line.
+00456| 9 9| Before include
+00457| 10 10| @i sc13b
+00458| 11 1|
+00459| 12 11| After include
+00460| 13 12|
+00461| 14 13| 3. Include file contains two blank lines.
+00462| 15 14| Before include
+00463| 16 15| @i sc13c
+00464| 17 1|
+00465| 18 2|
+00466| 19 16| After include
+00467| 20 17|
+00468| 21 18| 4. Include file contains a single line with text on it.
+00469| 22 19| Before include
+00470| 23 20| @i sc13d
+00471| 24 1| This is the include file for test SC13d. Just a file containing one line.
+00472| 25 21| After include
+00473| 26 22|
+00474| 27 23| 5. Include file's last line is not properly terminated.
+00475| 28 24| Before include
+00476| 29 25| @i sc13e
+00477| 30 1| This is the include file for test SC13e. The test is to see how FunnelWeb
+ +-----
+00418| 50 38| End of test File.
+00419| | <End-Of-File>
+00420|------------+-------------------------------------------------------------------
+00421|
+00422|There were 2 Errors and 2 Warnings.
+ +-----
+
+ +-----
+00478| 31 2| copes with an include file that has an improperly terminated last line.
+00479| 32 3|
+00480| 33 26| After include
+00481| 34 27|
+00482| 35 28| 6. Include file is ordinary.
+00483| 36 29| Before include
+00484| 37 30| @i sc13f
+00485| 38 1| This is the include file for tests SC13.6 and SC13.7.
+00486| 39 2| There are only two lines, and this is the second one.
+00487| 40 31| After include
+00488| 41 32|
+00489| 42 33| 7. Test upper case I and file extension inheritance.
+00490| 43 34| Before include
+00491| 44 35| @I sc13f
+00492| 45 1| This is the include file for tests SC13.6 and SC13.7.
+00493| 46 2| There are only two lines, and this is the second one.
+00494| 47 36| After include
+00495| 48 37|
+00496| 49 38| End of test File.
+00497| | <End-Of-File>
+00498|------------+-------------------------------------------------------------------
+00499|
+00500|There was 1 Error and 1 Warning.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc14.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc14.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc15.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc15.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc16.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc16.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc17.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc17.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc18.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc18.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc19.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc19.lis".
+
+ +-----
+00083| Error|...........................^Suppress EOL sequence is legal only at the end of a line
+00084| |...........................^unless `@p ignore_text_after_special_minus' is used.
+ +-----
+00083| Error|...........................^Suppress EOL sequence is legal only at the end of a line.
+ +-----
+
+ +-----
+00089| Error|......^Suppress EOL sequence is legal only at the end of a line
+00090| |......^unless `@p ignore_text_after_special_minus' is used.
+ +-----
+00088| Error|......^Suppress EOL sequence is legal only at the end of a line.
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc20.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc20.lis".
+
+ +-----
+00079|------------------- Start of Macro Dump --------------------
+00080|Macro Name : "#file"
+00081|Defined? : Yes.
+00082|Parameters : 0
+00083|Additive? : No.
+00084|Zero Calls? : Yes.
+00085|Many Calls? : Yes.
+00086|Output File?: No.
+00087|Automatic Line Directive Macro?: No.
+00088|Call list :
+00089|Macro body :
+00090|
+00091|--Start of List of Body Parts--
+00092|This macro has 1 body part.
+00093|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00094|
+00095|---- Start of Expression ----
+00096|
+00097|--- Start Special Function ---
+00098|---- End Special Function ----
+00099|
+00100|----- End of Expression -----
+00101|
+00102|---End of List of Body Parts---
+00103|
+00104|-------------------- End of Macro Dump ---------------------
+00105|
+00106|
+00107|
+00108|------------------- Start of Macro Dump --------------------
+00109|Macro Name : "#line"
+00110|Defined? : Yes.
+00111|Parameters : 0
+00112|Additive? : No.
+00113|Zero Calls? : Yes.
+00114|Many Calls? : Yes.
+00115|Output File?: No.
+00116|Automatic Line Directive Macro?: No.
+00117|Call list :
+00118|Macro body :
+00119|
+00120|--Start of List of Body Parts--
+00121|This macro has 1 body part.
+00122|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00123|
+00124|---- Start of Expression ----
+00125|
+00126|--- Start Special Function ---
+00127|---- End Special Function ----
+00128|
+00129|----- End of Expression -----
+00130|
+00131|---End of List of Body Parts---
+00132|
+00133|-------------------- End of Macro Dump ---------------------
+00134|
+00135|
+00136|
+00137|------------------- Start of Macro Dump --------------------
+00138|Macro Name : "#timestamp"
+00139|Defined? : Yes.
+00140|Parameters : 0
+00141|Additive? : No.
+00142|Zero Calls? : Yes.
+ +-----
+00079|=========================== End of MACRO TABLE DUMP ============================
+00080|
+00081|
+00082|========================= Start of DOCUMENT LIST DUMP ==========================
+00083|
+00084|
+00085|TEXT COMPONENT: Pos(L,C)=(1,1).
+00086|
+00087|-- Start of Text Scrap List --
+00088|Text scrap[Grey]="SC20: Test "
+00089|Text scrap[Grey]="<010>
+00090|1. Test at the start of a line.<010>
+00091|<010>
+00092|"
+00093|Text scrap[Grey]="<010>
+00094|2. Test halfway through a line.<010>
+00095|<010>
+00096|This is a line "
+00097|Text scrap[White]="<010>
+00098|"
+00099|--- End of Text Scrap List ---
+00100|
+00101|
+00102|========================== End of DOCUMENT LIST DUMP ===========================
+00103|
+00104|E: No macros defined.
+00105|E: No output files specified.
+00106|
+00107|Global Local| Input File
+00108|------------+-------------------------------------------------------------------
+00109|.................
+00110|------------+-------------------------------------------------------------------
+00111|
+00112|There were 2 Errors.
+ +-----
+
+ +-----
+00143|Many Calls? : Yes.
+00144|Output File?: No.
+00145|Automatic Line Directive Macro?: No.
+00146|Call list :
+00147|Macro body :
+00148|
+00149|--Start of List of Body Parts--
+00150|This macro has 1 body part.
+00151|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00152|
+00153|---- Start of Expression ----
+00154|
+00155|--- Start Special Function ---
+00156|---- End Special Function ----
+00157|
+00158|----- End of Expression -----
+00159|
+00160|---End of List of Body Parts---
+00161|
+00162|-------------------- End of Macro Dump ---------------------
+00163|
+00164|
+00165|
+00166|=========================== End of MACRO TABLE DUMP ============================
+00167|
+00168|
+00169|========================= Start of DOCUMENT LIST DUMP ==========================
+00170|
+00171|
+00172|TEXT COMPONENT: Pos(L,C)=(1,1).
+00173|
+00174|-- Start of Text Scrap List --
+00175|Text scrap[Grey]="SC20: Test "
+00176|Text scrap[Grey]="<010>
+00177|1. Test at the start of a line.<010>
+00178|<010>
+00179|"
+00180|Text scrap[Grey]="<010>
+00181|2. Test halfway through a line.<010>
+00182|<010>
+00183|This is a line "
+00184|Text scrap[White]="<010>
+00185|"
+00186|--- End of Text Scrap List ---
+00187|
+00188|
+00189|========================== End of DOCUMENT LIST DUMP ===========================
+00190|
+00191|E: No output files specified.
+00192|
+00193|Global Local| Input File
+00194|------------+-------------------------------------------------------------------
+00195|.................
+00196|------------+-------------------------------------------------------------------
+00197|
+00198|There was 1 Error.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc21.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc21.lis".
+
+ +-----
+00172| |....^ @p typesetter = none | tex | hypertext | html
+00173| |....^ @p no_doc_header
+00174| |....^ @p raw_macro_and_section_names
+00175| |....^ @p ignore_text_after_special_minus
+00176| |....^ @p no_paragraph_markups
+00177| |....^ @p declare_source_code_type "<name>"
+00178| |....^ @p automatic_line_directive_macro = "<name>"
+00179| |....^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+00180| |....^ @p #line_offset = <num>
+00181| |....^ @p #line_depth = <num>
+ +-----
+00172| |....^ @p typesetter = none | tex
+ +-----
+
+ +-----
+00202| |.^ @p typesetter = none | tex | hypertext | html
+00203| |.^ @p no_doc_header
+00204| |.^ @p raw_macro_and_section_names
+00205| |.^ @p ignore_text_after_special_minus
+00206| |.^ @p no_paragraph_markups
+00207| |.^ @p declare_source_code_type "<name>"
+00208| |.^ @p automatic_line_directive_macro = "<name>"
+00209| |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+00210| |.^ @p #line_offset = <num>
+00211| |.^ @p #line_depth = <num>
+ +-----
+00193| |.^ @p typesetter = none | tex
+ +-----
+
+ +-----
+00229| |.^ @p typesetter = none | tex | hypertext | html
+00230| |.^ @p no_doc_header
+00231| |.^ @p raw_macro_and_section_names
+00232| |.^ @p ignore_text_after_special_minus
+00233| |.^ @p no_paragraph_markups
+00234| |.^ @p declare_source_code_type "<name>"
+00235| |.^ @p automatic_line_directive_macro = "<name>"
+00236| |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+00237| |.^ @p #line_offset = <num>
+00238| |.^ @p #line_depth = <num>
+ +-----
+00211| |.^ @p typesetter = none | tex
+ +-----
+
+ +-----
+00261| |.^ @p typesetter = none | tex | hypertext | html
+00262| |.^ @p no_doc_header
+00263| |.^ @p raw_macro_and_section_names
+00264| |.^ @p ignore_text_after_special_minus
+00265| |.^ @p no_paragraph_markups
+00266| |.^ @p declare_source_code_type "<name>"
+00267| |.^ @p automatic_line_directive_macro = "<name>"
+00268| |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+00269| |.^ @p #line_offset = <num>
+00270| |.^ @p #line_depth = <num>
+ +-----
+00234| |.^ @p typesetter = none | tex
+ +-----
+
+ +-----
+00283| |.^ @p typesetter = none | tex | hypertext | html
+00284| |.^ @p no_doc_header
+00285| |.^ @p raw_macro_and_section_names
+00286| |.^ @p ignore_text_after_special_minus
+00287| |.^ @p no_paragraph_markups
+00288| |.^ @p declare_source_code_type "<name>"
+00289| |.^ @p automatic_line_directive_macro = "<name>"
+00290| |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+00291| |.^ @p #line_offset = <num>
+00292| |.^ @p #line_depth = <num>
+ +-----
+00247| |.^ @p typesetter = none | tex
+ +-----
+
+ +-----
+00329| |.^ @p typesetter = none | tex | hypertext | html
+00330| |.^ @p no_doc_header
+00331| |.^ @p raw_macro_and_section_names
+00332| |.^ @p ignore_text_after_special_minus
+00333| |.^ @p no_paragraph_markups
+00334| |.^ @p declare_source_code_type "<name>"
+00335| |.^ @p automatic_line_directive_macro = "<name>"
+00336| |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+00337| |.^ @p #line_offset = <num>
+00338| |.^ @p #line_depth = <num>
+ +-----
+00284| |.^ @p typesetter = none | tex
+ +-----
+
+ +-----
+00357| |.^ @p typesetter = none | tex | hypertext | html
+00358| |.^ @p no_doc_header
+00359| |.^ @p raw_macro_and_section_names
+00360| |.^ @p ignore_text_after_special_minus
+00361| |.^ @p no_paragraph_markups
+00362| |.^ @p declare_source_code_type "<name>"
+00363| |.^ @p automatic_line_directive_macro = "<name>"
+00364| |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+00365| |.^ @p #line_offset = <num>
+00366| |.^ @p #line_depth = <num>
+ +-----
+00303| |.^ @p typesetter = none | tex
+ +-----
+
+ +-----
+00387| |.^ @p typesetter = none | tex | hypertext | html
+00388| |.^ @p no_doc_header
+00389| |.^ @p raw_macro_and_section_names
+00390| |.^ @p ignore_text_after_special_minus
+00391| |.^ @p no_paragraph_markups
+00392| |.^ @p declare_source_code_type "<name>"
+00393| |.^ @p automatic_line_directive_macro = "<name>"
+00394| |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+00395| |.^ @p #line_offset = <num>
+00396| |.^ @p #line_depth = <num>
+ +-----
+00324| |.^ @p typesetter = none | tex
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc22.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc22.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc23.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc23.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc24.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc24.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc25.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc25.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc26.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc26.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc27.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc27.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc28.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc28.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/sc29.lis"
+ with "/usr/var/tmp/funnelweb/answers/sc29.lis".
+
+ +-----
+00120| |.^The correct format is: "@p typesetter = none|tex"
+00121| |.^ or for hypertext "@p typesetter = hypertext|html".
+ +-----
+00120| |.^The correct format is: "@p typesetter = none|tex".
+ +-----
+
+ +-----
+00125| |.^The correct format is: "@p typesetter = none|tex"
+00126| |.^ or for hypertext "@p typesetter = hypertext|html".
+ +-----
+00124| |.^The correct format is: "@p typesetter = none|tex".
+ +-----
+
+ +-----
+00130| |.^The correct format is: "@p typesetter = none|tex"
+00131| |.^ or for hypertext "@p typesetter = hypertext|html".
+ +-----
+00128| |.^The correct format is: "@p typesetter = none|tex".
+ +-----
+
+ +-----
+00136| |.^The correct format is: "@p typesetter = none|tex"
+00137| |.^ or for hypertext "@p typesetter = hypertext|html".
+ +-----
+00133| |.^The correct format is: "@p typesetter = none|tex".
+ +-----
+
+ +-----
+00143| |.^The correct format is: "@p typesetter = none|tex"
+00144| |.^ or for hypertext "@p typesetter = hypertext|html".
+00145| |.^Pragma ignored.
+00146| Error|.................^Expecting one of:
+00147| Error|.................^ (i) "none"
+00148| Error|.................^ (ii) "tex"
+00149| Error|.................^ (iii) "hypertext"
+00150| Error|.................^ (iv) "html".
+ +-----
+00139| |.^The correct format is: "@p typesetter = none|tex".
+00140| |.^Pragma ignored.
+00141| Error|.................^Expecting either "none" or "tex".
+ +-----
+
+ +-----
+00170|There were 10 Errors.
+ +-----
+00161|There were 6 Errors.
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/pr01.lis"
+ with "/usr/var/tmp/funnelweb/answers/pr01.lis".
+
+ +-----
+00215|------------------- Start of Macro Dump --------------------
+00216|Macro Name : "#file"
+00217|Defined? : Yes.
+00218|Parameters : 0
+00219|Additive? : No.
+00220|Zero Calls? : Yes.
+00221|Many Calls? : Yes.
+00222|Output File?: No.
+00223|Automatic Line Directive Macro?: No.
+00224|Call list :
+00225|Macro body :
+00226|
+00227|--Start of List of Body Parts--
+00228|This macro has 1 body part.
+00229|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00230|
+00231|---- Start of Expression ----
+00232|
+00233|--- Start Special Function ---
+00234|---- End Special Function ----
+00235|
+00236|----- End of Expression -----
+00237|
+00238|---End of List of Body Parts---
+00239|
+00240|-------------------- End of Macro Dump ---------------------
+00241|
+00242|
+00243|
+00244|------------------- Start of Macro Dump --------------------
+00245|Macro Name : "#line"
+00246|Defined? : Yes.
+00247|Parameters : 0
+00248|Additive? : No.
+00249|Zero Calls? : Yes.
+00250|Many Calls? : Yes.
+00251|Output File?: No.
+00252|Automatic Line Directive Macro?: No.
+00253|Call list :
+00254|Macro body :
+00255|
+00256|--Start of List of Body Parts--
+00257|This macro has 1 body part.
+00258|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00259|
+00260|---- Start of Expression ----
+00261|
+00262|--- Start Special Function ---
+00263|---- End Special Function ----
+00264|
+00265|----- End of Expression -----
+00266|
+00267|---End of List of Body Parts---
+00268|
+00269|-------------------- End of Macro Dump ---------------------
+00270|
+00271|
+00272|
+00273|------------------- Start of Macro Dump --------------------
+00274|Macro Name : "#timestamp"
+00275|Defined? : Yes.
+00276|Parameters : 0
+00277|Additive? : No.
+00278|Zero Calls? : Yes.
+ +-----
+00215|=========================== End of MACRO TABLE DUMP ============================
+00216|
+00217|
+00218|========================= Start of DOCUMENT LIST DUMP ==========================
+00219|
+00220|
+00221|TEXT COMPONENT: Pos(L,C)=(1,1).
+00222|
+00223|-- Start of Text Scrap List --
+00224|Text scrap[Grey]="PR01: Test the inline typesetting features.<010>
+00225|<010>
+00226|1. First we test the legal use of the "
+00227|--- End of Text Scrap List ---
+00228|
+00229|
+00230|TYPESETTER DIRECTIVE COMPONENT: Open literal.
+00231|
+00232|TEXT COMPONENT: Pos(L,C)=(3,41).
+00233|
+00234|-- Start of Text Scrap List --
+00235|Text scrap[Grey]="literal"
+00236|--- End of Text Scrap List ---
+00237|
+00238|
+00239|TYPESETTER DIRECTIVE COMPONENT: Close literal.
+00240|
+00241|TEXT COMPONENT: Pos(L,C)=(3,50).
+00242|
+00243|-- Start of Text Scrap List --
+00244|Text scrap[Grey]=" construct.<010>
+00245|<010>
+00246|2.Test "
+00247|--- End of Text Scrap List ---
+00248|
+00249|
+00250|TYPESETTER DIRECTIVE COMPONENT: Open literal.
+00251|
+00252|TYPESETTER DIRECTIVE COMPONENT:
+00253| Section "1", Section name="Error Recovery Point".
+00254|
+00255|TEXT COMPONENT: Pos(L,C)=(6,27).
+00256|
+00257|-- Start of Text Scrap List --
+00258|Text scrap[Grey]="<010>
+00259|<010>
+00260|3. Test the construct "
+00261|--- End of Text Scrap List ---
+00262|
+00263|
+00264|TYPESETTER DIRECTIVE COMPONENT: Open literal.
+00265|
+00266|TEXT COMPONENT: Pos(L,C)=(8,25).
+00267|
+00268|-- Start of Text Scrap List --
+00269|Text scrap[Grey]="across<010>
+00270| more than one line"
+00271|--- End of Text Scrap List ---
+00272|
+00273|
+00274|TYPESETTER DIRECTIVE COMPONENT: Close literal.
+00275|
+00276|TEXT COMPONENT: Pos(L,C)=(9,24).
+00277|
+00278|-- Start of Text Scrap List --
+ +-----
+
+ +-----
+00279|Many Calls? : Yes.
+00280|Output File?: No.
+00281|Automatic Line Directive Macro?: No.
+00282|Call list :
+00283|Macro body :
+00284|
+00285|--Start of List of Body Parts--
+00286|This macro has 1 body part.
+00287|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00288|
+00289|---- Start of Expression ----
+00290|
+00291|--- Start Special Function ---
+00292|---- End Special Function ----
+00293|
+00294|----- End of Expression -----
+00295|
+00296|---End of List of Body Parts---
+00297|
+00298|-------------------- End of Macro Dump ---------------------
+00299|
+00300|
+00301|
+00302|=========================== End of MACRO TABLE DUMP ============================
+00303|
+00304|
+00305|========================= Start of DOCUMENT LIST DUMP ==========================
+00306|
+00307|
+00308|TEXT COMPONENT: Pos(L,C)=(1,1).
+00309|
+00310|-- Start of Text Scrap List --
+00311|Text scrap[Grey]="PR01: Test the inline typesetting features.<010>
+00312|<010>
+00313|1. First we test the legal use of the "
+ +-----
+00279|Text scrap[Grey]=".<010>
+00280|<010>
+00281|4. Now we test the construct with non-text following it.<010>
+00282| "
+ +-----
+
+ +-----
+00319|TEXT COMPONENT: Pos(L,C)=(3,41).
+00320|
+00321|-- Start of Text Scrap List --
+00322|Text scrap[Grey]="literal"
+ +-----
+00288|TYPESETTER DIRECTIVE COMPONENT:
+00289| Section "2", Section name="Error Recovery Point".
+00290|
+00291|TEXT COMPONENT: Pos(L,C)=(13,27).
+00292|
+00293|-- Start of Text Scrap List --
+00294|Text scrap[White]="<010>
+00295| "
+ +-----
+
+ +-----
+00326|TYPESETTER DIRECTIVE COMPONENT: Close literal.
+00327|
+00328|TEXT COMPONENT: Pos(L,C)=(3,50).
+00329|
+00330|-- Start of Text Scrap List --
+00331|Text scrap[Grey]=" construct.<010>
+00332|<010>
+00333|2.Test "
+ +-----
+00299|TYPESETTER DIRECTIVE COMPONENT: Open literal.
+00300|
+00301|TEXT COMPONENT: Pos(L,C)=(14,6).
+00302|
+00303|-- Start of Text Scrap List --
+00304|Text scrap[White]=" "
+ +-----
+
+ +-----
+00337|TYPESETTER DIRECTIVE COMPONENT: Open literal.
+00338|
+00339|TYPESETTER DIRECTIVE COMPONENT:
+00340| Section "1", Section name="Error Recovery Point".
+00341|
+00342|TEXT COMPONENT: Pos(L,C)=(6,27).
+ +-----
+00308|TYPESETTER DIRECTIVE COMPONENT:
+00309| Section "3", Section name="Error Recovery Point".
+00310|
+00311|TEXT COMPONENT: Pos(L,C)=(15,27).
+ +-----
+
+ +-----
+00347|3. Test the construct "
+ +-----
+00316|5. Test the legal use of the "
+ +-----
+
+ +-----
+00351|TYPESETTER DIRECTIVE COMPONENT: Open literal.
+00352|
+00353|TEXT COMPONENT: Pos(L,C)=(8,25).
+00354|
+00355|-- Start of Text Scrap List --
+00356|Text scrap[Grey]="across<010>
+00357| more than one line"
+ +-----
+00320|TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+00321|
+00322|TEXT COMPONENT: Pos(L,C)=(17,32).
+00323|
+00324|-- Start of Text Scrap List --
+00325|Text scrap[Grey]="emphasis"
+ +-----
+
+ +-----
+00361|TYPESETTER DIRECTIVE COMPONENT: Close literal.
+00362|
+00363|TEXT COMPONENT: Pos(L,C)=(9,24).
+00364|
+00365|-- Start of Text Scrap List --
+00366|Text scrap[Grey]=".<010>
+00367|<010>
+00368|4. Now we test the construct with non-text following it.<010>
+00369| "
+ +-----
+00329|TYPESETTER DIRECTIVE COMPONENT: Close emphasise.
+00330|
+00331|TEXT COMPONENT: Pos(L,C)=(17,42).
+00332|
+00333|-- Start of Text Scrap List --
+00334|Text scrap[Grey]=" construct.<010>
+00335|<010>
+00336|6.Test "
+ +-----
+
+ +-----
+00373|TYPESETTER DIRECTIVE COMPONENT: Open literal.
+00374|
+00375|TYPESETTER DIRECTIVE COMPONENT:
+00376| Section "2", Section name="Error Recovery Point".
+00377|
+00378|TEXT COMPONENT: Pos(L,C)=(13,27).
+00379|
+00380|-- Start of Text Scrap List --
+00381|Text scrap[White]="<010>
+00382| "
+ +-----
+00340|TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+00341|
+00342|TYPESETTER DIRECTIVE COMPONENT:
+00343| Section "4", Section name="Error Recovery Point".
+00344|
+00345|TEXT COMPONENT: Pos(L,C)=(20,27).
+00346|
+00347|-- Start of Text Scrap List --
+00348|Text scrap[Grey]="<010>
+00349|<010>
+00350|7. Test the construct "
+ +-----
+
+ +-----
+00386|TYPESETTER DIRECTIVE COMPONENT: Open literal.
+00387|
+00388|TEXT COMPONENT: Pos(L,C)=(14,6).
+00389|
+00390|-- Start of Text Scrap List --
+00391|Text scrap[White]=" "
+ +-----
+00354|TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+00355|
+00356|TEXT COMPONENT: Pos(L,C)=(22,25).
+00357|
+00358|-- Start of Text Scrap List --
+00359|Text scrap[Grey]="across<010>
+00360| more than one line"
+ +-----
+
+ +-----
+00395|TYPESETTER DIRECTIVE COMPONENT:
+00396| Section "3", Section name="Error Recovery Point".
+00397|
+00398|TEXT COMPONENT: Pos(L,C)=(15,27).
+00399|
+00400|-- Start of Text Scrap List --
+00401|Text scrap[Grey]="<010>
+00402|<010>
+00403|5. Test the legal use of the "
+ +-----
+00364|TYPESETTER DIRECTIVE COMPONENT: Close emphasise.
+00365|
+00366|TEXT COMPONENT: Pos(L,C)=(23,24).
+00367|
+00368|-- Start of Text Scrap List --
+00369|Text scrap[Grey]=".<010>
+00370|<010>
+00371|8. Now we test the construct with non-text following it.<010>
+00372| "
+ +-----
+
+ +-----
+00409|TEXT COMPONENT: Pos(L,C)=(17,32).
+00410|
+00411|-- Start of Text Scrap List --
+00412|Text scrap[Grey]="emphasis"
+ +-----
+00378|TYPESETTER DIRECTIVE COMPONENT:
+00379| Section "5", Section name="Error Recovery Point".
+00380|
+00381|TEXT COMPONENT: Pos(L,C)=(27,27).
+00382|
+00383|-- Start of Text Scrap List --
+00384|Text scrap[White]="<010>
+00385| "
+ +-----
+
+ +-----
+00416|TYPESETTER DIRECTIVE COMPONENT: Close emphasise.
+00417|
+00418|TEXT COMPONENT: Pos(L,C)=(17,42).
+00419|
+00420|-- Start of Text Scrap List --
+00421|Text scrap[Grey]=" construct.<010>
+00422|<010>
+00423|6.Test "
+ +-----
+00389|TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+00390|
+00391|TEXT COMPONENT: Pos(L,C)=(28,6).
+00392|
+00393|-- Start of Text Scrap List --
+00394|Text scrap[White]=" "
+ +-----
+
+ +-----
+00427|TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+00428|
+00429|TYPESETTER DIRECTIVE COMPONENT:
+00430| Section "4", Section name="Error Recovery Point".
+00431|
+00432|TEXT COMPONENT: Pos(L,C)=(20,27).
+00433|
+00434|-- Start of Text Scrap List --
+00435|Text scrap[Grey]="<010>
+00436|<010>
+00437|7. Test the construct "
+00438|--- End of Text Scrap List ---
+00439|
+00440|
+00441|TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+00442|
+00443|TEXT COMPONENT: Pos(L,C)=(22,25).
+00444|
+00445|-- Start of Text Scrap List --
+00446|Text scrap[Grey]="across<010>
+00447| more than one line"
+00448|--- End of Text Scrap List ---
+00449|
+00450|
+00451|TYPESETTER DIRECTIVE COMPONENT: Close emphasise.
+00452|
+00453|TEXT COMPONENT: Pos(L,C)=(23,24).
+00454|
+00455|-- Start of Text Scrap List --
+00456|Text scrap[Grey]=".<010>
+00457|<010>
+00458|8. Now we test the construct with non-text following it.<010>
+00459| "
+00460|--- End of Text Scrap List ---
+00461|
+00462|
+00463|TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+00464|
+00465|TYPESETTER DIRECTIVE COMPONENT:
+00466| Section "5", Section name="Error Recovery Point".
+00467|
+00468|TEXT COMPONENT: Pos(L,C)=(27,27).
+00469|
+00470|-- Start of Text Scrap List --
+00471|Text scrap[White]="<010>
+00472| "
+00473|--- End of Text Scrap List ---
+00474|
+00475|
+00476|TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+00477|
+00478|TEXT COMPONENT: Pos(L,C)=(28,6).
+00479|
+00480|-- Start of Text Scrap List --
+00481|Text scrap[White]=" "
+00482|--- End of Text Scrap List ---
+00483|
+00484|
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/pr02.lis"
+ with "/usr/var/tmp/funnelweb/answers/pr02.lis".
+
+ +-----
+00093|------------------- Start of Macro Dump --------------------
+00094|Macro Name : "#file"
+00095|Defined? : Yes.
+00096|Parameters : 0
+00097|Additive? : No.
+00098|Zero Calls? : Yes.
+00099|Many Calls? : Yes.
+00100|Output File?: No.
+00101|Automatic Line Directive Macro?: No.
+00102|Call list :
+00103|Macro body :
+00104|
+00105|--Start of List of Body Parts--
+00106|This macro has 1 body part.
+00107|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00108|
+00109|---- Start of Expression ----
+00110|
+00111|--- Start Special Function ---
+00112|---- End Special Function ----
+00113|
+00114|----- End of Expression -----
+00115|
+00116|---End of List of Body Parts---
+00117|
+00118|-------------------- End of Macro Dump ---------------------
+00119|
+00120|
+00121|
+00122|------------------- Start of Macro Dump --------------------
+00123|Macro Name : "#line"
+00124|Defined? : Yes.
+00125|Parameters : 0
+00126|Additive? : No.
+00127|Zero Calls? : Yes.
+00128|Many Calls? : Yes.
+00129|Output File?: No.
+00130|Automatic Line Directive Macro?: No.
+00131|Call list :
+00132|Macro body :
+00133|
+00134|--Start of List of Body Parts--
+00135|This macro has 1 body part.
+00136|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00137|
+00138|---- Start of Expression ----
+00139|
+00140|--- Start Special Function ---
+00141|---- End Special Function ----
+00142|
+00143|----- End of Expression -----
+00144|
+00145|---End of List of Body Parts---
+00146|
+00147|-------------------- End of Macro Dump ---------------------
+00148|
+00149|
+00150|
+00151|------------------- Start of Macro Dump --------------------
+00152|Macro Name : "#timestamp"
+00153|Defined? : Yes.
+00154|Parameters : 0
+00155|Additive? : No.
+00156|Zero Calls? : Yes.
+ +-----
+00093|=========================== End of MACRO TABLE DUMP ============================
+00094|
+00095|
+00096|========================= Start of DOCUMENT LIST DUMP ==========================
+00097|
+00098|
+00099|TEXT COMPONENT: Pos(L,C)=(1,1).
+00100|
+00101|-- Start of Text Scrap List --
+00102|Text scrap[Grey]="PR02: Test the parsing of typesetter directives.<010>
+00103|<010>
+00104|1. Test parsing of new page directive.<010>
+00105|"
+00106|--- End of Text Scrap List ---
+00107|
+00108|
+00109|TYPESETTER DIRECTIVE COMPONENT: New page.
+00110|
+00111|TEXT COMPONENT: Pos(L,C)=(5,1).
+00112|
+00113|-- Start of Text Scrap List --
+00114|Text scrap[Grey]="<010>
+00115|2. Test parsing of table of contents directive.<010>
+00116|"
+00117|--- End of Text Scrap List ---
+00118|
+00119|
+00120|TYPESETTER DIRECTIVE COMPONENT: Table of contents.
+00121|
+00122|TEXT COMPONENT: Pos(L,C)=(8,1).
+00123|
+00124|-- Start of Text Scrap List --
+00125|Text scrap[Grey]="<010>
+00126|3. Test parsing of vskip directive.<010>
+00127|"
+00128|--- End of Text Scrap List ---
+00129|
+00130|
+00131|TYPESETTER DIRECTIVE COMPONENT: Vertical skip by 32 mm.
+00132|
+00133|TEXT COMPONENT: Pos(L,C)=(11,1).
+00134|
+00135|-- Start of Text Scrap List --
+00136|Text scrap[Grey]="<010>
+00137|4. Test parsing of title directive.<010>
+00138|"
+00139|--- End of Text Scrap List ---
+00140|
+00141|
+00142|TYPESETTER DIRECTIVE COMPONENT: Font=Title, Alignment=Left. Title text follows:
+00143|Text scrap[Grey]="Sloth"
+00144|
+00145|TEXT COMPONENT: Pos(L,C)=(14,1).
+00146|
+00147|-- Start of Text Scrap List --
+00148|Text scrap[White]="<010>
+00149|"
+00150|--- End of Text Scrap List ---
+00151|
+00152|
+00153|========================== End of DOCUMENT LIST DUMP ===========================
+00154|
+00155|E: No macros defined.
+00156|E: No output files specified.
+ +-----
+
+ +-----
+00157|Many Calls? : Yes.
+00158|Output File?: No.
+00159|Automatic Line Directive Macro?: No.
+00160|Call list :
+00161|Macro body :
+00162|
+00163|--Start of List of Body Parts--
+00164|This macro has 1 body part.
+00165|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00166|
+00167|---- Start of Expression ----
+00168|
+00169|--- Start Special Function ---
+00170|---- End Special Function ----
+00171|
+00172|----- End of Expression -----
+00173|
+00174|---End of List of Body Parts---
+00175|
+00176|-------------------- End of Macro Dump ---------------------
+00177|
+00178|
+00179|
+00180|=========================== End of MACRO TABLE DUMP ============================
+00181|
+00182|
+00183|========================= Start of DOCUMENT LIST DUMP ==========================
+00184|
+00185|
+00186|TEXT COMPONENT: Pos(L,C)=(1,1).
+00187|
+00188|-- Start of Text Scrap List --
+00189|Text scrap[Grey]="PR02: Test the parsing of typesetter directives.<010>
+00190|<010>
+00191|1. Test parsing of new page directive.<010>
+00192|"
+00193|--- End of Text Scrap List ---
+00194|
+00195|
+00196|TYPESETTER DIRECTIVE COMPONENT: New page.
+00197|
+00198|TEXT COMPONENT: Pos(L,C)=(5,1).
+00199|
+00200|-- Start of Text Scrap List --
+00201|Text scrap[Grey]="<010>
+00202|2. Test parsing of table of contents directive.<010>
+00203|"
+00204|--- End of Text Scrap List ---
+00205|
+00206|
+00207|TYPESETTER DIRECTIVE COMPONENT: Table of contents.
+00208|
+00209|TEXT COMPONENT: Pos(L,C)=(8,1).
+00210|
+00211|-- Start of Text Scrap List --
+00212|Text scrap[Grey]="<010>
+00213|3. Test parsing of vskip directive.<010>
+00214|"
+00215|--- End of Text Scrap List ---
+00216|
+00217|
+00218|TYPESETTER DIRECTIVE COMPONENT: Vertical skip by 32 mm.
+00219|
+00220|TEXT COMPONENT: Pos(L,C)=(11,1).
+ +-----
+00157|
+00158|Global Local| Input File
+00159|------------+-------------------------------------------------------------------
+00160|.................
+00161|------------+-------------------------------------------------------------------
+00162|
+00163|There were 2 Errors.
+ +-----
+
+ +-----
+00221|
+00222|-- Start of Text Scrap List --
+00223|Text scrap[Grey]="<010>
+00224|4. Test parsing of title directive.<010>
+00225|"
+00226|--- End of Text Scrap List ---
+00227|
+00228|
+00229|TYPESETTER DIRECTIVE COMPONENT: Font=Title, Alignment=Left. Title text follows:
+00230|Text scrap[Grey]="Sloth"
+00231|
+00232|TEXT COMPONENT: Pos(L,C)=(14,1).
+00233|
+00234|-- Start of Text Scrap List --
+00235|Text scrap[White]="<010>
+00236|"
+00237|--- End of Text Scrap List ---
+00238|
+00239|
+00240|========================== End of DOCUMENT LIST DUMP ===========================
+00241|
+00242|E: No output files specified.
+00243|
+00244|Global Local| Input File
+00245|------------+-------------------------------------------------------------------
+00246|.................
+00247|------------+-------------------------------------------------------------------
+00248|
+00249|There was 1 Error.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/pr03.lis"
+ with "/usr/var/tmp/funnelweb/answers/pr03.lis".
+
+ +-----
+00206|Macro Name : "#file"
+ +-----
+00206|Macro Name : "The section name inherits the name of this macro"
+ +-----
+
+ +-----
+00210|Zero Calls? : Yes.
+00211|Many Calls? : Yes.
+00212|Output File?: No.
+00213|Automatic Line Directive Macro?: No.
+ +-----
+00210|Zero Calls? : No.
+00211|Many Calls? : No.
+00212|Output File?: No.
+ +-----
+
+ +-----
+00219|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+ +-----
+00218|Body part 1: Seqnum=1, Pos(L,C)=(8,3), Expression follows:
+ +-----
+
+ +-----
+00223|--- Start Special Function ---
+00224|---- End Special Function ----
+ +-----
+00222|----- Start Text Element -----
+00223|Text scrap[Grey]="Walrus"
+00224|------ End Text Element ------
+ +-----
+
+ +-----
+00234|------------------- Start of Macro Dump --------------------
+00235|Macro Name : "#line"
+00236|Defined? : Yes.
+00237|Parameters : 0
+00238|Additive? : No.
+00239|Zero Calls? : Yes.
+00240|Many Calls? : Yes.
+00241|Output File?: No.
+00242|Automatic Line Directive Macro?: No.
+00243|Call list :
+00244|Macro body :
+00245|
+00246|--Start of List of Body Parts--
+00247|This macro has 1 body part.
+00248|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00249|
+00250|---- Start of Expression ----
+00251|
+00252|--- Start Special Function ---
+00253|---- End Special Function ----
+00254|
+00255|----- End of Expression -----
+00256|
+00257|---End of List of Body Parts---
+00258|
+00259|-------------------- End of Macro Dump ---------------------
+00260|
+00261|
+00262|
+00263|------------------- Start of Macro Dump --------------------
+00264|Macro Name : "#timestamp"
+00265|Defined? : Yes.
+00266|Parameters : 0
+00267|Additive? : No.
+00268|Zero Calls? : Yes.
+00269|Many Calls? : Yes.
+00270|Output File?: No.
+00271|Automatic Line Directive Macro?: No.
+00272|Call list :
+00273|Macro body :
+00274|
+00275|--Start of List of Body Parts--
+00276|This macro has 1 body part.
+00277|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00278|
+00279|---- Start of Expression ----
+00280|
+00281|--- Start Special Function ---
+00282|---- End Special Function ----
+00283|
+00284|----- End of Expression -----
+00285|
+00286|---End of List of Body Parts---
+00287|
+00288|-------------------- End of Macro Dump ---------------------
+00289|
+00290|
+00291|
+00292|------------------- Start of Macro Dump --------------------
+00293|Macro Name : "The section name inherits the name of this macro"
+00294|Defined? : Yes.
+00295|Parameters : 0
+00296|Additive? : No.
+00297|Zero Calls? : No.
+ +-----
+00234|=========================== End of MACRO TABLE DUMP ============================
+00235|
+00236|
+00237|========================= Start of DOCUMENT LIST DUMP ==========================
+00238|
+00239|
+00240|TEXT COMPONENT: Pos(L,C)=(1,1).
+00241|
+00242|-- Start of Text Scrap List --
+00243|Text scrap[Grey]="PR03: Test the parsing and semantics of sections.<010>
+00244|<010>
+00245|4. Test first section of document is not <special>A.<010>
+00246|"
+00247|--- End of Text Scrap List ---
+00248|
+00249|
+00250|TYPESETTER DIRECTIVE COMPONENT:
+00251| Section "1.2", Section name="This section is out of order (and so is this test!)".
+00252|
+00253|TEXT COMPONENT: Pos(L,C)=(4,58).
+00254|
+00255|-- Start of Text Scrap List --
+00256|Text scrap[Grey]="<010>
+00257|<010>
+00258|1. Test section with no name.<010>
+00259|"
+00260|--- End of Text Scrap List ---
+00261|
+00262|
+00263|TYPESETTER DIRECTIVE COMPONENT:
+00264| Section "2", Section name="The section name inherits the name of this macro".
+00265|
+00266|TEXT COMPONENT: Pos(L,C)=(7,3).
+00267|
+00268|-- Start of Text Scrap List --
+00269|Text scrap[Grey]=" This section has no name.<010>
+00270|"
+00271|--- End of Text Scrap List ---
+00272|
+00273|
+00274|MACRO DEFINITION COMPONENT: Pos(L,C)=(8,1).
+00275|Part 1 of macro @<The section name inherits the name of this macro@>.
+00276|
+00277|TEXT COMPONENT: Pos(L,C)=(8,65).
+00278|
+00279|-- Start of Text Scrap List --
+00280|Text scrap[Grey]="<010>
+00281|<010>
+00282|2. Test section with a name<010>
+00283|"
+00284|--- End of Text Scrap List ---
+00285|
+00286|
+00287|TYPESETTER DIRECTIVE COMPONENT:
+00288| Section "3", Section name="This section has no name.".
+00289|
+00290|TEXT COMPONENT: Pos(L,C)=(11,32).
+00291|
+00292|-- Start of Text Scrap List --
+00293|Text scrap[Grey]="<010>
+00294|<010>
+00295|3. Test the entire hierarchy.<010>
+00296|"
+00297|--- End of Text Scrap List ---
+ +-----
+
+ +-----
+00298|Many Calls? : No.
+00299|Output File?: No.
+00300|Automatic Line Directive Macro?: No.
+00301|Call list :
+00302|Macro body :
+00303|
+00304|--Start of List of Body Parts--
+00305|This macro has 1 body part.
+00306|Body part 1: Seqnum=1, Pos(L,C)=(8,3), Expression follows:
+00307|
+00308|---- Start of Expression ----
+00309|
+00310|----- Start Text Element -----
+00311|Text scrap[Grey]="Walrus"
+00312|------ End Text Element ------
+00313|
+00314|----- End of Expression -----
+00315|
+00316|---End of List of Body Parts---
+00317|
+00318|-------------------- End of Macro Dump ---------------------
+00319|
+00320|
+00321|
+00322|=========================== End of MACRO TABLE DUMP ============================
+00323|
+00324|
+00325|========================= Start of DOCUMENT LIST DUMP ==========================
+00326|
+00327|
+00328|TEXT COMPONENT: Pos(L,C)=(1,1).
+00329|
+00330|-- Start of Text Scrap List --
+00331|Text scrap[Grey]="PR03: Test the parsing and semantics of sections.<010>
+00332|<010>
+00333|4. Test first section of document is not <special>A.<010>
+00334|"
+00335|--- End of Text Scrap List ---
+ +-----
+ +-----
+
+ +-----
+00339| Section "1.2", Section name="This section is out of order (and so is this test!)".
+00340|
+00341|TEXT COMPONENT: Pos(L,C)=(4,58).
+00342|
+00343|-- Start of Text Scrap List --
+00344|Text scrap[Grey]="<010>
+00345|<010>
+00346|1. Test section with no name.<010>
+ +-----
+00301| Section "4", Section name="One".
+00302|
+00303|TEXT COMPONENT: Pos(L,C)=(14,10).
+00304|
+00305|-- Start of Text Scrap List --
+00306|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00352| Section "2", Section name="The section name inherits the name of this macro".
+00353|
+00354|TEXT COMPONENT: Pos(L,C)=(7,3).
+00355|
+00356|-- Start of Text Scrap List --
+00357|Text scrap[Grey]=" This section has no name.<010>
+ +-----
+00312| Section "4.1", Section name="Two".
+00313|
+00314|TEXT COMPONENT: Pos(L,C)=(15,10).
+00315|
+00316|-- Start of Text Scrap List --
+00317|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00362|MACRO DEFINITION COMPONENT: Pos(L,C)=(8,1).
+00363|Part 1 of macro @<The section name inherits the name of this macro@>.
+00364|
+00365|TEXT COMPONENT: Pos(L,C)=(8,65).
+00366|
+00367|-- Start of Text Scrap List --
+00368|Text scrap[Grey]="<010>
+00369|<010>
+00370|2. Test section with a name<010>
+ +-----
+00322|TYPESETTER DIRECTIVE COMPONENT:
+00323| Section "4.1.1", Section name="Three".
+00324|
+00325|TEXT COMPONENT: Pos(L,C)=(16,12).
+00326|
+00327|-- Start of Text Scrap List --
+00328|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00376| Section "3", Section name="This section has no name.".
+00377|
+00378|TEXT COMPONENT: Pos(L,C)=(11,32).
+00379|
+00380|-- Start of Text Scrap List --
+00381|Text scrap[Grey]="<010>
+00382|<010>
+00383|3. Test the entire hierarchy.<010>
+ +-----
+00334| Section "4.1.1.1", Section name="Four".
+00335|
+00336|TEXT COMPONENT: Pos(L,C)=(17,11).
+00337|
+00338|-- Start of Text Scrap List --
+00339|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00389| Section "4", Section name="One".
+00390|
+00391|TEXT COMPONENT: Pos(L,C)=(14,10).
+00392|
+00393|-- Start of Text Scrap List --
+00394|Text scrap[White]="<010>
+ +-----
+00345| Section "4.1.1.1.1", Section name="Five".
+00346|
+00347|TEXT COMPONENT: Pos(L,C)=(18,11).
+00348|
+00349|-- Start of Text Scrap List --
+00350|Text scrap[Grey]="<010>
+00351|<010>
+00352|5. Test detection of discontinuity in levels.<010>
+ +-----
+
+ +-----
+00400| Section "4.1", Section name="Two".
+00401|
+00402|TEXT COMPONENT: Pos(L,C)=(15,10).
+ +-----
+00358| Section "5", Section name="One".
+00359|
+00360|TEXT COMPONENT: Pos(L,C)=(21,10).
+ +-----
+
+ +-----
+00411| Section "4.1.1", Section name="Three".
+00412|
+00413|TEXT COMPONENT: Pos(L,C)=(16,12).
+ +-----
+00369| Section "1.1.2", Section name="Three".
+00370|
+00371|TEXT COMPONENT: Pos(L,C)=(22,12).
+ +-----
+
+ +-----
+00422| Section "4.1.1.1", Section name="Four".
+00423|
+00424|TEXT COMPONENT: Pos(L,C)=(17,11).
+ +-----
+00380| Section "1.1.1.1.2", Section name="Five".
+00381|
+00382|TEXT COMPONENT: Pos(L,C)=(23,11).
+ +-----
+
+ +-----
+ +-----
+00386|<010>
+ +-----
+
+ +-----
+00433| Section "4.1.1.1.1", Section name="Five".
+00434|
+00435|TEXT COMPONENT: Pos(L,C)=(18,11).
+00436|
+00437|-- Start of Text Scrap List --
+00438|Text scrap[Grey]="<010>
+00439|<010>
+00440|5. Test detection of discontinuity in levels.<010>
+ +-----
+00392| Section "2", Section name="One".
+00393|
+00394|TEXT COMPONENT: Pos(L,C)=(25,10).
+00395|
+00396|-- Start of Text Scrap List --
+00397|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00446| Section "5", Section name="One".
+00447|
+00448|TEXT COMPONENT: Pos(L,C)=(21,10).
+ +-----
+00403| Section "2.1", Section name="Three".
+00404|
+00405|TEXT COMPONENT: Pos(L,C)=(26,12).
+ +-----
+
+ +-----
+00457| Section "1.1.2", Section name="Three".
+00458|
+00459|TEXT COMPONENT: Pos(L,C)=(22,12).
+ +-----
+00414| Section "1.1.1.2", Section name="Five".
+00415|
+00416|TEXT COMPONENT: Pos(L,C)=(27,11).
+ +-----
+
+ +-----
+00467|TYPESETTER DIRECTIVE COMPONENT:
+00468| Section "1.1.1.1.2", Section name="Five".
+00469|
+00470|TEXT COMPONENT: Pos(L,C)=(23,11).
+00471|
+00472|-- Start of Text Scrap List --
+00473|Text scrap[White]="<010>
+00474|<010>
+00475|"
+00476|--- End of Text Scrap List ---
+00477|
+00478|
+00479|TYPESETTER DIRECTIVE COMPONENT:
+00480| Section "2", Section name="One".
+00481|
+00482|TEXT COMPONENT: Pos(L,C)=(25,10).
+00483|
+00484|-- Start of Text Scrap List --
+00485|Text scrap[White]="<010>
+00486|"
+00487|--- End of Text Scrap List ---
+00488|
+00489|
+00490|TYPESETTER DIRECTIVE COMPONENT:
+00491| Section "2.1", Section name="Three".
+00492|
+00493|TEXT COMPONENT: Pos(L,C)=(26,12).
+00494|
+00495|-- Start of Text Scrap List --
+00496|Text scrap[White]="<010>
+00497|"
+00498|--- End of Text Scrap List ---
+00499|
+00500|
+00501|TYPESETTER DIRECTIVE COMPONENT:
+00502| Section "1.1.1.2", Section name="Five".
+00503|
+00504|TEXT COMPONENT: Pos(L,C)=(27,11).
+00505|
+00506|-- Start of Text Scrap List --
+00507|Text scrap[White]="<010>
+00508|"
+00509|--- End of Text Scrap List ---
+00510|
+00511|
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/pr04.lis"
+ with "/usr/var/tmp/funnelweb/answers/pr04.lis".
+
+ +-----
+00267|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00297|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00315|Macro Name : "#file"
+ +-----
+00313|Macro Name : "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ +-----
+
+ +-----
+00319|Zero Calls? : Yes.
+00320|Many Calls? : Yes.
+00321|Output File?: No.
+00322|Automatic Line Directive Macro?: No.
+ +-----
+00317|Zero Calls? : No.
+00318|Many Calls? : No.
+00319|Output File?: No.
+ +-----
+
+ +-----
+00328|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00329|
+00330|---- Start of Expression ----
+00331|
+00332|--- Start Special Function ---
+00333|---- End Special Function ----
+00334|
+ +-----
+00325|Body part 1: Seqnum=4, Pos(L,C)=(20,3), Expression follows:
+00326|
+00327|---- Start of Expression ----
+ +-----
+
+ +-----
+00344|Macro Name : "#line"
+ +-----
+00337|Macro Name : "A@"
+ +-----
+
+ +-----
+00348|Zero Calls? : Yes.
+00349|Many Calls? : Yes.
+00350|Output File?: No.
+00351|Automatic Line Directive Macro?: No.
+ +-----
+00341|Zero Calls? : No.
+00342|Many Calls? : No.
+00343|Output File?: No.
+ +-----
+
+ +-----
+00357|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00358|
+00359|---- Start of Expression ----
+00360|
+00361|--- Start Special Function ---
+00362|---- End Special Function ----
+00363|
+ +-----
+00349|Body part 1: Seqnum=8, Pos(L,C)=(31,3), Expression follows:
+00350|
+00351|---- Start of Expression ----
+ +-----
+
+ +-----
+00373|Macro Name : "#timestamp"
+ +-----
+00361|Macro Name : "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`"
+ +-----
+
+ +-----
+00377|Zero Calls? : Yes.
+00378|Many Calls? : Yes.
+00379|Output File?: No.
+00380|Automatic Line Directive Macro?: No.
+ +-----
+00365|Zero Calls? : No.
+00366|Many Calls? : No.
+00367|Output File?: No.
+ +-----
+
+ +-----
+00386|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00387|
+00388|---- Start of Expression ----
+00389|
+00390|--- Start Special Function ---
+00391|---- End Special Function ----
+00392|
+ +-----
+00373|Body part 1: Seqnum=6, Pos(L,C)=(26,3), Expression follows:
+00374|
+00375|---- Start of Expression ----
+ +-----
+
+ +-----
+00402|Macro Name : "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ +-----
+00385|Macro Name : "Ordinary"
+ +-----
+
+ +-----
+00409|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00415|Body part 1: Seqnum=4, Pos(L,C)=(20,3), Expression follows:
+00416|
+00417|---- Start of Expression ----
+ +-----
+00397|Body part 1: Seqnum=1, Pos(L,C)=(4,3), Expression follows:
+00398|
+00399|---- Start of Expression ----
+00400|
+00401|----- Start Text Element -----
+00402|Text scrap[Grey]="The text of ordinary"
+00403|------ End Text Element ------
+00404|
+ +-----
+
+ +-----
+00427|Macro Name : "A@"
+ +-----
+00414|Macro Name : "abcdefghijklmnopqrstuvwxyz{|}~"
+ +-----
+
+ +-----
+00434|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00440|Body part 1: Seqnum=8, Pos(L,C)=(31,3), Expression follows:
+ +-----
+00426|Body part 1: Seqnum=7, Pos(L,C)=(27,3), Expression follows:
+ +-----
+
+ +-----
+00452|Macro Name : "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`"
+ +-----
+00438|Macro Name : "|"
+ +-----
+
+ +-----
+00459|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00465|Body part 1: Seqnum=6, Pos(L,C)=(26,3), Expression follows:
+00466|
+00467|---- Start of Expression ----
+ +-----
+00450|Body part 1: Seqnum=2, Pos(L,C)=(7,3), Expression follows:
+00451|
+00452|---- Start of Expression ----
+00453|
+00454|----- Start Text Element -----
+00455|Text scrap[Grey]="The text of ordinary"
+00456|------ End Text Element ------
+00457|
+ +-----
+
+ +-----
+00476|------------------- Start of Macro Dump --------------------
+00477|Macro Name : "Ordinary"
+00478|Defined? : Yes.
+00479|Parameters : 0
+00480|Additive? : No.
+00481|Zero Calls? : No.
+00482|Many Calls? : No.
+00483|Output File?: No.
+00484|Automatic Line Directive Macro?: No.
+00485|Call list :
+00486|Macro body :
+00487|
+00488|--Start of List of Body Parts--
+00489|This macro has 1 body part.
+00490|Body part 1: Seqnum=1, Pos(L,C)=(4,3), Expression follows:
+00491|
+00492|---- Start of Expression ----
+00493|
+00494|----- Start Text Element -----
+00495|Text scrap[Grey]="The text of ordinary"
+00496|------ End Text Element ------
+00497|
+00498|----- End of Expression -----
+00499|
+00500|---End of List of Body Parts---
+00501|
+00502|-------------------- End of Macro Dump ---------------------
+00503|
+00504|
+00505|
+00506|------------------- Start of Macro Dump --------------------
+00507|Macro Name : "abcdefghijklmnopqrstuvwxyz{|}~"
+00508|Defined? : Yes.
+00509|Parameters : 0
+00510|Additive? : No.
+00511|Zero Calls? : No.
+00512|Many Calls? : No.
+00513|Output File?: No.
+00514|Automatic Line Directive Macro?: No.
+00515|Call list :
+00516|Macro body :
+00517|
+00518|--Start of List of Body Parts--
+00519|This macro has 1 body part.
+00520|Body part 1: Seqnum=7, Pos(L,C)=(27,3), Expression follows:
+00521|
+00522|---- Start of Expression ----
+00523|----- End of Expression -----
+00524|
+00525|---End of List of Body Parts---
+00526|
+00527|-------------------- End of Macro Dump ---------------------
+00528|
+00529|
+00530|
+00531|------------------- Start of Macro Dump --------------------
+00532|Macro Name : "|"
+00533|Defined? : Yes.
+00534|Parameters : 0
+00535|Additive? : No.
+00536|Zero Calls? : No.
+00537|Many Calls? : No.
+00538|Output File?: No.
+00539|Automatic Line Directive Macro?: No.
+ +-----
+00466|=========================== End of MACRO TABLE DUMP ============================
+00467|
+00468|
+00469|========================= Start of DOCUMENT LIST DUMP ==========================
+00470|
+00471|
+00472|TEXT COMPONENT: Pos(L,C)=(1,1).
+00473|
+00474|-- Start of Text Scrap List --
+00475|Text scrap[Grey]="PR04: Test the definition of ordinary macros.<010>
+00476|<010>
+00477|1. Test an ordinary macro definition.<010>
+00478|"
+00479|--- End of Text Scrap List ---
+00480|
+00481|
+00482|MACRO DEFINITION COMPONENT: Pos(L,C)=(4,1).
+00483|Part 1 of macro @<Ordinary@>.
+00484|
+00485|TEXT COMPONENT: Pos(L,C)=(4,39).
+00486|
+00487|-- Start of Text Scrap List --
+00488|Text scrap[Grey]="<010>
+00489|<010>
+00490|2. Test an ordinary definition using a quickname.<010>
+00491|"
+00492|--- End of Text Scrap List ---
+00493|
+00494|
+00495|MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+00496|Part 1 of macro @<|@>.
+00497|
+00498|TEXT COMPONENT: Pos(L,C)=(7,30).
+00499|
+00500|-- Start of Text Scrap List --
+00501|Text scrap[Grey]="<010>
+00502|<010>
+00503|3. Test a name that includes EOL.<010>
+00504|"
+00505|--- End of Text Scrap List ---
+00506|
+00507|
+00508|TYPESETTER DIRECTIVE COMPONENT:
+00509| Section "1", Section name="Error Recovery Point".
+00510|
+00511|TEXT COMPONENT: Pos(L,C)=(12,27).
+00512|
+00513|-- Start of Text Scrap List --
+00514|Text scrap[Grey]="<010>
+00515|<010>
+00516|4. Test the minimum length name (the empty name).<010>
+00517|"
+00518|--- End of Text Scrap List ---
+00519|
+00520|
+00521|MACRO DEFINITION COMPONENT: Pos(L,C)=(15,1).
+00522|Part 1 of macro @<@>.
+00523|
+00524|TEXT COMPONENT: Pos(L,C)=(15,60).
+00525|
+00526|-- Start of Text Scrap List --
+00527|Text scrap[Grey]="<010>
+00528|<010>
+00529|5. Test a name at the maximum name length limit (80).<010>
+ +-----
+
+ +-----
+00540|Call list :
+00541|Macro body :
+00542|
+00543|--Start of List of Body Parts--
+00544|This macro has 1 body part.
+00545|Body part 1: Seqnum=2, Pos(L,C)=(7,3), Expression follows:
+00546|
+00547|---- Start of Expression ----
+00548|
+00549|----- Start Text Element -----
+00550|Text scrap[Grey]="The text of ordinary"
+00551|------ End Text Element ------
+00552|
+00553|----- End of Expression -----
+00554|
+00555|---End of List of Body Parts---
+00556|
+00557|-------------------- End of Macro Dump ---------------------
+00558|
+00559|
+00560|
+00561|=========================== End of MACRO TABLE DUMP ============================
+00562|
+00563|
+00564|========================= Start of DOCUMENT LIST DUMP ==========================
+00565|
+00566|
+00567|TEXT COMPONENT: Pos(L,C)=(1,1).
+00568|
+00569|-- Start of Text Scrap List --
+00570|Text scrap[Grey]="PR04: Test the definition of ordinary macros.<010>
+00571|<010>
+00572|1. Test an ordinary macro definition.<010>
+ +-----
+00530|ONly the second of the two macros should generate an error.<010>
+ +-----
+
+ +-----
+00577|MACRO DEFINITION COMPONENT: Pos(L,C)=(4,1).
+00578|Part 1 of macro @<Ordinary@>.
+00579|
+00580|TEXT COMPONENT: Pos(L,C)=(4,39).
+00581|
+00582|-- Start of Text Scrap List --
+00583|Text scrap[Grey]="<010>
+00584|<010>
+00585|2. Test an ordinary definition using a quickname.<010>
+ +-----
+00535|MACRO DEFINITION COMPONENT: Pos(L,C)=(20,1).
+00536|Part 1 of macro @<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>.
+00537|
+00538|TEXT COMPONENT: Pos(L,C)=(20,91).
+00539|
+00540|-- Start of Text Scrap List --
+00541|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00590|MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+00591|Part 1 of macro @<|@>.
+00592|
+00593|TEXT COMPONENT: Pos(L,C)=(7,30).
+ +-----
+00546|TYPESETTER DIRECTIVE COMPONENT:
+00547| Section "2", Section name="Error Recovery Point".
+00548|
+00549|TEXT COMPONENT: Pos(L,C)=(22,27).
+ +-----
+
+ +-----
+00598|3. Test a name that includes EOL.<010>
+ +-----
+00554|6. Test names with all legal characters. There should be no errors.<010>
+ +-----
+
+ +-----
+00603|TYPESETTER DIRECTIVE COMPONENT:
+00604| Section "1", Section name="Error Recovery Point".
+00605|
+00606|TEXT COMPONENT: Pos(L,C)=(12,27).
+00607|
+00608|-- Start of Text Scrap List --
+00609|Text scrap[Grey]="<010>
+00610|<010>
+00611|4. Test the minimum length name (the empty name).<010>
+ +-----
+00559|MACRO DEFINITION COMPONENT: Pos(L,C)=(25,1).
+00560|Part 1 of macro @< !"#$%'()*+,-./0123456789:;<=>?@>.
+00561|
+00562|TEXT COMPONENT: Pos(L,C)=(25,42).
+00563|
+00564|-- Start of Text Scrap List --
+00565|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00616|MACRO DEFINITION COMPONENT: Pos(L,C)=(15,1).
+00617|Part 1 of macro @<@>.
+00618|
+00619|TEXT COMPONENT: Pos(L,C)=(15,60).
+00620|
+00621|-- Start of Text Scrap List --
+00622|Text scrap[Grey]="<010>
+00623|<010>
+00624|5. Test a name at the maximum name length limit (80).<010>
+00625|ONly the second of the two macros should generate an error.<010>
+ +-----
+00570|MACRO DEFINITION COMPONENT: Pos(L,C)=(26,1).
+00571|Part 1 of macro @<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>.
+00572|
+00573|TEXT COMPONENT: Pos(L,C)=(26,43).
+00574|
+00575|-- Start of Text Scrap List --
+00576|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00630|MACRO DEFINITION COMPONENT: Pos(L,C)=(20,1).
+00631|Part 1 of macro @<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>.
+00632|
+00633|TEXT COMPONENT: Pos(L,C)=(20,91).
+00634|
+00635|-- Start of Text Scrap List --
+00636|Text scrap[White]="<010>
+ +-----
+00581|MACRO DEFINITION COMPONENT: Pos(L,C)=(27,1).
+00582|Part 1 of macro @<abcdefghijklmnopqrstuvwxyz{|}~@>.
+00583|
+00584|TEXT COMPONENT: Pos(L,C)=(27,41).
+00585|
+00586|-- Start of Text Scrap List --
+00587|Text scrap[Grey]="<010>
+00588|<010>
+00589|7. Test a name that has inserted text sequences.<010>
+00590|<010>
+ +-----
+
+ +-----
+00641|TYPESETTER DIRECTIVE COMPONENT:
+00642| Section "2", Section name="Error Recovery Point".
+00643|
+00644|TEXT COMPONENT: Pos(L,C)=(22,27).
+00645|
+00646|-- Start of Text Scrap List --
+00647|Text scrap[Grey]="<010>
+00648|<010>
+00649|6. Test names with all legal characters. There should be no errors.<010>
+ +-----
+00595|MACRO DEFINITION COMPONENT: Pos(L,C)=(31,1).
+00596|Part 1 of macro @<A@@>.
+00597|
+00598|TEXT COMPONENT: Pos(L,C)=(31,23).
+00599|
+00600|-- Start of Text Scrap List --
+00601|Text scrap[White]="<010>
+00602|<010>
+00603|<010>
+ +-----
+
+ +-----
+00654|MACRO DEFINITION COMPONENT: Pos(L,C)=(25,1).
+00655|Part 1 of macro @< !"#$%'()*+,-./0123456789:;<=>?@>.
+00656|
+00657|TEXT COMPONENT: Pos(L,C)=(25,42).
+00658|
+00659|-- Start of Text Scrap List --
+00660|Text scrap[White]="<010>
+00661|"
+00662|--- End of Text Scrap List ---
+00663|
+00664|
+00665|MACRO DEFINITION COMPONENT: Pos(L,C)=(26,1).
+00666|Part 1 of macro @<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>.
+00667|
+00668|TEXT COMPONENT: Pos(L,C)=(26,43).
+00669|
+00670|-- Start of Text Scrap List --
+00671|Text scrap[White]="<010>
+00672|"
+00673|--- End of Text Scrap List ---
+00674|
+00675|
+00676|MACRO DEFINITION COMPONENT: Pos(L,C)=(27,1).
+00677|Part 1 of macro @<abcdefghijklmnopqrstuvwxyz{|}~@>.
+00678|
+00679|TEXT COMPONENT: Pos(L,C)=(27,41).
+00680|
+00681|-- Start of Text Scrap List --
+00682|Text scrap[Grey]="<010>
+00683|<010>
+00684|7. Test a name that has inserted text sequences.<010>
+00685|<010>
+00686|"
+00687|--- End of Text Scrap List ---
+00688|
+00689|
+00690|MACRO DEFINITION COMPONENT: Pos(L,C)=(31,1).
+00691|Part 1 of macro @<A@@>.
+00692|
+00693|TEXT COMPONENT: Pos(L,C)=(31,23).
+00694|
+00695|-- Start of Text Scrap List --
+00696|Text scrap[White]="<010>
+00697|<010>
+00698|<010>
+00699|"
+00700|--- End of Text Scrap List ---
+00701|
+00702|
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/pr05.lis"
+ with "/usr/var/tmp/funnelweb/answers/pr05.lis".
+
+ +-----
+00375|Macro Name : "#file"
+ +-----
+00375|Macro Name : "Sloth"
+ +-----
+
+ +-----
+00379|Zero Calls? : Yes.
+00380|Many Calls? : Yes.
+00381|Output File?: No.
+00382|Automatic Line Directive Macro?: No.
+ +-----
+00379|Zero Calls? : No.
+00380|Many Calls? : No.
+00381|Output File?: No.
+ +-----
+
+ +-----
+00388|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+ +-----
+00387|Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
+ +-----
+
+ +-----
+00392|--- Start Special Function ---
+00393|---- End Special Function ----
+ +-----
+00391|----- Start Text Element -----
+00392|Text scrap[Grey]="Slothtext"
+00393|------ End Text Element ------
+ +-----
+
+ +-----
+00404|Macro Name : "#line"
+ +-----
+00404|Macro Name : "Sloth a"
+00405|Defined? : No.
+00406|-------------------- End of Macro Dump ---------------------
+00407|
+00408|
+00409|
+00410|------------------- Start of Macro Dump --------------------
+00411|Macro Name : "Sloth b"
+ +-----
+
+ +-----
+00408|Zero Calls? : Yes.
+00409|Many Calls? : Yes.
+00410|Output File?: No.
+00411|Automatic Line Directive Macro?: No.
+ +-----
+00415|Zero Calls? : No.
+00416|Many Calls? : No.
+00417|Output File?: No.
+ +-----
+
+ +-----
+00416|This macro has 1 body part.
+00417|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00418|
+00419|---- Start of Expression ----
+00420|
+00421|--- Start Special Function ---
+00422|---- End Special Function ----
+00423|
+00424|----- End of Expression -----
+00425|
+ +-----
+00422|This macro has 0 body parts.
+ +-----
+
+ +-----
+00433|Macro Name : "#timestamp"
+ +-----
+00430|Macro Name : "Sloth c"
+00431|Defined? : No.
+00432|-------------------- End of Macro Dump ---------------------
+00433|
+00434|
+00435|
+00436|------------------- Start of Macro Dump --------------------
+00437|Macro Name : "Sloth d"
+ +-----
+
+ +-----
+00437|Zero Calls? : Yes.
+00438|Many Calls? : Yes.
+00439|Output File?: No.
+00440|Automatic Line Directive Macro?: No.
+ +-----
+00441|Zero Calls? : No.
+00442|Many Calls? : No.
+00443|Output File?: No.
+ +-----
+
+ +-----
+00445|This macro has 1 body part.
+00446|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00447|
+00448|---- Start of Expression ----
+00449|
+00450|--- Start Special Function ---
+00451|---- End Special Function ----
+00452|
+00453|----- End of Expression -----
+00454|
+ +-----
+00448|This macro has 0 body parts.
+ +-----
+
+ +-----
+00462|Macro Name : "Sloth"
+00463|Defined? : Yes.
+00464|Parameters : 0
+ +-----
+00456|Macro Name : "Sloth e"
+00457|Defined? : Yes.
+00458|Parameters : 9
+ +-----
+
+ +-----
+00469|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00474|This macro has 1 body part.
+00475|Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
+00476|
+00477|---- Start of Expression ----
+00478|
+00479|----- Start Text Element -----
+00480|Text scrap[Grey]="Slothtext"
+00481|------ End Text Element ------
+00482|
+00483|----- End of Expression -----
+00484|
+ +-----
+00467|This macro has 0 body parts.
+ +-----
+
+ +-----
+00492|Macro Name : "Sloth a"
+00493|Defined? : No.
+00494|-------------------- End of Macro Dump ---------------------
+00495|
+00496|
+00497|
+00498|------------------- Start of Macro Dump --------------------
+00499|Macro Name : "Sloth b"
+00500|Defined? : Yes.
+00501|Parameters : 0
+ +-----
+00475|Macro Name : "Sloth with 2"
+00476|Defined? : Yes.
+00477|Parameters : 2
+ +-----
+
+ +-----
+00506|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00511|This macro has 0 body parts.
+ +-----
+00486|This macro has 1 body part.
+00487|Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
+00488|
+00489|---- Start of Expression ----
+00490|
+00491|----- Start Text Element -----
+00492|Text scrap[Grey]="Slothtext"
+00493|------ End Text Element ------
+00494|
+00495|----- End of Expression -----
+00496|
+ +-----
+
+ +-----
+00519|Macro Name : "Sloth c"
+00520|Defined? : No.
+00521|-------------------- End of Macro Dump ---------------------
+00522|
+00523|
+00524|
+00525|------------------- Start of Macro Dump --------------------
+00526|Macro Name : "Sloth d"
+00527|Defined? : Yes.
+00528|Parameters : 0
+ +-----
+00504|Macro Name : "Sloth with 3"
+00505|Defined? : Yes.
+00506|Parameters : 3
+ +-----
+
+ +-----
+00533|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00538|This macro has 0 body parts.
+ +-----
+00515|This macro has 1 body part.
+00516|Body part 1: Seqnum=4, Pos(L,C)=(14,3), Expression follows:
+00517|
+00518|---- Start of Expression ----
+00519|
+00520|----- Start Text Element -----
+00521|Text scrap[Grey]="Slothtext"
+00522|------ End Text Element ------
+00523|
+00524|----- End of Expression -----
+00525|
+ +-----
+
+ +-----
+00546|Macro Name : "Sloth e"
+00547|Defined? : Yes.
+00548|Parameters : 9
+ +-----
+00533|Macro Name : "Sloth with 4"
+00534|Defined? : Yes.
+00535|Parameters : 4
+ +-----
+
+ +-----
+00553|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00558|This macro has 0 body parts.
+ +-----
+00544|This macro has 1 body part.
+00545|Body part 1: Seqnum=5, Pos(L,C)=(15,3), Expression follows:
+00546|
+00547|---- Start of Expression ----
+00548|
+00549|----- Start Text Element -----
+00550|Text scrap[Grey]="Slothtext"
+00551|------ End Text Element ------
+00552|
+00553|----- End of Expression -----
+00554|
+ +-----
+
+ +-----
+00566|Macro Name : "Sloth with 2"
+00567|Defined? : Yes.
+00568|Parameters : 2
+ +-----
+00562|Macro Name : "Sloth with 5"
+00563|Defined? : Yes.
+00564|Parameters : 5
+ +-----
+
+ +-----
+00573|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00579|Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
+ +-----
+00574|Body part 1: Seqnum=6, Pos(L,C)=(16,3), Expression follows:
+ +-----
+
+ +-----
+00596|Macro Name : "Sloth with 3"
+00597|Defined? : Yes.
+00598|Parameters : 3
+ +-----
+00591|Macro Name : "Sloth with 6"
+00592|Defined? : Yes.
+00593|Parameters : 6
+ +-----
+
+ +-----
+00603|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00609|Body part 1: Seqnum=4, Pos(L,C)=(14,3), Expression follows:
+ +-----
+00603|Body part 1: Seqnum=7, Pos(L,C)=(17,3), Expression follows:
+ +-----
+
+ +-----
+00626|Macro Name : "Sloth with 4"
+00627|Defined? : Yes.
+00628|Parameters : 4
+ +-----
+00620|Macro Name : "Sloth with 7"
+00621|Defined? : Yes.
+00622|Parameters : 7
+ +-----
+
+ +-----
+00633|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00639|Body part 1: Seqnum=5, Pos(L,C)=(15,3), Expression follows:
+ +-----
+00632|Body part 1: Seqnum=8, Pos(L,C)=(18,3), Expression follows:
+ +-----
+
+ +-----
+00656|Macro Name : "Sloth with 5"
+00657|Defined? : Yes.
+00658|Parameters : 5
+ +-----
+00649|Macro Name : "Sloth with 8"
+00650|Defined? : Yes.
+00651|Parameters : 8
+ +-----
+
+ +-----
+00663|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00669|Body part 1: Seqnum=6, Pos(L,C)=(16,3), Expression follows:
+ +-----
+00661|Body part 1: Seqnum=9, Pos(L,C)=(19,3), Expression follows:
+ +-----
+
+ +-----
+00686|Macro Name : "Sloth with 6"
+00687|Defined? : Yes.
+00688|Parameters : 6
+ +-----
+00678|Macro Name : "Sloth with 9"
+00679|Defined? : Yes.
+00680|Parameters : 9
+ +-----
+
+ +-----
+00693|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00699|Body part 1: Seqnum=7, Pos(L,C)=(17,3), Expression follows:
+ +-----
+00690|Body part 1: Seqnum=10, Pos(L,C)=(20,3), Expression follows:
+ +-----
+
+ +-----
+00716|Macro Name : "Sloth with 7"
+00717|Defined? : Yes.
+00718|Parameters : 7
+ +-----
+00707|Macro Name : "Sloth with one"
+00708|Defined? : Yes.
+00709|Parameters : 1
+ +-----
+
+ +-----
+00723|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00729|Body part 1: Seqnum=8, Pos(L,C)=(18,3), Expression follows:
+ +-----
+00719|Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
+ +-----
+
+ +-----
+00745|------------------- Start of Macro Dump --------------------
+00746|Macro Name : "Sloth with 8"
+00747|Defined? : Yes.
+00748|Parameters : 8
+00749|Additive? : No.
+00750|Zero Calls? : No.
+00751|Many Calls? : No.
+00752|Output File?: No.
+00753|Automatic Line Directive Macro?: No.
+00754|Call list :
+00755|Macro body :
+00756|
+00757|--Start of List of Body Parts--
+00758|This macro has 1 body part.
+00759|Body part 1: Seqnum=9, Pos(L,C)=(19,3), Expression follows:
+00760|
+00761|---- Start of Expression ----
+00762|
+00763|----- Start Text Element -----
+00764|Text scrap[Grey]="Slothtext"
+00765|------ End Text Element ------
+00766|
+00767|----- End of Expression -----
+00768|
+00769|---End of List of Body Parts---
+00770|
+00771|-------------------- End of Macro Dump ---------------------
+00772|
+00773|
+00774|
+00775|------------------- Start of Macro Dump --------------------
+00776|Macro Name : "Sloth with 9"
+00777|Defined? : Yes.
+00778|Parameters : 9
+00779|Additive? : No.
+00780|Zero Calls? : No.
+00781|Many Calls? : No.
+00782|Output File?: No.
+00783|Automatic Line Directive Macro?: No.
+00784|Call list :
+00785|Macro body :
+00786|
+00787|--Start of List of Body Parts--
+00788|This macro has 1 body part.
+00789|Body part 1: Seqnum=10, Pos(L,C)=(20,3), Expression follows:
+00790|
+00791|---- Start of Expression ----
+00792|
+00793|----- Start Text Element -----
+00794|Text scrap[Grey]="Slothtext"
+00795|------ End Text Element ------
+00796|
+00797|----- End of Expression -----
+00798|
+00799|---End of List of Body Parts---
+00800|
+00801|-------------------- End of Macro Dump ---------------------
+00802|
+00803|
+00804|
+00805|------------------- Start of Macro Dump --------------------
+00806|Macro Name : "Sloth with one"
+00807|Defined? : Yes.
+00808|Parameters : 1
+ +-----
+00735|=========================== End of MACRO TABLE DUMP ============================
+00736|
+00737|
+00738|========================= Start of DOCUMENT LIST DUMP ==========================
+00739|
+00740|
+00741|TEXT COMPONENT: Pos(L,C)=(1,1).
+00742|
+00743|-- Start of Text Scrap List --
+00744|Text scrap[Grey]="PR05: Test the parsing of formal parameter lists.<010>
+00745|<010>
+00746|First trip the parser so we don't get past the parser.<010>
+00747|"
+00748|--- End of Text Scrap List ---
+00749|
+00750|
+00751|TEXT COMPONENT: Pos(L,C)=(4,3).
+00752|
+00753|-- Start of Text Scrap List --
+00754|Text scrap[Grey]="<010>
+00755|<010>
+00756|1. Test macro definition with no formal parameters.<010>
+00757|"
+00758|--- End of Text Scrap List ---
+00759|
+00760|
+00761|MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+00762|Part 1 of macro @<Sloth@>.
+00763|
+00764|TEXT COMPONENT: Pos(L,C)=(7,25).
+00765|
+00766|-- Start of Text Scrap List --
+00767|Text scrap[Grey]="<010>
+00768|<010>
+00769|2. Test macro definition with one formal parameter.<010>
+00770|"
+00771|--- End of Text Scrap List ---
+00772|
+00773|
+00774|MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
+00775|Part 1 of macro @<Sloth with one@>.
+00776|
+00777|TEXT COMPONENT: Pos(L,C)=(10,40).
+00778|
+00779|-- Start of Text Scrap List --
+00780|Text scrap[Grey]="<010>
+00781|<010>
+00782|3. Test macro definition with many formal parameters.<010>
+00783|"
+00784|--- End of Text Scrap List ---
+00785|
+00786|
+00787|MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
+00788|Part 1 of macro @<Sloth with 2@>.
+00789|
+00790|TEXT COMPONENT: Pos(L,C)=(13,38).
+00791|
+00792|-- Start of Text Scrap List --
+00793|Text scrap[White]="<010>
+00794|"
+00795|--- End of Text Scrap List ---
+00796|
+00797|
+00798|MACRO DEFINITION COMPONENT: Pos(L,C)=(14,1).
+ +-----
+
+ +-----
+00809|Additive? : No.
+00810|Zero Calls? : No.
+00811|Many Calls? : No.
+00812|Output File?: No.
+00813|Automatic Line Directive Macro?: No.
+00814|Call list :
+00815|Macro body :
+00816|
+00817|--Start of List of Body Parts--
+00818|This macro has 1 body part.
+00819|Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
+00820|
+00821|---- Start of Expression ----
+00822|
+00823|----- Start Text Element -----
+00824|Text scrap[Grey]="Slothtext"
+00825|------ End Text Element ------
+00826|
+00827|----- End of Expression -----
+00828|
+00829|---End of List of Body Parts---
+00830|
+00831|-------------------- End of Macro Dump ---------------------
+00832|
+00833|
+00834|
+00835|=========================== End of MACRO TABLE DUMP ============================
+00836|
+00837|
+00838|========================= Start of DOCUMENT LIST DUMP ==========================
+00839|
+00840|
+00841|TEXT COMPONENT: Pos(L,C)=(1,1).
+00842|
+00843|-- Start of Text Scrap List --
+00844|Text scrap[Grey]="PR05: Test the parsing of formal parameter lists.<010>
+00845|<010>
+00846|First trip the parser so we don't get past the parser.<010>
+ +-----
+00799|Part 1 of macro @<Sloth with 3@>.
+00800|
+00801|TEXT COMPONENT: Pos(L,C)=(14,38).
+00802|
+00803|-- Start of Text Scrap List --
+00804|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00851|TEXT COMPONENT: Pos(L,C)=(4,3).
+00852|
+00853|-- Start of Text Scrap List --
+00854|Text scrap[Grey]="<010>
+00855|<010>
+00856|1. Test macro definition with no formal parameters.<010>
+ +-----
+00809|MACRO DEFINITION COMPONENT: Pos(L,C)=(15,1).
+00810|Part 1 of macro @<Sloth with 4@>.
+00811|
+00812|TEXT COMPONENT: Pos(L,C)=(15,38).
+00813|
+00814|-- Start of Text Scrap List --
+00815|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00861|MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+00862|Part 1 of macro @<Sloth@>.
+00863|
+00864|TEXT COMPONENT: Pos(L,C)=(7,25).
+00865|
+00866|-- Start of Text Scrap List --
+00867|Text scrap[Grey]="<010>
+00868|<010>
+00869|2. Test macro definition with one formal parameter.<010>
+ +-----
+00820|MACRO DEFINITION COMPONENT: Pos(L,C)=(16,1).
+00821|Part 1 of macro @<Sloth with 5@>.
+00822|
+00823|TEXT COMPONENT: Pos(L,C)=(16,38).
+00824|
+00825|-- Start of Text Scrap List --
+00826|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00874|MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
+00875|Part 1 of macro @<Sloth with one@>.
+00876|
+00877|TEXT COMPONENT: Pos(L,C)=(10,40).
+00878|
+00879|-- Start of Text Scrap List --
+00880|Text scrap[Grey]="<010>
+00881|<010>
+00882|3. Test macro definition with many formal parameters.<010>
+ +-----
+00831|MACRO DEFINITION COMPONENT: Pos(L,C)=(17,1).
+00832|Part 1 of macro @<Sloth with 6@>.
+00833|
+00834|TEXT COMPONENT: Pos(L,C)=(17,38).
+00835|
+00836|-- Start of Text Scrap List --
+00837|Text scrap[White]="<010>
+ +-----
+
+ +-----
+00887|MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
+00888|Part 1 of macro @<Sloth with 2@>.
+00889|
+00890|TEXT COMPONENT: Pos(L,C)=(13,38).
+ +-----
+00842|MACRO DEFINITION COMPONENT: Pos(L,C)=(18,1).
+00843|Part 1 of macro @<Sloth with 7@>.
+00844|
+00845|TEXT COMPONENT: Pos(L,C)=(18,38).
+ +-----
+
+ +-----
+00898|MACRO DEFINITION COMPONENT: Pos(L,C)=(14,1).
+00899|Part 1 of macro @<Sloth with 3@>.
+00900|
+00901|TEXT COMPONENT: Pos(L,C)=(14,38).
+ +-----
+00853|MACRO DEFINITION COMPONENT: Pos(L,C)=(19,1).
+00854|Part 1 of macro @<Sloth with 8@>.
+00855|
+00856|TEXT COMPONENT: Pos(L,C)=(19,38).
+ +-----
+
+ +-----
+00909|MACRO DEFINITION COMPONENT: Pos(L,C)=(15,1).
+00910|Part 1 of macro @<Sloth with 4@>.
+00911|
+00912|TEXT COMPONENT: Pos(L,C)=(15,38).
+00913|
+00914|-- Start of Text Scrap List --
+00915|Text scrap[White]="<010>
+ +-----
+00864|MACRO DEFINITION COMPONENT: Pos(L,C)=(20,1).
+00865|Part 1 of macro @<Sloth with 9@>.
+00866|
+00867|TEXT COMPONENT: Pos(L,C)=(20,38).
+00868|
+00869|-- Start of Text Scrap List --
+00870|Text scrap[Grey]="<010>
+00871|<010>
+00872|4. Test with syntax errors in the parameter list.<010>
+00873|<010>
+ +-----
+
+ +-----
+00920|MACRO DEFINITION COMPONENT: Pos(L,C)=(16,1).
+00921|Part 1 of macro @<Sloth with 5@>.
+00922|
+00923|TEXT COMPONENT: Pos(L,C)=(16,38).
+ +-----
+00878|TYPESETTER DIRECTIVE COMPONENT:
+00879| Section "1", Section name="Error recovery point".
+00880|
+00881|TEXT COMPONENT: Pos(L,C)=(25,27).
+ +-----
+
+ +-----
+ +-----
+00885|<010>
+ +-----
+
+ +-----
+00931|MACRO DEFINITION COMPONENT: Pos(L,C)=(17,1).
+00932|Part 1 of macro @<Sloth with 6@>.
+00933|
+00934|TEXT COMPONENT: Pos(L,C)=(17,38).
+ +-----
+00890|TYPESETTER DIRECTIVE COMPONENT:
+00891| Section "2", Section name="Error recovery point".
+00892|
+00893|TEXT COMPONENT: Pos(L,C)=(28,27).
+ +-----
+
+ +-----
+ +-----
+00897|<010>
+ +-----
+
+ +-----
+00942|MACRO DEFINITION COMPONENT: Pos(L,C)=(18,1).
+00943|Part 1 of macro @<Sloth with 7@>.
+00944|
+00945|TEXT COMPONENT: Pos(L,C)=(18,38).
+ +-----
+00902|TYPESETTER DIRECTIVE COMPONENT:
+00903| Section "3", Section name="Error recovery point".
+00904|
+00905|TEXT COMPONENT: Pos(L,C)=(31,27).
+ +-----
+
+ +-----
+ +-----
+00909|<010>
+ +-----
+
+ +-----
+00953|MACRO DEFINITION COMPONENT: Pos(L,C)=(19,1).
+00954|Part 1 of macro @<Sloth with 8@>.
+00955|
+00956|TEXT COMPONENT: Pos(L,C)=(19,38).
+ +-----
+00914|TYPESETTER DIRECTIVE COMPONENT:
+00915| Section "4", Section name="Error recovery point".
+00916|
+00917|TEXT COMPONENT: Pos(L,C)=(34,27).
+ +-----
+
+ +-----
+ +-----
+00921|<010>
+ +-----
+
+ +-----
+00964|MACRO DEFINITION COMPONENT: Pos(L,C)=(20,1).
+00965|Part 1 of macro @<Sloth with 9@>.
+00966|
+00967|TEXT COMPONENT: Pos(L,C)=(20,38).
+00968|
+00969|-- Start of Text Scrap List --
+00970|Text scrap[Grey]="<010>
+00971|<010>
+00972|4. Test with syntax errors in the parameter list.<010>
+ +-----
+00926|TYPESETTER DIRECTIVE COMPONENT:
+00927| Section "5", Section name="Error recovery point".
+00928|
+00929|TEXT COMPONENT: Pos(L,C)=(37,27).
+00930|
+00931|-- Start of Text Scrap List --
+00932|Text scrap[White]="<010>
+00933|<010>
+00934|<010>
+ +-----
+
+ +-----
+00978|TYPESETTER DIRECTIVE COMPONENT:
+00979| Section "1", Section name="Error recovery point".
+00980|
+00981|TEXT COMPONENT: Pos(L,C)=(25,27).
+00982|
+00983|-- Start of Text Scrap List --
+00984|Text scrap[White]="<010>
+00985|<010>
+00986|"
+00987|--- End of Text Scrap List ---
+00988|
+00989|
+00990|TYPESETTER DIRECTIVE COMPONENT:
+00991| Section "2", Section name="Error recovery point".
+00992|
+00993|TEXT COMPONENT: Pos(L,C)=(28,27).
+00994|
+00995|-- Start of Text Scrap List --
+00996|Text scrap[White]="<010>
+00997|<010>
+00998|"
+00999|--- End of Text Scrap List ---
+01000|
+01001|
+01002|TYPESETTER DIRECTIVE COMPONENT:
+01003| Section "3", Section name="Error recovery point".
+01004|
+01005|TEXT COMPONENT: Pos(L,C)=(31,27).
+01006|
+01007|-- Start of Text Scrap List --
+01008|Text scrap[White]="<010>
+01009|<010>
+01010|"
+01011|--- End of Text Scrap List ---
+01012|
+01013|
+01014|TYPESETTER DIRECTIVE COMPONENT:
+01015| Section "4", Section name="Error recovery point".
+01016|
+01017|TEXT COMPONENT: Pos(L,C)=(34,27).
+01018|
+01019|-- Start of Text Scrap List --
+01020|Text scrap[White]="<010>
+01021|<010>
+01022|"
+01023|--- End of Text Scrap List ---
+01024|
+01025|
+01026|TYPESETTER DIRECTIVE COMPONENT:
+01027| Section "5", Section name="Error recovery point".
+01028|
+01029|TEXT COMPONENT: Pos(L,C)=(37,27).
+01030|
+01031|-- Start of Text Scrap List --
+01032|Text scrap[White]="<010>
+01033|<010>
+01034|<010>
+01035|<010>
+01036|"
+01037|--- End of Text Scrap List ---
+01038|
+01039|
+01040|========================== End of DOCUMENT LIST DUMP ===========================
+01041|
+ +-----
+00940|========================== End of DOCUMENT LIST DUMP ===========================
+00941|
+00942|
+00943|Global Local| Input File
+00944|------------+-------------------------------------------------------------------
+00945| 1 1| PR05: Test the parsing of formal parameter lists.
+00946| 2 2|
+00947| 3 3| First trip the parser so we don't get past the parser.
+00948| 4 4| @>
+00949| Error|.^The parser was at the top level and was expecting
+00950| |.^one of: {Directive, Text, Macro definition, EOF}.
+00951| 5 5|
+00952| 6 6| 1. Test macro definition with no formal parameters.
+00953| 7 7| @$@<Sloth@>@{Slothtext@}
+00954| 8 8|
+00955| 9 9| 2. Test macro definition with one formal parameter.
+00956| 10 10| @$@<Sloth with one@>@(@1@)@{Slothtext@}
+00957| 11 11|
+00958| 12 12| 3. Test macro definition with many formal parameters.
+00959| 13 13| @$@<Sloth with 2@>@(@2@)@{Slothtext@}
+00960| 14 14| @$@<Sloth with 3@>@(@3@)@{Slothtext@}
+00961| 15 15| @$@<Sloth with 4@>@(@4@)@{Slothtext@}
+00962| 16 16| @$@<Sloth with 5@>@(@5@)@{Slothtext@}
+00963| 17 17| @$@<Sloth with 6@>@(@6@)@{Slothtext@}
+00964| 18 18| @$@<Sloth with 7@>@(@7@)@{Slothtext@}
+00965| 19 19| @$@<Sloth with 8@>@(@8@)@{Slothtext@}
+00966| 20 20| @$@<Sloth with 9@>@(@9@)@{Slothtext@}
+00967| 21 21|
+00968| 22 22| 4. Test with syntax errors in the parameter list.
+00969| 23 23|
+00970| 24 24| @$@<Sloth a@>@(@+@9@)@{Slothtext@}
+00971| Error|................^Expecting one of [@1..@9].
+00972| |................^Skipping after error to the next major construct...
+00973| 25 25| @A@<Error recovery point@>
+00974| |.^...skipped to here after the error.
+00975| 26 26|
+00976| 27 27| @$@<Sloth b@>@9@)@{Slothtext@}
+00977| Error|..............^Expecting '@{'.
+00978| |..............^Skipping after error to the next major construct...
+00979| 28 28| @A@<Error recovery point@>
+00980| |.^...skipped to here after the error.
+00981| 29 29|
+00982| 30 30| @$@<Sloth c@>@(9@)@{Slothtext@}
+00983| Error|................^Expecting one of [@1..@9].
+00984| |................^Skipping after error to the next major construct...
+00985| 31 31| @A@<Error recovery point@>
+00986| |.^...skipped to here after the error.
+00987| 32 32|
+00988| 33 33| @$@<Sloth d@>@9@)@{Slothtext@}
+00989| Error|..............^Expecting '@{'.
+00990| |..............^Skipping after error to the next major construct...
+00991| 34 34| @A@<Error recovery point@>
+00992| |.^...skipped to here after the error.
+00993| 35 35|
+00994| 36 36| @$@<Sloth e@>@(@9@)@)@{Slothtext@}
+00995| Error|....................^Expecting '@{'.
+00996| |....................^Skipping after error to the next major construct...
+00997| 37 37| @A@<Error recovery point@>
+00998| |.^...skipped to here after the error.
+00999| 38 38|
+01000| 39 39|
+01001| 40 40|
+01002| | <End-Of-File>
+01003|------------+-------------------------------------------------------------------
+ +-----
+
+ +-----
+01043|Global Local| Input File
+01044|------------+-------------------------------------------------------------------
+01045| 1 1| PR05: Test the parsing of formal parameter lists.
+01046| 2 2|
+01047| 3 3| First trip the parser so we don't get past the parser.
+01048| 4 4| @>
+01049| Error|.^The parser was at the top level and was expecting
+01050| |.^one of: {Directive, Text, Macro definition, EOF}.
+01051| 5 5|
+01052| 6 6| 1. Test macro definition with no formal parameters.
+01053| 7 7| @$@<Sloth@>@{Slothtext@}
+01054| 8 8|
+01055| 9 9| 2. Test macro definition with one formal parameter.
+01056| 10 10| @$@<Sloth with one@>@(@1@)@{Slothtext@}
+01057| 11 11|
+01058| 12 12| 3. Test macro definition with many formal parameters.
+01059| 13 13| @$@<Sloth with 2@>@(@2@)@{Slothtext@}
+01060| 14 14| @$@<Sloth with 3@>@(@3@)@{Slothtext@}
+01061| 15 15| @$@<Sloth with 4@>@(@4@)@{Slothtext@}
+01062| 16 16| @$@<Sloth with 5@>@(@5@)@{Slothtext@}
+01063| 17 17| @$@<Sloth with 6@>@(@6@)@{Slothtext@}
+01064| 18 18| @$@<Sloth with 7@>@(@7@)@{Slothtext@}
+01065| 19 19| @$@<Sloth with 8@>@(@8@)@{Slothtext@}
+01066| 20 20| @$@<Sloth with 9@>@(@9@)@{Slothtext@}
+01067| 21 21|
+01068| 22 22| 4. Test with syntax errors in the parameter list.
+01069| 23 23|
+01070| 24 24| @$@<Sloth a@>@(@+@9@)@{Slothtext@}
+01071| Error|................^Expecting one of [@1..@9].
+01072| |................^Skipping after error to the next major construct...
+01073| 25 25| @A@<Error recovery point@>
+01074| |.^...skipped to here after the error.
+01075| 26 26|
+01076| 27 27| @$@<Sloth b@>@9@)@{Slothtext@}
+01077| Error|..............^Expecting '@{'.
+01078| |..............^Skipping after error to the next major construct...
+01079| 28 28| @A@<Error recovery point@>
+01080| |.^...skipped to here after the error.
+01081| 29 29|
+01082| 30 30| @$@<Sloth c@>@(9@)@{Slothtext@}
+01083| Error|................^Expecting one of [@1..@9].
+01084| |................^Skipping after error to the next major construct...
+01085| 31 31| @A@<Error recovery point@>
+01086| |.^...skipped to here after the error.
+01087| 32 32|
+01088| 33 33| @$@<Sloth d@>@9@)@{Slothtext@}
+01089| Error|..............^Expecting '@{'.
+01090| |..............^Skipping after error to the next major construct...
+01091| 34 34| @A@<Error recovery point@>
+01092| |.^...skipped to here after the error.
+01093| 35 35|
+01094| 36 36| @$@<Sloth e@>@(@9@)@)@{Slothtext@}
+01095| Error|....................^Expecting '@{'.
+01096| |....................^Skipping after error to the next major construct...
+01097| 37 37| @A@<Error recovery point@>
+01098| |.^...skipped to here after the error.
+01099| 38 38|
+01100| 39 39|
+01101| 40 40|
+01102| | <End-Of-File>
+01103|------------+-------------------------------------------------------------------
+01104|
+01105|There were 6 Errors.
+ +-----
+01005|There were 6 Errors.
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/pr06.lis"
+ with "/usr/var/tmp/funnelweb/answers/pr06.lis".
+
+ +-----
+00305|Macro Name : "#file"
+ +-----
+00305|Macro Name : "Sloth"
+ +-----
+
+ +-----
+00309|Zero Calls? : Yes.
+00310|Many Calls? : Yes.
+00311|Output File?: No.
+00312|Automatic Line Directive Macro?: No.
+ +-----
+00309|Zero Calls? : No.
+00310|Many Calls? : No.
+00311|Output File?: No.
+ +-----
+
+ +-----
+00318|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+ +-----
+00317|Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
+ +-----
+
+ +-----
+00322|--- Start Special Function ---
+00323|---- End Special Function ----
+ +-----
+00321|----- Start Text Element -----
+00322|Text scrap[Grey]="No zero and no many in this macro"
+00323|------ End Text Element ------
+ +-----
+
+ +-----
+00334|Macro Name : "#line"
+ +-----
+00334|Macro Name : "Sloth a"
+00335|Defined? : No.
+00336|-------------------- End of Macro Dump ---------------------
+00337|
+00338|
+00339|
+00340|------------------- Start of Macro Dump --------------------
+00341|Macro Name : "Sloth b"
+ +-----
+
+ +-----
+00339|Many Calls? : Yes.
+00340|Output File?: No.
+00341|Automatic Line Directive Macro?: No.
+ +-----
+00346|Many Calls? : No.
+00347|Output File?: No.
+ +-----
+
+ +-----
+00346|This macro has 1 body part.
+00347|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00348|
+00349|---- Start of Expression ----
+00350|
+00351|--- Start Special Function ---
+00352|---- End Special Function ----
+00353|
+00354|----- End of Expression -----
+00355|
+ +-----
+00352|This macro has 0 body parts.
+ +-----
+
+ +-----
+00363|Macro Name : "#timestamp"
+ +-----
+00360|Macro Name : "Sloth d"
+00361|Defined? : No.
+00362|-------------------- End of Macro Dump ---------------------
+00363|
+00364|
+00365|
+00366|------------------- Start of Macro Dump --------------------
+00367|Macro Name : "Sloth many"
+ +-----
+
+ +-----
+00367|Zero Calls? : Yes.
+00368|Many Calls? : Yes.
+00369|Output File?: No.
+00370|Automatic Line Directive Macro?: No.
+ +-----
+00371|Zero Calls? : No.
+00372|Many Calls? : Yes.
+00373|Output File?: No.
+ +-----
+
+ +-----
+00376|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+ +-----
+00379|Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
+ +-----
+
+ +-----
+00380|--- Start Special Function ---
+00381|---- End Special Function ----
+ +-----
+00383|----- Start Text Element -----
+00384|Text scrap[Grey]="Can be called from 1 to infinity times."
+00385|------ End Text Element ------
+ +-----
+
+ +-----
+00392|Macro Name : "Sloth"
+ +-----
+00396|Macro Name : "Sloth manyzero"
+ +-----
+
+ +-----
+00397|Many Calls? : No.
+00398|Output File?: No.
+00399|Automatic Line Directive Macro?: No.
+ +-----
+00401|Many Calls? : Yes.
+00402|Output File?: No.
+ +-----
+
+ +-----
+00404|This macro has 1 body part.
+00405|Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
+00406|
+00407|---- Start of Expression ----
+00408|
+00409|----- Start Text Element -----
+00410|Text scrap[Grey]="No zero and no many in this macro"
+00411|------ End Text Element ------
+00412|
+00413|----- End of Expression -----
+00414|
+ +-----
+00407|This macro has 0 body parts.
+ +-----
+
+ +-----
+00422|Macro Name : "Sloth a"
+00423|Defined? : No.
+00424|-------------------- End of Macro Dump ---------------------
+00425|
+00426|
+00427|
+00428|------------------- Start of Macro Dump --------------------
+00429|Macro Name : "Sloth b"
+ +-----
+00415|Macro Name : "Sloth zero"
+ +-----
+
+ +-----
+00436|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00441|This macro has 0 body parts.
+ +-----
+00426|This macro has 1 body part.
+00427|Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
+00428|
+00429|---- Start of Expression ----
+00430|
+00431|----- Start Text Element -----
+00432|Text scrap[Grey]="Can be called from 0 to 1 times."
+00433|------ End Text Element ------
+00434|
+00435|----- End of Expression -----
+00436|
+ +-----
+
+ +-----
+00449|Macro Name : "Sloth d"
+00450|Defined? : No.
+00451|-------------------- End of Macro Dump ---------------------
+00452|
+00453|
+00454|
+00455|------------------- Start of Macro Dump --------------------
+00456|Macro Name : "Sloth many"
+ +-----
+00444|Macro Name : "Sloth zeromany"
+ +-----
+
+ +-----
+00460|Zero Calls? : No.
+00461|Many Calls? : Yes.
+00462|Output File?: No.
+00463|Automatic Line Directive Macro?: No.
+ +-----
+00448|Zero Calls? : Yes.
+00449|Many Calls? : Yes.
+00450|Output File?: No.
+ +-----
+
+ +-----
+00469|Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
+ +-----
+00456|Body part 1: Seqnum=4, Pos(L,C)=(16,3), Expression follows:
+ +-----
+
+ +-----
+00474|Text scrap[Grey]="Can be called from 1 to infinity times."
+ +-----
+00461|Text scrap[Grey]="Can be called from 0 to infinity times."
+ +-----
+
+ +-----
+00485|------------------- Start of Macro Dump --------------------
+00486|Macro Name : "Sloth manyzero"
+00487|Defined? : Yes.
+00488|Parameters : 0
+00489|Additive? : No.
+00490|Zero Calls? : No.
+00491|Many Calls? : Yes.
+00492|Output File?: No.
+00493|Automatic Line Directive Macro?: No.
+00494|Call list :
+00495|Macro body :
+00496|
+00497|--Start of List of Body Parts--
+00498|This macro has 0 body parts.
+00499|---End of List of Body Parts---
+00500|
+00501|-------------------- End of Macro Dump ---------------------
+00502|
+00503|
+00504|
+00505|------------------- Start of Macro Dump --------------------
+00506|Macro Name : "Sloth zero"
+00507|Defined? : Yes.
+00508|Parameters : 0
+00509|Additive? : No.
+00510|Zero Calls? : Yes.
+00511|Many Calls? : No.
+00512|Output File?: No.
+00513|Automatic Line Directive Macro?: No.
+00514|Call list :
+00515|Macro body :
+00516|
+00517|--Start of List of Body Parts--
+00518|This macro has 1 body part.
+00519|Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
+00520|
+00521|---- Start of Expression ----
+00522|
+00523|----- Start Text Element -----
+00524|Text scrap[Grey]="Can be called from 0 to 1 times."
+00525|------ End Text Element ------
+00526|
+00527|----- End of Expression -----
+00528|
+00529|---End of List of Body Parts---
+00530|
+00531|-------------------- End of Macro Dump ---------------------
+00532|
+00533|
+00534|
+00535|------------------- Start of Macro Dump --------------------
+00536|Macro Name : "Sloth zeromany"
+00537|Defined? : Yes.
+00538|Parameters : 0
+00539|Additive? : No.
+00540|Zero Calls? : Yes.
+00541|Many Calls? : Yes.
+00542|Output File?: No.
+00543|Automatic Line Directive Macro?: No.
+00544|Call list :
+00545|Macro body :
+00546|
+00547|--Start of List of Body Parts--
+00548|This macro has 1 body part.
+ +-----
+00472|=========================== End of MACRO TABLE DUMP ============================
+00473|
+00474|
+00475|========================= Start of DOCUMENT LIST DUMP ==========================
+00476|
+00477|
+00478|TEXT COMPONENT: Pos(L,C)=(1,1).
+00479|
+00480|-- Start of Text Scrap List --
+00481|Text scrap[Grey]="PR06: Test the parsing on invocation number constraints.<010>
+00482|<010>
+00483|Trip the parser so we don't get past it.<010>
+00484|"
+00485|--- End of Text Scrap List ---
+00486|
+00487|
+00488|TEXT COMPONENT: Pos(L,C)=(4,3).
+00489|
+00490|-- Start of Text Scrap List --
+00491|Text scrap[Grey]="<010>
+00492|<010>
+00493|1. Test with no zero and no many.<010>
+00494|"
+00495|--- End of Text Scrap List ---
+00496|
+00497|
+00498|MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+00499|Part 1 of macro @<Sloth@>.
+00500|
+00501|TEXT COMPONENT: Pos(L,C)=(7,49).
+00502|
+00503|-- Start of Text Scrap List --
+00504|Text scrap[Grey]="<010>
+00505|<010>
+00506|2. Test with a zero.<010>
+00507|"
+00508|--- End of Text Scrap List ---
+00509|
+00510|
+00511|MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
+00512|Part 1 of macro @<Sloth zero@>.
+00513|
+00514|TEXT COMPONENT: Pos(L,C)=(10,55).
+00515|
+00516|-- Start of Text Scrap List --
+00517|Text scrap[Grey]="<010>
+00518|<010>
+00519|3. Test with a many.<010>
+00520|"
+00521|--- End of Text Scrap List ---
+00522|
+00523|
+00524|MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
+00525|Part 1 of macro @<Sloth many@>.
+00526|
+00527|TEXT COMPONENT: Pos(L,C)=(13,62).
+00528|
+00529|-- Start of Text Scrap List --
+00530|Text scrap[Grey]="<010>
+00531|<010>
+00532|4. Test with a zero and a many.<010>
+00533|"
+00534|--- End of Text Scrap List ---
+00535|
+ +-----
+
+ +-----
+00549|Body part 1: Seqnum=4, Pos(L,C)=(16,3), Expression follows:
+00550|
+00551|---- Start of Expression ----
+00552|
+00553|----- Start Text Element -----
+00554|Text scrap[Grey]="Can be called from 0 to infinity times."
+00555|------ End Text Element ------
+00556|
+00557|----- End of Expression -----
+00558|
+00559|---End of List of Body Parts---
+00560|
+00561|-------------------- End of Macro Dump ---------------------
+00562|
+00563|
+00564|
+00565|=========================== End of MACRO TABLE DUMP ============================
+00566|
+00567|
+00568|========================= Start of DOCUMENT LIST DUMP ==========================
+00569|
+00570|
+00571|TEXT COMPONENT: Pos(L,C)=(1,1).
+00572|
+00573|-- Start of Text Scrap List --
+00574|Text scrap[Grey]="PR06: Test the parsing on invocation number constraints.<010>
+00575|<010>
+00576|Trip the parser so we don't get past it.<010>
+ +-----
+00536|
+00537|MACRO DEFINITION COMPONENT: Pos(L,C)=(16,1).
+00538|Part 1 of macro @<Sloth zeromany@>.
+00539|
+00540|TEXT COMPONENT: Pos(L,C)=(16,68).
+00541|
+00542|-- Start of Text Scrap List --
+00543|Text scrap[Grey]="<010>
+00544|<010>
+00545|5. Test with a zero and a many but out of order (should give error).<010>
+ +-----
+
+ +-----
+00581|TEXT COMPONENT: Pos(L,C)=(4,3).
+ +-----
+00550|TYPESETTER DIRECTIVE COMPONENT:
+00551| Section "1", Section name="Error recovery point".
+00552|
+00553|TEXT COMPONENT: Pos(L,C)=(20,27).
+ +-----
+
+ +-----
+00586|1. Test with no zero and no many.<010>
+ +-----
+00558|6. Test with syntactic errors.<010>
+00559|<010>
+ +-----
+
+ +-----
+00591|MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+00592|Part 1 of macro @<Sloth@>.
+00593|
+00594|TEXT COMPONENT: Pos(L,C)=(7,49).
+00595|
+00596|-- Start of Text Scrap List --
+00597|Text scrap[Grey]="<010>
+00598|<010>
+00599|2. Test with a zero.<010>
+ +-----
+00564|TYPESETTER DIRECTIVE COMPONENT:
+00565| Section "2", Section name="Error recovery point".
+00566|
+00567|TEXT COMPONENT: Pos(L,C)=(25,27).
+00568|
+00569|-- Start of Text Scrap List --
+00570|Text scrap[White]="<010>
+00571|<010>
+ +-----
+
+ +-----
+00604|MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
+00605|Part 1 of macro @<Sloth zero@>.
+00606|
+00607|TEXT COMPONENT: Pos(L,C)=(10,55).
+00608|
+00609|-- Start of Text Scrap List --
+00610|Text scrap[Grey]="<010>
+00611|<010>
+00612|3. Test with a many.<010>
+ +-----
+00576|TYPESETTER DIRECTIVE COMPONENT:
+00577| Section "3", Section name="Error recovery point".
+00578|
+00579|TEXT COMPONENT: Pos(L,C)=(28,27).
+00580|
+00581|-- Start of Text Scrap List --
+00582|Text scrap[White]="<010>
+00583|<010>
+ +-----
+
+ +-----
+00617|MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
+00618|Part 1 of macro @<Sloth many@>.
+00619|
+00620|TEXT COMPONENT: Pos(L,C)=(13,62).
+00621|
+00622|-- Start of Text Scrap List --
+00623|Text scrap[Grey]="<010>
+00624|<010>
+00625|4. Test with a zero and a many.<010>
+ +-----
+00588|TYPESETTER DIRECTIVE COMPONENT:
+00589| Section "4", Section name="Error recovery point".
+00590|
+00591|TEXT COMPONENT: Pos(L,C)=(31,27).
+00592|
+00593|-- Start of Text Scrap List --
+00594|Text scrap[White]="<010>
+00595|<010>
+ +-----
+
+ +-----
+00630|MACRO DEFINITION COMPONENT: Pos(L,C)=(16,1).
+00631|Part 1 of macro @<Sloth zeromany@>.
+00632|
+00633|TEXT COMPONENT: Pos(L,C)=(16,68).
+00634|
+00635|-- Start of Text Scrap List --
+00636|Text scrap[Grey]="<010>
+00637|<010>
+00638|5. Test with a zero and a many but out of order (should give error).<010>
+ +-----
+00600|TYPESETTER DIRECTIVE COMPONENT:
+00601| Section "5", Section name="Error recovery point".
+00602|
+00603|TEXT COMPONENT: Pos(L,C)=(34,27).
+00604|
+00605|-- Start of Text Scrap List --
+00606|Text scrap[White]="<010>
+00607|<010>
+ +-----
+
+ +-----
+00644| Section "1", Section name="Error recovery point".
+00645|
+00646|TEXT COMPONENT: Pos(L,C)=(20,27).
+00647|
+00648|-- Start of Text Scrap List --
+00649|Text scrap[Grey]="<010>
+00650|<010>
+00651|6. Test with syntactic errors.<010>
+ +-----
+00613| Section "6", Section name="Error recovery point".
+00614|
+00615|TEXT COMPONENT: Pos(L,C)=(37,27).
+00616|
+00617|-- Start of Text Scrap List --
+00618|Text scrap[White]="<010>
+00619|<010>
+ +-----
+
+ +-----
+00657|TYPESETTER DIRECTIVE COMPONENT:
+00658| Section "2", Section name="Error recovery point".
+00659|
+00660|TEXT COMPONENT: Pos(L,C)=(25,27).
+00661|
+00662|-- Start of Text Scrap List --
+00663|Text scrap[White]="<010>
+00664|<010>
+00665|"
+00666|--- End of Text Scrap List ---
+00667|
+00668|
+00669|TYPESETTER DIRECTIVE COMPONENT:
+00670| Section "3", Section name="Error recovery point".
+00671|
+00672|TEXT COMPONENT: Pos(L,C)=(28,27).
+00673|
+00674|-- Start of Text Scrap List --
+00675|Text scrap[White]="<010>
+00676|<010>
+00677|"
+00678|--- End of Text Scrap List ---
+00679|
+00680|
+00681|TYPESETTER DIRECTIVE COMPONENT:
+00682| Section "4", Section name="Error recovery point".
+00683|
+00684|TEXT COMPONENT: Pos(L,C)=(31,27).
+00685|
+00686|-- Start of Text Scrap List --
+00687|Text scrap[White]="<010>
+00688|<010>
+00689|"
+00690|--- End of Text Scrap List ---
+00691|
+00692|
+00693|TYPESETTER DIRECTIVE COMPONENT:
+00694| Section "5", Section name="Error recovery point".
+00695|
+00696|TEXT COMPONENT: Pos(L,C)=(34,27).
+00697|
+00698|-- Start of Text Scrap List --
+00699|Text scrap[White]="<010>
+00700|<010>
+00701|"
+00702|--- End of Text Scrap List ---
+00703|
+00704|
+00705|TYPESETTER DIRECTIVE COMPONENT:
+00706| Section "6", Section name="Error recovery point".
+00707|
+00708|TEXT COMPONENT: Pos(L,C)=(37,27).
+00709|
+00710|-- Start of Text Scrap List --
+00711|Text scrap[White]="<010>
+00712|<010>
+00713|<010>
+00714|"
+00715|--- End of Text Scrap List ---
+00716|
+00717|
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/pr07.lis"
+ with "/usr/var/tmp/funnelweb/answers/pr07.lis".
+
+ +-----
+00283|Macro Name : "#file"
+00284|Defined? : Yes.
+00285|Parameters : 0
+00286|Additive? : No.
+00287|Zero Calls? : Yes.
+00288|Many Calls? : Yes.
+00289|Output File?: No.
+00290|Automatic Line Directive Macro?: No.
+00291|Call list :
+00292|Macro body :
+00293|
+00294|--Start of List of Body Parts--
+00295|This macro has 1 body part.
+00296|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00297|
+00298|---- Start of Expression ----
+00299|
+00300|--- Start Special Function ---
+00301|---- End Special Function ----
+00302|
+00303|----- End of Expression -----
+00304|
+00305|---End of List of Body Parts---
+00306|
+ +-----
+00283|Macro Name : "Error1"
+00284|Defined? : No.
+ +-----
+
+ +-----
+00312|Macro Name : "#line"
+ +-----
+00290|Macro Name : "Error2"
+00291|Defined? : No.
+00292|-------------------- End of Macro Dump ---------------------
+00293|
+00294|
+00295|
+00296|------------------- Start of Macro Dump --------------------
+00297|Macro Name : "Error3"
+00298|Defined? : No.
+00299|-------------------- End of Macro Dump ---------------------
+00300|
+00301|
+00302|
+00303|------------------- Start of Macro Dump --------------------
+00304|Macro Name : "Error4"
+00305|Defined? : No.
+00306|-------------------- End of Macro Dump ---------------------
+00307|
+00308|
+00309|
+00310|------------------- Start of Macro Dump --------------------
+00311|Macro Name : "Sloth"
+ +-----
+
+ +-----
+00316|Zero Calls? : Yes.
+00317|Many Calls? : Yes.
+00318|Output File?: No.
+00319|Automatic Line Directive Macro?: No.
+ +-----
+00315|Zero Calls? : No.
+00316|Many Calls? : No.
+00317|Output File?: No.
+ +-----
+
+ +-----
+00325|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+ +-----
+00323|Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
+ +-----
+
+ +-----
+00329|--- Start Special Function ---
+00330|---- End Special Function ----
+ +-----
+00327|----- Start Text Element -----
+00328|Text scrap[Grey]="No equals in this macro definition."
+00329|------ End Text Element ------
+ +-----
+
+ +-----
+00341|Macro Name : "#timestamp"
+ +-----
+00340|Macro Name : "Sloth with equals"
+ +-----
+
+ +-----
+00345|Zero Calls? : Yes.
+00346|Many Calls? : Yes.
+00347|Output File?: No.
+00348|Automatic Line Directive Macro?: No.
+ +-----
+00344|Zero Calls? : No.
+00345|Many Calls? : No.
+00346|Output File?: No.
+ +-----
+
+ +-----
+00354|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+ +-----
+00352|Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
+ +-----
+
+ +-----
+00358|--- Start Special Function ---
+00359|---- End Special Function ----
+ +-----
+00356|----- Start Text Element -----
+00357|Text scrap[Grey]="No equals in this macro definition."
+00358|------ End Text Element ------
+ +-----
+
+ +-----
+00370|Macro Name : "Error1"
+00371|Defined? : No.
+ +-----
+00369|Macro Name : "Sloth with plus"
+00370|Defined? : Yes.
+00371|Parameters : 0
+00372|Additive? : Yes.
+00373|Zero Calls? : No.
+00374|Many Calls? : No.
+00375|Output File?: No.
+00376|Call list :
+00377|Macro body :
+00378|
+00379|--Start of List of Body Parts--
+00380|This macro has 1 body part.
+00381|Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
+00382|
+00383|---- Start of Expression ----
+00384|
+00385|----- Start Text Element -----
+00386|Text scrap[Grey]="No equals in this macro definition."
+00387|------ End Text Element ------
+00388|
+00389|----- End of Expression -----
+00390|
+00391|---End of List of Body Parts---
+00392|
+ +-----
+
+ +-----
+00376|------------------- Start of Macro Dump --------------------
+00377|Macro Name : "Error2"
+00378|Defined? : No.
+00379|-------------------- End of Macro Dump ---------------------
+00380|
+00381|
+00382|
+00383|------------------- Start of Macro Dump --------------------
+00384|Macro Name : "Error3"
+00385|Defined? : No.
+00386|-------------------- End of Macro Dump ---------------------
+00387|
+00388|
+00389|
+00390|------------------- Start of Macro Dump --------------------
+00391|Macro Name : "Error4"
+00392|Defined? : No.
+00393|-------------------- End of Macro Dump ---------------------
+00394|
+00395|
+00396|
+00397|------------------- Start of Macro Dump --------------------
+00398|Macro Name : "Sloth"
+00399|Defined? : Yes.
+00400|Parameters : 0
+00401|Additive? : No.
+00402|Zero Calls? : No.
+00403|Many Calls? : No.
+00404|Output File?: No.
+00405|Automatic Line Directive Macro?: No.
+00406|Call list :
+00407|Macro body :
+00408|
+00409|--Start of List of Body Parts--
+00410|This macro has 1 body part.
+00411|Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
+00412|
+00413|---- Start of Expression ----
+00414|
+00415|----- Start Text Element -----
+00416|Text scrap[Grey]="No equals in this macro definition."
+00417|------ End Text Element ------
+00418|
+00419|----- End of Expression -----
+00420|
+00421|---End of List of Body Parts---
+00422|
+00423|-------------------- End of Macro Dump ---------------------
+00424|
+00425|
+00426|
+00427|------------------- Start of Macro Dump --------------------
+00428|Macro Name : "Sloth with equals"
+00429|Defined? : Yes.
+00430|Parameters : 0
+00431|Additive? : No.
+00432|Zero Calls? : No.
+00433|Many Calls? : No.
+00434|Output File?: No.
+00435|Automatic Line Directive Macro?: No.
+00436|Call list :
+00437|Macro body :
+00438|
+00439|--Start of List of Body Parts--
+ +-----
+00397|=========================== End of MACRO TABLE DUMP ============================
+00398|
+00399|
+00400|========================= Start of DOCUMENT LIST DUMP ==========================
+00401|
+00402|
+00403|TEXT COMPONENT: Pos(L,C)=(1,1).
+00404|
+00405|-- Start of Text Scrap List --
+00406|Text scrap[Grey]="PR07: Test the parsing of == and += in macro definitions.<010>
+00407|<010>
+00408|Trip the parser so we don't get any further.<010>
+00409|"
+00410|--- End of Text Scrap List ---
+00411|
+00412|
+00413|TEXT COMPONENT: Pos(L,C)=(4,3).
+00414|
+00415|-- Start of Text Scrap List --
+00416|Text scrap[Grey]="<010>
+00417|<010>
+00418|1. Test with no equals.<010>
+00419|"
+00420|--- End of Text Scrap List ---
+00421|
+00422|
+00423|MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+00424|Part 1 of macro @<Sloth@>.
+00425|
+00426|TEXT COMPONENT: Pos(L,C)=(7,51).
+00427|
+00428|-- Start of Text Scrap List --
+00429|Text scrap[Grey]="<010>
+00430|<010>
+00431|2. Test with ==.<010>
+00432|"
+00433|--- End of Text Scrap List ---
+00434|
+00435|
+00436|MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
+00437|Part 1 of macro @<Sloth with equals@>.
+00438|
+00439|TEXT COMPONENT: Pos(L,C)=(10,65).
+00440|
+00441|-- Start of Text Scrap List --
+00442|Text scrap[Grey]="<010>
+00443|<010>
+00444|3. Test with +=.<010>
+00445|"
+00446|--- End of Text Scrap List ---
+00447|
+00448|
+00449|MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
+00450|Part 1 of macro @<Sloth with plus@>.
+00451|
+00452|TEXT COMPONENT: Pos(L,C)=(13,63).
+00453|
+00454|-- Start of Text Scrap List --
+00455|Text scrap[Grey]="<010>
+00456|<010>
+00457|4. Test with syntax errors.<010>
+00458|<010>
+00459|"
+00460|--- End of Text Scrap List ---
+ +-----
+
+ +-----
+00440|This macro has 1 body part.
+00441|Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
+00442|
+00443|---- Start of Expression ----
+00444|
+00445|----- Start Text Element -----
+00446|Text scrap[Grey]="No equals in this macro definition."
+00447|------ End Text Element ------
+00448|
+00449|----- End of Expression -----
+00450|
+00451|---End of List of Body Parts---
+00452|
+00453|-------------------- End of Macro Dump ---------------------
+00454|
+00455|
+00456|
+00457|------------------- Start of Macro Dump --------------------
+00458|Macro Name : "Sloth with plus"
+00459|Defined? : Yes.
+00460|Parameters : 0
+00461|Additive? : Yes.
+00462|Zero Calls? : No.
+00463|Many Calls? : No.
+00464|Output File?: No.
+00465|Automatic Line Directive Macro?: No.
+00466|Call list :
+00467|Macro body :
+00468|
+00469|--Start of List of Body Parts--
+00470|This macro has 1 body part.
+00471|Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
+00472|
+00473|---- Start of Expression ----
+00474|
+00475|----- Start Text Element -----
+00476|Text scrap[Grey]="No equals in this macro definition."
+00477|------ End Text Element ------
+00478|
+00479|----- End of Expression -----
+00480|
+00481|---End of List of Body Parts---
+00482|
+00483|-------------------- End of Macro Dump ---------------------
+00484|
+00485|
+00486|
+00487|=========================== End of MACRO TABLE DUMP ============================
+00488|
+00489|
+00490|========================= Start of DOCUMENT LIST DUMP ==========================
+00491|
+00492|
+00493|TEXT COMPONENT: Pos(L,C)=(1,1).
+00494|
+00495|-- Start of Text Scrap List --
+00496|Text scrap[Grey]="PR07: Test the parsing of == and += in macro definitions.<010>
+00497|<010>
+00498|Trip the parser so we don't get any further.<010>
+00499|"
+00500|--- End of Text Scrap List ---
+00501|
+00502|
+00503|TEXT COMPONENT: Pos(L,C)=(4,3).
+ +-----
+00461|
+00462|
+00463|TYPESETTER DIRECTIVE COMPONENT:
+00464| Section "1", Section name="Error recovery point".
+00465|
+00466|TEXT COMPONENT: Pos(L,C)=(18,27).
+00467|
+00468|-- Start of Text Scrap List --
+00469|Text scrap[White]="<010>
+00470|<010>
+00471|"
+00472|--- End of Text Scrap List ---
+00473|
+00474|
+00475|TYPESETTER DIRECTIVE COMPONENT:
+00476| Section "2", Section name="Error recovery point".
+00477|
+00478|TEXT COMPONENT: Pos(L,C)=(21,27).
+00479|
+00480|-- Start of Text Scrap List --
+00481|Text scrap[White]="<010>
+00482|<010>
+00483|"
+00484|--- End of Text Scrap List ---
+00485|
+00486|
+00487|TYPESETTER DIRECTIVE COMPONENT:
+00488| Section "3", Section name="Error recovery point".
+00489|
+00490|TEXT COMPONENT: Pos(L,C)=(24,27).
+00491|
+00492|-- Start of Text Scrap List --
+00493|Text scrap[White]="<010>
+00494|<010>
+00495|"
+00496|--- End of Text Scrap List ---
+00497|
+00498|
+00499|TYPESETTER DIRECTIVE COMPONENT:
+00500| Section "4", Section name="Error recovery point".
+00501|
+00502|TEXT COMPONENT: Pos(L,C)=(27,27).
+00503|
+00504|-- Start of Text Scrap List --
+00505|Text scrap[White]="<010>
+00506|<010>
+00507|"
+00508|--- End of Text Scrap List ---
+00509|
+00510|
+00511|TYPESETTER DIRECTIVE COMPONENT:
+00512| Section "5", Section name="Error recovery point".
+00513|
+00514|TEXT COMPONENT: Pos(L,C)=(30,27).
+00515|
+00516|-- Start of Text Scrap List --
+00517|Text scrap[White]="<010>
+00518|<010>
+00519|"
+00520|--- End of Text Scrap List ---
+00521|
+00522|
+00523|TYPESETTER DIRECTIVE COMPONENT:
+00524| Section "6", Section name="Error recovery point".
+ +-----
+
+ +-----
+00505|-- Start of Text Scrap List --
+00506|Text scrap[Grey]="<010>
+00507|<010>
+00508|1. Test with no equals.<010>
+ +-----
+00526|TEXT COMPONENT: Pos(L,C)=(33,27).
+00527|
+00528|-- Start of Text Scrap List --
+00529|Text scrap[White]="<010>
+00530|<010>
+00531|<010>
+00532|<010>
+ +-----
+
+ +-----
+00513|MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+00514|Part 1 of macro @<Sloth@>.
+00515|
+00516|TEXT COMPONENT: Pos(L,C)=(7,51).
+00517|
+00518|-- Start of Text Scrap List --
+00519|Text scrap[Grey]="<010>
+00520|<010>
+00521|2. Test with ==.<010>
+00522|"
+00523|--- End of Text Scrap List ---
+00524|
+00525|
+00526|MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
+00527|Part 1 of macro @<Sloth with equals@>.
+00528|
+00529|TEXT COMPONENT: Pos(L,C)=(10,65).
+00530|
+00531|-- Start of Text Scrap List --
+00532|Text scrap[Grey]="<010>
+00533|<010>
+00534|3. Test with +=.<010>
+00535|"
+00536|--- End of Text Scrap List ---
+00537|
+00538|
+00539|MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
+00540|Part 1 of macro @<Sloth with plus@>.
+00541|
+00542|TEXT COMPONENT: Pos(L,C)=(13,63).
+00543|
+00544|-- Start of Text Scrap List --
+00545|Text scrap[Grey]="<010>
+00546|<010>
+00547|4. Test with syntax errors.<010>
+00548|<010>
+00549|"
+00550|--- End of Text Scrap List ---
+00551|
+00552|
+00553|TYPESETTER DIRECTIVE COMPONENT:
+00554| Section "1", Section name="Error recovery point".
+00555|
+00556|TEXT COMPONENT: Pos(L,C)=(18,27).
+00557|
+00558|-- Start of Text Scrap List --
+00559|Text scrap[White]="<010>
+00560|<010>
+00561|"
+00562|--- End of Text Scrap List ---
+00563|
+00564|
+00565|TYPESETTER DIRECTIVE COMPONENT:
+00566| Section "2", Section name="Error recovery point".
+00567|
+00568|TEXT COMPONENT: Pos(L,C)=(21,27).
+00569|
+00570|-- Start of Text Scrap List --
+00571|Text scrap[White]="<010>
+00572|<010>
+00573|"
+00574|--- End of Text Scrap List ---
+00575|
+00576|
+ +-----
+00537|========================== End of DOCUMENT LIST DUMP ===========================
+00538|
+00539|
+00540|Global Local| Input File
+00541|------------+-------------------------------------------------------------------
+00542| 1 1| PR07: Test the parsing of == and += in macro definitions.
+00543| 2 2|
+00544| 3 3| Trip the parser so we don't get any further.
+00545| 4 4| @>
+00546| Error|.^The parser was at the top level and was expecting
+00547| |.^one of: {Directive, Text, Macro definition, EOF}.
+00548| 5 5|
+00549| 6 6| 1. Test with no equals.
+00550| 7 7| @$@<Sloth@>@{No equals in this macro definition.@}
+00551| 8 8|
+00552| 9 9| 2. Test with ==.
+00553| 10 10| @$@<Sloth with equals@>==@{No equals in this macro definition.@}
+00554| 11 11|
+00555| 12 12| 3. Test with +=.
+00556| 13 13| @$@<Sloth with plus@>+=@{No equals in this macro definition.@}
+00557| 14 14|
+00558| 15 15| 4. Test with syntax errors.
+00559| 16 16|
+00560| 17 17| @$@<Error1@>++@{No equals in this macro definition.@}
+00561| Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+00562| |.............^(or @Z or @M if they have not already appeared).
+00563| |.............^Note: FunnelWeb is intolerant of spaces at this point.
+00564| |...............^Skipping after error to the next major construct...
+00565| 18 18| @A@<Error recovery point@>
+00566| |.^...skipped to here after the error.
+00567| 19 19|
+00568| 20 20| @$@<Error2@>@+=@{No equals in this macro definition.@}
+00569| Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+00570| |.............^(or @Z or @M if they have not already appeared).
+00571| |.............^Note: FunnelWeb is intolerant of spaces at this point.
+00572| |................^Skipping after error to the next major construct...
+00573| 21 21| @A@<Error recovery point@>
+00574| |.^...skipped to here after the error.
+00575| 22 22|
+00576| 23 23| @$@<Error3@>+==+@{No equals in this macro definition.@}
+00577| Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+00578| |.............^(or @Z or @M if they have not already appeared).
+00579| |.............^Note: FunnelWeb is intolerant of spaces at this point.
+00580| |.................^Skipping after error to the next major construct...
+00581| 24 24| @A@<Error recovery point@>
+00582| |.^...skipped to here after the error.
+00583| 25 25|
+00584| 26 26| @$@<Error4@>=+@{No equals in this macro definition.@}
+00585| Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+00586| |.............^(or @Z or @M if they have not already appeared).
+00587| |.............^Note: FunnelWeb is intolerant of spaces at this point.
+00588| |...............^Skipping after error to the next major construct...
+00589| 27 27| @A@<Error recovery point@>
+00590| |.^...skipped to here after the error.
+00591| 28 28|
+00592| 29 29| @$@<Error4@>@=@=@{No equals in this macro definition.@}
+00593| Error|................^Expecting "==@{" or "+=@{" or just "@{".
+00594| |................^(or @Z or @M if they have not already appeared).
+00595| |................^Note: FunnelWeb is intolerant of spaces at this point.
+00596| |.................^Skipping after error to the next major construct...
+00597| 30 30| @A@<Error recovery point@>
+00598| |.^...skipped to here after the error.
+00599| 31 31|
+00600| 32 32| @$@<Error4@>@+@=@{No equals in this macro definition.@}
+ +-----
+
+ +-----
+00577|TYPESETTER DIRECTIVE COMPONENT:
+00578| Section "3", Section name="Error recovery point".
+00579|
+00580|TEXT COMPONENT: Pos(L,C)=(24,27).
+00581|
+00582|-- Start of Text Scrap List --
+00583|Text scrap[White]="<010>
+00584|<010>
+00585|"
+00586|--- End of Text Scrap List ---
+00587|
+00588|
+00589|TYPESETTER DIRECTIVE COMPONENT:
+00590| Section "4", Section name="Error recovery point".
+00591|
+00592|TEXT COMPONENT: Pos(L,C)=(27,27).
+00593|
+00594|-- Start of Text Scrap List --
+00595|Text scrap[White]="<010>
+00596|<010>
+00597|"
+00598|--- End of Text Scrap List ---
+00599|
+00600|
+00601|TYPESETTER DIRECTIVE COMPONENT:
+00602| Section "5", Section name="Error recovery point".
+00603|
+00604|TEXT COMPONENT: Pos(L,C)=(30,27).
+00605|
+00606|-- Start of Text Scrap List --
+00607|Text scrap[White]="<010>
+00608|<010>
+00609|"
+00610|--- End of Text Scrap List ---
+00611|
+00612|
+00613|TYPESETTER DIRECTIVE COMPONENT:
+00614| Section "6", Section name="Error recovery point".
+00615|
+00616|TEXT COMPONENT: Pos(L,C)=(33,27).
+00617|
+00618|-- Start of Text Scrap List --
+00619|Text scrap[White]="<010>
+00620|<010>
+00621|<010>
+00622|<010>
+00623|"
+00624|--- End of Text Scrap List ---
+00625|
+00626|
+00627|========================== End of DOCUMENT LIST DUMP ===========================
+00628|
+00629|
+00630|Global Local| Input File
+00631|------------+-------------------------------------------------------------------
+00632| 1 1| PR07: Test the parsing of == and += in macro definitions.
+00633| 2 2|
+00634| 3 3| Trip the parser so we don't get any further.
+00635| 4 4| @>
+00636| Error|.^The parser was at the top level and was expecting
+00637| |.^one of: {Directive, Text, Macro definition, EOF}.
+00638| 5 5|
+00639| 6 6| 1. Test with no equals.
+00640| 7 7| @$@<Sloth@>@{No equals in this macro definition.@}
+ +-----
+00601| Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+00602| |.............^(or @Z or @M if they have not already appeared).
+00603| |.............^Note: FunnelWeb is intolerant of spaces at this point.
+00604| |......................................................^Skipping after error to the next major construct...
+00605| 33 33| @A@<Error recovery point@>
+00606| |.^...skipped to here after the error.
+00607| 34 34|
+00608| 35 35|
+00609| 36 36|
+00610| | <End-Of-File>
+00611|------------+-------------------------------------------------------------------
+00612|
+00613|There were 7 Errors.
+ +-----
+
+ +-----
+00641| 8 8|
+00642| 9 9| 2. Test with ==.
+00643| 10 10| @$@<Sloth with equals@>==@{No equals in this macro definition.@}
+00644| 11 11|
+00645| 12 12| 3. Test with +=.
+00646| 13 13| @$@<Sloth with plus@>+=@{No equals in this macro definition.@}
+00647| 14 14|
+00648| 15 15| 4. Test with syntax errors.
+00649| 16 16|
+00650| 17 17| @$@<Error1@>++@{No equals in this macro definition.@}
+00651| Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+00652| |.............^(or @Z or @M if they have not already appeared).
+00653| |.............^Note: FunnelWeb is intolerant of spaces at this point.
+00654| |...............^Skipping after error to the next major construct...
+00655| 18 18| @A@<Error recovery point@>
+00656| |.^...skipped to here after the error.
+00657| 19 19|
+00658| 20 20| @$@<Error2@>@+=@{No equals in this macro definition.@}
+00659| Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+00660| |.............^(or @Z or @M if they have not already appeared).
+00661| |.............^Note: FunnelWeb is intolerant of spaces at this point.
+00662| |................^Skipping after error to the next major construct...
+00663| 21 21| @A@<Error recovery point@>
+00664| |.^...skipped to here after the error.
+00665| 22 22|
+00666| 23 23| @$@<Error3@>+==+@{No equals in this macro definition.@}
+00667| Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+00668| |.............^(or @Z or @M if they have not already appeared).
+00669| |.............^Note: FunnelWeb is intolerant of spaces at this point.
+00670| |.................^Skipping after error to the next major construct...
+00671| 24 24| @A@<Error recovery point@>
+00672| |.^...skipped to here after the error.
+00673| 25 25|
+00674| 26 26| @$@<Error4@>=+@{No equals in this macro definition.@}
+00675| Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+00676| |.............^(or @Z or @M if they have not already appeared).
+00677| |.............^Note: FunnelWeb is intolerant of spaces at this point.
+00678| |...............^Skipping after error to the next major construct...
+00679| 27 27| @A@<Error recovery point@>
+00680| |.^...skipped to here after the error.
+00681| 28 28|
+00682| 29 29| @$@<Error4@>@=@=@{No equals in this macro definition.@}
+00683| Error|................^Expecting "==@{" or "+=@{" or just "@{".
+00684| |................^(or @Z or @M if they have not already appeared).
+00685| |................^Note: FunnelWeb is intolerant of spaces at this point.
+00686| |.................^Skipping after error to the next major construct...
+00687| 30 30| @A@<Error recovery point@>
+00688| |.^...skipped to here after the error.
+00689| 31 31|
+00690| 32 32| @$@<Error4@>@+@=@{No equals in this macro definition.@}
+00691| Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+00692| |.............^(or @Z or @M if they have not already appeared).
+00693| |.............^Note: FunnelWeb is intolerant of spaces at this point.
+00694| |......................................................^Skipping after error to the next major construct...
+00695| 33 33| @A@<Error recovery point@>
+00696| |.^...skipped to here after the error.
+00697| 34 34|
+00698| 35 35|
+00699| 36 36|
+00700| | <End-Of-File>
+00701|------------+-------------------------------------------------------------------
+00702|
+00703|There were 7 Errors.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/pr08.lis"
+ with "/usr/var/tmp/funnelweb/answers/pr08.lis".
+
+ +-----
+00584|Macro Name : "#file"
+00585|Defined? : Yes.
+00586|Parameters : 0
+00587|Additive? : No.
+ +-----
+00584|Macro Name : "Elephant"
+00585|Defined? : Yes.
+00586|Parameters : 0
+00587|Additive? : Yes.
+ +-----
+
+ +-----
+00591|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00597|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+ +-----
+00596|Body part 1: Seqnum=4, Pos(L,C)=(48,3), Expression follows:
+ +-----
+
+ +-----
+00601|--- Start Special Function ---
+00602|---- End Special Function ----
+ +-----
+00600|----- Start Text Element -----
+00601|Text scrap[Grey]="Turkey"
+00602|------ End Text Element ------
+ +-----
+
+ +-----
+00613|Macro Name : "#line"
+00614|Defined? : Yes.
+00615|Parameters : 0
+00616|Additive? : No.
+00617|Zero Calls? : Yes.
+00618|Many Calls? : Yes.
+00619|Output File?: No.
+00620|Automatic Line Directive Macro?: No.
+ +-----
+00613|Macro Name : "Many"
+00614|Defined? : Yes.
+00615|Parameters : 7
+00616|Additive? : No.
+00617|Zero Calls? : Yes.
+00618|Many Calls? : No.
+00619|Output File?: No.
+ +-----
+
+ +-----
+00626|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+ +-----
+00625|Body part 1: Seqnum=7, Pos(L,C)=(60,3), Expression follows:
+ +-----
+
+ +-----
+00630|--- Start Special Function ---
+00631|---- End Special Function ----
+ +-----
+00629|----- Start Text Element -----
+00630|Text scrap[Grey]="Sloth"
+00631|------ End Text Element ------
+00632|
+00633|
+00634|-- Start Parameter Element --
+00635|Parameter number=8.
+00636|Parameter is of macro "Many".
+00637|--- End Parameter Element ---
+00638|
+00639|
+00640|----- Start Text Element -----
+00641|Text scrap[Grey]="Walrus"
+00642|------ End Text Element ------
+ +-----
+
+ +-----
+00642|Macro Name : "#timestamp"
+00643|Defined? : Yes.
+00644|Parameters : 0
+00645|Additive? : No.
+00646|Zero Calls? : Yes.
+00647|Many Calls? : Yes.
+00648|Output File?: No.
+00649|Automatic Line Directive Macro?: No.
+ +-----
+00653|Macro Name : "One"
+00654|Defined? : Yes.
+00655|Parameters : 1
+00656|Additive? : No.
+00657|Zero Calls? : Yes.
+00658|Many Calls? : No.
+00659|Output File?: No.
+ +-----
+
+ +-----
+00655|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+ +-----
+00665|Body part 1: Seqnum=6, Pos(L,C)=(57,3), Expression follows:
+ +-----
+
+ +-----
+00659|--- Start Special Function ---
+00660|---- End Special Function ----
+ +-----
+00669|----- Start Text Element -----
+00670|Text scrap[Grey]="Sloth"
+00671|------ End Text Element ------
+00672|
+00673|
+00674|-- Start Parameter Element --
+00675|Parameter number=2.
+00676|Parameter is of macro "One".
+00677|--- End Parameter Element ---
+00678|
+00679|
+00680|----- Start Text Element -----
+00681|Text scrap[Grey]="Walrus"
+00682|------ End Text Element ------
+ +-----
+
+ +-----
+00671|Macro Name : "Elephant"
+00672|Defined? : Yes.
+00673|Parameters : 0
+00674|Additive? : Yes.
+00675|Zero Calls? : Yes.
+00676|Many Calls? : Yes.
+00677|Output File?: No.
+00678|Automatic Line Directive Macro?: No.
+00679|Call list :
+00680|Macro body :
+00681|
+00682|--Start of List of Body Parts--
+00683|This macro has 1 body part.
+00684|Body part 1: Seqnum=4, Pos(L,C)=(48,3), Expression follows:
+00685|
+00686|---- Start of Expression ----
+00687|
+00688|----- Start Text Element -----
+00689|Text scrap[Grey]="Turkey"
+00690|------ End Text Element ------
+00691|
+00692|----- End of Expression -----
+00693|
+00694|---End of List of Body Parts---
+00695|
+ +-----
+00693|Macro Name : "Sloth 1"
+00694|Defined? : No.
+ +-----
+
+ +-----
+00701|Macro Name : "Many"
+00702|Defined? : Yes.
+00703|Parameters : 7
+00704|Additive? : No.
+00705|Zero Calls? : Yes.
+00706|Many Calls? : No.
+00707|Output File?: No.
+00708|Automatic Line Directive Macro?: No.
+00709|Call list :
+00710|Macro body :
+00711|
+00712|--Start of List of Body Parts--
+00713|This macro has 1 body part.
+00714|Body part 1: Seqnum=7, Pos(L,C)=(60,3), Expression follows:
+00715|
+00716|---- Start of Expression ----
+00717|
+00718|----- Start Text Element -----
+00719|Text scrap[Grey]="Sloth"
+00720|------ End Text Element ------
+00721|
+00722|
+00723|-- Start Parameter Element --
+00724|Parameter number=8.
+00725|Parameter is of macro "Many".
+00726|--- End Parameter Element ---
+00727|
+00728|
+00729|----- Start Text Element -----
+00730|Text scrap[Grey]="Walrus"
+00731|------ End Text Element ------
+00732|
+00733|----- End of Expression -----
+00734|
+00735|---End of List of Body Parts---
+00736|
+ +-----
+00700|Macro Name : "Sloth 2"
+00701|Defined? : No.
+ +-----
+
+ +-----
+00742|Macro Name : "One"
+00743|Defined? : Yes.
+00744|Parameters : 1
+00745|Additive? : No.
+00746|Zero Calls? : Yes.
+00747|Many Calls? : No.
+00748|Output File?: No.
+00749|Automatic Line Directive Macro?: No.
+ +-----
+00707|Macro Name : "Sloth 3"
+00708|Defined? : No.
+00709|-------------------- End of Macro Dump ---------------------
+00710|
+00711|
+00712|
+00713|------------------- Start of Macro Dump --------------------
+00714|Macro Name : "Sloth 4"
+00715|Defined? : No.
+00716|-------------------- End of Macro Dump ---------------------
+00717|
+00718|
+00719|
+00720|------------------- Start of Macro Dump --------------------
+00721|Macro Name : "Sloth 5"
+00722|Defined? : No.
+00723|-------------------- End of Macro Dump ---------------------
+00724|
+00725|
+00726|
+00727|------------------- Start of Macro Dump --------------------
+00728|Macro Name : "Unicorn"
+00729|Defined? : Yes.
+00730|Parameters : 3
+00731|Additive? : Yes.
+00732|Zero Calls? : No.
+00733|Many Calls? : No.
+00734|Output File?: No.
+ +-----
+
+ +-----
+00755|Body part 1: Seqnum=6, Pos(L,C)=(57,3), Expression follows:
+ +-----
+00740|Body part 1: Seqnum=3, Pos(L,C)=(43,3), Expression follows:
+ +-----
+
+ +-----
+00760|Text scrap[Grey]="Sloth"
+00761|------ End Text Element ------
+00762|
+00763|
+00764|-- Start Parameter Element --
+00765|Parameter number=2.
+00766|Parameter is of macro "One".
+00767|--- End Parameter Element ---
+00768|
+00769|
+00770|----- Start Text Element -----
+00771|Text scrap[Grey]="Walrus"
+ +-----
+00745|Text scrap[Grey]="Turkey"
+ +-----
+
+ +-----
+00783|Macro Name : "Sloth 1"
+00784|Defined? : No.
+ +-----
+00757|Macro Name : "Walrus 1"
+00758|Defined? : Yes.
+00759|Parameters : 0
+00760|Additive? : No.
+00761|Zero Calls? : No.
+00762|Many Calls? : No.
+00763|Output File?: No.
+00764|Call list :
+00765|Macro body :
+00766|
+00767|--Start of List of Body Parts--
+00768|This macro has 1 body part.
+00769|Body part 1: Seqnum=1, Pos(L,C)=(33,3), Expression follows:
+00770|
+00771|---- Start of Expression ----
+00772|
+00773|----- Start Text Element -----
+00774|Text scrap[Grey]="Sloth"
+00775|------ End Text Element ------
+00776|
+00777|----- End of Expression -----
+00778|
+00779|---End of List of Body Parts---
+00780|
+ +-----
+
+ +-----
+00790|Macro Name : "Sloth 2"
+00791|Defined? : No.
+ +-----
+00786|Macro Name : "Walrus 2"
+00787|Defined? : Yes.
+00788|Parameters : 0
+00789|Additive? : Yes.
+00790|Zero Calls? : No.
+00791|Many Calls? : No.
+00792|Output File?: No.
+00793|Call list :
+00794|Macro body :
+00795|
+00796|--Start of List of Body Parts--
+00797|This macro has 1 body part.
+00798|Body part 1: Seqnum=2, Pos(L,C)=(38,3), Expression follows:
+00799|
+00800|---- Start of Expression ----
+00801|
+00802|----- Start Text Element -----
+00803|Text scrap[Grey]="Sloth"
+00804|------ End Text Element ------
+00805|
+00806|----- End of Expression -----
+00807|
+00808|---End of List of Body Parts---
+00809|
+ +-----
+
+ +-----
+00797|Macro Name : "Sloth 3"
+00798|Defined? : No.
+00799|-------------------- End of Macro Dump ---------------------
+00800|
+00801|
+00802|
+00803|------------------- Start of Macro Dump --------------------
+00804|Macro Name : "Sloth 4"
+00805|Defined? : No.
+00806|-------------------- End of Macro Dump ---------------------
+00807|
+00808|
+00809|
+00810|------------------- Start of Macro Dump --------------------
+00811|Macro Name : "Sloth 5"
+00812|Defined? : No.
+00813|-------------------- End of Macro Dump ---------------------
+00814|
+00815|
+00816|
+00817|------------------- Start of Macro Dump --------------------
+00818|Macro Name : "Unicorn"
+00819|Defined? : Yes.
+00820|Parameters : 3
+00821|Additive? : Yes.
+00822|Zero Calls? : No.
+00823|Many Calls? : No.
+00824|Output File?: No.
+00825|Automatic Line Directive Macro?: No.
+ +-----
+00815|Macro Name : "Zero"
+00816|Defined? : Yes.
+00817|Parameters : 0
+00818|Additive? : No.
+00819|Zero Calls? : Yes.
+00820|Many Calls? : No.
+00821|Output File?: No.
+ +-----
+
+ +-----
+00831|Body part 1: Seqnum=3, Pos(L,C)=(43,3), Expression follows:
+ +-----
+00827|Body part 1: Seqnum=5, Pos(L,C)=(54,3), Expression follows:
+ +-----
+
+ +-----
+00836|Text scrap[Grey]="Turkey"
+ +-----
+00832|Text scrap[Grey]="Sloth"
+00833|------ End Text Element ------
+00834|
+00835|
+00836|-- Start Parameter Element --
+00837|Parameter number=1.
+00838|Parameter is of macro "Zero".
+00839|--- End Parameter Element ---
+00840|
+00841|
+00842|----- Start Text Element -----
+00843|Text scrap[Grey]="Walrus"
+ +-----
+
+ +-----
+00847|------------------- Start of Macro Dump --------------------
+00848|Macro Name : "Walrus 1"
+00849|Defined? : Yes.
+00850|Parameters : 0
+00851|Additive? : No.
+00852|Zero Calls? : No.
+00853|Many Calls? : No.
+00854|Output File?: No.
+00855|Automatic Line Directive Macro?: No.
+00856|Call list :
+00857|Macro body :
+00858|
+00859|--Start of List of Body Parts--
+00860|This macro has 1 body part.
+00861|Body part 1: Seqnum=1, Pos(L,C)=(33,3), Expression follows:
+00862|
+00863|---- Start of Expression ----
+00864|
+00865|----- Start Text Element -----
+00866|Text scrap[Grey]="Sloth"
+00867|------ End Text Element ------
+00868|
+00869|----- End of Expression -----
+00870|
+00871|---End of List of Body Parts---
+00872|
+00873|-------------------- End of Macro Dump ---------------------
+00874|
+00875|
+00876|
+00877|------------------- Start of Macro Dump --------------------
+00878|Macro Name : "Walrus 2"
+00879|Defined? : Yes.
+00880|Parameters : 0
+00881|Additive? : Yes.
+00882|Zero Calls? : No.
+00883|Many Calls? : No.
+00884|Output File?: No.
+00885|Automatic Line Directive Macro?: No.
+00886|Call list :
+00887|Macro body :
+00888|
+00889|--Start of List of Body Parts--
+00890|This macro has 1 body part.
+00891|Body part 1: Seqnum=2, Pos(L,C)=(38,3), Expression follows:
+00892|
+00893|---- Start of Expression ----
+00894|
+00895|----- Start Text Element -----
+00896|Text scrap[Grey]="Sloth"
+00897|------ End Text Element ------
+00898|
+00899|----- End of Expression -----
+00900|
+00901|---End of List of Body Parts---
+00902|
+00903|-------------------- End of Macro Dump ---------------------
+00904|
+00905|
+00906|
+00907|------------------- Start of Macro Dump --------------------
+00908|Macro Name : "Zero"
+00909|Defined? : Yes.
+00910|Parameters : 0
+ +-----
+00854|=========================== End of MACRO TABLE DUMP ============================
+00855|
+00856|
+00857|========================= Start of DOCUMENT LIST DUMP ==========================
+00858|
+00859|
+00860|TEXT COMPONENT: Pos(L,C)=(1,1).
+00861|
+00862|-- Start of Text Scrap List --
+00863|Text scrap[Grey]="PR08: Test semantic checking of macro definitions.<010>
+00864|<010>
+00865|Trip parser to be sure that we won't get any output files!<010>
+00866|"
+00867|--- End of Text Scrap List ---
+00868|
+00869|
+00870|TEXT COMPONENT: Pos(L,C)=(4,3).
+00871|
+00872|-- Start of Text Scrap List --
+00873|Text scrap[Grey]="<010>
+00874|<010>
+00875|1. File macro has parameters. Error.<010>
+00876|"
+00877|--- End of Text Scrap List ---
+00878|
+00879|
+00880|TYPESETTER DIRECTIVE COMPONENT:
+00881| Section "1", Section name="Error recovery point".
+00882|
+00883|TEXT COMPONENT: Pos(L,C)=(8,27).
+00884|
+00885|-- Start of Text Scrap List --
+00886|Text scrap[Grey]="<010>
+00887|<010>
+00888|2. File macro is additive. Error.<010>
+00889|"
+00890|--- End of Text Scrap List ---
+00891|
+00892|
+00893|TYPESETTER DIRECTIVE COMPONENT:
+00894| Section "2", Section name="Error recovery point".
+00895|
+00896|TEXT COMPONENT: Pos(L,C)=(12,27).
+00897|
+00898|-- Start of Text Scrap List --
+00899|Text scrap[Grey]="<010>
+00900|<010>
+00901|3. File macro has too long a name. The test name has 1200 characters. Err.<010>
+00902|Note: This test can't test the error message if the maximum length of a<010>
+00903|macro name is less than the maximum length of a file name as the name<010>
+00904|error is caught first.<010>
+00905|"
+00906|--- End of Text Scrap List ---
+00907|
+00908|
+00909|TYPESETTER DIRECTIVE COMPONENT:
+00910| Section "3", Section name="Error recovery point".
+00911|
+00912|TEXT COMPONENT: Pos(L,C)=(20,27).
+00913|
+00914|-- Start of Text Scrap List --
+00915|Text scrap[Grey]="<010>
+00916|<010>
+00917|4. File macro has zero or many attributes. Error.<010>
+ +-----
+
+ +-----
+00911|Additive? : No.
+00912|Zero Calls? : Yes.
+00913|Many Calls? : No.
+00914|Output File?: No.
+00915|Automatic Line Directive Macro?: No.
+00916|Call list :
+00917|Macro body :
+00918|
+00919|--Start of List of Body Parts--
+00920|This macro has 1 body part.
+00921|Body part 1: Seqnum=5, Pos(L,C)=(54,3), Expression follows:
+00922|
+00923|---- Start of Expression ----
+00924|
+00925|----- Start Text Element -----
+00926|Text scrap[Grey]="Sloth"
+00927|------ End Text Element ------
+00928|
+00929|
+00930|-- Start Parameter Element --
+00931|Parameter number=1.
+00932|Parameter is of macro "Zero".
+00933|--- End Parameter Element ---
+00934|
+00935|
+00936|----- Start Text Element -----
+00937|Text scrap[Grey]="Walrus"
+00938|------ End Text Element ------
+00939|
+00940|----- End of Expression -----
+00941|
+00942|---End of List of Body Parts---
+00943|
+00944|-------------------- End of Macro Dump ---------------------
+00945|
+00946|
+00947|
+00948|=========================== End of MACRO TABLE DUMP ============================
+00949|
+00950|
+00951|========================= Start of DOCUMENT LIST DUMP ==========================
+00952|
+00953|
+00954|TEXT COMPONENT: Pos(L,C)=(1,1).
+00955|
+00956|-- Start of Text Scrap List --
+00957|Text scrap[Grey]="PR08: Test semantic checking of macro definitions.<010>
+00958|<010>
+00959|Trip parser to be sure that we won't get any output files!<010>
+ +-----
+ +-----
+
+ +-----
+00964|TEXT COMPONENT: Pos(L,C)=(4,3).
+00965|
+00966|-- Start of Text Scrap List --
+00967|Text scrap[Grey]="<010>
+00968|<010>
+00969|1. File macro has parameters. Error.<010>
+ +-----
+00922|TYPESETTER DIRECTIVE COMPONENT:
+00923| Section "4", Section name="Error recovery point".
+00924|
+00925|TEXT COMPONENT: Pos(L,C)=(24,27).
+00926|
+00927|-- Start of Text Scrap List --
+00928|Text scrap[White]="<010>
+00929|<010>
+ +-----
+
+ +-----
+00975| Section "1", Section name="Error recovery point".
+00976|
+00977|TEXT COMPONENT: Pos(L,C)=(8,27).
+00978|
+00979|-- Start of Text Scrap List --
+00980|Text scrap[Grey]="<010>
+00981|<010>
+00982|2. File macro is additive. Error.<010>
+ +-----
+00935| Section "5", Section name="Error recovery point".
+00936|
+00937|TEXT COMPONENT: Pos(L,C)=(27,27).
+00938|
+00939|-- Start of Text Scrap List --
+00940|Text scrap[White]="<010>
+00941|<010>
+ +-----
+
+ +-----
+00988| Section "2", Section name="Error recovery point".
+00989|
+00990|TEXT COMPONENT: Pos(L,C)=(12,27).
+ +-----
+00947| Section "6", Section name="Error recovery point".
+00948|
+00949|TEXT COMPONENT: Pos(L,C)=(30,27).
+ +-----
+
+ +-----
+00995|3. File macro has too long a name. The test name has 1200 characters. Err.<010>
+00996|Note: This test can't test the error message if the maximum length of a<010>
+00997|macro name is less than the maximum length of a file name as the name<010>
+00998|error is caught first.<010>
+ +-----
+00954|5. Previous definition is full, current is additive.<010>
+ +-----
+
+ +-----
+01003|TYPESETTER DIRECTIVE COMPONENT:
+01004| Section "3", Section name="Error recovery point".
+01005|
+01006|TEXT COMPONENT: Pos(L,C)=(20,27).
+01007|
+01008|-- Start of Text Scrap List --
+01009|Text scrap[Grey]="<010>
+01010|<010>
+01011|4. File macro has zero or many attributes. Error.<010>
+ +-----
+00959|MACRO DEFINITION COMPONENT: Pos(L,C)=(33,1).
+00960|Part 1 of macro @<Walrus 1@>.
+00961|
+00962|TEXT COMPONENT: Pos(L,C)=(33,26).
+00963|
+00964|-- Start of Text Scrap List --
+00965|Text scrap[White]="<010>
+ +-----
+
+ +-----
+01017| Section "4", Section name="Error recovery point".
+01018|
+01019|TEXT COMPONENT: Pos(L,C)=(24,27).
+01020|
+01021|-- Start of Text Scrap List --
+01022|Text scrap[White]="<010>
+01023|<010>
+ +-----
+00971| Section "7", Section name="Error recovery point".
+00972|
+00973|TEXT COMPONENT: Pos(L,C)=(35,27).
+00974|
+00975|-- Start of Text Scrap List --
+00976|Text scrap[Grey]="<010>
+00977|<010>
+00978|6. Previous definition is additive, current is full.<010>
+ +-----
+
+ +-----
+01028|TYPESETTER DIRECTIVE COMPONENT:
+01029| Section "5", Section name="Error recovery point".
+01030|
+01031|TEXT COMPONENT: Pos(L,C)=(27,27).
+ +-----
+00983|MACRO DEFINITION COMPONENT: Pos(L,C)=(38,1).
+00984|Part 1 of macro @<Walrus 2@>.
+00985|
+00986|TEXT COMPONENT: Pos(L,C)=(38,26).
+ +-----
+
+ +-----
+01035|<010>
+ +-----
+ +-----
+
+ +-----
+01041| Section "6", Section name="Error recovery point".
+01042|
+01043|TEXT COMPONENT: Pos(L,C)=(30,27).
+ +-----
+00995| Section "8", Section name="Error recovery point".
+00996|
+00997|TEXT COMPONENT: Pos(L,C)=(40,27).
+ +-----
+
+ +-----
+01048|5. Previous definition is full, current is additive.<010>
+ +-----
+01002|7. Non-first body part of partial has parameter.<010>
+ +-----
+
+ +-----
+01053|MACRO DEFINITION COMPONENT: Pos(L,C)=(33,1).
+01054|Part 1 of macro @<Walrus 1@>.
+01055|
+01056|TEXT COMPONENT: Pos(L,C)=(33,26).
+ +-----
+01007|MACRO DEFINITION COMPONENT: Pos(L,C)=(43,1).
+01008|Part 1 of macro @<Unicorn@>.
+01009|
+01010|TEXT COMPONENT: Pos(L,C)=(43,32).
+ +-----
+
+ +-----
+01065| Section "7", Section name="Error recovery point".
+01066|
+01067|TEXT COMPONENT: Pos(L,C)=(35,27).
+ +-----
+01019| Section "9", Section name="Error recovery point".
+01020|
+01021|TEXT COMPONENT: Pos(L,C)=(45,27).
+ +-----
+
+ +-----
+01072|6. Previous definition is additive, current is full.<010>
+ +-----
+01026|8. Zero or many attributes on non-first body part of additive.<010>
+ +-----
+
+ +-----
+01077|MACRO DEFINITION COMPONENT: Pos(L,C)=(38,1).
+01078|Part 1 of macro @<Walrus 2@>.
+01079|
+01080|TEXT COMPONENT: Pos(L,C)=(38,26).
+ +-----
+01031|MACRO DEFINITION COMPONENT: Pos(L,C)=(48,1).
+01032|Part 1 of macro @<Elephant@>.
+01033|
+01034|TEXT COMPONENT: Pos(L,C)=(48,31).
+ +-----
+
+ +-----
+01089| Section "8", Section name="Error recovery point".
+01090|
+01091|TEXT COMPONENT: Pos(L,C)=(40,27).
+ +-----
+01043| Section "10", Section name="Error recovery point".
+01044|
+01045|TEXT COMPONENT: Pos(L,C)=(50,27).
+ +-----
+
+ +-----
+01096|7. Non-first body part of partial has parameter.<010>
+ +-----
+01050|9. Check that non-existent formal parameters are caught.<010>
+01051|<010>
+ +-----
+
+ +-----
+01101|MACRO DEFINITION COMPONENT: Pos(L,C)=(43,1).
+01102|Part 1 of macro @<Unicorn@>.
+01103|
+01104|TEXT COMPONENT: Pos(L,C)=(43,32).
+ +-----
+01056|MACRO DEFINITION COMPONENT: Pos(L,C)=(54,1).
+01057|Part 1 of macro @<Zero@>.
+01058|
+01059|TEXT COMPONENT: Pos(L,C)=(54,30).
+ +-----
+
+ +-----
+01113| Section "9", Section name="Error recovery point".
+01114|
+01115|TEXT COMPONENT: Pos(L,C)=(45,27).
+01116|
+01117|-- Start of Text Scrap List --
+01118|Text scrap[Grey]="<010>
+01119|<010>
+01120|8. Zero or many attributes on non-first body part of additive.<010>
+ +-----
+01068| Section "11", Section name="Error recovery point".
+01069|
+01070|TEXT COMPONENT: Pos(L,C)=(55,27).
+01071|
+01072|-- Start of Text Scrap List --
+01073|Text scrap[White]="<010>
+01074|<010>
+ +-----
+
+ +-----
+01125|MACRO DEFINITION COMPONENT: Pos(L,C)=(48,1).
+01126|Part 1 of macro @<Elephant@>.
+01127|
+01128|TEXT COMPONENT: Pos(L,C)=(48,31).
+ +-----
+01079|MACRO DEFINITION COMPONENT: Pos(L,C)=(57,1).
+01080|Part 1 of macro @<One@>.
+01081|
+01082|TEXT COMPONENT: Pos(L,C)=(57,35).
+ +-----
+
+ +-----
+01137| Section "10", Section name="Error recovery point".
+01138|
+01139|TEXT COMPONENT: Pos(L,C)=(50,27).
+01140|
+01141|-- Start of Text Scrap List --
+01142|Text scrap[Grey]="<010>
+01143|<010>
+01144|9. Check that non-existent formal parameters are caught.<010>
+ +-----
+01091| Section "12", Section name="Error recovery point".
+01092|
+01093|TEXT COMPONENT: Pos(L,C)=(58,27).
+01094|
+01095|-- Start of Text Scrap List --
+01096|Text scrap[White]="<010>
+ +-----
+
+ +-----
+01150|MACRO DEFINITION COMPONENT: Pos(L,C)=(54,1).
+01151|Part 1 of macro @<Zero@>.
+01152|
+01153|TEXT COMPONENT: Pos(L,C)=(54,30).
+ +-----
+01102|MACRO DEFINITION COMPONENT: Pos(L,C)=(60,1).
+01103|Part 1 of macro @<Many@>.
+01104|
+01105|TEXT COMPONENT: Pos(L,C)=(60,36).
+ +-----
+
+ +-----
+01162| Section "11", Section name="Error recovery point".
+01163|
+01164|TEXT COMPONENT: Pos(L,C)=(55,27).
+ +-----
+01114| Section "13", Section name="Error recovery point".
+01115|
+01116|TEXT COMPONENT: Pos(L,C)=(61,27).
+ +-----
+
+ +-----
+01168|<010>
+ +-----
+ +-----
+
+ +-----
+01173|MACRO DEFINITION COMPONENT: Pos(L,C)=(57,1).
+01174|Part 1 of macro @<One@>.
+01175|
+01176|TEXT COMPONENT: Pos(L,C)=(57,35).
+01177|
+01178|-- Start of Text Scrap List --
+01179|Text scrap[White]="<010>
+01180|"
+01181|--- End of Text Scrap List ---
+01182|
+01183|
+01184|TYPESETTER DIRECTIVE COMPONENT:
+01185| Section "12", Section name="Error recovery point".
+01186|
+01187|TEXT COMPONENT: Pos(L,C)=(58,27).
+01188|
+01189|-- Start of Text Scrap List --
+01190|Text scrap[White]="<010>
+01191|<010>
+01192|"
+01193|--- End of Text Scrap List ---
+01194|
+01195|
+01196|MACRO DEFINITION COMPONENT: Pos(L,C)=(60,1).
+01197|Part 1 of macro @<Many@>.
+01198|
+01199|TEXT COMPONENT: Pos(L,C)=(60,36).
+01200|
+01201|-- Start of Text Scrap List --
+01202|Text scrap[White]="<010>
+01203|"
+01204|--- End of Text Scrap List ---
+01205|
+01206|
+01207|TYPESETTER DIRECTIVE COMPONENT:
+01208| Section "13", Section name="Error recovery point".
+01209|
+01210|TEXT COMPONENT: Pos(L,C)=(61,27).
+01211|
+01212|-- Start of Text Scrap List --
+01213|Text scrap[White]="<010>
+01214|"
+01215|--- End of Text Scrap List ---
+01216|
+01217|
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/pr09.lis"
+ with "/usr/var/tmp/funnelweb/answers/pr09.lis".
+
+ +-----
+00825|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00844|Macro Name : "#file"
+ +-----
+00843|Macro Name : "Error1"
+ +-----
+
+ +-----
+00848|Zero Calls? : Yes.
+00849|Many Calls? : Yes.
+00850|Output File?: No.
+00851|Automatic Line Directive Macro?: No.
+ +-----
+00847|Zero Calls? : No.
+00848|Many Calls? : No.
+00849|Output File?: No.
+ +-----
+
+ +-----
+00856|This macro has 1 body part.
+00857|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00858|
+00859|---- Start of Expression ----
+00860|
+00861|--- Start Special Function ---
+00862|---- End Special Function ----
+00863|
+00864|----- End of Expression -----
+00865|
+ +-----
+00854|This macro has 0 body parts.
+ +-----
+
+ +-----
+00873|Macro Name : "#line"
+ +-----
+00862|Macro Name : "Error2"
+ +-----
+
+ +-----
+00877|Zero Calls? : Yes.
+00878|Many Calls? : Yes.
+00879|Output File?: No.
+00880|Automatic Line Directive Macro?: No.
+ +-----
+00866|Zero Calls? : No.
+00867|Many Calls? : No.
+00868|Output File?: No.
+ +-----
+
+ +-----
+00885|This macro has 1 body part.
+00886|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00887|
+00888|---- Start of Expression ----
+00889|
+00890|--- Start Special Function ---
+00891|---- End Special Function ----
+00892|
+00893|----- End of Expression -----
+00894|
+ +-----
+00873|This macro has 0 body parts.
+ +-----
+
+ +-----
+00902|Macro Name : "#timestamp"
+ +-----
+00881|Macro Name : "Error3"
+ +-----
+
+ +-----
+00906|Zero Calls? : Yes.
+00907|Many Calls? : Yes.
+00908|Output File?: No.
+00909|Automatic Line Directive Macro?: No.
+ +-----
+00885|Zero Calls? : No.
+00886|Many Calls? : No.
+00887|Output File?: No.
+ +-----
+
+ +-----
+00914|This macro has 1 body part.
+00915|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00916|
+00917|---- Start of Expression ----
+00918|
+00919|--- Start Special Function ---
+00920|---- End Special Function ----
+00921|
+00922|----- End of Expression -----
+00923|
+ +-----
+00892|This macro has 0 body parts.
+ +-----
+
+ +-----
+00931|Macro Name : "Error1"
+ +-----
+00900|Macro Name : "Error4"
+ +-----
+
+ +-----
+00938|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00951|Macro Name : "Error2"
+ +-----
+00919|Macro Name : "Error5"
+ +-----
+
+ +-----
+00958|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00963|This macro has 0 body parts.
+ +-----
+00930|This macro has 1 body part.
+00931|Body part 1: Seqnum=8, Pos(L,C)=(75,3), Expression follows:
+00932|
+00933|---- Start of Expression ----
+00934|
+00935|----- Start Text Element -----
+00936|Text scrap[White]="<010>
+00937|"
+00938|------ End Text Element ------
+00939|
+00940|
+00941|-- Begin Invocation Element --
+00942|Invocation of macro @<Two@>
+00943|This invocation has 1 actual parameters.
+00944|Actual parameter list follows as a sequence of expressions:
+00945|(Text crud before and after parameter has been omitted).
+00946|Expression for parameter number 1:
+00947|
+00948|---- Start of Expression ----
+00949|
+00950|----- Start Text Element -----
+00951|Text scrap[Grey]="Toucan"
+00952|------ End Text Element ------
+00953|
+00954|----- End of Expression -----
+00955|
+00956|--- End Invocation Element ---
+00957|
+00958|
+00959|----- Start Text Element -----
+00960|Text scrap[White]="<010>
+00961|"
+00962|------ End Text Element ------
+00963|
+00964|----- End of Expression -----
+00965|
+ +-----
+
+ +-----
+00971|Macro Name : "Error3"
+ +-----
+00973|Macro Name : "Error6"
+ +-----
+
+ +-----
+00978|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00991|Macro Name : "Error4"
+ +-----
+00992|Macro Name : "Error7"
+ +-----
+
+ +-----
+00998|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+01011|Macro Name : "Error5"
+ +-----
+01011|Macro Name : "Macro containing the test macro calls."
+ +-----
+
+ +-----
+01018|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+01024|Body part 1: Seqnum=8, Pos(L,C)=(75,3), Expression follows:
+ +-----
+01023|Body part 1: Seqnum=7, Pos(L,C)=(17,3), Expression follows:
+ +-----
+
+ +-----
+01029|Text scrap[White]="<010>
+ +-----
+01028|Text scrap[Grey]="<010>
+01029|1. Test macro call with no parameter list.<010>
+ +-----
+
+ +-----
+01035|Invocation of macro @<Two@>
+01036|This invocation has 1 actual parameters.
+01037|Actual parameter list follows as a sequence of expressions:
+01038|(Text crud before and after parameter has been omitted).
+01039|Expression for parameter number 1:
+01040|
+01041|---- Start of Expression ----
+01042|
+01043|----- Start Text Element -----
+01044|Text scrap[Grey]="Toucan"
+01045|------ End Text Element ------
+01046|
+01047|----- End of Expression -----
+01048|
+ +-----
+01035|Invocation of macro @<Zero@>
+01036|No actual parameters.
+ +-----
+
+ +-----
+01053|Text scrap[White]="<010>
+ +-----
+01041|Text scrap[Grey]="<010>
+01042|<010>
+01043|2. Test macro call with quick name.<010>
+ +-----
+
+ +-----
+01057|----- End of Expression -----
+01058|
+01059|---End of List of Body Parts---
+01060|
+01061|-------------------- End of Macro Dump ---------------------
+01062|
+01063|
+01064|
+01065|------------------- Start of Macro Dump --------------------
+01066|Macro Name : "Error6"
+01067|Defined? : Yes.
+01068|Parameters : 0
+01069|Additive? : No.
+01070|Zero Calls? : No.
+01071|Many Calls? : No.
+01072|Output File?: No.
+01073|Automatic Line Directive Macro?: No.
+01074|Call list :
+01075|Macro body :
+01076|
+01077|--Start of List of Body Parts--
+01078|This macro has 0 body parts.
+01079|---End of List of Body Parts---
+01080|
+01081|-------------------- End of Macro Dump ---------------------
+01082|
+01083|
+01084|
+01085|------------------- Start of Macro Dump --------------------
+01086|Macro Name : "Error7"
+01087|Defined? : Yes.
+01088|Parameters : 0
+01089|Additive? : No.
+01090|Zero Calls? : No.
+01091|Many Calls? : No.
+01092|Output File?: No.
+01093|Automatic Line Directive Macro?: No.
+01094|Call list :
+01095|Macro body :
+01096|
+01097|--Start of List of Body Parts--
+01098|This macro has 0 body parts.
+01099|---End of List of Body Parts---
+01100|
+01101|-------------------- End of Macro Dump ---------------------
+01102|
+01103|
+01104|
+01105|------------------- Start of Macro Dump --------------------
+01106|Macro Name : "Macro containing the test macro calls."
+01107|Defined? : Yes.
+01108|Parameters : 0
+01109|Additive? : No.
+01110|Zero Calls? : No.
+01111|Many Calls? : No.
+01112|Output File?: No.
+01113|Automatic Line Directive Macro?: No.
+01114|Call list :
+01115|Macro body :
+01116|
+01117|--Start of List of Body Parts--
+01118|This macro has 1 body part.
+01119|Body part 1: Seqnum=7, Pos(L,C)=(17,3), Expression follows:
+01120|
+ +-----
+01047|
+01048|-- Begin Invocation Element --
+01049|Invocation of macro @<"@>
+01050|No actual parameters.
+01051|--- End Invocation Element ---
+01052|
+01053|
+01054|----- Start Text Element -----
+01055|Text scrap[Grey]="<010>
+01056|<010>
+01057|3. Test macro call with one parameter.<010>
+01058|"
+01059|------ End Text Element ------
+01060|
+01061|
+01062|-- Begin Invocation Element --
+01063|Invocation of macro @<One@>
+01064|This invocation has 1 actual parameters.
+01065|Actual parameter list follows as a sequence of expressions:
+01066|(Text crud before and after parameter has been omitted).
+01067|Expression for parameter number 1:
+01068|
+01069|---- Start of Expression ----
+01070|
+01071|----- Start Text Element -----
+01072|Text scrap[Grey]="Toucan"
+01073|------ End Text Element ------
+01074|
+01075|----- End of Expression -----
+01076|
+01077|--- End Invocation Element ---
+01078|
+01079|
+01080|----- Start Text Element -----
+01081|Text scrap[Grey]="<010>
+01082|<010>
+01083|4. Test macro call with many parameters.<010>
+01084|"
+01085|------ End Text Element ------
+01086|
+01087|
+01088|-- Begin Invocation Element --
+01089|Invocation of macro @<Two@>
+01090|This invocation has 2 actual parameters.
+01091|Actual parameter list follows as a sequence of expressions:
+01092|(Text crud before and after parameter has been omitted).
+01093|Expression for parameter number 1:
+01094|
+01095|---- Start of Expression ----
+01096|
+01097|----- Start Text Element -----
+01098|Text scrap[Grey]="Toucan"
+01099|------ End Text Element ------
+01100|
+01101|----- End of Expression -----
+01102|
+01103|Expression for parameter number 2:
+01104|
+01105|---- Start of Expression ----
+01106|
+01107|----- Start Text Element -----
+01108|Text scrap[Grey]="Teapot"
+01109|------ End Text Element ------
+01110|
+ +-----
+
+ +-----
+01121|---- Start of Expression ----
+01122|
+01123|----- Start Text Element -----
+01124|Text scrap[Grey]="<010>
+01125|1. Test macro call with no parameter list.<010>
+ +-----
+01111|----- End of Expression -----
+01112|
+01113|--- End Invocation Element ---
+01114|
+01115|
+01116|----- Start Text Element -----
+01117|Text scrap[White]="<010>
+ +-----
+
+ +-----
+01131|Invocation of macro @<Zero@>
+01132|No actual parameters.
+01133|--- End Invocation Element ---
+01134|
+01135|
+01136|----- Start Text Element -----
+01137|Text scrap[Grey]="<010>
+01138|<010>
+01139|2. Test macro call with quick name.<010>
+01140|"
+01141|------ End Text Element ------
+01142|
+01143|
+01144|-- Begin Invocation Element --
+01145|Invocation of macro @<"@>
+01146|No actual parameters.
+01147|--- End Invocation Element ---
+01148|
+01149|
+01150|----- Start Text Element -----
+01151|Text scrap[Grey]="<010>
+01152|<010>
+01153|3. Test macro call with one parameter.<010>
+01154|"
+01155|------ End Text Element ------
+01156|
+01157|
+01158|-- Begin Invocation Element --
+01159|Invocation of macro @<One@>
+01160|This invocation has 1 actual parameters.
+ +-----
+01123|Invocation of macro @<Three@>
+01124|This invocation has 3 actual parameters.
+ +-----
+
+ +-----
+01173|--- End Invocation Element ---
+01174|
+01175|
+01176|----- Start Text Element -----
+01177|Text scrap[Grey]="<010>
+01178|<010>
+01179|4. Test macro call with many parameters.<010>
+01180|"
+01181|------ End Text Element ------
+01182|
+01183|
+01184|-- Begin Invocation Element --
+01185|Invocation of macro @<Two@>
+01186|This invocation has 2 actual parameters.
+01187|Actual parameter list follows as a sequence of expressions:
+01188|(Text crud before and after parameter has been omitted).
+01189|Expression for parameter number 1:
+ +-----
+01137|Expression for parameter number 2:
+ +-----
+
+ +-----
+01194|Text scrap[Grey]="Toucan"
+ +-----
+01142|Text scrap[Grey]="Teapot"
+ +-----
+
+ +-----
+01199|Expression for parameter number 2:
+ +-----
+01147|Expression for parameter number 3:
+ +-----
+
+ +-----
+01204|Text scrap[Grey]="Teapot"
+ +-----
+01152|Text scrap[Grey]="Walrus"
+ +-----
+
+ +-----
+01219|Invocation of macro @<Three@>
+01220|This invocation has 3 actual parameters.
+ +-----
+01167|Invocation of macro @<Nine@>
+01168|This invocation has 9 actual parameters.
+ +-----
+
+ +-----
+01253|--- End Invocation Element ---
+01254|
+01255|
+01256|----- Start Text Element -----
+01257|Text scrap[White]="<010>
+01258|"
+01259|------ End Text Element ------
+01260|
+01261|
+01262|-- Begin Invocation Element --
+01263|Invocation of macro @<Nine@>
+01264|This invocation has 9 actual parameters.
+01265|Actual parameter list follows as a sequence of expressions:
+01266|(Text crud before and after parameter has been omitted).
+01267|Expression for parameter number 1:
+ +-----
+01201|Expression for parameter number 4:
+ +-----
+
+ +-----
+01272|Text scrap[Grey]="Toucan"
+ +-----
+01206|Text scrap[Grey]="<010>
+01207| Toucan"
+ +-----
+
+ +-----
+01277|Expression for parameter number 2:
+ +-----
+01212|Expression for parameter number 5:
+ +-----
+
+ +-----
+01287|Expression for parameter number 3:
+ +-----
+01222|Expression for parameter number 6:
+ +-----
+
+ +-----
+01297|Expression for parameter number 4:
+ +-----
+01232|Expression for parameter number 7:
+ +-----
+
+ +-----
+01308|Expression for parameter number 5:
+ +-----
+01243|Expression for parameter number 8:
+ +-----
+
+ +-----
+01318|Expression for parameter number 6:
+ +-----
+01253|Expression for parameter number 9:
+ +-----
+
+ +-----
+01328|Expression for parameter number 7:
+01329|
+01330|---- Start of Expression ----
+ +-----
+01263|--- End Invocation Element ---
+01264|
+ +-----
+
+ +-----
+01334| Toucan"
+01335|------ End Text Element ------
+01336|
+01337|----- End of Expression -----
+01338|
+01339|Expression for parameter number 8:
+ +-----
+01268|<010>
+01269|5. Test macro calls with double quotes on parameters.<010>
+01270|"
+01271|------ End Text Element ------
+01272|
+01273|
+01274|-- Begin Invocation Element --
+01275|Invocation of macro @<One@>
+01276|This invocation has 1 actual parameters.
+01277|Actual parameter list follows as a sequence of expressions:
+01278|(Text crud before and after parameter has been omitted).
+01279|Expression for parameter number 1:
+ +-----
+
+ +-----
+01344|Text scrap[Grey]="Teapot"
+ +-----
+01284|Text scrap[Grey]="Toucan"
+ +-----
+
+ +-----
+01349|Expression for parameter number 9:
+01350|
+01351|---- Start of Expression ----
+01352|
+01353|----- Start Text Element -----
+01354|Text scrap[Grey]="Walrus"
+01355|------ End Text Element ------
+01356|
+01357|----- End of Expression -----
+01358|
+ +-----
+ +-----
+
+ +-----
+01363|Text scrap[Grey]="<010>
+01364|<010>
+01365|5. Test macro calls with double quotes on parameters.<010>
+ +-----
+01293|Text scrap[White]="<010>
+ +-----
+
+ +-----
+01371|Invocation of macro @<One@>
+01372|This invocation has 1 actual parameters.
+ +-----
+01299|Invocation of macro @<Two@>
+01300|This invocation has 2 actual parameters.
+ +-----
+
+ +-----
+ +-----
+01313|Expression for parameter number 2:
+01314|
+01315|---- Start of Expression ----
+01316|
+01317|----- Start Text Element -----
+01318|Text scrap[Grey]="Teapot"
+01319|------ End Text Element ------
+01320|
+01321|----- End of Expression -----
+01322|
+ +-----
+
+ +-----
+01395|Invocation of macro @<Two@>
+01396|This invocation has 2 actual parameters.
+ +-----
+01333|Invocation of macro @<Three@>
+01334|This invocation has 3 actual parameters.
+ +-----
+
+ +-----
+ +-----
+01357|Expression for parameter number 3:
+01358|
+01359|---- Start of Expression ----
+01360|
+01361|----- Start Text Element -----
+01362|Text scrap[Grey]="Walrus"
+01363|------ End Text Element ------
+01364|
+01365|----- End of Expression -----
+01366|
+ +-----
+
+ +-----
+01429|Invocation of macro @<Three@>
+01430|This invocation has 3 actual parameters.
+ +-----
+01377|Invocation of macro @<Nine@>
+01378|This invocation has 9 actual parameters.
+ +-----
+
+ +-----
+01463|--- End Invocation Element ---
+01464|
+01465|
+01466|----- Start Text Element -----
+01467|Text scrap[White]="<010>
+01468|"
+01469|------ End Text Element ------
+01470|
+01471|
+01472|-- Begin Invocation Element --
+01473|Invocation of macro @<Nine@>
+01474|This invocation has 9 actual parameters.
+01475|Actual parameter list follows as a sequence of expressions:
+01476|(Text crud before and after parameter has been omitted).
+01477|Expression for parameter number 1:
+ +-----
+01411|Expression for parameter number 4:
+ +-----
+
+ +-----
+01487|Expression for parameter number 2:
+ +-----
+01421|Expression for parameter number 5:
+ +-----
+
+ +-----
+01497|Expression for parameter number 3:
+ +-----
+01431|Expression for parameter number 6:
+ +-----
+
+ +-----
+01507|Expression for parameter number 4:
+ +-----
+01441|Expression for parameter number 7:
+ +-----
+
+ +-----
+01517|Expression for parameter number 5:
+ +-----
+01451|Expression for parameter number 8:
+ +-----
+
+ +-----
+01527|Expression for parameter number 6:
+ +-----
+01461|Expression for parameter number 9:
+ +-----
+
+ +-----
+01537|Expression for parameter number 7:
+ +-----
+01471|--- End Invocation Element ---
+01472|
+01473|
+01474|----- Start Text Element -----
+01475|Text scrap[Grey]="<010>
+01476|<010>
+01477|7. Test macro calls with mixed double quotes on parameters.<010>
+01478|"
+01479|------ End Text Element ------
+01480|
+01481|
+01482|-- Begin Invocation Element --
+01483|Invocation of macro @<Two@>
+01484|This invocation has 2 actual parameters.
+01485|Actual parameter list follows as a sequence of expressions:
+01486|(Text crud before and after parameter has been omitted).
+01487|Expression for parameter number 1:
+ +-----
+
+ +-----
+01547|Expression for parameter number 8:
+ +-----
+01497|Expression for parameter number 2:
+ +-----
+
+ +-----
+01557|Expression for parameter number 9:
+01558|
+01559|---- Start of Expression ----
+01560|
+01561|----- Start Text Element -----
+01562|Text scrap[Grey]="Walrus"
+01563|------ End Text Element ------
+01564|
+01565|----- End of Expression -----
+01566|
+ +-----
+ +-----
+
+ +-----
+01571|Text scrap[Grey]="<010>
+01572|<010>
+01573|7. Test macro calls with mixed double quotes on parameters.<010>
+ +-----
+01511|Text scrap[White]="<010>
+ +-----
+
+ +-----
+01579|Invocation of macro @<Two@>
+01580|This invocation has 2 actual parameters.
+ +-----
+01517|Invocation of macro @<Three@>
+01518|This invocation has 3 actual parameters.
+ +-----
+
+ +-----
+ +-----
+01541|Expression for parameter number 3:
+01542|
+01543|---- Start of Expression ----
+01544|
+01545|----- Start Text Element -----
+01546|Text scrap[Grey]="Walrus"
+01547|------ End Text Element ------
+01548|
+01549|----- End of Expression -----
+01550|
+ +-----
+
+ +-----
+01613|Invocation of macro @<Three@>
+01614|This invocation has 3 actual parameters.
+ +-----
+01561|Invocation of macro @<Nine@>
+01562|This invocation has 9 actual parameters.
+ +-----
+
+ +-----
+01642|Text scrap[Grey]="Walrus"
+ +-----
+01590|Text scrap[Grey]=" Walrus "
+ +-----
+
+ +-----
+01647|--- End Invocation Element ---
+01648|
+01649|
+01650|----- Start Text Element -----
+01651|Text scrap[White]="<010>
+01652|"
+01653|------ End Text Element ------
+01654|
+01655|
+01656|-- Begin Invocation Element --
+01657|Invocation of macro @<Nine@>
+01658|This invocation has 9 actual parameters.
+01659|Actual parameter list follows as a sequence of expressions:
+01660|(Text crud before and after parameter has been omitted).
+01661|Expression for parameter number 1:
+ +-----
+01595|Expression for parameter number 4:
+ +-----
+
+ +-----
+01671|Expression for parameter number 2:
+ +-----
+01605|Expression for parameter number 5:
+ +-----
+
+ +-----
+01676|Text scrap[Grey]="Teapot"
+ +-----
+01610|Text scrap[Grey]=" Teapot "
+ +-----
+
+ +-----
+01681|Expression for parameter number 3:
+ +-----
+01615|Expression for parameter number 6:
+ +-----
+
+ +-----
+01686|Text scrap[Grey]=" Walrus "
+ +-----
+01620|Text scrap[Grey]="Walrus"
+ +-----
+
+ +-----
+01691|Expression for parameter number 4:
+ +-----
+01625|Expression for parameter number 7:
+ +-----
+
+ +-----
+01701|Expression for parameter number 5:
+ +-----
+01635|Expression for parameter number 8:
+ +-----
+
+ +-----
+01706|Text scrap[Grey]=" Teapot "
+ +-----
+01640|Text scrap[Grey]="Teapot"
+ +-----
+
+ +-----
+01711|Expression for parameter number 6:
+ +-----
+01645|Expression for parameter number 9:
+ +-----
+
+ +-----
+01721|Expression for parameter number 7:
+01722|
+01723|---- Start of Expression ----
+01724|
+01725|----- Start Text Element -----
+01726|Text scrap[Grey]="Toucan"
+ +-----
+01655|--- End Invocation Element ---
+01656|
+01657|
+01658|----- Start Text Element -----
+01659|Text scrap[White]="<010>
+01660|<010>
+01661|"
+ +-----
+
+ +-----
+01731|Expression for parameter number 8:
+01732|
+01733|---- Start of Expression ----
+01734|
+01735|----- Start Text Element -----
+01736|Text scrap[Grey]="Teapot"
+01737|------ End Text Element ------
+01738|
+01739|----- End of Expression -----
+01740|
+01741|Expression for parameter number 9:
+01742|
+01743|---- Start of Expression ----
+01744|
+01745|----- Start Text Element -----
+01746|Text scrap[Grey]="Walrus"
+01747|------ End Text Element ------
+01748|
+01749|----- End of Expression -----
+01750|
+01751|--- End Invocation Element ---
+01752|
+01753|
+01754|----- Start Text Element -----
+01755|Text scrap[White]="<010>
+01756|<010>
+01757|"
+01758|------ End Text Element ------
+01759|
+01760|----- End of Expression -----
+01761|
+ +-----
+ +-----
+
+ +-----
+01776|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+01804|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+01831|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+01859|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+01888|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/pr10.lis"
+ with "/usr/var/tmp/funnelweb/answers/pr10.lis".
+
+ +-----
+00204|Macro Name : "#file"
+ +-----
+00204|Macro Name : "Sloth1"
+ +-----
+
+ +-----
+00208|Zero Calls? : Yes.
+00209|Many Calls? : Yes.
+00210|Output File?: No.
+00211|Automatic Line Directive Macro?: No.
+ +-----
+00208|Zero Calls? : No.
+00209|Many Calls? : No.
+00210|Output File?: No.
+ +-----
+
+ +-----
+00216|This macro has 1 body part.
+00217|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00218|
+00219|---- Start of Expression ----
+00220|
+00221|--- Start Special Function ---
+00222|---- End Special Function ----
+00223|
+00224|----- End of Expression -----
+00225|
+ +-----
+00215|This macro has 0 body parts.
+ +-----
+
+ +-----
+00233|Macro Name : "#line"
+ +-----
+00223|Macro Name : "Sloth2"
+ +-----
+
+ +-----
+00237|Zero Calls? : Yes.
+00238|Many Calls? : Yes.
+00239|Output File?: No.
+00240|Automatic Line Directive Macro?: No.
+ +-----
+00227|Zero Calls? : No.
+00228|Many Calls? : No.
+00229|Output File?: No.
+ +-----
+
+ +-----
+00245|This macro has 1 body part.
+00246|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00247|
+00248|---- Start of Expression ----
+00249|
+00250|--- Start Special Function ---
+00251|---- End Special Function ----
+00252|
+00253|----- End of Expression -----
+00254|
+ +-----
+00234|This macro has 0 body parts.
+ +-----
+
+ +-----
+00262|Macro Name : "#timestamp"
+ +-----
+00242|Macro Name : "Sloth3"
+ +-----
+
+ +-----
+00266|Zero Calls? : Yes.
+00267|Many Calls? : Yes.
+00268|Output File?: No.
+00269|Automatic Line Directive Macro?: No.
+ +-----
+00246|Zero Calls? : No.
+00247|Many Calls? : No.
+00248|Output File?: No.
+ +-----
+
+ +-----
+00274|This macro has 1 body part.
+00275|Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+00276|
+00277|---- Start of Expression ----
+00278|
+00279|--- Start Special Function ---
+00280|---- End Special Function ----
+00281|
+00282|----- End of Expression -----
+00283|
+ +-----
+00253|This macro has 0 body parts.
+ +-----
+
+ +-----
+00291|Macro Name : "Sloth1"
+ +-----
+00261|Macro Name : "Sloth4"
+ +-----
+
+ +-----
+00298|Automatic Line Directive Macro?: No.
+ +-----
+ +-----
+
+ +-----
+00310|------------------- Start of Macro Dump --------------------
+00311|Macro Name : "Sloth2"
+00312|Defined? : Yes.
+00313|Parameters : 0
+00314|Additive? : No.
+00315|Zero Calls? : No.
+00316|Many Calls? : No.
+00317|Output File?: No.
+00318|Automatic Line Directive Macro?: No.
+00319|Call list :
+00320|Macro body :
+00321|
+00322|--Start of List of Body Parts--
+00323|This macro has 0 body parts.
+00324|---End of List of Body Parts---
+00325|
+00326|-------------------- End of Macro Dump ---------------------
+00327|
+00328|
+00329|
+00330|------------------- Start of Macro Dump --------------------
+00331|Macro Name : "Sloth3"
+00332|Defined? : Yes.
+00333|Parameters : 0
+00334|Additive? : No.
+00335|Zero Calls? : No.
+00336|Many Calls? : No.
+00337|Output File?: No.
+00338|Automatic Line Directive Macro?: No.
+00339|Call list :
+00340|Macro body :
+00341|
+00342|--Start of List of Body Parts--
+00343|This macro has 0 body parts.
+00344|---End of List of Body Parts---
+00345|
+00346|-------------------- End of Macro Dump ---------------------
+00347|
+00348|
+00349|
+00350|------------------- Start of Macro Dump --------------------
+00351|Macro Name : "Sloth4"
+00352|Defined? : Yes.
+00353|Parameters : 0
+00354|Additive? : No.
+00355|Zero Calls? : No.
+00356|Many Calls? : No.
+00357|Output File?: No.
+00358|Automatic Line Directive Macro?: No.
+00359|Call list :
+00360|Macro body :
+00361|
+00362|--Start of List of Body Parts--
+00363|This macro has 0 body parts.
+00364|---End of List of Body Parts---
+00365|
+00366|-------------------- End of Macro Dump ---------------------
+00367|
+00368|
+00369|
+ +-----
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/an01.lis"
+ with "/usr/var/tmp/funnelweb/answers/an01.lis".
+
+ +-----
+ +-----
+00004|E: No macros defined.
+ +-----
+
+ +-----
+00011|There was 1 Error.
+ +-----
+00012|There were 2 Errors.
+ +-----
+
+
+Comparing "/usr/var/tmp/funnelweb/results/an02.lis"
+ with "/usr/var/tmp/funnelweb/answers/an02.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/an03.lis"
+ with "/usr/var/tmp/funnelweb/answers/an03.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/an04.lis"
+ with "/usr/var/tmp/funnelweb/answers/an04.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg01.lis"
+ with "/usr/var/tmp/funnelweb/answers/tg01.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg01.out"
+ with "/usr/var/tmp/funnelweb/answers/tg01.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg02.lis"
+ with "/usr/var/tmp/funnelweb/answers/tg02.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg02.out"
+ with "/usr/var/tmp/funnelweb/answers/tg02.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg03.lis"
+ with "/usr/var/tmp/funnelweb/answers/tg03.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg03.out"
+ with "/usr/var/tmp/funnelweb/answers/tg03.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg04.lis"
+ with "/usr/var/tmp/funnelweb/answers/tg04.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg04.out"
+ with "/usr/var/tmp/funnelweb/answers/tg04.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg05.lis"
+ with "/usr/var/tmp/funnelweb/answers/tg05.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg05.out"
+ with "/usr/var/tmp/funnelweb/answers/tg05.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg06.lis"
+ with "/usr/var/tmp/funnelweb/answers/tg06.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg06.out"
+ with "/usr/var/tmp/funnelweb/answers/tg06.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg07.lis"
+ with "/usr/var/tmp/funnelweb/answers/tg07.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg07.out"
+ with "/usr/var/tmp/funnelweb/answers/tg07.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg08.lis"
+ with "/usr/var/tmp/funnelweb/answers/tg08.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg08.out"
+ with "/usr/var/tmp/funnelweb/answers/tg08.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg09.lis"
+ with "/usr/var/tmp/funnelweb/answers/tg09.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/tg09.out"
+ with "/usr/var/tmp/funnelweb/answers/tg09.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv01.lis"
+ with "/usr/var/tmp/funnelweb/answers/wv01.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv01.tex"
+ with "/usr/var/tmp/funnelweb/answers/wv01.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv02.lis"
+ with "/usr/var/tmp/funnelweb/answers/wv02.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv02.tex"
+ with "/usr/var/tmp/funnelweb/answers/wv02.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv03.lis"
+ with "/usr/var/tmp/funnelweb/answers/wv03.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv03.tex"
+ with "/usr/var/tmp/funnelweb/answers/wv03.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv04.lis"
+ with "/usr/var/tmp/funnelweb/answers/wv04.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv04.tex"
+ with "/usr/var/tmp/funnelweb/answers/wv04.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv05.lis"
+ with "/usr/var/tmp/funnelweb/answers/wv05.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv05.tex"
+ with "/usr/var/tmp/funnelweb/answers/wv05.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv06.lis"
+ with "/usr/var/tmp/funnelweb/answers/wv06.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/wv06.tex"
+ with "/usr/var/tmp/funnelweb/answers/wv06.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex01.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex01.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex01.out"
+ with "/usr/var/tmp/funnelweb/answers/ex01.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex02.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex02.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex02.out"
+ with "/usr/var/tmp/funnelweb/answers/ex02.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex03.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex03.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex04.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex04.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex04.out"
+ with "/usr/var/tmp/funnelweb/answers/ex04.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex05.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex05.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex05.out"
+ with "/usr/var/tmp/funnelweb/answers/ex05.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex06.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex06.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex06.out"
+ with "/usr/var/tmp/funnelweb/answers/ex06.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex07.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex07.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex07.out"
+ with "/usr/var/tmp/funnelweb/answers/ex07.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex08.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex08.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex08.out"
+ with "/usr/var/tmp/funnelweb/answers/ex08.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex09.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex09.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex09.out"
+ with "/usr/var/tmp/funnelweb/answers/ex09.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex10.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex10.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex10.out"
+ with "/usr/var/tmp/funnelweb/answers/ex10.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex11.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex11.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex11.tex"
+ with "/usr/var/tmp/funnelweb/answers/ex11.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex12.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex12.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex12.tex"
+ with "/usr/var/tmp/funnelweb/answers/ex12.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex13.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex13.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex13.tex"
+ with "/usr/var/tmp/funnelweb/answers/ex13.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex14.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex14.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex14.tex"
+ with "/usr/var/tmp/funnelweb/answers/ex14.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex15.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex15.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex15.tex"
+ with "/usr/var/tmp/funnelweb/answers/ex15.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex16.lis"
+ with "/usr/var/tmp/funnelweb/answers/ex16.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex16.out"
+ with "/usr/var/tmp/funnelweb/answers/ex16.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/ex16.tex"
+ with "/usr/var/tmp/funnelweb/answers/ex16.tex".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi01.lis"
+ with "/usr/var/tmp/funnelweb/answers/hi01.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi01.out"
+ with "/usr/var/tmp/funnelweb/answers/hi01.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi02.lis"
+ with "/usr/var/tmp/funnelweb/answers/hi02.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi02.out"
+ with "/usr/var/tmp/funnelweb/answers/hi02.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi03.lis"
+ with "/usr/var/tmp/funnelweb/answers/hi03.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi03.out"
+ with "/usr/var/tmp/funnelweb/answers/hi03.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi04.lis"
+ with "/usr/var/tmp/funnelweb/answers/hi04.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi04.out"
+ with "/usr/var/tmp/funnelweb/answers/hi04.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi05.lis"
+ with "/usr/var/tmp/funnelweb/answers/hi05.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi05.out"
+ with "/usr/var/tmp/funnelweb/answers/hi05.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi06.lis"
+ with "/usr/var/tmp/funnelweb/answers/hi06.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi06a.out"
+ with "/usr/var/tmp/funnelweb/answers/hi06a.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi06b.out"
+ with "/usr/var/tmp/funnelweb/answers/hi06b.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi07.lis"
+ with "/usr/var/tmp/funnelweb/answers/hi07.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi07a.out"
+ with "/usr/var/tmp/funnelweb/answers/hi07a.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi07b.out"
+ with "/usr/var/tmp/funnelweb/answers/hi07b.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi08.lis"
+ with "/usr/var/tmp/funnelweb/answers/hi08.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi08.out"
+ with "/usr/var/tmp/funnelweb/answers/hi08.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi09.lis"
+ with "/usr/var/tmp/funnelweb/answers/hi09.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi09.out"
+ with "/usr/var/tmp/funnelweb/answers/hi09.out".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi10.lis"
+ with "/usr/var/tmp/funnelweb/answers/hi10.lis".
+The two files are IDENTICAL.
+
+
+Comparing "/usr/var/tmp/funnelweb/results/hi10.out"
+ with "/usr/var/tmp/funnelweb/answers/hi10.out".
+The two files are IDENTICAL.
diff --git a/web/funnelAC/results/an01.lis b/web/funnelAC/results/an01.lis
new file mode 100644
index 0000000000..cb554e6d28
--- /dev/null
+++ b/web/funnelAC/results/an01.lis
@@ -0,0 +1,11 @@
+FUNNELWEB LISTING FILE
+======================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/an02.lis b/web/funnelAC/results/an02.lis
new file mode 100644
index 0000000000..cb554e6d28
--- /dev/null
+++ b/web/funnelAC/results/an02.lis
@@ -0,0 +1,11 @@
+FUNNELWEB LISTING FILE
+======================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/an03.lis b/web/funnelAC/results/an03.lis
new file mode 100644
index 0000000000..8cda130586
--- /dev/null
+++ b/web/funnelAC/results/an03.lis
@@ -0,0 +1,86 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| AN03: Test semantics checking of macros.
+ 2 2|
+ 3 3| First define some macros to call.
+ 4 4| @$@<Zero@>@Z@M@{@}
+ 5 5| @$@<One@>@(@1@)@Z@M@{@}
+ 6 6| @$@<Two@>@(@2@)@Z@M@{@}
+ 7 7|
+ 8 8| 1. Test call to undefined macro.
+ 9 9| @$@<Sloth1@>@Z==@{@<Walrus@>@}
+ Error|...................^Call to undefined macro.
+ 10 10|
+ 11 11| 2. Test calls with wrong number of parameters.
+ 12 12| @$@<Sloth2@>@Z==@{
+ 13 13| @<Zero@>
+ 14 14| @<Zero@>@(@)
+ Error|.^Call has 1 parameter, but the macro
+ |.^definition at line 4 specifies 0 parameters.
+ |.^Note: If your call looks like this: @<Macro@>@(@) then you
+ |.^should be aware that FunnelWeb treats this as a call with
+ |.^a single parameter consisting of the empty string. This
+ |.^is a consequence of parameter delimiters @"@" being optional.
+ 15 15| @<Zero@>@(@,@)
+ Error|.^Call has 2 parameters, but the macro
+ |.^definition at line 4 specifies 0 parameters.
+ 16 16| @<One@>
+ Error|.^Call has 0 parameters, but the macro
+ |.^definition at line 5 specifies 1 parameter.
+ 17 17| @<One@>@(@)
+ 18 18| @<One@>@(Walrus@,@)
+ Error|.^Call has 2 parameters, but the macro
+ |.^definition at line 5 specifies 1 parameter.
+ 19 19| @<Two@>@(Sloth@)
+ Error|.^Call has 1 parameter, but the macro
+ |.^definition at line 6 specifies 2 parameters.
+ 20 20| @}
+ 21 21|
+ 22 22| 3. Test call to file macro.
+ 23 23| @O@<deleteme.txt@>@{@}
+ |.^This file macro is called one or more times.
+ |.^Each call has been flagged with an error message.
+ 24 24| @$@<Teapot@>@Z@{@<deleteme.txt@>@}
+ Error|.................^Calls to file macros are not allowed.
+ |.................^Reason: It should be possible to comment out a
+ |.................^file macro without a big fuss. Calling a file macro
+ |.................^just tangles it up in the macro structure,
+ |.................^making it more difficult to comment out later.
+ 25 25|
+ 26 26| 4. Test macro never used and has <special>Z.
+ 27 27| @$@<Elephant@>@Z@{@}
+ 28 28|
+ 29 29| 5. Test macro often used and has <special>M.
+ 30 30| @$@<Giraffe@>@M@{@}
+ 31 31| @$@<Use Giraffe@>@Z@{@<Giraffe@>@<Giraffe@>@}
+ 32 32|
+ 33 33| 6. Test macro never used and no <special>Z
+ 34 34| @$@<Zebra@>@{@}
+ Error|.^This macro is never used (and has no @Z).
+ 35 35|
+ 36 36| 7. Test multiply used and no <special>M.
+ 37 37| @$@<Monkey@>@{@}
+ Error|.^This macro is used more than once (and has no @M).
+ 38 38| @$@<Use Monkey@>@Z@{@<Monkey@>@<Monkey@>@}
+ 39 39|
+ 40 40| 8. Test directly recursive macro.
+ 41 41| @$@<Who do ya call?@>@{@<Who do ya call?@>@}
+ Error|.^This macro has an infinite expansion.
+ 42 42|
+ 43 43| 9. Test indirectly recursive macro.
+ 44 44| @$@<X@>@M@{@<Y@>@}
+ Error|.^This macro has an infinite expansion.
+ 45 45| @$@<Y@>@{@<X@>@}
+ Error|.^This macro has an infinite expansion.
+ 46 46|
+ 47 47| 10. Test callers of recursive macros.
+ 48 48| @$@<Z@>@Z@{@<X@>@}
+ Error|.^This macro has an infinite expansion.
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 13 Errors.
diff --git a/web/funnelAC/results/an04.lis b/web/funnelAC/results/an04.lis
new file mode 100644
index 0000000000..46c3409a8e
--- /dev/null
+++ b/web/funnelAC/results/an04.lis
@@ -0,0 +1,28 @@
+FUNNELWEB LISTING FILE
+======================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| AN04: Test document list checks.
+ 2 2|
+ 3 3| 1. Test for sections with no names.
+ 4 4|
+ 5 5| @A@<This section has both a name and a macro@>
+ 6 6| @$@<Sloth@>@Z@{@}
+ 7 7|
+ 8 8| @A@<This section has an explicit name but no macro@>
+ 9 9|
+ 10 10| @A
+ 11 11| @$@<This section has no explicit name but does have a macro@>@Z@{@}
+ 12 12|
+ 13 13| @A This section has no name and no macro to inherit one from.
+ Error|.^This section has no name.
+ |.^You can give it one explicitly (As in @A@<Sloth@>) or implicitly by
+ |.^defining a macro (whose name will be inherited) within the section.
+ 14 14|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 2 Errors.
diff --git a/web/funnelAC/results/ex01.lis b/web/funnelAC/results/ex01.lis
new file mode 100644
index 0000000000..9cb0a6b7c9
--- /dev/null
+++ b/web/funnelAC/results/ex01.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed ex01.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex01.out b/web/funnelAC/results/ex01.out
new file mode 100644
index 0000000000..557db03de9
--- /dev/null
+++ b/web/funnelAC/results/ex01.out
@@ -0,0 +1 @@
+Hello World
diff --git a/web/funnelAC/results/ex02.lis b/web/funnelAC/results/ex02.lis
new file mode 100644
index 0000000000..1f31a5ff30
--- /dev/null
+++ b/web/funnelAC/results/ex02.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed ex02.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex02.out b/web/funnelAC/results/ex02.out
new file mode 100644
index 0000000000..557db03de9
--- /dev/null
+++ b/web/funnelAC/results/ex02.out
@@ -0,0 +1 @@
+Hello World
diff --git a/web/funnelAC/results/ex03.lis b/web/funnelAC/results/ex03.lis
new file mode 100644
index 0000000000..beb06214aa
--- /dev/null
+++ b/web/funnelAC/results/ex03.lis
@@ -0,0 +1,50 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| EX03: An example containing errors to do with the number of times
+ 2 2| that macros are called.
+ 3 3|
+ 4 4| @O@<ex03.out@>==@{@-
+ 5 5| @<Include Files@>
+ 6 6| @<Include Files@>
+ 7 7| @<Main Program@>
+ 8 8| @}
+ 9 9|
+ 10 10| @$@<Main Program@>==@{@-
+ 11 11| main()
+ 12 12| {
+ 13 13| doit();
+ 14 14| }
+ 15 15| @}
+ 16 16|
+ 17 17| @$@<Subroutine@>==@{@-
+ Error|.^This macro is never used (and has no @Z).
+ 18 18| void doit()
+ 19 19| {
+ 20 20| int i;
+ 21 21| for (i=0;i<10;i++)
+ 22 22| {
+ 23 23| @<Print@>
+ 24 24| @<Print@>
+ 25 25| }
+ 26 26| }@}
+ 27 27|
+ 28 28| @$@<Print@>==@{@-
+ Error|.^This macro is used more than once (and has no @M).
+ 29 29| printf("Hello World!");
+ 30 30| printf("\n");@}
+ 31 31|
+ 32 32| @$@<Scan@>==@{scanf@}
+ Error|.^This macro is never used (and has no @Z).
+ 33 33|
+ 34 34| @$@<Include Files@>==@{@-
+ Error|.^This macro is used more than once (and has no @M).
+ 35 35| #include <stdio.h>
+ 36 36| #include <stdlib.h>@}
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 4 Errors.
diff --git a/web/funnelAC/results/ex04.lis b/web/funnelAC/results/ex04.lis
new file mode 100644
index 0000000000..780c9c7f77
--- /dev/null
+++ b/web/funnelAC/results/ex04.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed ex04.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex04.out b/web/funnelAC/results/ex04.out
new file mode 100644
index 0000000000..939a0cdf82
--- /dev/null
+++ b/web/funnelAC/results/ex04.out
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <stdlib.h>
+void doit()
+{
+ int i;
+ for (i=0;i<10;i++)
+ {
+ printf("Hello World!");
+ printf("\n");
+ printf("Hello World!");
+ printf("\n");
+ }
+}
+main()
+{
+ doit();
+}
+
diff --git a/web/funnelAC/results/ex05.lis b/web/funnelAC/results/ex05.lis
new file mode 100644
index 0000000000..a7e84fcdaa
--- /dev/null
+++ b/web/funnelAC/results/ex05.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed ex05.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex05.out b/web/funnelAC/results/ex05.out
new file mode 100644
index 0000000000..4a12476ca9
--- /dev/null
+++ b/web/funnelAC/results/ex05.out
@@ -0,0 +1,18 @@
+program adt(input,output);
+type buffer_type =
+ record
+ length : integer;
+ buf : array[1..100] of char;
+ end;
+type complex_type = record r,i : real; end;
+
+bigbuf : buffer_type;
+
+procedure buf_init (var b : buffer_type ) {Body of buf_init}
+procedure buf_add (var b : buffer_type; ch : char) {Body of buf_add}
+procedure buf_get (var b : buffer_type; var ch : char) {Body of buf_get}
+procedure cm_set (var c: complex_type; a,b: real) {Body of cm_set}
+procedure cm_add (a,b: complex_type; var c: complex_type) {Body of cm_add}
+{Other procedures and functions}
+
+begin startproc; end.
diff --git a/web/funnelAC/results/ex06.lis b/web/funnelAC/results/ex06.lis
new file mode 100644
index 0000000000..5a2782517d
--- /dev/null
+++ b/web/funnelAC/results/ex06.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed ex06.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex06.out b/web/funnelAC/results/ex06.out
new file mode 100644
index 0000000000..03ac7feb13
--- /dev/null
+++ b/web/funnelAC/results/ex06.out
@@ -0,0 +1,22 @@
+program adt(input,output);
+type buffer_type = record
+ length : integer;
+ buf : array[1..100] of char;
+ end;
+
+type complex_type = record r,i : real; end;
+
+
+bigbuf : buffer_type;
+
+
+procedure buf_init(var b : buffer_type) {Body of buf_init}
+procedure buf_add(var b : buffer_type; ch : char) {Body of buf_add}
+procedure buf_get(var b : buffer_type; var ch : char) {Body of buf_get}
+
+procedure cm_set(var c: complex_type; a,b : real) {Body of cm_set}
+procedure cm_add(a,b : complex_type; var c: complex_type) {Body of cm_add}
+{Other procedures and functions}
+
+
+begin startproc; end.
diff --git a/web/funnelAC/results/ex07.lis b/web/funnelAC/results/ex07.lis
new file mode 100644
index 0000000000..b354e7c18e
--- /dev/null
+++ b/web/funnelAC/results/ex07.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed ex07.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex07.out b/web/funnelAC/results/ex07.out
new file mode 100644
index 0000000000..b6e41eea63
--- /dev/null
+++ b/web/funnelAC/results/ex07.out
@@ -0,0 +1,24 @@
+
+
+x=1;
+while (x<=10)
+ {
+ printf("X=%u\n",x);
+ }
+
+
+x:=1;
+while (x<=10)
+ {
+ printf("X=%u\n",x);
+ }
+
+
+x=1;
+while (x<=10)
+ {
+ printf("X=%u\n",x);
+ }
+
+
+
diff --git a/web/funnelAC/results/ex08.lis b/web/funnelAC/results/ex08.lis
new file mode 100644
index 0000000000..17d93d8838
--- /dev/null
+++ b/web/funnelAC/results/ex08.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed ex08.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex08.out b/web/funnelAC/results/ex08.out
new file mode 100644
index 0000000000..5820d58ba2
--- /dev/null
+++ b/web/funnelAC/results/ex08.out
@@ -0,0 +1,107 @@
+The Twelve Bugs of Christmas
+----------------------------
+For the first bug of Christmas, my manager said to me
+ See if they can do it again.
+
+For the second bug of Christmas, my manager said to me
+ Ask them how they did it and
+ See if they can do it again.
+
+For the third bug of Christmas, my manager said to me
+ Try to reproduce it
+ Ask them how they did it and
+ See if they can do it again.
+
+For the fourth bug of Christmas, my manager said to me
+ Run with the debugger
+ Try to reproduce it
+ Ask them how they did it and
+ See if they can do it again.
+
+For the fifth bug of Christmas, my manager said to me
+ Ask for a dump
+ Run with the debugger
+ Try to reproduce it
+ Ask them how they did it and
+ See if they can do it again.
+
+For the sixth bug of Christmas, my manager said to me
+ Reinstall the software
+ Ask for a dump
+ Run with the debugger
+ Try to reproduce it
+ Ask them how they did it and
+ See if they can do it again.
+
+For the seventh bug of Christmas, my manager said to me
+ Say they need an upgrade
+ Reinstall the software
+ Ask for a dump
+ Run with the debugger
+ Try to reproduce it
+ Ask them how they did it and
+ See if they can do it again.
+
+For the eighth bug of Christmas, my manager said to me
+ Find a way around it
+ Say they need an upgrade
+ Reinstall the software
+ Ask for a dump
+ Run with the debugger
+ Try to reproduce it
+ Ask them how they did it and
+ See if they can do it again.
+
+For the ninth bug of Christmas, my manager said to me
+ Blame it on the hardware
+ Find a way around it
+ Say they need an upgrade
+ Reinstall the software
+ Ask for a dump
+ Run with the debugger
+ Try to reproduce it
+ Ask them how they did it and
+ See if they can do it again.
+
+For the tenth bug of Christmas, my manager said to me
+ Change the documentation
+ Blame it on the hardware
+ Find a way around it
+ Say they need an upgrade
+ Reinstall the software
+ Ask for a dump
+ Run with the debugger
+ Try to reproduce it
+ Ask them how they did it and
+ See if they can do it again.
+
+For the eleventh bug of Christmas, my manager said to me
+ Say it's not supported
+ Change the documentation
+ Blame it on the hardware
+ Find a way around it
+ Say they need an upgrade
+ Reinstall the software
+ Ask for a dump
+ Run with the debugger
+ Try to reproduce it
+ Ask them how they did it and
+ See if they can do it again.
+
+For the twelfth bug of Christmas, my manager said to me
+ Tell them it's a feature
+ Say it's not supported
+ Change the documentation
+ Blame it on the hardware
+ Find a way around it
+ Say they need an upgrade
+ Reinstall the software
+ Ask for a dump
+ Run with the debugger
+ Try to reproduce it
+ Ask them how they did it and
+ See if they can do it again.
+
+
+This song appeared in the internet newsgroup rec.humor.funny on 24-Dec-1991.
+It was contributed by Pat Scannell (scannell@darkstar.ma30.bull.com).
diff --git a/web/funnelAC/results/ex09.lis b/web/funnelAC/results/ex09.lis
new file mode 100644
index 0000000000..1fdc31299c
--- /dev/null
+++ b/web/funnelAC/results/ex09.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed ex09.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex09.out b/web/funnelAC/results/ex09.out
new file mode 100644
index 0000000000..80fbfc9f1f
--- /dev/null
+++ b/web/funnelAC/results/ex09.out
@@ -0,0 +1,6 @@
+
+I like to go shooting, it's a whole lot of fun,
+'Cos I shoot with a camera instead of a gun.
+The animals flock to be petted and fed,
+Cos they know my camera isn't loaded with lead.
+- RNW, 04-Jan-1991.
diff --git a/web/funnelAC/results/ex10.lis b/web/funnelAC/results/ex10.lis
new file mode 100644
index 0000000000..613224af3d
--- /dev/null
+++ b/web/funnelAC/results/ex10.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed ex10.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex10.out b/web/funnelAC/results/ex10.out
new file mode 100644
index 0000000000..9672b09b88
--- /dev/null
+++ b/web/funnelAC/results/ex10.out
@@ -0,0 +1,2 @@
+This is the text of the sloth macro.
+
diff --git a/web/funnelAC/results/ex11.lis b/web/funnelAC/results/ex11.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/ex11.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex11.tex b/web/funnelAC/results/ex11.tex
new file mode 100644
index 0000000000..b5e6714dd2
--- /dev/null
+++ b/web/funnelAC/results/ex11.tex
@@ -0,0 +1,384 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+EX11: This example shows how FunnelWeb typesets macros, typesetter commands
+ and free text.
+
+You are reading some free text before the macro. Free text can consist
+of any text (not containing the FunnelWeb special character) including
+typesetter commands
+such as \$, \%, \#, and $\backslash$TeX$\{$$\}$ which
+will be typeset to appear exactly as they do in the input file!
+Look out! Here comes a macro!
+
+\fwbeginmacro
+\fwfilename{ex11.out}{1}\fwequals \fwodef \fwbtx[This text is part of
+a macro definition.
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+
+This is free text following the macro. This sentence contains
+two \fwlit{inline} typesetter \fwemp{directives}.
+Now here is a non-inline typesetting directive.
+
+
+\fwnewpage
+
+
+This sentence will appear on the next page.
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/ex12.lis b/web/funnelAC/results/ex12.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/ex12.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex12.tex b/web/funnelAC/results/ex12.tex
new file mode 100644
index 0000000000..145d1d111f
--- /dev/null
+++ b/web/funnelAC/results/ex12.tex
@@ -0,0 +1,385 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+EX12: This example gives some simple headings and demonstrates heading name
+ inheritance.
+
+\fwbeginmacro
+\fwfilename{ex12.out}{1}\fwequals \fwodef \fwbtx[dummy text]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwseca{1}{Feed the Penguins and Save the World}
+\fwsecb{1.1}{Feed the Penguins}
+\fwsecc{1.1.1}{Feed the little penguins}
+\fwsecc{1.1.2}{Feed the big penguins}
+\fwsecb{1.2}{Save the World}
+\fwsecc{1.2.1}{Save Europe}
+\fwsecc{1.2.2}{Save Africa}
+
+\fwsecc{1.2.3}{Save the rest of the world} This heading hasn't been given an explicit name, but will inherit the
+name $\backslash$p$\{$Save the rest of the world$\}$ from the macro definition below.
+
+\fwbeginmacro
+\fwmacroname{Save the rest of the world}{2}\fwzero{}\fwequals \fwodef \fwbtx[...]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/ex13.lis b/web/funnelAC/results/ex13.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/ex13.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex13.tex b/web/funnelAC/results/ex13.tex
new file mode 100644
index 0000000000..835ae999e6
--- /dev/null
+++ b/web/funnelAC/results/ex13.tex
@@ -0,0 +1,499 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+EX13: This example is used to generate typeset documentation which is
+ discussed in the tutorial in the FunnelWeb user's manual.
+
+
+\fwseca{1}{Table of Contents}
+
+
+\fwtocstart{}
+\fwtoca{1}{Table of Contents}
+\fwtoca{2}{Macros for Moral Support}
+\fwtoca{3}{An Extremely Imperative Stack Abstraction}
+\fwtocb{3.1}{Define the Stack}
+\fwtocb{3.2}{Push the Stack}
+\fwtocb{3.3}{Pop the Stack}
+\fwtocb{3.4}{Rough the Stack Up a Bit}
+\fwtocfinish{}
+
+
+\fwseca{2}{Macros for Moral Support}
+
+The following macro contain comments that provide moral support in the
+output code.
+
+\fwbeginmacro
+\fwmacroname{Programmer's Cheer}{1}\fwmany{}\fwequals \fwodef \fwbtx[
+-- Shift to the left!
+-- Shift to the right!
+-- Pop up, push down!
+-- Byte! Byte! Byte!
+-- (From "The New Hacker's Dictionary").
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definitions 6 and 8.}
+\fwendmacronotes
+\fwendmacro
+
+
+The next macro is similar but is distributed throughout the program.
+\fwbeginmacro
+\fwmacroname{Hacker's Cheer}{2}\fwplusequals \fwodef \fwbtx[
+-- Pointer to the left
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.}
+\fwusedin{This macro is invoked in definition 10.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwseca{3}{An Extremely Imperative Stack Abstraction}
+
+\fwsecb{3.1}{Define the Stack}
+\fwbeginmacro
+\fwmacroname{Hacker's Cheer}{3}\fwplusequals \fwodef \fwbtx[-- Pointer to the right
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.}
+\fwusedin{This macro is invoked in definition 10.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Stack Type}{4}\fwzero{}\fwequals \fwodef \fwbtx[type stack = record ... end;]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecb{3.2}{Push the Stack}
+\fwbeginmacro
+\fwmacroname{Hacker's Cheer}{5}\fwplusequals \fwodef \fwbtx[-- Hack that code
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.}
+\fwusedin{This macro is invoked in definition 10.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Push Procedure}{6}\fwzero{}\fwequals \fwodef \fwbtx[procedure push(var b:stack; v:value); ]fwetx=%
+\fwmacroname{Programmer's Cheer}{1}\fwbtx[ {...}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecb{3.3}{Pop the Stack}
+\fwbeginmacro
+\fwmacroname{Hacker's Cheer}{7}\fwplusequals \fwodef \fwbtx[-- Tight! Tight! Tight!
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.}
+\fwusedin{This macro is invoked in definition 10.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Pop Procedure}{8}\fwzero{}\fwequals \fwodef \fwbtx[procedure pop(var b:stack); ]fwetx=%
+\fwmacroname{Programmer's Cheer}{1}\fwbtx[ {...}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecb{3.4}{Rough the Stack Up a Bit}
+\fwbeginmacro
+\fwmacroname{Hacker's Cheer}{9}\fwplusequals \fwodef \fwbtx[-- (RNW, 04-Jan-1991).
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.}
+\fwusedin{This macro is invoked in definition 10.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Rough Procedure}{10}\fwzero{}\fwequals \fwodef \fwbtx[procedure rough(var b:stack); ]fwetx=%
+\fwmacroname{Hacker's Cheer}{2}\fwbtx[ {...}]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwfilename{dummy.txt}{11}\fwequals \fwodef \fwbtx[dummy
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/ex14.lis b/web/funnelAC/results/ex14.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/ex14.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex14.tex b/web/funnelAC/results/ex14.tex
new file mode 100644
index 0000000000..1de1e8756b
--- /dev/null
+++ b/web/funnelAC/results/ex14.tex
@@ -0,0 +1,369 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+EX14: This example demonstrates the literal and emphasis typesetting constructs.
+
+The following procedure \fwlit{put\_sloth} writes the \fwlit{sloth} variable to
+the output file. Note: \fwemp{The output file must be opened for writing
+at this point or the program will crash!}
+
+\fwbeginmacro
+\fwfilename{ex14.out}{1}\fwequals \fwodef \fwbtx[dummy
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/ex15.lis b/web/funnelAC/results/ex15.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/ex15.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex15.tex b/web/funnelAC/results/ex15.tex
new file mode 100644
index 0000000000..a82b33d2f2
--- /dev/null
+++ b/web/funnelAC/results/ex15.tex
@@ -0,0 +1,390 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+EX15: This example demonstrates some of FunnelWeb's generic typesetting
+ constructs.
+
+\fwvskip{40}
+\fwcenterline{\fwfonttitle{Hairy Wombat}}
+\fwcenterline{\fwfonttitle{Simulation}}
+\fwvskip{10}
+\fwcenterline{\fwfontsmalltitle{A Program in Six Parts}}
+\fwcenterline{\fwfontsmalltitle{Simulating the Life of Some Hairy Wombats}}
+\fwvskip{20}
+\fwleftline{\fwfontnormal{By Zqitzypbuswapzra Ypongtatoslrtzz}}
+
+\fwnewpage
+
+
+\fwtocstart{}
+\fwtoca{1}{Section One}
+\fwtoca{2}{Section Two}
+\fwtocfinish{}
+
+
+\fwnewpage
+
+
+\fwseca{1}{Section One}
+\fwseca{2}{Section Two}
+
+\fwbeginmacro
+\fwfilename{ex15.out}{1}\fwequals \fwodef \fwbtx[Dummy
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/ex16.lis b/web/funnelAC/results/ex16.lis
new file mode 100644
index 0000000000..46682a4458
--- /dev/null
+++ b/web/funnelAC/results/ex16.lis
@@ -0,0 +1,13 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed ex16.out.
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/ex16.out b/web/funnelAC/results/ex16.out
new file mode 100644
index 0000000000..a3b510afd9
--- /dev/null
+++ b/web/funnelAC/results/ex16.out
@@ -0,0 +1,18 @@
+with text_io; use text_io;
+
+procedure example is
+ n : constant natural := 10; -- How many numbers? (Ans: [1,n]).
+ p : constant natural := 5; -- How many powers? (Ans: [1,p]).
+begin -- example
+ for i in 1..n loop
+ declare
+ ip : natural := 1;
+ begin
+ for power in 1..p loop
+ ip:=ip*i;
+ put(natural'image(ip) & " ");
+ end loop;
+ new_line;
+ end;
+ end loop;
+end example;
diff --git a/web/funnelAC/results/ex16.tex b/web/funnelAC/results/ex16.tex
new file mode 100644
index 0000000000..c29b4ce43e
--- /dev/null
+++ b/web/funnelAC/results/ex16.tex
@@ -0,0 +1,448 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+
+\fwvskip{40}
+\fwcenterline{\fwfonttitle{Powers:}}
+\fwcenterline{\fwfonttitle{An Example of}}
+\fwcenterline{\fwfonttitle{A Short}}
+\fwcenterline{\fwfonttitle{FunnelWeb .fw File}}
+\fwvskip{10}
+\fwcenterline{\fwfontsmalltitle{by Ross Williams}}
+\fwcenterline{\fwfontsmalltitle{26 January 1992}}
+\fwvskip{20}
+
+\fwtocstart{}
+\fwtoca{1}{FunnelWeb Example Program}
+\fwtocb{1.1}{ex16.out}
+\fwtocb{1.2}{Pull in packages}
+\fwtocb{1.3}{Write out the first p powers of i on a single line}
+\fwtocfinish{}
+
+
+\fwseca{1}{FunnelWeb Example Program}
+
+This program writes out each of the first \fwlit{p} powers of the first \fwlit{n}
+integers. These constant parameters are located here so that they are easy to
+change.
+
+\fwbeginmacro
+\fwmacroname{Constants}{1}\fwequals \fwodef \fwbtx[n : constant natural := 10; -- How many numbers? (Ans: [1,n]).
+p : constant natural := 5; -- How many powers? (Ans: [1,p]).]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 2.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecb{1.1}{ex16.out} Here is the outline of the program. This FunnelWeb file generates a single
+Ada output file called \fwlit{Power.ada}. The main program consists of a loop that
+iterates once for each number to be written out.
+
+\fwbeginmacro
+\fwfilename{ex16.out}{2}\fwequals \fwodef \fwmacroname{Pull in packages}{3}\fwbtx[
+
+procedure example is
+ ]fwetx=%
+\fwmacroname{Constants}{1}\fwbtx[
+begin -- example
+ for i in 1..n loop
+ ]fwetx=%
+\fwmacroname{Write out the first p powers of i on a single line}{4}\fwbtx[
+ end loop;
+end example;
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecb{1.2}{Pull in packages} In this section, we pull in the packages that this program needs to run. In
+fact, all we need is the IO package so that we can write out the results. To use
+the IO package, we first of all need to haul it in (\fwlit{with text\_io}) and then
+we need to make all its identifiers visible at the top level (\fwlit{use text\_io}).
+
+\fwbeginmacro
+\fwmacroname{Pull in packages}{3}\fwequals \fwodef \fwbtx[with text_io; use text_io;]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 2.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecb{1.3}{Write out the first p powers of i on a single line} Here is the bit that writes out the first \fwlit{p} powers of \fwlit{i}. The power
+values are calculated incrementally in \fwlit{ip} to avoid the use of the
+exponentiation operator.
+
+\fwbeginmacro
+\fwmacroname{Write out the first p powers of i on a single line}{4}\fwequals \fwodef \fwbtx[declare
+ ip : natural := 1;
+begin
+ for power in 1..p loop
+ ip:=ip*i;
+ put(natural'image(ip) & " ");
+ end loop;
+ new_line;
+end;]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 2.}
+\fwendmacronotes
+\fwendmacro
+
+
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/generate.lis b/web/funnelAC/results/generate.lis
new file mode 100644
index 0000000000..8588c0fca9
--- /dev/null
+++ b/web/funnelAC/results/generate.lis
@@ -0,0 +1,15 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed sc06.fw.
+Tangle: Completed sc08.fw.
+Tangle: Completed sc09.fw.
+Tangle: Completed sc13e.fwi.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi01.lis b/web/funnelAC/results/hi01.lis
new file mode 100644
index 0000000000..58682d7c0d
--- /dev/null
+++ b/web/funnelAC/results/hi01.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed hi01.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi01.out b/web/funnelAC/results/hi01.out
new file mode 100644
index 0000000000..9ab646f4ff
--- /dev/null
+++ b/web/funnelAC/results/hi01.out
@@ -0,0 +1,9 @@
+
+while the_walrus_is_sleepy do
+ begin
+ writeln('zzzzzzz');
+
+ wake_up_the_walrus(the_walrus);
+
+ writeln('Umpharumpha...');
+ end;
diff --git a/web/funnelAC/results/hi02.lis b/web/funnelAC/results/hi02.lis
new file mode 100644
index 0000000000..2c342e0954
--- /dev/null
+++ b/web/funnelAC/results/hi02.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed hi02.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi02.out b/web/funnelAC/results/hi02.out
new file mode 100644
index 0000000000..d1a9b3e8cf
--- /dev/null
+++ b/web/funnelAC/results/hi02.out
@@ -0,0 +1,6 @@
+
+while sloth<walrus loop
+ assert(sloth<walrus,"AWK! sloth>=walrus!!!!!!!");
+ assert(timer<timermax,"AWK! timer>=timermax!!!");
+ inc(sloth);
+end loop
diff --git a/web/funnelAC/results/hi03.lis b/web/funnelAC/results/hi03.lis
new file mode 100644
index 0000000000..80014f814d
--- /dev/null
+++ b/web/funnelAC/results/hi03.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed hi03.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi03.out b/web/funnelAC/results/hi03.out
new file mode 100644
index 0000000000..5b1b66b552
--- /dev/null
+++ b/web/funnelAC/results/hi03.out
@@ -0,0 +1,6 @@
+
+while sloth<walrus loop
+ assert(sloth<walrus,"AWK! sloth>=walrus!!!!!!!");
+ assert(timer<timermax,"AWK! timer>=timermax!!!");
+ inc(sloth);
+end loop
diff --git a/web/funnelAC/results/hi04.lis b/web/funnelAC/results/hi04.lis
new file mode 100644
index 0000000000..c215c0f14b
--- /dev/null
+++ b/web/funnelAC/results/hi04.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed hi04.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi04.out b/web/funnelAC/results/hi04.out
new file mode 100644
index 0000000000..7069503f68
--- /dev/null
+++ b/web/funnelAC/results/hi04.out
@@ -0,0 +1,3 @@
+-------
+get_command_line(comline)
+-------
diff --git a/web/funnelAC/results/hi05.lis b/web/funnelAC/results/hi05.lis
new file mode 100644
index 0000000000..422de4e7eb
--- /dev/null
+++ b/web/funnelAC/results/hi05.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed hi05.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi05.out b/web/funnelAC/results/hi05.out
new file mode 100644
index 0000000000..d2143079f1
--- /dev/null
+++ b/web/funnelAC/results/hi05.out
@@ -0,0 +1,7 @@
+Unreadable Postscript code
+/print { push pop pop push turn around and jump up and down and print it} def
+
+Unreadable Postscript code
+/zap { push pop pop push turn around and jump up and down and print it} def
+
+Unreadable Postscript code
diff --git a/web/funnelAC/results/hi06.lis b/web/funnelAC/results/hi06.lis
new file mode 100644
index 0000000000..e053ffc8bf
--- /dev/null
+++ b/web/funnelAC/results/hi06.lis
@@ -0,0 +1,13 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed hi06a.out.
+Tangle: Completed hi06b.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi06a.out b/web/funnelAC/results/hi06a.out
new file mode 100644
index 0000000000..b6645c6f7d
--- /dev/null
+++ b/web/funnelAC/results/hi06a.out
@@ -0,0 +1,3 @@
+DCL commands
+copy printme.txt unixnode::
+DCL commands
diff --git a/web/funnelAC/results/hi06b.out b/web/funnelAC/results/hi06b.out
new file mode 100644
index 0000000000..d26ba0f49c
--- /dev/null
+++ b/web/funnelAC/results/hi06b.out
@@ -0,0 +1,3 @@
+unix commands
+print printme.txt
+unix commands
diff --git a/web/funnelAC/results/hi07.lis b/web/funnelAC/results/hi07.lis
new file mode 100644
index 0000000000..5a23a3ee91
--- /dev/null
+++ b/web/funnelAC/results/hi07.lis
@@ -0,0 +1,13 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed hi07a.out.
+Tangle: Completed hi07b.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi07a.out b/web/funnelAC/results/hi07a.out
new file mode 100644
index 0000000000..052b1c079a
--- /dev/null
+++ b/web/funnelAC/results/hi07a.out
@@ -0,0 +1,4 @@
+First lump of text shared by both documents.
+Text for first document
+Second lump of text shared by both documents.
+
diff --git a/web/funnelAC/results/hi07b.out b/web/funnelAC/results/hi07b.out
new file mode 100644
index 0000000000..8c94004628
--- /dev/null
+++ b/web/funnelAC/results/hi07b.out
@@ -0,0 +1,4 @@
+First lump of text shared by both documents.
+Text for second document
+Second lump of text shared by both documents.
+
diff --git a/web/funnelAC/results/hi08.lis b/web/funnelAC/results/hi08.lis
new file mode 100644
index 0000000000..e0fa58dddb
--- /dev/null
+++ b/web/funnelAC/results/hi08.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed hi08.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi08.out b/web/funnelAC/results/hi08.out
new file mode 100644
index 0000000000..87b344c98f
--- /dev/null
+++ b/web/funnelAC/results/hi08.out
@@ -0,0 +1,8 @@
+1992 ANNUAL REPORT TO Shareholders
+==================================
+This has been a very good year for The Very Big Corporation of America.
+With your help, we have been able to successfully
+screw the customers for every cent they have.
+With gross earnings approaching six trillion dollars, we have been able to
+increase dividends.
+We expect to have an even better year next year.
diff --git a/web/funnelAC/results/hi09.lis b/web/funnelAC/results/hi09.lis
new file mode 100644
index 0000000000..fb069219c0
--- /dev/null
+++ b/web/funnelAC/results/hi09.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed hi09.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi09.out b/web/funnelAC/results/hi09.out
new file mode 100644
index 0000000000..0f7aeebe64
--- /dev/null
+++ b/web/funnelAC/results/hi09.out
@@ -0,0 +1,98 @@
+
+[inherit ('NaryTree'), environment ('NaryTreeSet')]
+
+module NaryTreeSet;
+
+type NaryTreeSet = ^NaryTreeSetRecord;
+ NaryTreeSetRecord = record
+ Member: NaryTree;
+ Next: NaryTreeSet;
+ end;
+
+procedure NullNaryTreeSet (var Result: NaryTreeSet);
+begin new (Result);
+Result^.Member := (- MaxInt)::NaryTree;
+Result^.Next := nil end;
+
+function IsNullNaryTreeSet (S: NaryTreeSet): boolean;
+begin IsNullNaryTreeSet := S^.Member::integer = - MaxInt end;
+
+procedure ForEachNaryTree (S: NaryTreeSet; procedure DoIt (i: NaryTree));
+var ThisS, NextS: NaryTreeSet;
+begin ThisS := S;
+while ThisS^.Member::integer <> - MaxInt do
+ begin NextS := ThisS^.Next;
+ DoIt (ThisS^.Member);
+ ThisS := NextS end;
+end;
+
+function FirstNaryTree (S: NaryTreeSet): NaryTree;
+begin FirstNaryTree := S^.Member end;
+
+function IsNaryTreeInSet (i: NaryTree; S: NaryTreeSet): boolean;
+ procedure TestEquals (j: NaryTree);
+ begin if EqualNaryTree (i, j) then IsNaryTreeInSet := true; end;
+begin IsNaryTreeInSet := false; ForEachNaryTree (S, TestEquals); end;
+
+function IncludesNaryTreeSet (S1, S2: NaryTreeSet): boolean;
+var Result: boolean;
+ procedure TestIfInS1 (i: NaryTree);
+ begin if Result then if not IsNaryTreeInSet (i, S1) then Result := false; end;
+begin Result := true;
+ForEachNaryTree (S2, TestIfInS1);
+IncludesNaryTreeSet := Result end;
+
+function DisjointNaryTreeSets (S1, S2: NaryTreeSet): boolean;
+var Result: boolean;
+ procedure TestIfInS1 (i: NaryTree);
+ begin if Result then if IsNaryTreeInSet (i, S1) then Result := false; end;
+begin Result := true;
+ForEachNaryTree (S2, TestIfInS1);
+DisjointNaryTreeSets := Result end;
+
+function EqualNaryTreeSet (S1, S2: NaryTreeSet): boolean;
+begin
+EqualNaryTreeSet := IncludesNaryTreeSet (S1, S2) and IncludesNaryTreeSet (S2, S1);
+end;
+
+procedure InsertNaryTree (i: NaryTree; var S: NaryTreeSet);
+var This, Pred, Succ: NaryTreeSet;
+begin
+if not IsNaryTreeInSet (i, S) then
+ begin
+ Pred := nil; Succ := S;
+ while Succ^.Member::integer > i::integer do begin
+ Pred := Succ; Succ := Succ^.Next end;
+ if Succ^.Member::integer < i::integer then begin
+ new (This); This^.Next := Succ; This^.Member := i;
+ if Pred <> nil then Pred^.Next := This else S := This;
+ end;
+ end;
+end;
+
+procedure InsertNaryTrees (S1: NaryTreeSet; var S2: NaryTreeSet);
+var This, Pred, Succ: NaryTreeSet;
+ procedure AddNaryTree (i: NaryTree);
+ begin InsertNaryTree (i, S2) end;
+begin
+ForEachNaryTree (S1, AddNaryTree);
+end;
+
+procedure RemoveNaryTree (i: NaryTree; var S: NaryTreeSet);
+var Pred, This: NaryTreeSet;
+begin
+Pred := nil; This := S;
+while not EqualNaryTree (This^.Member, i) do begin
+ Pred := This; This := This^.Next end;
+if Pred <> nil then Pred^.Next := This^.Next else S := This^.Next;
+Dispose (This);
+end;
+
+procedure DisposeNaryTreeSet (var S: NaryTreeSet);
+var Old: NaryTreeSet;
+begin
+while S <> nil do begin Old := S; S := S^.Next; Dispose (Old) end;
+end;
+
+end.
+
diff --git a/web/funnelAC/results/hi10.lis b/web/funnelAC/results/hi10.lis
new file mode 100644
index 0000000000..fbe12da983
--- /dev/null
+++ b/web/funnelAC/results/hi10.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed hi10.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/hi10.out b/web/funnelAC/results/hi10.out
new file mode 100644
index 0000000000..a7ec61c0f6
--- /dev/null
+++ b/web/funnelAC/results/hi10.out
@@ -0,0 +1,23 @@
+
+/* Pre: sorted(b). */
+i=1; p=1;
+while (i != N)
+ {
+ /* Invariant: sorted(b) and 1<=i<=N and */
+ /* p is len of longest run in b[1..i]. */
+ i++; if (b[i] != b[i-p]) p++;
+ }
+/* Post: sorted(b) and p is the length of the longest run in b[1..N]. */
+
+
+bool comp(p,q)
+char *p,*q;
+{
+ while (TRUE)
+ {
+ if (*p != *q ) return FALSE;
+ if (*p == '\0') return TRUE;
+ p++; q++;
+ }
+}
+
diff --git a/web/funnelAC/results/pr01.lis b/web/funnelAC/results/pr01.lis
new file mode 100644
index 0000000000..116c1daef6
--- /dev/null
+++ b/web/funnelAC/results/pr01.lis
@@ -0,0 +1,544 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 30 31 3A 20 54 65 73 74 20 74 68 65 20 69 | PR01: Test the i |
+| 6E 6C 69 6E 65 20 74 79 70 65 73 65 74 74 69 6E | nline typesettin |
+| 67 20 66 65 61 74 75 72 65 73 2E 0A 0A 31 2E 20 | g features...1. |
+| 46 69 72 73 74 20 77 65 20 74 65 73 74 20 74 68 | First we test th |
+| 65 20 6C 65 67 61 6C 20 75 73 65 20 6F 66 20 74 | e legal use of t |
+| 68 65 20 40 7B 6C 69 74 65 72 61 6C 40 7D 20 63 | he @{literal@} c |
+| 6F 6E 73 74 72 75 63 74 2E 0A 0A 32 2E 54 65 73 | onstruct...2.Tes |
+| 74 20 40 7B 40 7D 20 28 69 6C 6C 65 67 61 6C 29 | t @{@} (illegal) |
+| 2E 0A 40 41 40 3C 45 72 72 6F 72 20 52 65 63 6F | ..@A@<Error Reco |
+| 76 65 72 79 20 50 6F 69 6E 74 40 3E 0A 0A 33 2E | very Point@>..3. |
+| 20 54 65 73 74 20 74 68 65 20 63 6F 6E 73 74 72 | Test the constr |
+| 75 63 74 20 40 7B 61 63 72 6F 73 73 0A 20 20 20 | uct @{across. |
+| 6D 6F 72 65 20 74 68 61 6E 20 6F 6E 65 20 6C 69 | more than one li |
+| 6E 65 40 7D 2E 0A 0A 34 2E 20 4E 6F 77 20 77 65 | ne@}...4. Now we |
+| 20 74 65 73 74 20 74 68 65 20 63 6F 6E 73 74 72 | test the constr |
+| 75 63 74 20 77 69 74 68 20 6E 6F 6E 2D 74 65 78 | uct with non-tex |
+| 74 20 66 6F 6C 6C 6F 77 69 6E 67 20 69 74 2E 0A | t following it.. |
+| 20 20 20 40 7B 40 3C 73 6C 6F 74 68 40 3E 40 7D | @{@<sloth@>@} |
+| 0A 40 41 40 3C 45 72 72 6F 72 20 52 65 63 6F 76 | .@A@<Error Recov |
+| 65 72 79 20 50 6F 69 6E 74 40 3E 0A 20 20 20 40 | ery Point@>. @ |
+| 7B 20 20 20 20 20 40 3E 20 20 20 40 7D 0A 40 41 | { @> @}.@A |
+| 40 3C 45 72 72 6F 72 20 52 65 63 6F 76 65 72 79 | @<Error Recovery |
+| 20 50 6F 69 6E 74 40 3E 0A 0A 35 2E 20 54 65 73 | Point@>..5. Tes |
+| 74 20 74 68 65 20 6C 65 67 61 6C 20 75 73 65 20 | t the legal use |
+| 6F 66 20 74 68 65 20 40 2F 65 6D 70 68 61 73 69 | of the @/emphasi |
+| 73 40 2F 20 63 6F 6E 73 74 72 75 63 74 2E 0A 0A | s@/ construct... |
+| 36 2E 54 65 73 74 20 40 2F 40 2F 20 28 69 6C 6C | 6.Test @/@/ (ill |
+| 65 67 61 6C 29 2E 0A 40 41 40 3C 45 72 72 6F 72 | egal)..@A@<Error |
+| 20 52 65 63 6F 76 65 72 79 20 50 6F 69 6E 74 40 | Recovery Point@ |
+| 3E 0A 0A 37 2E 20 54 65 73 74 20 74 68 65 20 63 | >..7. Test the c |
+| 6F 6E 73 74 72 75 63 74 20 40 2F 61 63 72 6F 73 | onstruct @/acros |
+| 73 0A 20 20 20 6D 6F 72 65 20 74 68 61 6E 20 6F | s. more than o |
+| 6E 65 20 6C 69 6E 65 40 2F 2E 0A 0A 38 2E 20 4E | ne line@/...8. N |
+| 6F 77 20 77 65 20 74 65 73 74 20 74 68 65 20 63 | ow we test the c |
+| 6F 6E 73 74 72 75 63 74 20 77 69 74 68 20 6E 6F | onstruct with no |
+| 6E 2D 74 65 78 74 20 66 6F 6C 6C 6F 77 69 6E 67 | n-text following |
+| 20 69 74 2E 0A 20 20 20 40 2F 40 3C 73 6C 6F 74 | it.. @/@<slot |
+| 68 40 3E 40 2F 0A 40 41 40 3C 45 72 72 6F 72 20 | h@>@/.@A@<Error |
+| 52 65 63 6F 76 65 72 79 20 50 6F 69 6E 74 40 3E | Recovery Point@> |
+| 0A 20 20 20 40 2F 20 20 20 20 20 40 3C 20 20 20 | . @/ @< |
+| 40 2F 0A 0A 0A 0A | @/.... |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR01: Test the inline typesetting features.<010>
+00002 00002| <010>
+00003 00003| 1. First we test the legal use of the @{literal@} construct.<010>
+00004 00004| <010>
+00005 00005| 2.Test @{@} (illegal).<010>
+00006 00006| @A@<Error Recovery Point@><010>
+00007 00007| <010>
+00008 00008| 3. Test the construct @{across<010>
+00009 00009| more than one line@}.<010>
+00010 00010| <010>
+00011 00011| 4. Now we test the construct with non-text following it.<010>
+00012 00012| @{@<sloth@>@}<010>
+00013 00013| @A@<Error Recovery Point@><010>
+00014 00014| @{ @> @}<010>
+00015 00015| @A@<Error Recovery Point@><010>
+00016 00016| <010>
+00017 00017| 5. Test the legal use of the @/emphasis@/ construct.<010>
+00018 00018| <010>
+00019 00019| 6.Test @/@/ (illegal).<010>
+00020 00020| @A@<Error Recovery Point@><010>
+00021 00021| <010>
+00022 00022| 7. Test the construct @/across<010>
+00023 00023| more than one line@/.<010>
+00024 00024| <010>
+00025 00025| 8. Now we test the construct with non-text following it.<010>
+00026 00026| @/@<sloth@>@/<010>
+00027 00027| @A@<Error Recovery Point@><010>
+00028 00028| @/ @< @/<010>
+00029 00029| <010>
+00030 00030| <010>
+00031 00031| <010>
+00032 00032| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 73 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR01: Test the inline typesetting features.<010>
+<010>
+1. First we test the legal use of the "
+0003[39]: @{ Open defn.
+0003[41]: Text. Text scrap[Grey]="literal"
+0003[48]: @} Close defn.
+0003[50]: Text. Text scrap[Grey]=" construct.<010>
+<010>
+2.Test "
+0005[08]: @{ Open defn.
+0005[10]: @} Close defn.
+0005[12]: Text. Text scrap[Grey]=" (illegal).<010>
+"
+0006[01]: @A New section (Level 1).
+0006[03]: @< Open name.
+0006[05]: Text. Text scrap[Grey]="Error Recovery Point"
+0006[25]: @> Close name.
+0006[27]: Text. Text scrap[Grey]="<010>
+<010>
+3. Test the construct "
+0008[23]: @{ Open defn.
+0008[25]: Text. Text scrap[Grey]="across<010>
+ more than one line"
+0009[22]: @} Close defn.
+0009[24]: Text. Text scrap[Grey]=".<010>
+<010>
+4. Now we test the construct with non-text following it.<010>
+ "
+0012[04]: @{ Open defn.
+0012[06]: @< Open name.
+0012[08]: Text. Text scrap[Grey]="sloth"
+0012[13]: @> Close name.
+0012[15]: @} Close defn.
+0012[17]: Text. Text scrap[White]="<010>
+"
+0013[01]: @A New section (Level 1).
+0013[03]: @< Open name.
+0013[05]: Text. Text scrap[Grey]="Error Recovery Point"
+0013[25]: @> Close name.
+0013[27]: Text. Text scrap[White]="<010>
+ "
+0014[04]: @{ Open defn.
+0014[06]: Text. Text scrap[White]=" "
+0014[11]: @> Close name.
+0014[13]: Text. Text scrap[White]=" "
+0014[16]: @} Close defn.
+0014[18]: Text. Text scrap[White]="<010>
+"
+0015[01]: @A New section (Level 1).
+0015[03]: @< Open name.
+0015[05]: Text. Text scrap[Grey]="Error Recovery Point"
+0015[25]: @> Close name.
+0015[27]: Text. Text scrap[Grey]="<010>
+<010>
+5. Test the legal use of the "
+0017[30]: @/ Emphasise.
+0017[32]: Text. Text scrap[Grey]="emphasis"
+0017[40]: @/ Emphasise.
+0017[42]: Text. Text scrap[Grey]=" construct.<010>
+<010>
+6.Test "
+0019[08]: @/ Emphasise.
+0019[10]: @/ Emphasise.
+0019[12]: Text. Text scrap[Grey]=" (illegal).<010>
+"
+0020[01]: @A New section (Level 1).
+0020[03]: @< Open name.
+0020[05]: Text. Text scrap[Grey]="Error Recovery Point"
+0020[25]: @> Close name.
+0020[27]: Text. Text scrap[Grey]="<010>
+<010>
+7. Test the construct "
+0022[23]: @/ Emphasise.
+0022[25]: Text. Text scrap[Grey]="across<010>
+ more than one line"
+0023[22]: @/ Emphasise.
+0023[24]: Text. Text scrap[Grey]=".<010>
+<010>
+8. Now we test the construct with non-text following it.<010>
+ "
+0026[04]: @/ Emphasise.
+0026[06]: @< Open name.
+0026[08]: Text. Text scrap[Grey]="sloth"
+0026[13]: @> Close name.
+0026[15]: @/ Emphasise.
+0026[17]: Text. Text scrap[White]="<010>
+"
+0027[01]: @A New section (Level 1).
+0027[03]: @< Open name.
+0027[05]: Text. Text scrap[Grey]="Error Recovery Point"
+0027[25]: @> Close name.
+0027[27]: Text. Text scrap[White]="<010>
+ "
+0028[04]: @/ Emphasise.
+0028[06]: Text. Text scrap[White]=" "
+0028[11]: @< Open name.
+0028[13]: Text. Text scrap[White]=" "
+0028[16]: @/ Emphasise.
+0028[18]: Text. Text scrap[White]="<010>
+<010>
+<010>
+<010>
+"
+0032[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR01: Test the inline typesetting features.<010>
+<010>
+1. First we test the legal use of the "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Open literal.
+
+TEXT COMPONENT: Pos(L,C)=(3,41).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="literal"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Close literal.
+
+TEXT COMPONENT: Pos(L,C)=(3,50).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]=" construct.<010>
+<010>
+2.Test "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Open literal.
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1", Section name="Error Recovery Point".
+
+TEXT COMPONENT: Pos(L,C)=(6,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+3. Test the construct "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Open literal.
+
+TEXT COMPONENT: Pos(L,C)=(8,25).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="across<010>
+ more than one line"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Close literal.
+
+TEXT COMPONENT: Pos(L,C)=(9,24).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]=".<010>
+<010>
+4. Now we test the construct with non-text following it.<010>
+ "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Open literal.
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="Error Recovery Point".
+
+TEXT COMPONENT: Pos(L,C)=(13,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+ "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Open literal.
+
+TEXT COMPONENT: Pos(L,C)=(14,6).
+
+-- Start of Text Scrap List --
+Text scrap[White]=" "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "3", Section name="Error Recovery Point".
+
+TEXT COMPONENT: Pos(L,C)=(15,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+5. Test the legal use of the "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+
+TEXT COMPONENT: Pos(L,C)=(17,32).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="emphasis"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Close emphasise.
+
+TEXT COMPONENT: Pos(L,C)=(17,42).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]=" construct.<010>
+<010>
+6.Test "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4", Section name="Error Recovery Point".
+
+TEXT COMPONENT: Pos(L,C)=(20,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+7. Test the construct "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+
+TEXT COMPONENT: Pos(L,C)=(22,25).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="across<010>
+ more than one line"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Close emphasise.
+
+TEXT COMPONENT: Pos(L,C)=(23,24).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]=".<010>
+<010>
+8. Now we test the construct with non-text following it.<010>
+ "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "5", Section name="Error Recovery Point".
+
+TEXT COMPONENT: Pos(L,C)=(27,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+ "
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Open emphasise.
+
+TEXT COMPONENT: Pos(L,C)=(28,6).
+
+-- Start of Text Scrap List --
+Text scrap[White]=" "
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| PR01: Test the inline typesetting features.
+ 2 2|
+ 3 3| 1. First we test the legal use of the @{literal@} construct.
+ 4 4|
+ 5 5| 2.Test @{@} (illegal).
+ Error|..........^Text expected after open literal token "@{".
+ |..........^Sorry, empty literal strings are not allowed.
+ |..........^Skipping after error to the next major construct...
+ 6 6| @A@<Error Recovery Point@>
+ |.^...skipped to here after the error.
+ 7 7|
+ 8 8| 3. Test the construct @{across
+ 9 9| more than one line@}.
+ 10 10|
+ 11 11| 4. Now we test the construct with non-text following it.
+ 12 12| @{@<sloth@>@}
+ Error|......^Text expected after open literal token "@{".
+ |......^Skipping after error to the next major construct...
+ 13 13| @A@<Error Recovery Point@>
+ |.^...skipped to here after the error.
+ 14 14| @{ @> @}
+ Error|...........^Expecting '@}'.
+ |...........^Skipping after error to the next major construct...
+ 15 15| @A@<Error Recovery Point@>
+ |.^...skipped to here after the error.
+ 16 16|
+ 17 17| 5. Test the legal use of the @/emphasis@/ construct.
+ 18 18|
+ 19 19| 6.Test @/@/ (illegal).
+ Error|..........^Text expected after open emphasise token "@/".
+ |..........^Sorry, empty emphasised strings are not allowed.
+ |..........^Skipping after error to the next major construct...
+ 20 20| @A@<Error Recovery Point@>
+ |.^...skipped to here after the error.
+ 21 21|
+ 22 22| 7. Test the construct @/across
+ 23 23| more than one line@/.
+ 24 24|
+ 25 25| 8. Now we test the construct with non-text following it.
+ 26 26| @/@<sloth@>@/
+ Error|......^Text expected after open emphasise token "@/".
+ |......^Skipping after error to the next major construct...
+ 27 27| @A@<Error Recovery Point@>
+ |.^...skipped to here after the error.
+ 28 28| @/ @< @/
+ Error|...........^Expecting '@/'.
+ |...........^Skipping after error to the next major construct...
+ 29 29|
+ 30 30|
+ 31 31|
+ | <End-Of-File>
+ |.^...skipped to here after the error.
+------------+-------------------------------------------------------------------
+
+There were 6 Errors.
diff --git a/web/funnelAC/results/pr02.lis b/web/funnelAC/results/pr02.lis
new file mode 100644
index 0000000000..5051dfb106
--- /dev/null
+++ b/web/funnelAC/results/pr02.lis
@@ -0,0 +1,249 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 30 32 3A 20 54 65 73 74 20 74 68 65 20 70 | PR02: Test the p |
+| 61 72 73 69 6E 67 20 6F 66 20 74 79 70 65 73 65 | arsing of typese |
+| 74 74 65 72 20 64 69 72 65 63 74 69 76 65 73 2E | tter directives. |
+| 0A 0A 31 2E 20 54 65 73 74 20 70 61 72 73 69 6E | ..1. Test parsin |
+| 67 20 6F 66 20 6E 65 77 20 70 61 67 65 20 64 69 | g of new page di |
+| 72 65 63 74 69 76 65 2E 0A 40 74 20 6E 65 77 5F | rective..@t new_ |
+| 70 61 67 65 0A 0A 32 2E 20 54 65 73 74 20 70 61 | page..2. Test pa |
+| 72 73 69 6E 67 20 6F 66 20 74 61 62 6C 65 20 6F | rsing of table o |
+| 66 20 63 6F 6E 74 65 6E 74 73 20 64 69 72 65 63 | f contents direc |
+| 74 69 76 65 2E 0A 40 74 20 74 61 62 6C 65 5F 6F | tive..@t table_o |
+| 66 5F 63 6F 6E 74 65 6E 74 73 0A 0A 33 2E 20 54 | f_contents..3. T |
+| 65 73 74 20 70 61 72 73 69 6E 67 20 6F 66 20 76 | est parsing of v |
+| 73 6B 69 70 20 64 69 72 65 63 74 69 76 65 2E 0A | skip directive.. |
+| 40 74 20 76 73 6B 69 70 20 33 32 20 6D 6D 0A 0A | @t vskip 32 mm.. |
+| 34 2E 20 54 65 73 74 20 70 61 72 73 69 6E 67 20 | 4. Test parsing |
+| 6F 66 20 74 69 74 6C 65 20 64 69 72 65 63 74 69 | of title directi |
+| 76 65 2E 0A 40 74 20 74 69 74 6C 65 20 74 69 74 | ve..@t title tit |
+| 6C 65 66 6F 6E 74 20 6C 65 66 74 20 22 53 6C 6F | lefont left "Slo |
+| 74 68 22 0A 0A | th".. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR02: Test the parsing of typesetter directives.<010>
+00002 00002| <010>
+00003 00003| 1. Test parsing of new page directive.<010>
+00004 00004| @t new_page<010>
+00005 00005| <010>
+00006 00006| 2. Test parsing of table of contents directive.<010>
+00007 00007| @t table_of_contents<010>
+00008 00008| <010>
+00009 00009| 3. Test parsing of vskip directive.<010>
+00010 00010| @t vskip 32 mm<010>
+00011 00011| <010>
+00012 00012| 4. Test parsing of title directive.<010>
+00013 00013| @t title titlefont left "Sloth"<010>
+00014 00014| <010>
+00015 00015| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 10 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR02: Test the parsing of typesetter directives.<010>
+<010>
+1. Test parsing of new page directive.<010>
+"
+0004[01]: @t.. Newpage.
+0005[01]: Text. Text scrap[Grey]="<010>
+2. Test parsing of table of contents directive.<010>
+"
+0007[01]: @t.. TOC.
+0008[01]: Text. Text scrap[Grey]="<010>
+3. Test parsing of vskip directive.<010>
+"
+0010[01]: @t.. Vertical skip. Vertical space skipped=32mm.
+0011[01]: Text. Text scrap[Grey]="<010>
+4. Test parsing of title directive.<010>
+"
+0013[01]: @t.. Title. Font=Title, Alignment=Left. Title text follows:
+Text scrap[Grey]="Sloth"
+0014[01]: Text. Text scrap[White]="<010>
+"
+0015[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR02: Test the parsing of typesetter directives.<010>
+<010>
+1. Test parsing of new page directive.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: New page.
+
+TEXT COMPONENT: Pos(L,C)=(5,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+2. Test parsing of table of contents directive.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Table of contents.
+
+TEXT COMPONENT: Pos(L,C)=(8,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+3. Test parsing of vskip directive.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Vertical skip by 32 mm.
+
+TEXT COMPONENT: Pos(L,C)=(11,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+4. Test parsing of title directive.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT: Font=Title, Alignment=Left. Title text follows:
+Text scrap[Grey]="Sloth"
+
+TEXT COMPONENT: Pos(L,C)=(14,1).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/pr03.lis b/web/funnelAC/results/pr03.lis
new file mode 100644
index 0000000000..76b9388f30
--- /dev/null
+++ b/web/funnelAC/results/pr03.lis
@@ -0,0 +1,557 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 30 33 3A 20 54 65 73 74 20 74 68 65 20 70 | PR03: Test the p |
+| 61 72 73 69 6E 67 20 61 6E 64 20 73 65 6D 61 6E | arsing and seman |
+| 74 69 63 73 20 6F 66 20 73 65 63 74 69 6F 6E 73 | tics of sections |
+| 2E 0A 0A 34 2E 20 54 65 73 74 20 66 69 72 73 74 | ...4. Test first |
+| 20 73 65 63 74 69 6F 6E 20 6F 66 20 64 6F 63 75 | section of docu |
+| 6D 65 6E 74 20 69 73 20 6E 6F 74 20 3C 73 70 65 | ment is not <spe |
+| 63 69 61 6C 3E 41 2E 0A 40 42 40 3C 54 68 69 73 | cial>A..@B@<This |
+| 20 73 65 63 74 69 6F 6E 20 69 73 20 6F 75 74 20 | section is out |
+| 6F 66 20 6F 72 64 65 72 20 28 61 6E 64 20 73 6F | of order (and so |
+| 20 69 73 20 74 68 69 73 20 74 65 73 74 21 29 40 | is this test!)@ |
+| 3E 0A 0A 31 2E 20 54 65 73 74 20 73 65 63 74 69 | >..1. Test secti |
+| 6F 6E 20 77 69 74 68 20 6E 6F 20 6E 61 6D 65 2E | on with no name. |
+| 0A 40 41 20 54 68 69 73 20 73 65 63 74 69 6F 6E | .@A This section |
+| 20 68 61 73 20 6E 6F 20 6E 61 6D 65 2E 0A 40 24 | has no name..@$ |
+| 40 3C 54 68 65 20 73 65 63 74 69 6F 6E 20 6E 61 | @<The section na |
+| 6D 65 20 69 6E 68 65 72 69 74 73 20 74 68 65 20 | me inherits the |
+| 6E 61 6D 65 20 6F 66 20 74 68 69 73 20 6D 61 63 | name of this mac |
+| 72 6F 40 3E 40 7B 57 61 6C 72 75 73 40 7D 0A 0A | ro@>@{Walrus@}.. |
+| 32 2E 20 54 65 73 74 20 73 65 63 74 69 6F 6E 20 | 2. Test section |
+| 77 69 74 68 20 61 20 6E 61 6D 65 0A 40 41 40 3C | with a name.@A@< |
+| 54 68 69 73 20 73 65 63 74 69 6F 6E 20 68 61 73 | This section has |
+| 20 6E 6F 20 6E 61 6D 65 2E 40 3E 0A 0A 33 2E 20 | no name.@>..3. |
+| 54 65 73 74 20 74 68 65 20 65 6E 74 69 72 65 20 | Test the entire |
+| 68 69 65 72 61 72 63 68 79 2E 0A 40 41 40 3C 4F | hierarchy..@A@<O |
+| 6E 65 40 3E 0A 40 42 40 3C 54 77 6F 40 3E 0A 40 | ne@>.@B@<Two@>.@ |
+| 43 40 3C 54 68 72 65 65 40 3E 0A 40 44 40 3C 46 | C@<Three@>.@D@<F |
+| 6F 75 72 40 3E 0A 40 45 40 3C 46 69 76 65 40 3E | our@>.@E@<Five@> |
+| 0A 0A 35 2E 20 54 65 73 74 20 64 65 74 65 63 74 | ..5. Test detect |
+| 69 6F 6E 20 6F 66 20 64 69 73 63 6F 6E 74 69 6E | ion of discontin |
+| 75 69 74 79 20 69 6E 20 6C 65 76 65 6C 73 2E 0A | uity in levels.. |
+| 40 41 40 3C 4F 6E 65 40 3E 0A 40 43 40 3C 54 68 | @A@<One@>.@C@<Th |
+| 72 65 65 40 3E 0A 40 45 40 3C 46 69 76 65 40 3E | ree@>.@E@<Five@> |
+| 0A 0A 40 41 40 3C 4F 6E 65 40 3E 0A 40 42 40 3C | ..@A@<One@>.@B@< |
+| 54 68 72 65 65 40 3E 0A 40 44 40 3C 46 69 76 65 | Three@>.@D@<Five |
+| 40 3E 0A | @>. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR03: Test the parsing and semantics of sections.<010>
+00002 00002| <010>
+00003 00003| 4. Test first section of document is not <special>A.<010>
+00004 00004| @B@<This section is out of order (and so is this test!)@><010>
+00005 00005| <010>
+00006 00006| 1. Test section with no name.<010>
+00007 00007| @A This section has no name.<010>
+00008 00008| @$@<The section name inherits the name of this macro@>@{Walrus@}<010>
+00009 00009| <010>
+00010 00010| 2. Test section with a name<010>
+00011 00011| @A@<This section has no name.@><010>
+00012 00012| <010>
+00013 00013| 3. Test the entire hierarchy.<010>
+00014 00014| @A@<One@><010>
+00015 00015| @B@<Two@><010>
+00016 00016| @C@<Three@><010>
+00017 00017| @D@<Four@><010>
+00018 00018| @E@<Five@><010>
+00019 00019| <010>
+00020 00020| 5. Test detection of discontinuity in levels.<010>
+00021 00021| @A@<One@><010>
+00022 00022| @C@<Three@><010>
+00023 00023| @E@<Five@><010>
+00024 00024| <010>
+00025 00025| @A@<One@><010>
+00026 00026| @B@<Three@><010>
+00027 00027| @D@<Five@><010>
+00028 00028| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 77 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR03: Test the parsing and semantics of sections.<010>
+<010>
+4. Test first section of document is not <special>A.<010>
+"
+0004[01]: @B New section (Level 2).
+0004[03]: @< Open name.
+0004[05]: Text. Text scrap[Grey]="This section is out of order (and so is this test!)"
+0004[56]: @> Close name.
+0004[58]: Text. Text scrap[Grey]="<010>
+<010>
+1. Test section with no name.<010>
+"
+0007[01]: @A New section (Level 1).
+0007[03]: Text. Text scrap[Grey]=" This section has no name.<010>
+"
+0008[01]: @$ Macro defn.
+0008[03]: @< Open name.
+0008[05]: Text. Text scrap[Grey]="The section name inherits the name of this macro"
+0008[53]: @> Close name.
+0008[55]: @{ Open defn.
+0008[57]: Text. Text scrap[Grey]="Walrus"
+0008[63]: @} Close defn.
+0008[65]: Text. Text scrap[Grey]="<010>
+<010>
+2. Test section with a name<010>
+"
+0011[01]: @A New section (Level 1).
+0011[03]: @< Open name.
+0011[05]: Text. Text scrap[Grey]="This section has no name."
+0011[30]: @> Close name.
+0011[32]: Text. Text scrap[Grey]="<010>
+<010>
+3. Test the entire hierarchy.<010>
+"
+0014[01]: @A New section (Level 1).
+0014[03]: @< Open name.
+0014[05]: Text. Text scrap[Grey]="One"
+0014[08]: @> Close name.
+0014[10]: Text. Text scrap[White]="<010>
+"
+0015[01]: @B New section (Level 2).
+0015[03]: @< Open name.
+0015[05]: Text. Text scrap[Grey]="Two"
+0015[08]: @> Close name.
+0015[10]: Text. Text scrap[White]="<010>
+"
+0016[01]: @C New section (Level 3).
+0016[03]: @< Open name.
+0016[05]: Text. Text scrap[Grey]="Three"
+0016[10]: @> Close name.
+0016[12]: Text. Text scrap[White]="<010>
+"
+0017[01]: @D New section (Level 4).
+0017[03]: @< Open name.
+0017[05]: Text. Text scrap[Grey]="Four"
+0017[09]: @> Close name.
+0017[11]: Text. Text scrap[White]="<010>
+"
+0018[01]: @E New section (Level 5).
+0018[03]: @< Open name.
+0018[05]: Text. Text scrap[Grey]="Five"
+0018[09]: @> Close name.
+0018[11]: Text. Text scrap[Grey]="<010>
+<010>
+5. Test detection of discontinuity in levels.<010>
+"
+0021[01]: @A New section (Level 1).
+0021[03]: @< Open name.
+0021[05]: Text. Text scrap[Grey]="One"
+0021[08]: @> Close name.
+0021[10]: Text. Text scrap[White]="<010>
+"
+0022[01]: @C New section (Level 3).
+0022[03]: @< Open name.
+0022[05]: Text. Text scrap[Grey]="Three"
+0022[10]: @> Close name.
+0022[12]: Text. Text scrap[White]="<010>
+"
+0023[01]: @E New section (Level 5).
+0023[03]: @< Open name.
+0023[05]: Text. Text scrap[Grey]="Five"
+0023[09]: @> Close name.
+0023[11]: Text. Text scrap[White]="<010>
+<010>
+"
+0025[01]: @A New section (Level 1).
+0025[03]: @< Open name.
+0025[05]: Text. Text scrap[Grey]="One"
+0025[08]: @> Close name.
+0025[10]: Text. Text scrap[White]="<010>
+"
+0026[01]: @B New section (Level 2).
+0026[03]: @< Open name.
+0026[05]: Text. Text scrap[Grey]="Three"
+0026[10]: @> Close name.
+0026[12]: Text. Text scrap[White]="<010>
+"
+0027[01]: @D New section (Level 4).
+0027[03]: @< Open name.
+0027[05]: Text. Text scrap[Grey]="Five"
+0027[09]: @> Close name.
+0027[11]: Text. Text scrap[White]="<010>
+"
+0028[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "The section name inherits the name of this macro"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=1, Pos(L,C)=(8,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR03: Test the parsing and semantics of sections.<010>
+<010>
+4. Test first section of document is not <special>A.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1.2", Section name="This section is out of order (and so is this test!)".
+
+TEXT COMPONENT: Pos(L,C)=(4,58).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+1. Test section with no name.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="The section name inherits the name of this macro".
+
+TEXT COMPONENT: Pos(L,C)=(7,3).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]=" This section has no name.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(8,1).
+Part 1 of macro @<The section name inherits the name of this macro@>.
+
+TEXT COMPONENT: Pos(L,C)=(8,65).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+2. Test section with a name<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "3", Section name="This section has no name.".
+
+TEXT COMPONENT: Pos(L,C)=(11,32).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+3. Test the entire hierarchy.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4", Section name="One".
+
+TEXT COMPONENT: Pos(L,C)=(14,10).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4.1", Section name="Two".
+
+TEXT COMPONENT: Pos(L,C)=(15,10).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4.1.1", Section name="Three".
+
+TEXT COMPONENT: Pos(L,C)=(16,12).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4.1.1.1", Section name="Four".
+
+TEXT COMPONENT: Pos(L,C)=(17,11).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4.1.1.1.1", Section name="Five".
+
+TEXT COMPONENT: Pos(L,C)=(18,11).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+5. Test detection of discontinuity in levels.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "5", Section name="One".
+
+TEXT COMPONENT: Pos(L,C)=(21,10).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1.1.2", Section name="Three".
+
+TEXT COMPONENT: Pos(L,C)=(22,12).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1.1.1.1.2", Section name="Five".
+
+TEXT COMPONENT: Pos(L,C)=(23,11).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="One".
+
+TEXT COMPONENT: Pos(L,C)=(25,10).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2.1", Section name="Three".
+
+TEXT COMPONENT: Pos(L,C)=(26,12).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1.1.1.2", Section name="Five".
+
+TEXT COMPONENT: Pos(L,C)=(27,11).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| PR03: Test the parsing and semantics of sections.
+ 2 2|
+ 3 3| 4. Test first section of document is not <special>A.
+ 4 4| @B@<This section is out of order (and so is this test!)@>
+ Error|.^The first section in a document must be an @A section.
+ 5 5|
+ 6 6| 1. Test section with no name.
+ 7 7| @A This section has no name.
+ 8 8| @$@<The section name inherits the name of this macro@>@{Walrus@}
+ 9 9|
+ 10 10| 2. Test section with a name
+ 11 11| @A@<This section has no name.@>
+ 12 12|
+ 13 13| 3. Test the entire hierarchy.
+ 14 14| @A@<One@>
+ 15 15| @B@<Two@>
+ 16 16| @C@<Three@>
+ 17 17| @D@<Four@>
+ 18 18| @E@<Five@>
+ 19 19|
+ 20 20| 5. Test detection of discontinuity in levels.
+ 21 21| @A@<One@>
+ |.^The next section (at line 22) is too deep.
+ 22 22| @C@<Three@>
+ Error|.^This section is more than one level deeper than the last
+ |.^section (at line 21). Example: @B followed by @D is not allowed.
+ |.^The next section (at line 23) is too deep.
+ 23 23| @E@<Five@>
+ Error|.^This section is more than one level deeper than the last
+ |.^section (at line 22). Example: @B followed by @D is not allowed.
+ 24 24|
+ 25 25| @A@<One@>
+ 26 26| @B@<Three@>
+ |.^The next section (at line 27) is too deep.
+ 27 27| @D@<Five@>
+ Error|.^This section is more than one level deeper than the last
+ |.^section (at line 26). Example: @B followed by @D is not allowed.
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 4 Errors.
diff --git a/web/funnelAC/results/pr04.lis b/web/funnelAC/results/pr04.lis
new file mode 100644
index 0000000000..38d0680caf
--- /dev/null
+++ b/web/funnelAC/results/pr04.lis
@@ -0,0 +1,751 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 30 34 3A 20 54 65 73 74 20 74 68 65 20 64 | PR04: Test the d |
+| 65 66 69 6E 69 74 69 6F 6E 20 6F 66 20 6F 72 64 | efinition of ord |
+| 69 6E 61 72 79 20 6D 61 63 72 6F 73 2E 0A 0A 31 | inary macros...1 |
+| 2E 20 54 65 73 74 20 61 6E 20 6F 72 64 69 6E 61 | . Test an ordina |
+| 72 79 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 | ry macro definit |
+| 69 6F 6E 2E 0A 40 24 40 3C 4F 72 64 69 6E 61 72 | ion..@$@<Ordinar |
+| 79 40 3E 40 7B 54 68 65 20 74 65 78 74 20 6F 66 | y@>@{The text of |
+| 20 6F 72 64 69 6E 61 72 79 40 7D 0A 0A 32 2E 20 | ordinary@}..2. |
+| 54 65 73 74 20 61 6E 20 6F 72 64 69 6E 61 72 79 | Test an ordinary |
+| 20 64 65 66 69 6E 69 74 69 6F 6E 20 75 73 69 6E | definition usin |
+| 67 20 61 20 71 75 69 63 6B 6E 61 6D 65 2E 0A 40 | g a quickname..@ |
+| 24 40 23 7C 40 7B 54 68 65 20 74 65 78 74 20 6F | $@#|@{The text o |
+| 66 20 6F 72 64 69 6E 61 72 79 40 7D 0A 0A 33 2E | f ordinary@}..3. |
+| 20 54 65 73 74 20 61 20 6E 61 6D 65 20 74 68 61 | Test a name tha |
+| 74 20 69 6E 63 6C 75 64 65 73 20 45 4F 4C 2E 0A | t includes EOL.. |
+| 40 24 40 3C 54 68 69 73 20 6E 61 6D 65 20 69 73 | @$@<This name is |
+| 20 69 6C 6C 65 67 61 6C 20 62 65 63 61 75 73 65 | illegal because |
+| 0A 69 74 20 63 72 6F 73 73 65 73 20 61 20 6C 69 | .it crosses a li |
+| 6F 6E 40 3E 40 7B 41 6E 64 20 70 65 6F 70 6C 65 | on@>@{And people |
+| 20 77 68 6F 20 63 72 6F 73 73 20 6C 69 6F 6E 73 | who cross lions |
+| 20 74 65 6E 64 20 74 6F 20 67 65 74 20 65 61 74 | tend to get eat |
+| 65 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | en.@}.@A@<Error |
+| 52 65 63 6F 76 65 72 79 20 50 6F 69 6E 74 40 3E | Recovery Point@> |
+| 0A 0A 34 2E 20 54 65 73 74 20 74 68 65 20 6D 69 | ..4. Test the mi |
+| 6E 69 6D 75 6D 20 6C 65 6E 67 74 68 20 6E 61 6D | nimum length nam |
+| 65 20 28 74 68 65 20 65 6D 70 74 79 20 6E 61 6D | e (the empty nam |
+| 65 29 2E 0A 40 24 40 3C 40 3E 40 7B 54 68 65 20 | e)..@$@<@>@{The |
+| 65 6D 70 74 79 20 6D 61 63 72 6F 20 6E 61 6D 65 | empty macro name |
+| 20 69 73 20 71 75 69 74 65 20 6C 65 67 61 6C 20 | is quite legal |
+| 69 6E 20 46 75 6E 6E 65 6C 57 65 62 2E 40 7D 0A | in FunnelWeb.@}. |
+| 0A 35 2E 20 54 65 73 74 20 61 20 6E 61 6D 65 20 | .5. Test a name |
+| 61 74 20 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E | at the maximum n |
+| 61 6D 65 20 6C 65 6E 67 74 68 20 6C 69 6D 69 74 | ame length limit |
+| 20 28 38 30 29 2E 0A 4F 4E 6C 79 20 74 68 65 20 | (80)..ONly the |
+| 73 65 63 6F 6E 64 20 6F 66 20 74 68 65 20 74 77 | second of the tw |
+| 6F 20 6D 61 63 72 6F 73 20 73 68 6F 75 6C 64 20 | o macros should |
+| 67 65 6E 65 72 61 74 65 20 61 6E 20 65 72 72 6F | generate an erro |
+| 72 2E 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 69 6E | r..@p maximum_in |
+| 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 | put_line_length |
+| 3D 20 31 30 30 0A 40 24 40 3C 31 32 33 34 35 36 | = 100.@$@<123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 40 3E 40 7B 40 7D | 1234567890@>@{@} |
+| 0A 40 24 40 3C 31 32 33 34 35 36 37 38 39 30 31 | .@$@<12345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 40 3E 40 7B 40 7D 0A 40 41 40 | 678901@>@{@}.@A@ |
+| 3C 45 72 72 6F 72 20 52 65 63 6F 76 65 72 79 20 | <Error Recovery |
+| 50 6F 69 6E 74 40 3E 0A 0A 36 2E 20 54 65 73 74 | Point@>..6. Test |
+| 20 6E 61 6D 65 73 20 77 69 74 68 20 61 6C 6C 20 | names with all |
+| 6C 65 67 61 6C 20 63 68 61 72 61 63 74 65 72 73 | legal characters |
+| 2E 20 54 68 65 72 65 20 73 68 6F 75 6C 64 20 62 | . There should b |
+| 65 20 6E 6F 20 65 72 72 6F 72 73 2E 0A 40 24 40 | e no errors..@$@ |
+| 3C 20 21 22 23 24 25 27 28 29 2A 2B 2C 2D 2E 2F | < !"#$%'()*+,-./ |
+| 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F | 0123456789:;<=>? |
+| 40 3E 40 7B 40 7D 0A 40 24 40 3C 41 42 43 44 45 | @>@{@}.@$@<ABCDE |
+| 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 | FGHIJKLMNOPQRSTU |
+| 56 57 58 59 5A 5B 5C 5D 5E 5F 60 40 3E 40 7B 40 | VWXYZ[\]^_`@>@{@ |
+| 7D 0A 40 24 40 3C 61 62 63 64 65 66 67 68 69 6A | }.@$@<abcdefghij |
+| 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A | klmnopqrstuvwxyz |
+| 7B 7C 7D 7E 40 3E 40 7B 40 7D 0A 0A 37 2E 20 54 | {|}~@>@{@}..7. T |
+| 65 73 74 20 61 20 6E 61 6D 65 20 74 68 61 74 20 | est a name that |
+| 68 61 73 20 69 6E 73 65 72 74 65 64 20 74 65 78 | has inserted tex |
+| 74 20 73 65 71 75 65 6E 63 65 73 2E 0A 0A 40 24 | t sequences...@$ |
+| 40 3C 40 5E 44 28 30 36 35 29 40 40 40 3E 3D 3D | @<@^D(065)@@@>== |
+| 40 7B 40 7D 0A 0A 0A | @{@}... |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR04: Test the definition of ordinary macros.<010>
+00002 00002| <010>
+00003 00003| 1. Test an ordinary macro definition.<010>
+00004 00004| @$@<Ordinary@>@{The text of ordinary@}<010>
+00005 00005| <010>
+00006 00006| 2. Test an ordinary definition using a quickname.<010>
+00007 00007| @$@#|@{The text of ordinary@}<010>
+00008 00008| <010>
+00009 00009| 3. Test a name that includes EOL.<010>
+00010 00010| @$@<This name is illegal because<010>
+00011 00011| it crosses a lion@>@{And people who cross lions tend to get eaten.@}<010>
+00012 00012| @A@<Error Recovery Point@><010>
+00013 00013| <010>
+00014 00014| 4. Test the minimum length name (the empty name).<010>
+00015 00015| @$@<@>@{The empty macro name is quite legal in FunnelWeb.@}<010>
+00016 00016| <010>
+00017 00017| 5. Test a name at the maximum name length limit (80).<010>
+00018 00018| ONly the second of the two macros should generate an error.<010>
+00019 00019| @p maximum_input_line_length = 100<010>
+00020 00020| @$@<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}<010>
+00021 00021| @$@<123456789012345678901234567890123456789012345678901234567890123456789012345678901@>@{@}<010>
+00022 00022| @A@<Error Recovery Point@><010>
+00023 00023| <010>
+00024 00024| 6. Test names with all legal characters. There should be no errors.<010>
+00025 00025| @$@< !"#$%'()*+,-./0123456789:;<=>?@>@{@}<010>
+00026 00026| @$@<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>@{@}<010>
+00027 00027| @$@<abcdefghijklmnopqrstuvwxyz{|}~@>@{@}<010>
+00028 00028| <010>
+00029 00029| 7. Test a name that has inserted text sequences.<010>
+00030 00030| <010>
+00031 00031| @$@<@^D(065)@@@>==@{@}<010>
+00032 00032| <010>
+00033 00033| <010>
+00034 00034| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 85 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR04: Test the definition of ordinary macros.<010>
+<010>
+1. Test an ordinary macro definition.<010>
+"
+0004[01]: @$ Macro defn.
+0004[03]: @< Open name.
+0004[05]: Text. Text scrap[Grey]="Ordinary"
+0004[13]: @> Close name.
+0004[15]: @{ Open defn.
+0004[17]: Text. Text scrap[Grey]="The text of ordinary"
+0004[37]: @} Close defn.
+0004[39]: Text. Text scrap[Grey]="<010>
+<010>
+2. Test an ordinary definition using a quickname.<010>
+"
+0007[01]: @$ Macro defn.
+0007[03]: @# Name. Character='|'.
+0007[06]: @{ Open defn.
+0007[08]: Text. Text scrap[Grey]="The text of ordinary"
+0007[28]: @} Close defn.
+0007[30]: Text. Text scrap[Grey]="<010>
+<010>
+3. Test a name that includes EOL.<010>
+"
+0010[01]: @$ Macro defn.
+0010[03]: @< Open name.
+0010[05]: Text. Text scrap[Grey]="This name is illegal because<010>
+it crosses a lion"
+0011[18]: @> Close name.
+0011[20]: @{ Open defn.
+0011[22]: Text. Text scrap[Grey]="And people who cross lions tend to get eaten."
+0011[67]: @} Close defn.
+0011[69]: Text. Text scrap[White]="<010>
+"
+0012[01]: @A New section (Level 1).
+0012[03]: @< Open name.
+0012[05]: Text. Text scrap[Grey]="Error Recovery Point"
+0012[25]: @> Close name.
+0012[27]: Text. Text scrap[Grey]="<010>
+<010>
+4. Test the minimum length name (the empty name).<010>
+"
+0015[01]: @$ Macro defn.
+0015[03]: @< Open name.
+0015[05]: @> Close name.
+0015[07]: @{ Open defn.
+0015[09]: Text. Text scrap[Grey]="The empty macro name is quite legal in FunnelWeb."
+0015[58]: @} Close defn.
+0015[60]: Text. Text scrap[Grey]="<010>
+<010>
+5. Test a name at the maximum name length limit (80).<010>
+ONly the second of the two macros should generate an error.<010>
+"
+0020[01]: @$ Macro defn.
+0020[03]: @< Open name.
+0020[05]: Text. Text scrap[Grey]="12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+0020[85]: @> Close name.
+0020[87]: @{ Open defn.
+0020[89]: @} Close defn.
+0020[91]: Text. Text scrap[White]="<010>
+"
+0021[01]: @$ Macro defn.
+0021[03]: @< Open name.
+0021[05]: Text. Text scrap[Grey]="123456789012345678901234567890123456789012345678901234567890123456789012345678901"
+0021[86]: @> Close name.
+0021[88]: @{ Open defn.
+0021[90]: @} Close defn.
+0021[92]: Text. Text scrap[White]="<010>
+"
+0022[01]: @A New section (Level 1).
+0022[03]: @< Open name.
+0022[05]: Text. Text scrap[Grey]="Error Recovery Point"
+0022[25]: @> Close name.
+0022[27]: Text. Text scrap[Grey]="<010>
+<010>
+6. Test names with all legal characters. There should be no errors.<010>
+"
+0025[01]: @$ Macro defn.
+0025[03]: @< Open name.
+0025[05]: Text. Text scrap[Grey]=" !"#$%'()*+,-./0123456789:;<=>?"
+0025[36]: @> Close name.
+0025[38]: @{ Open defn.
+0025[40]: @} Close defn.
+0025[42]: Text. Text scrap[White]="<010>
+"
+0026[01]: @$ Macro defn.
+0026[03]: @< Open name.
+0026[05]: Text. Text scrap[Grey]="ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`"
+0026[37]: @> Close name.
+0026[39]: @{ Open defn.
+0026[41]: @} Close defn.
+0026[43]: Text. Text scrap[White]="<010>
+"
+0027[01]: @$ Macro defn.
+0027[03]: @< Open name.
+0027[05]: Text. Text scrap[Grey]="abcdefghijklmnopqrstuvwxyz{|}~"
+0027[35]: @> Close name.
+0027[37]: @{ Open defn.
+0027[39]: @} Close defn.
+0027[41]: Text. Text scrap[Grey]="<010>
+<010>
+7. Test a name that has inserted text sequences.<010>
+<010>
+"
+0031[01]: @$ Macro defn.
+0031[03]: @< Open name.
+0031[05]: Text. Text scrap[Grey]="A"
+0031[13]: Text. Text scrap[Grey]="@"
+0031[15]: @> Close name.
+0031[17]: Text. Text scrap[Grey]="=="
+0031[19]: @{ Open defn.
+0031[21]: @} Close defn.
+0031[23]: Text. Text scrap[White]="<010>
+<010>
+<010>
+"
+0034[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : ""
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=3, Pos(L,C)=(15,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="The empty macro name is quite legal in FunnelWeb."
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : " !"#$%'()*+,-./0123456789:;<=>?"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=5, Pos(L,C)=(25,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=4, Pos(L,C)=(20,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "A@"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=8, Pos(L,C)=(31,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=6, Pos(L,C)=(26,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Ordinary"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=1, Pos(L,C)=(4,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="The text of ordinary"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "abcdefghijklmnopqrstuvwxyz{|}~"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=7, Pos(L,C)=(27,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "|"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=2, Pos(L,C)=(7,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="The text of ordinary"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR04: Test the definition of ordinary macros.<010>
+<010>
+1. Test an ordinary macro definition.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(4,1).
+Part 1 of macro @<Ordinary@>.
+
+TEXT COMPONENT: Pos(L,C)=(4,39).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+2. Test an ordinary definition using a quickname.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+Part 1 of macro @<|@>.
+
+TEXT COMPONENT: Pos(L,C)=(7,30).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+3. Test a name that includes EOL.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1", Section name="Error Recovery Point".
+
+TEXT COMPONENT: Pos(L,C)=(12,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+4. Test the minimum length name (the empty name).<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(15,1).
+Part 1 of macro @<@>.
+
+TEXT COMPONENT: Pos(L,C)=(15,60).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+5. Test a name at the maximum name length limit (80).<010>
+ONly the second of the two macros should generate an error.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(20,1).
+Part 1 of macro @<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>.
+
+TEXT COMPONENT: Pos(L,C)=(20,91).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="Error Recovery Point".
+
+TEXT COMPONENT: Pos(L,C)=(22,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+6. Test names with all legal characters. There should be no errors.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(25,1).
+Part 1 of macro @< !"#$%'()*+,-./0123456789:;<=>?@>.
+
+TEXT COMPONENT: Pos(L,C)=(25,42).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(26,1).
+Part 1 of macro @<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>.
+
+TEXT COMPONENT: Pos(L,C)=(26,43).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(27,1).
+Part 1 of macro @<abcdefghijklmnopqrstuvwxyz{|}~@>.
+
+TEXT COMPONENT: Pos(L,C)=(27,41).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+7. Test a name that has inserted text sequences.<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(31,1).
+Part 1 of macro @<A@@>.
+
+TEXT COMPONENT: Pos(L,C)=(31,23).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| PR04: Test the definition of ordinary macros.
+ 2 2|
+ 3 3| 1. Test an ordinary macro definition.
+ 4 4| @$@<Ordinary@>@{The text of ordinary@}
+ 5 5|
+ 6 6| 2. Test an ordinary definition using a quickname.
+ 7 7| @$@#|@{The text of ordinary@}
+ 8 8|
+ 9 9| 3. Test a name that includes EOL.
+ 10 10| @$@<This name is illegal because
+ Error|.....^Names cannot cross lines.
+ |.....^Skipping after error to the next major construct...
+ 11 11| it crosses a lion@>@{And people who cross lions tend to get eaten.@}
+ 12 12| @A@<Error Recovery Point@>
+ |.^...skipped to here after the error.
+ 13 13|
+ 14 14| 4. Test the minimum length name (the empty name).
+ 15 15| @$@<@>@{The empty macro name is quite legal in FunnelWeb.@}
+ 16 16|
+ 17 17| 5. Test a name at the maximum name length limit (80).
+ 18 18| ONly the second of the two macros should generate an error.
+ 19 19| @p maximum_input_line_length = 100
+ 20 20| @$@<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}
+ 21 21| @$@<123456789012345678901234567890123456789012345678901234567890123456789012345678901@>@{@}
+ Error|.....^Name is too long.
+ |.....^The maximum length of a legal name is 80 characters.
+ |.....^Skipping after error to the next major construct...
+ 22 22| @A@<Error Recovery Point@>
+ |.^...skipped to here after the error.
+ 23 23|
+ 24 24| 6. Test names with all legal characters. There should be no errors.
+ 25 25| @$@< !"#$%'()*+,-./0123456789:;<=>?@>@{@}
+ 26 26| @$@<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>@{@}
+ 27 27| @$@<abcdefghijklmnopqrstuvwxyz{|}~@>@{@}
+ 28 28|
+ 29 29| 7. Test a name that has inserted text sequences.
+ 30 30|
+ 31 31| @$@<@^D(065)@@@>==@{@}
+ 32 32|
+ 33 33|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 2 Errors.
diff --git a/web/funnelAC/results/pr05.lis b/web/funnelAC/results/pr05.lis
new file mode 100644
index 0000000000..8253f2091c
--- /dev/null
+++ b/web/funnelAC/results/pr05.lis
@@ -0,0 +1,1105 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 30 35 3A 20 54 65 73 74 20 74 68 65 20 70 | PR05: Test the p |
+| 61 72 73 69 6E 67 20 6F 66 20 66 6F 72 6D 61 6C | arsing of formal |
+| 20 70 61 72 61 6D 65 74 65 72 20 6C 69 73 74 73 | parameter lists |
+| 2E 0A 0A 46 69 72 73 74 20 74 72 69 70 20 74 68 | ...First trip th |
+| 65 20 70 61 72 73 65 72 20 73 6F 20 77 65 20 64 | e parser so we d |
+| 6F 6E 27 74 20 67 65 74 20 70 61 73 74 20 74 68 | on't get past th |
+| 65 20 70 61 72 73 65 72 2E 0A 40 3E 0A 0A 31 2E | e parser..@>..1. |
+| 20 54 65 73 74 20 6D 61 63 72 6F 20 64 65 66 69 | Test macro defi |
+| 6E 69 74 69 6F 6E 20 77 69 74 68 20 6E 6F 20 66 | nition with no f |
+| 6F 72 6D 61 6C 20 70 61 72 61 6D 65 74 65 72 73 | ormal parameters |
+| 2E 0A 40 24 40 3C 53 6C 6F 74 68 40 3E 40 7B 53 | ..@$@<Sloth@>@{S |
+| 6C 6F 74 68 74 65 78 74 40 7D 0A 0A 32 2E 20 54 | lothtext@}..2. T |
+| 65 73 74 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 | est macro defini |
+| 74 69 6F 6E 20 77 69 74 68 20 6F 6E 65 20 66 6F | tion with one fo |
+| 72 6D 61 6C 20 70 61 72 61 6D 65 74 65 72 2E 0A | rmal parameter.. |
+| 40 24 40 3C 53 6C 6F 74 68 20 77 69 74 68 20 6F | @$@<Sloth with o |
+| 6E 65 40 3E 40 28 40 31 40 29 40 7B 53 6C 6F 74 | ne@>@(@1@)@{Slot |
+| 68 74 65 78 74 40 7D 0A 0A 33 2E 20 54 65 73 74 | htext@}..3. Test |
+| 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 6F | macro definitio |
+| 6E 20 77 69 74 68 20 6D 61 6E 79 20 66 6F 72 6D | n with many form |
+| 61 6C 20 70 61 72 61 6D 65 74 65 72 73 2E 0A 40 | al parameters..@ |
+| 24 40 3C 53 6C 6F 74 68 20 77 69 74 68 20 32 40 | $@<Sloth with 2@ |
+| 3E 40 28 40 32 40 29 40 7B 53 6C 6F 74 68 74 65 | >@(@2@)@{Slothte |
+| 78 74 40 7D 0A 40 24 40 3C 53 6C 6F 74 68 20 77 | xt@}.@$@<Sloth w |
+| 69 74 68 20 33 40 3E 40 28 40 33 40 29 40 7B 53 | ith 3@>@(@3@)@{S |
+| 6C 6F 74 68 74 65 78 74 40 7D 0A 40 24 40 3C 53 | lothtext@}.@$@<S |
+| 6C 6F 74 68 20 77 69 74 68 20 34 40 3E 40 28 40 | loth with 4@>@(@ |
+| 34 40 29 40 7B 53 6C 6F 74 68 74 65 78 74 40 7D | 4@)@{Slothtext@} |
+| 0A 40 24 40 3C 53 6C 6F 74 68 20 77 69 74 68 20 | .@$@<Sloth with |
+| 35 40 3E 40 28 40 35 40 29 40 7B 53 6C 6F 74 68 | 5@>@(@5@)@{Sloth |
+| 74 65 78 74 40 7D 0A 40 24 40 3C 53 6C 6F 74 68 | text@}.@$@<Sloth |
+| 20 77 69 74 68 20 36 40 3E 40 28 40 36 40 29 40 | with 6@>@(@6@)@ |
+| 7B 53 6C 6F 74 68 74 65 78 74 40 7D 0A 40 24 40 | {Slothtext@}.@$@ |
+| 3C 53 6C 6F 74 68 20 77 69 74 68 20 37 40 3E 40 | <Sloth with 7@>@ |
+| 28 40 37 40 29 40 7B 53 6C 6F 74 68 74 65 78 74 | (@7@)@{Slothtext |
+| 40 7D 0A 40 24 40 3C 53 6C 6F 74 68 20 77 69 74 | @}.@$@<Sloth wit |
+| 68 20 38 40 3E 40 28 40 38 40 29 40 7B 53 6C 6F | h 8@>@(@8@)@{Slo |
+| 74 68 74 65 78 74 40 7D 0A 40 24 40 3C 53 6C 6F | thtext@}.@$@<Slo |
+| 74 68 20 77 69 74 68 20 39 40 3E 40 28 40 39 40 | th with 9@>@(@9@ |
+| 29 40 7B 53 6C 6F 74 68 74 65 78 74 40 7D 0A 0A | )@{Slothtext@}.. |
+| 34 2E 20 54 65 73 74 20 77 69 74 68 20 73 79 6E | 4. Test with syn |
+| 74 61 78 20 65 72 72 6F 72 73 20 69 6E 20 74 68 | tax errors in th |
+| 65 20 70 61 72 61 6D 65 74 65 72 20 6C 69 73 74 | e parameter list |
+| 2E 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 61 40 3E | ...@$@<Sloth a@> |
+| 40 28 40 2B 40 39 40 29 40 7B 53 6C 6F 74 68 74 | @(@+@9@)@{Slotht |
+| 65 78 74 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | ext@}.@A@<Error |
+| 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E | recovery point@> |
+| 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 62 40 3E 40 | ..@$@<Sloth b@>@ |
+| 39 40 29 40 7B 53 6C 6F 74 68 74 65 78 74 40 7D | 9@)@{Slothtext@} |
+| 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 | .@A@<Error recov |
+| 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 | ery point@>..@$@ |
+| 3C 53 6C 6F 74 68 20 63 40 3E 40 28 39 40 29 40 | <Sloth c@>@(9@)@ |
+| 7B 53 6C 6F 74 68 74 65 78 74 40 7D 0A 40 41 40 | {Slothtext@}.@A@ |
+| 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 | <Error recovery |
+| 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 53 6C 6F | point@>..@$@<Slo |
+| 74 68 20 64 40 3E 40 39 40 29 40 7B 53 6C 6F 74 | th d@>@9@)@{Slot |
+| 68 74 65 78 74 40 7D 0A 40 41 40 3C 45 72 72 6F | htext@}.@A@<Erro |
+| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point |
+| 40 3E 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 65 40 | @>..@$@<Sloth e@ |
+| 3E 40 28 40 39 40 29 40 29 40 7B 53 6C 6F 74 68 | >@(@9@)@)@{Sloth |
+| 74 65 78 74 40 7D 0A 40 41 40 3C 45 72 72 6F 72 | text@}.@A@<Error |
+| 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 | recovery point@ |
+| 3E 0A 0A 0A 0A | >.... |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR05: Test the parsing of formal parameter lists.<010>
+00002 00002| <010>
+00003 00003| First trip the parser so we don't get past the parser.<010>
+00004 00004| @><010>
+00005 00005| <010>
+00006 00006| 1. Test macro definition with no formal parameters.<010>
+00007 00007| @$@<Sloth@>@{Slothtext@}<010>
+00008 00008| <010>
+00009 00009| 2. Test macro definition with one formal parameter.<010>
+00010 00010| @$@<Sloth with one@>@(@1@)@{Slothtext@}<010>
+00011 00011| <010>
+00012 00012| 3. Test macro definition with many formal parameters.<010>
+00013 00013| @$@<Sloth with 2@>@(@2@)@{Slothtext@}<010>
+00014 00014| @$@<Sloth with 3@>@(@3@)@{Slothtext@}<010>
+00015 00015| @$@<Sloth with 4@>@(@4@)@{Slothtext@}<010>
+00016 00016| @$@<Sloth with 5@>@(@5@)@{Slothtext@}<010>
+00017 00017| @$@<Sloth with 6@>@(@6@)@{Slothtext@}<010>
+00018 00018| @$@<Sloth with 7@>@(@7@)@{Slothtext@}<010>
+00019 00019| @$@<Sloth with 8@>@(@8@)@{Slothtext@}<010>
+00020 00020| @$@<Sloth with 9@>@(@9@)@{Slothtext@}<010>
+00021 00021| <010>
+00022 00022| 4. Test with syntax errors in the parameter list.<010>
+00023 00023| <010>
+00024 00024| @$@<Sloth a@>@(@+@9@)@{Slothtext@}<010>
+00025 00025| @A@<Error recovery point@><010>
+00026 00026| <010>
+00027 00027| @$@<Sloth b@>@9@)@{Slothtext@}<010>
+00028 00028| @A@<Error recovery point@><010>
+00029 00029| <010>
+00030 00030| @$@<Sloth c@>@(9@)@{Slothtext@}<010>
+00031 00031| @A@<Error recovery point@><010>
+00032 00032| <010>
+00033 00033| @$@<Sloth d@>@9@)@{Slothtext@}<010>
+00034 00034| @A@<Error recovery point@><010>
+00035 00035| <010>
+00036 00036| @$@<Sloth e@>@(@9@)@)@{Slothtext@}<010>
+00037 00037| @A@<Error recovery point@><010>
+00038 00038| <010>
+00039 00039| <010>
+00040 00040| <010>
+00041 00041| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 191 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR05: Test the parsing of formal parameter lists.<010>
+<010>
+First trip the parser so we don't get past the parser.<010>
+"
+0004[01]: @> Close name.
+0004[03]: Text. Text scrap[Grey]="<010>
+<010>
+1. Test macro definition with no formal parameters.<010>
+"
+0007[01]: @$ Macro defn.
+0007[03]: @< Open name.
+0007[05]: Text. Text scrap[Grey]="Sloth"
+0007[10]: @> Close name.
+0007[12]: @{ Open defn.
+0007[14]: Text. Text scrap[Grey]="Slothtext"
+0007[23]: @} Close defn.
+0007[25]: Text. Text scrap[Grey]="<010>
+<010>
+2. Test macro definition with one formal parameter.<010>
+"
+0010[01]: @$ Macro defn.
+0010[03]: @< Open name.
+0010[05]: Text. Text scrap[Grey]="Sloth with one"
+0010[19]: @> Close name.
+0010[21]: @( Open param.
+0010[23]: @n Parameter. Parameterno=1.
+0010[25]: @} Close param.
+0010[27]: @{ Open defn.
+0010[29]: Text. Text scrap[Grey]="Slothtext"
+0010[38]: @} Close defn.
+0010[40]: Text. Text scrap[Grey]="<010>
+<010>
+3. Test macro definition with many formal parameters.<010>
+"
+0013[01]: @$ Macro defn.
+0013[03]: @< Open name.
+0013[05]: Text. Text scrap[Grey]="Sloth with 2"
+0013[17]: @> Close name.
+0013[19]: @( Open param.
+0013[21]: @n Parameter. Parameterno=2.
+0013[23]: @} Close param.
+0013[25]: @{ Open defn.
+0013[27]: Text. Text scrap[Grey]="Slothtext"
+0013[36]: @} Close defn.
+0013[38]: Text. Text scrap[White]="<010>
+"
+0014[01]: @$ Macro defn.
+0014[03]: @< Open name.
+0014[05]: Text. Text scrap[Grey]="Sloth with 3"
+0014[17]: @> Close name.
+0014[19]: @( Open param.
+0014[21]: @n Parameter. Parameterno=3.
+0014[23]: @} Close param.
+0014[25]: @{ Open defn.
+0014[27]: Text. Text scrap[Grey]="Slothtext"
+0014[36]: @} Close defn.
+0014[38]: Text. Text scrap[White]="<010>
+"
+0015[01]: @$ Macro defn.
+0015[03]: @< Open name.
+0015[05]: Text. Text scrap[Grey]="Sloth with 4"
+0015[17]: @> Close name.
+0015[19]: @( Open param.
+0015[21]: @n Parameter. Parameterno=4.
+0015[23]: @} Close param.
+0015[25]: @{ Open defn.
+0015[27]: Text. Text scrap[Grey]="Slothtext"
+0015[36]: @} Close defn.
+0015[38]: Text. Text scrap[White]="<010>
+"
+0016[01]: @$ Macro defn.
+0016[03]: @< Open name.
+0016[05]: Text. Text scrap[Grey]="Sloth with 5"
+0016[17]: @> Close name.
+0016[19]: @( Open param.
+0016[21]: @n Parameter. Parameterno=5.
+0016[23]: @} Close param.
+0016[25]: @{ Open defn.
+0016[27]: Text. Text scrap[Grey]="Slothtext"
+0016[36]: @} Close defn.
+0016[38]: Text. Text scrap[White]="<010>
+"
+0017[01]: @$ Macro defn.
+0017[03]: @< Open name.
+0017[05]: Text. Text scrap[Grey]="Sloth with 6"
+0017[17]: @> Close name.
+0017[19]: @( Open param.
+0017[21]: @n Parameter. Parameterno=6.
+0017[23]: @} Close param.
+0017[25]: @{ Open defn.
+0017[27]: Text. Text scrap[Grey]="Slothtext"
+0017[36]: @} Close defn.
+0017[38]: Text. Text scrap[White]="<010>
+"
+0018[01]: @$ Macro defn.
+0018[03]: @< Open name.
+0018[05]: Text. Text scrap[Grey]="Sloth with 7"
+0018[17]: @> Close name.
+0018[19]: @( Open param.
+0018[21]: @n Parameter. Parameterno=7.
+0018[23]: @} Close param.
+0018[25]: @{ Open defn.
+0018[27]: Text. Text scrap[Grey]="Slothtext"
+0018[36]: @} Close defn.
+0018[38]: Text. Text scrap[White]="<010>
+"
+0019[01]: @$ Macro defn.
+0019[03]: @< Open name.
+0019[05]: Text. Text scrap[Grey]="Sloth with 8"
+0019[17]: @> Close name.
+0019[19]: @( Open param.
+0019[21]: @n Parameter. Parameterno=8.
+0019[23]: @} Close param.
+0019[25]: @{ Open defn.
+0019[27]: Text. Text scrap[Grey]="Slothtext"
+0019[36]: @} Close defn.
+0019[38]: Text. Text scrap[White]="<010>
+"
+0020[01]: @$ Macro defn.
+0020[03]: @< Open name.
+0020[05]: Text. Text scrap[Grey]="Sloth with 9"
+0020[17]: @> Close name.
+0020[19]: @( Open param.
+0020[21]: @n Parameter. Parameterno=9.
+0020[23]: @} Close param.
+0020[25]: @{ Open defn.
+0020[27]: Text. Text scrap[Grey]="Slothtext"
+0020[36]: @} Close defn.
+0020[38]: Text. Text scrap[Grey]="<010>
+<010>
+4. Test with syntax errors in the parameter list.<010>
+<010>
+"
+0024[01]: @$ Macro defn.
+0024[03]: @< Open name.
+0024[05]: Text. Text scrap[Grey]="Sloth a"
+0024[12]: @> Close name.
+0024[14]: @( Open param.
+0024[16]: Text. Text scrap[White]="<010>
+"
+0024[18]: @n Parameter. Parameterno=9.
+0024[20]: @} Close param.
+0024[22]: @{ Open defn.
+0024[24]: Text. Text scrap[Grey]="Slothtext"
+0024[33]: @} Close defn.
+0024[35]: Text. Text scrap[White]="<010>
+"
+0025[01]: @A New section (Level 1).
+0025[03]: @< Open name.
+0025[05]: Text. Text scrap[Grey]="Error recovery point"
+0025[25]: @> Close name.
+0025[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0027[01]: @$ Macro defn.
+0027[03]: @< Open name.
+0027[05]: Text. Text scrap[Grey]="Sloth b"
+0027[12]: @> Close name.
+0027[14]: @n Parameter. Parameterno=9.
+0027[16]: @} Close param.
+0027[18]: @{ Open defn.
+0027[20]: Text. Text scrap[Grey]="Slothtext"
+0027[29]: @} Close defn.
+0027[31]: Text. Text scrap[White]="<010>
+"
+0028[01]: @A New section (Level 1).
+0028[03]: @< Open name.
+0028[05]: Text. Text scrap[Grey]="Error recovery point"
+0028[25]: @> Close name.
+0028[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0030[01]: @$ Macro defn.
+0030[03]: @< Open name.
+0030[05]: Text. Text scrap[Grey]="Sloth c"
+0030[12]: @> Close name.
+0030[14]: @( Open param.
+0030[16]: Text. Text scrap[Grey]="9"
+0030[17]: @} Close param.
+0030[19]: @{ Open defn.
+0030[21]: Text. Text scrap[Grey]="Slothtext"
+0030[30]: @} Close defn.
+0030[32]: Text. Text scrap[White]="<010>
+"
+0031[01]: @A New section (Level 1).
+0031[03]: @< Open name.
+0031[05]: Text. Text scrap[Grey]="Error recovery point"
+0031[25]: @> Close name.
+0031[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0033[01]: @$ Macro defn.
+0033[03]: @< Open name.
+0033[05]: Text. Text scrap[Grey]="Sloth d"
+0033[12]: @> Close name.
+0033[14]: @n Parameter. Parameterno=9.
+0033[16]: @} Close param.
+0033[18]: @{ Open defn.
+0033[20]: Text. Text scrap[Grey]="Slothtext"
+0033[29]: @} Close defn.
+0033[31]: Text. Text scrap[White]="<010>
+"
+0034[01]: @A New section (Level 1).
+0034[03]: @< Open name.
+0034[05]: Text. Text scrap[Grey]="Error recovery point"
+0034[25]: @> Close name.
+0034[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0036[01]: @$ Macro defn.
+0036[03]: @< Open name.
+0036[05]: Text. Text scrap[Grey]="Sloth e"
+0036[12]: @> Close name.
+0036[14]: @( Open param.
+0036[16]: @n Parameter. Parameterno=9.
+0036[18]: @} Close param.
+0036[20]: @} Close param.
+0036[22]: @{ Open defn.
+0036[24]: Text. Text scrap[Grey]="Slothtext"
+0036[33]: @} Close defn.
+0036[35]: Text. Text scrap[White]="<010>
+"
+0037[01]: @A New section (Level 1).
+0037[03]: @< Open name.
+0037[05]: Text. Text scrap[Grey]="Error recovery point"
+0037[25]: @> Close name.
+0037[27]: Text. Text scrap[White]="<010>
+<010>
+<010>
+<010>
+"
+0041[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Slothtext"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth a"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth b"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth c"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth d"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth e"
+Defined? : Yes.
+Parameters : 9
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with 2"
+Defined? : Yes.
+Parameters : 2
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Slothtext"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with 3"
+Defined? : Yes.
+Parameters : 3
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=4, Pos(L,C)=(14,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Slothtext"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with 4"
+Defined? : Yes.
+Parameters : 4
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=5, Pos(L,C)=(15,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Slothtext"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with 5"
+Defined? : Yes.
+Parameters : 5
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=6, Pos(L,C)=(16,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Slothtext"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with 6"
+Defined? : Yes.
+Parameters : 6
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=7, Pos(L,C)=(17,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Slothtext"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with 7"
+Defined? : Yes.
+Parameters : 7
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=8, Pos(L,C)=(18,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Slothtext"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with 8"
+Defined? : Yes.
+Parameters : 8
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=9, Pos(L,C)=(19,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Slothtext"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with 9"
+Defined? : Yes.
+Parameters : 9
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=10, Pos(L,C)=(20,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Slothtext"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with one"
+Defined? : Yes.
+Parameters : 1
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Slothtext"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR05: Test the parsing of formal parameter lists.<010>
+<010>
+First trip the parser so we don't get past the parser.<010>
+"
+--- End of Text Scrap List ---
+
+
+TEXT COMPONENT: Pos(L,C)=(4,3).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+1. Test macro definition with no formal parameters.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+Part 1 of macro @<Sloth@>.
+
+TEXT COMPONENT: Pos(L,C)=(7,25).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+2. Test macro definition with one formal parameter.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
+Part 1 of macro @<Sloth with one@>.
+
+TEXT COMPONENT: Pos(L,C)=(10,40).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+3. Test macro definition with many formal parameters.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
+Part 1 of macro @<Sloth with 2@>.
+
+TEXT COMPONENT: Pos(L,C)=(13,38).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(14,1).
+Part 1 of macro @<Sloth with 3@>.
+
+TEXT COMPONENT: Pos(L,C)=(14,38).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(15,1).
+Part 1 of macro @<Sloth with 4@>.
+
+TEXT COMPONENT: Pos(L,C)=(15,38).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(16,1).
+Part 1 of macro @<Sloth with 5@>.
+
+TEXT COMPONENT: Pos(L,C)=(16,38).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(17,1).
+Part 1 of macro @<Sloth with 6@>.
+
+TEXT COMPONENT: Pos(L,C)=(17,38).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(18,1).
+Part 1 of macro @<Sloth with 7@>.
+
+TEXT COMPONENT: Pos(L,C)=(18,38).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(19,1).
+Part 1 of macro @<Sloth with 8@>.
+
+TEXT COMPONENT: Pos(L,C)=(19,38).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(20,1).
+Part 1 of macro @<Sloth with 9@>.
+
+TEXT COMPONENT: Pos(L,C)=(20,38).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+4. Test with syntax errors in the parameter list.<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(25,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(28,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "3", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(31,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(34,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "5", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(37,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| PR05: Test the parsing of formal parameter lists.
+ 2 2|
+ 3 3| First trip the parser so we don't get past the parser.
+ 4 4| @>
+ Error|.^The parser was at the top level and was expecting
+ |.^one of: {Directive, Text, Macro definition, EOF}.
+ 5 5|
+ 6 6| 1. Test macro definition with no formal parameters.
+ 7 7| @$@<Sloth@>@{Slothtext@}
+ 8 8|
+ 9 9| 2. Test macro definition with one formal parameter.
+ 10 10| @$@<Sloth with one@>@(@1@)@{Slothtext@}
+ 11 11|
+ 12 12| 3. Test macro definition with many formal parameters.
+ 13 13| @$@<Sloth with 2@>@(@2@)@{Slothtext@}
+ 14 14| @$@<Sloth with 3@>@(@3@)@{Slothtext@}
+ 15 15| @$@<Sloth with 4@>@(@4@)@{Slothtext@}
+ 16 16| @$@<Sloth with 5@>@(@5@)@{Slothtext@}
+ 17 17| @$@<Sloth with 6@>@(@6@)@{Slothtext@}
+ 18 18| @$@<Sloth with 7@>@(@7@)@{Slothtext@}
+ 19 19| @$@<Sloth with 8@>@(@8@)@{Slothtext@}
+ 20 20| @$@<Sloth with 9@>@(@9@)@{Slothtext@}
+ 21 21|
+ 22 22| 4. Test with syntax errors in the parameter list.
+ 23 23|
+ 24 24| @$@<Sloth a@>@(@+@9@)@{Slothtext@}
+ Error|................^Expecting one of [@1..@9].
+ |................^Skipping after error to the next major construct...
+ 25 25| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 26 26|
+ 27 27| @$@<Sloth b@>@9@)@{Slothtext@}
+ Error|..............^Expecting '@{'.
+ |..............^Skipping after error to the next major construct...
+ 28 28| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 29 29|
+ 30 30| @$@<Sloth c@>@(9@)@{Slothtext@}
+ Error|................^Expecting one of [@1..@9].
+ |................^Skipping after error to the next major construct...
+ 31 31| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 32 32|
+ 33 33| @$@<Sloth d@>@9@)@{Slothtext@}
+ Error|..............^Expecting '@{'.
+ |..............^Skipping after error to the next major construct...
+ 34 34| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 35 35|
+ 36 36| @$@<Sloth e@>@(@9@)@)@{Slothtext@}
+ Error|....................^Expecting '@{'.
+ |....................^Skipping after error to the next major construct...
+ 37 37| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 38 38|
+ 39 39|
+ 40 40|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 6 Errors.
diff --git a/web/funnelAC/results/pr06.lis b/web/funnelAC/results/pr06.lis
new file mode 100644
index 0000000000..9a01fd7d7f
--- /dev/null
+++ b/web/funnelAC/results/pr06.lis
@@ -0,0 +1,791 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 30 36 3A 20 54 65 73 74 20 74 68 65 20 70 | PR06: Test the p |
+| 61 72 73 69 6E 67 20 6F 6E 20 69 6E 76 6F 63 61 | arsing on invoca |
+| 74 69 6F 6E 20 6E 75 6D 62 65 72 20 63 6F 6E 73 | tion number cons |
+| 74 72 61 69 6E 74 73 2E 0A 0A 54 72 69 70 20 74 | traints...Trip t |
+| 68 65 20 70 61 72 73 65 72 20 73 6F 20 77 65 20 | he parser so we |
+| 64 6F 6E 27 74 20 67 65 74 20 70 61 73 74 20 69 | don't get past i |
+| 74 2E 0A 40 3E 0A 0A 31 2E 20 54 65 73 74 20 77 | t..@>..1. Test w |
+| 69 74 68 20 6E 6F 20 7A 65 72 6F 20 61 6E 64 20 | ith no zero and |
+| 6E 6F 20 6D 61 6E 79 2E 0A 40 24 40 3C 53 6C 6F | no many..@$@<Slo |
+| 74 68 40 3E 40 7B 4E 6F 20 7A 65 72 6F 20 61 6E | th@>@{No zero an |
+| 64 20 6E 6F 20 6D 61 6E 79 20 69 6E 20 74 68 69 | d no many in thi |
+| 73 20 6D 61 63 72 6F 40 7D 0A 0A 32 2E 20 54 65 | s macro@}..2. Te |
+| 73 74 20 77 69 74 68 20 61 20 7A 65 72 6F 2E 0A | st with a zero.. |
+| 40 24 40 3C 53 6C 6F 74 68 20 7A 65 72 6F 40 3E | @$@<Sloth zero@> |
+| 40 5A 40 7B 43 61 6E 20 62 65 20 63 61 6C 6C 65 | @Z@{Can be calle |
+| 64 20 66 72 6F 6D 20 30 20 74 6F 20 31 20 74 69 | d from 0 to 1 ti |
+| 6D 65 73 2E 40 7D 0A 0A 33 2E 20 54 65 73 74 20 | mes.@}..3. Test |
+| 77 69 74 68 20 61 20 6D 61 6E 79 2E 0A 40 24 40 | with a many..@$@ |
+| 3C 53 6C 6F 74 68 20 6D 61 6E 79 40 3E 40 4D 40 | <Sloth many@>@M@ |
+| 7B 43 61 6E 20 62 65 20 63 61 6C 6C 65 64 20 66 | {Can be called f |
+| 72 6F 6D 20 31 20 74 6F 20 69 6E 66 69 6E 69 74 | rom 1 to infinit |
+| 79 20 74 69 6D 65 73 2E 40 7D 0A 0A 34 2E 20 54 | y times.@}..4. T |
+| 65 73 74 20 77 69 74 68 20 61 20 7A 65 72 6F 20 | est with a zero |
+| 61 6E 64 20 61 20 6D 61 6E 79 2E 0A 40 24 40 3C | and a many..@$@< |
+| 53 6C 6F 74 68 20 7A 65 72 6F 6D 61 6E 79 40 3E | Sloth zeromany@> |
+| 40 5A 40 4D 40 7B 43 61 6E 20 62 65 20 63 61 6C | @Z@M@{Can be cal |
+| 6C 65 64 20 66 72 6F 6D 20 30 20 74 6F 20 69 6E | led from 0 to in |
+| 66 69 6E 69 74 79 20 74 69 6D 65 73 2E 40 7D 0A | finity times.@}. |
+| 0A 35 2E 20 54 65 73 74 20 77 69 74 68 20 61 20 | .5. Test with a |
+| 7A 65 72 6F 20 61 6E 64 20 61 20 6D 61 6E 79 20 | zero and a many |
+| 62 75 74 20 6F 75 74 20 6F 66 20 6F 72 64 65 72 | but out of order |
+| 20 28 73 68 6F 75 6C 64 20 67 69 76 65 20 65 72 | (should give er |
+| 72 6F 72 29 2E 0A 40 24 40 3C 53 6C 6F 74 68 20 | ror)..@$@<Sloth |
+| 6D 61 6E 79 7A 65 72 6F 40 3E 40 4D 40 5A 40 7B | manyzero@>@M@Z@{ |
+| 4F 6F 70 73 2E 40 7D 0A 40 41 40 3C 45 72 72 6F | Oops.@}.@A@<Erro |
+| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point |
+| 40 3E 0A 0A 36 2E 20 54 65 73 74 20 77 69 74 68 | @>..6. Test with |
+| 20 73 79 6E 74 61 63 74 69 63 20 65 72 72 6F 72 | syntactic error |
+| 73 2E 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 61 40 | s...@$@<Sloth a@ |
+| 3E 20 40 4D 20 40 5A 20 40 7B 4F 6F 70 73 2E 40 | > @M @Z @{Oops.@ |
+| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco |
+| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 | very point@>..@$ |
+| 40 3C 53 6C 6F 74 68 20 62 40 3E 40 5A 40 5A 40 | @<Sloth b@>@Z@Z@ |
+| 7B 4F 6F 70 73 2E 40 7D 0A 40 41 40 3C 45 72 72 | {Oops.@}.@A@<Err |
+| 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E | or recovery poin |
+| 74 40 3E 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 63 | t@>..@$@<Sloth c |
+| 40 5A 40 3E 40 7B 4F 6F 70 73 2E 40 7D 0A 40 41 | @Z@>@{Oops.@}.@A |
+| 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 | @<Error recovery |
+| 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 53 6C | point@>..@$@<Sl |
+| 6F 74 68 20 64 40 3E 5A 40 7B 4F 6F 70 73 2E 40 | oth d@>Z@{Oops.@ |
+| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco |
+| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 | very point@>..@$ |
+| 40 3C 53 6C 6F 74 68 20 64 40 3E 40 5A 4D 40 7B | @<Sloth d@>@ZM@{ |
+| 4F 6F 70 73 2E 40 7D 0A 40 41 40 3C 45 72 72 6F | Oops.@}.@A@<Erro |
+| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point |
+| 40 3E 0A 0A 0A | @>... |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR06: Test the parsing on invocation number constraints.<010>
+00002 00002| <010>
+00003 00003| Trip the parser so we don't get past it.<010>
+00004 00004| @><010>
+00005 00005| <010>
+00006 00006| 1. Test with no zero and no many.<010>
+00007 00007| @$@<Sloth@>@{No zero and no many in this macro@}<010>
+00008 00008| <010>
+00009 00009| 2. Test with a zero.<010>
+00010 00010| @$@<Sloth zero@>@Z@{Can be called from 0 to 1 times.@}<010>
+00011 00011| <010>
+00012 00012| 3. Test with a many.<010>
+00013 00013| @$@<Sloth many@>@M@{Can be called from 1 to infinity times.@}<010>
+00014 00014| <010>
+00015 00015| 4. Test with a zero and a many.<010>
+00016 00016| @$@<Sloth zeromany@>@Z@M@{Can be called from 0 to infinity times.@}<010>
+00017 00017| <010>
+00018 00018| 5. Test with a zero and a many but out of order (should give error).<010>
+00019 00019| @$@<Sloth manyzero@>@M@Z@{Oops.@}<010>
+00020 00020| @A@<Error recovery point@><010>
+00021 00021| <010>
+00022 00022| 6. Test with syntactic errors.<010>
+00023 00023| <010>
+00024 00024| @$@<Sloth a@> @M @Z @{Oops.@}<010>
+00025 00025| @A@<Error recovery point@><010>
+00026 00026| <010>
+00027 00027| @$@<Sloth b@>@Z@Z@{Oops.@}<010>
+00028 00028| @A@<Error recovery point@><010>
+00029 00029| <010>
+00030 00030| @$@<Sloth c@Z@>@{Oops.@}<010>
+00031 00031| @A@<Error recovery point@><010>
+00032 00032| <010>
+00033 00033| @$@<Sloth d@>Z@{Oops.@}<010>
+00034 00034| @A@<Error recovery point@><010>
+00035 00035| <010>
+00036 00036| @$@<Sloth d@>@ZM@{Oops.@}<010>
+00037 00037| @A@<Error recovery point@><010>
+00038 00038| <010>
+00039 00039| <010>
+00040 00040| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 131 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR06: Test the parsing on invocation number constraints.<010>
+<010>
+Trip the parser so we don't get past it.<010>
+"
+0004[01]: @> Close name.
+0004[03]: Text. Text scrap[Grey]="<010>
+<010>
+1. Test with no zero and no many.<010>
+"
+0007[01]: @$ Macro defn.
+0007[03]: @< Open name.
+0007[05]: Text. Text scrap[Grey]="Sloth"
+0007[10]: @> Close name.
+0007[12]: @{ Open defn.
+0007[14]: Text. Text scrap[Grey]="No zero and no many in this macro"
+0007[47]: @} Close defn.
+0007[49]: Text. Text scrap[Grey]="<010>
+<010>
+2. Test with a zero.<010>
+"
+0010[01]: @$ Macro defn.
+0010[03]: @< Open name.
+0010[05]: Text. Text scrap[Grey]="Sloth zero"
+0010[15]: @> Close name.
+0010[17]: @Z Zero calls.
+0010[19]: @{ Open defn.
+0010[21]: Text. Text scrap[Grey]="Can be called from 0 to 1 times."
+0010[53]: @} Close defn.
+0010[55]: Text. Text scrap[Grey]="<010>
+<010>
+3. Test with a many.<010>
+"
+0013[01]: @$ Macro defn.
+0013[03]: @< Open name.
+0013[05]: Text. Text scrap[Grey]="Sloth many"
+0013[15]: @> Close name.
+0013[17]: @M Many calls.
+0013[19]: @{ Open defn.
+0013[21]: Text. Text scrap[Grey]="Can be called from 1 to infinity times."
+0013[60]: @} Close defn.
+0013[62]: Text. Text scrap[Grey]="<010>
+<010>
+4. Test with a zero and a many.<010>
+"
+0016[01]: @$ Macro defn.
+0016[03]: @< Open name.
+0016[05]: Text. Text scrap[Grey]="Sloth zeromany"
+0016[19]: @> Close name.
+0016[21]: @Z Zero calls.
+0016[23]: @M Many calls.
+0016[25]: @{ Open defn.
+0016[27]: Text. Text scrap[Grey]="Can be called from 0 to infinity times."
+0016[66]: @} Close defn.
+0016[68]: Text. Text scrap[Grey]="<010>
+<010>
+5. Test with a zero and a many but out of order (should give error).<010>
+"
+0019[01]: @$ Macro defn.
+0019[03]: @< Open name.
+0019[05]: Text. Text scrap[Grey]="Sloth manyzero"
+0019[19]: @> Close name.
+0019[21]: @M Many calls.
+0019[23]: @Z Zero calls.
+0019[25]: @{ Open defn.
+0019[27]: Text. Text scrap[Grey]="Oops."
+0019[32]: @} Close defn.
+0019[34]: Text. Text scrap[White]="<010>
+"
+0020[01]: @A New section (Level 1).
+0020[03]: @< Open name.
+0020[05]: Text. Text scrap[Grey]="Error recovery point"
+0020[25]: @> Close name.
+0020[27]: Text. Text scrap[Grey]="<010>
+<010>
+6. Test with syntactic errors.<010>
+<010>
+"
+0024[01]: @$ Macro defn.
+0024[03]: @< Open name.
+0024[05]: Text. Text scrap[Grey]="Sloth a"
+0024[12]: @> Close name.
+0024[14]: Text. Text scrap[White]=" "
+0024[15]: @M Many calls.
+0024[17]: Text. Text scrap[White]=" "
+0024[18]: @Z Zero calls.
+0024[20]: Text. Text scrap[White]=" "
+0024[21]: @{ Open defn.
+0024[23]: Text. Text scrap[Grey]="Oops."
+0024[28]: @} Close defn.
+0024[30]: Text. Text scrap[White]="<010>
+"
+0025[01]: @A New section (Level 1).
+0025[03]: @< Open name.
+0025[05]: Text. Text scrap[Grey]="Error recovery point"
+0025[25]: @> Close name.
+0025[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0027[01]: @$ Macro defn.
+0027[03]: @< Open name.
+0027[05]: Text. Text scrap[Grey]="Sloth b"
+0027[12]: @> Close name.
+0027[14]: @Z Zero calls.
+0027[16]: @Z Zero calls.
+0027[18]: @{ Open defn.
+0027[20]: Text. Text scrap[Grey]="Oops."
+0027[25]: @} Close defn.
+0027[27]: Text. Text scrap[White]="<010>
+"
+0028[01]: @A New section (Level 1).
+0028[03]: @< Open name.
+0028[05]: Text. Text scrap[Grey]="Error recovery point"
+0028[25]: @> Close name.
+0028[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0030[01]: @$ Macro defn.
+0030[03]: @< Open name.
+0030[05]: Text. Text scrap[Grey]="Sloth c"
+0030[12]: @Z Zero calls.
+0030[14]: @> Close name.
+0030[16]: @{ Open defn.
+0030[18]: Text. Text scrap[Grey]="Oops."
+0030[23]: @} Close defn.
+0030[25]: Text. Text scrap[White]="<010>
+"
+0031[01]: @A New section (Level 1).
+0031[03]: @< Open name.
+0031[05]: Text. Text scrap[Grey]="Error recovery point"
+0031[25]: @> Close name.
+0031[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0033[01]: @$ Macro defn.
+0033[03]: @< Open name.
+0033[05]: Text. Text scrap[Grey]="Sloth d"
+0033[12]: @> Close name.
+0033[14]: Text. Text scrap[Grey]="Z"
+0033[15]: @{ Open defn.
+0033[17]: Text. Text scrap[Grey]="Oops."
+0033[22]: @} Close defn.
+0033[24]: Text. Text scrap[White]="<010>
+"
+0034[01]: @A New section (Level 1).
+0034[03]: @< Open name.
+0034[05]: Text. Text scrap[Grey]="Error recovery point"
+0034[25]: @> Close name.
+0034[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0036[01]: @$ Macro defn.
+0036[03]: @< Open name.
+0036[05]: Text. Text scrap[Grey]="Sloth d"
+0036[12]: @> Close name.
+0036[14]: @Z Zero calls.
+0036[16]: Text. Text scrap[Grey]="M"
+0036[17]: @{ Open defn.
+0036[19]: Text. Text scrap[Grey]="Oops."
+0036[24]: @} Close defn.
+0036[26]: Text. Text scrap[White]="<010>
+"
+0037[01]: @A New section (Level 1).
+0037[03]: @< Open name.
+0037[05]: Text. Text scrap[Grey]="Error recovery point"
+0037[25]: @> Close name.
+0037[27]: Text. Text scrap[White]="<010>
+<010>
+<010>
+"
+0040[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="No zero and no many in this macro"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth a"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth b"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth d"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth many"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Can be called from 1 to infinity times."
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth manyzero"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth zero"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Can be called from 0 to 1 times."
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth zeromany"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=4, Pos(L,C)=(16,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Can be called from 0 to infinity times."
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR06: Test the parsing on invocation number constraints.<010>
+<010>
+Trip the parser so we don't get past it.<010>
+"
+--- End of Text Scrap List ---
+
+
+TEXT COMPONENT: Pos(L,C)=(4,3).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+1. Test with no zero and no many.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+Part 1 of macro @<Sloth@>.
+
+TEXT COMPONENT: Pos(L,C)=(7,49).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+2. Test with a zero.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
+Part 1 of macro @<Sloth zero@>.
+
+TEXT COMPONENT: Pos(L,C)=(10,55).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+3. Test with a many.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
+Part 1 of macro @<Sloth many@>.
+
+TEXT COMPONENT: Pos(L,C)=(13,62).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+4. Test with a zero and a many.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(16,1).
+Part 1 of macro @<Sloth zeromany@>.
+
+TEXT COMPONENT: Pos(L,C)=(16,68).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+5. Test with a zero and a many but out of order (should give error).<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(20,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+6. Test with syntactic errors.<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(25,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "3", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(28,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(31,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "5", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(34,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "6", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(37,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| PR06: Test the parsing on invocation number constraints.
+ 2 2|
+ 3 3| Trip the parser so we don't get past it.
+ 4 4| @>
+ Error|.^The parser was at the top level and was expecting
+ |.^one of: {Directive, Text, Macro definition, EOF}.
+ 5 5|
+ 6 6| 1. Test with no zero and no many.
+ 7 7| @$@<Sloth@>@{No zero and no many in this macro@}
+ 8 8|
+ 9 9| 2. Test with a zero.
+ 10 10| @$@<Sloth zero@>@Z@{Can be called from 0 to 1 times.@}
+ 11 11|
+ 12 12| 3. Test with a many.
+ 13 13| @$@<Sloth many@>@M@{Can be called from 1 to infinity times.@}
+ 14 14|
+ 15 15| 4. Test with a zero and a many.
+ 16 16| @$@<Sloth zeromany@>@Z@M@{Can be called from 0 to infinity times.@}
+ 17 17|
+ 18 18| 5. Test with a zero and a many but out of order (should give error).
+ 19 19| @$@<Sloth manyzero@>@M@Z@{Oops.@}
+ Error|.......................^Expecting '@{'.
+ |.......................^Skipping after error to the next major construct...
+ 20 20| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 21 21|
+ 22 22| 6. Test with syntactic errors.
+ 23 23|
+ 24 24| @$@<Sloth a@> @M @Z @{Oops.@}
+ Error|..............^Expecting "==@{" or "+=@{" or just "@{".
+ |..............^(or @Z or @M if they have not already appeared).
+ |..............^Note: FunnelWeb is intolerant of spaces at this point.
+ |...............^Skipping after error to the next major construct...
+ 25 25| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 26 26|
+ 27 27| @$@<Sloth b@>@Z@Z@{Oops.@}
+ Error|................^Expecting '@{'.
+ |................^Skipping after error to the next major construct...
+ 28 28| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 29 29|
+ 30 30| @$@<Sloth c@Z@>@{Oops.@}
+ Error|............^Illegal character or symbol in name.
+ |............^Skipping after error to the next major construct...
+ 31 31| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 32 32|
+ 33 33| @$@<Sloth d@>Z@{Oops.@}
+ Error|..............^Expecting "==@{" or "+=@{" or just "@{".
+ |..............^(or @Z or @M if they have not already appeared).
+ |..............^Note: FunnelWeb is intolerant of spaces at this point.
+ |...............^Skipping after error to the next major construct...
+ 34 34| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 35 35|
+ 36 36| @$@<Sloth d@>@ZM@{Oops.@}
+ Error|................^Expecting "==@{" or "+=@{" or just "@{".
+ |................^(or @Z or @M if they have not already appeared).
+ |................^Note: FunnelWeb is intolerant of spaces at this point.
+ |.................^Skipping after error to the next major construct...
+ 37 37| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 38 38|
+ 39 39|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 7 Errors.
diff --git a/web/funnelAC/results/pr07.lis b/web/funnelAC/results/pr07.lis
new file mode 100644
index 0000000000..be11d727e6
--- /dev/null
+++ b/web/funnelAC/results/pr07.lis
@@ -0,0 +1,703 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 30 37 3A 20 54 65 73 74 20 74 68 65 20 70 | PR07: Test the p |
+| 61 72 73 69 6E 67 20 6F 66 20 3D 3D 20 61 6E 64 | arsing of == and |
+| 20 2B 3D 20 69 6E 20 6D 61 63 72 6F 20 64 65 66 | += in macro def |
+| 69 6E 69 74 69 6F 6E 73 2E 0A 0A 54 72 69 70 20 | initions...Trip |
+| 74 68 65 20 70 61 72 73 65 72 20 73 6F 20 77 65 | the parser so we |
+| 20 64 6F 6E 27 74 20 67 65 74 20 61 6E 79 20 66 | don't get any f |
+| 75 72 74 68 65 72 2E 0A 40 3E 0A 0A 31 2E 20 54 | urther..@>..1. T |
+| 65 73 74 20 77 69 74 68 20 6E 6F 20 65 71 75 61 | est with no equa |
+| 6C 73 2E 0A 40 24 40 3C 53 6C 6F 74 68 40 3E 40 | ls..@$@<Sloth@>@ |
+| 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 68 | {No equals in th |
+| 69 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 | is macro definit |
+| 69 6F 6E 2E 40 7D 0A 0A 32 2E 20 54 65 73 74 20 | ion.@}..2. Test |
+| 77 69 74 68 20 3D 3D 2E 0A 40 24 40 3C 53 6C 6F | with ==..@$@<Slo |
+| 74 68 20 77 69 74 68 20 65 71 75 61 6C 73 40 3E | th with equals@> |
+| 3D 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E | ==@{No equals in |
+| 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 66 69 | this macro defi |
+| 6E 69 74 69 6F 6E 2E 40 7D 0A 0A 33 2E 20 54 65 | nition.@}..3. Te |
+| 73 74 20 77 69 74 68 20 2B 3D 2E 0A 40 24 40 3C | st with +=..@$@< |
+| 53 6C 6F 74 68 20 77 69 74 68 20 70 6C 75 73 40 | Sloth with plus@ |
+| 3E 2B 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 | >+=@{No equals i |
+| 6E 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 66 | n this macro def |
+| 69 6E 69 74 69 6F 6E 2E 40 7D 0A 0A 34 2E 20 54 | inition.@}..4. T |
+| 65 73 74 20 77 69 74 68 20 73 79 6E 74 61 78 20 | est with syntax |
+| 65 72 72 6F 72 73 2E 0A 0A 40 24 40 3C 45 72 72 | errors...@$@<Err |
+| 6F 72 31 40 3E 2B 2B 40 7B 4E 6F 20 65 71 75 61 | or1@>++@{No equa |
+| 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 63 72 6F | ls in this macro |
+| 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A 40 | definition.@}.@ |
+| 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 | A@<Error recover |
+| 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 45 | y point@>..@$@<E |
+| 72 72 6F 72 32 40 3E 40 2B 3D 40 7B 4E 6F 20 65 | rror2@>@+=@{No e |
+| 71 75 61 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 | quals in this ma |
+| 63 72 6F 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 | cro definition.@ |
+| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco |
+| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 | very point@>..@$ |
+| 40 3C 45 72 72 6F 72 33 40 3E 2B 3D 3D 2B 40 7B | @<Error3@>+==+@{ |
+| 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 68 69 | No equals in thi |
+| 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 | s macro definiti |
+| 6F 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | on.@}.@A@<Error |
+| 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E | recovery point@> |
+| 0A 0A 40 24 40 3C 45 72 72 6F 72 34 40 3E 3D 2B | ..@$@<Error4@>=+ |
+| 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 | @{No equals in t |
+| 68 69 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 | his macro defini |
+| 74 69 6F 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F | tion.@}.@A@<Erro |
+| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point |
+| 40 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 34 40 3E | @>..@$@<Error4@> |
+| 40 3D 40 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 | @=@=@{No equals |
+| 69 6E 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 | in this macro de |
+| 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A 40 41 40 3C | finition.@}.@A@< |
+| 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p |
+| 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 45 72 72 6F | oint@>..@$@<Erro |
+| 72 34 40 3E 40 2B 40 3D 40 7B 4E 6F 20 65 71 75 | r4@>@+@=@{No equ |
+| 61 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 63 72 | als in this macr |
+| 6F 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A | o definition.@}. |
+| 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 | @A@<Error recove |
+| 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 0A 0A | ry point@>.... |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR07: Test the parsing of == and += in macro definitions.<010>
+00002 00002| <010>
+00003 00003| Trip the parser so we don't get any further.<010>
+00004 00004| @><010>
+00005 00005| <010>
+00006 00006| 1. Test with no equals.<010>
+00007 00007| @$@<Sloth@>@{No equals in this macro definition.@}<010>
+00008 00008| <010>
+00009 00009| 2. Test with ==.<010>
+00010 00010| @$@<Sloth with equals@>==@{No equals in this macro definition.@}<010>
+00011 00011| <010>
+00012 00012| 3. Test with +=.<010>
+00013 00013| @$@<Sloth with plus@>+=@{No equals in this macro definition.@}<010>
+00014 00014| <010>
+00015 00015| 4. Test with syntax errors.<010>
+00016 00016| <010>
+00017 00017| @$@<Error1@>++@{No equals in this macro definition.@}<010>
+00018 00018| @A@<Error recovery point@><010>
+00019 00019| <010>
+00020 00020| @$@<Error2@>@+=@{No equals in this macro definition.@}<010>
+00021 00021| @A@<Error recovery point@><010>
+00022 00022| <010>
+00023 00023| @$@<Error3@>+==+@{No equals in this macro definition.@}<010>
+00024 00024| @A@<Error recovery point@><010>
+00025 00025| <010>
+00026 00026| @$@<Error4@>=+@{No equals in this macro definition.@}<010>
+00027 00027| @A@<Error recovery point@><010>
+00028 00028| <010>
+00029 00029| @$@<Error4@>@=@=@{No equals in this macro definition.@}<010>
+00030 00030| @A@<Error recovery point@><010>
+00031 00031| <010>
+00032 00032| @$@<Error4@>@+@=@{No equals in this macro definition.@}<010>
+00033 00033| @A@<Error recovery point@><010>
+00034 00034| <010>
+00035 00035| <010>
+00036 00036| <010>
+00037 00037| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 114 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR07: Test the parsing of == and += in macro definitions.<010>
+<010>
+Trip the parser so we don't get any further.<010>
+"
+0004[01]: @> Close name.
+0004[03]: Text. Text scrap[Grey]="<010>
+<010>
+1. Test with no equals.<010>
+"
+0007[01]: @$ Macro defn.
+0007[03]: @< Open name.
+0007[05]: Text. Text scrap[Grey]="Sloth"
+0007[10]: @> Close name.
+0007[12]: @{ Open defn.
+0007[14]: Text. Text scrap[Grey]="No equals in this macro definition."
+0007[49]: @} Close defn.
+0007[51]: Text. Text scrap[Grey]="<010>
+<010>
+2. Test with ==.<010>
+"
+0010[01]: @$ Macro defn.
+0010[03]: @< Open name.
+0010[05]: Text. Text scrap[Grey]="Sloth with equals"
+0010[22]: @> Close name.
+0010[24]: Text. Text scrap[Grey]="=="
+0010[26]: @{ Open defn.
+0010[28]: Text. Text scrap[Grey]="No equals in this macro definition."
+0010[63]: @} Close defn.
+0010[65]: Text. Text scrap[Grey]="<010>
+<010>
+3. Test with +=.<010>
+"
+0013[01]: @$ Macro defn.
+0013[03]: @< Open name.
+0013[05]: Text. Text scrap[Grey]="Sloth with plus"
+0013[20]: @> Close name.
+0013[22]: Text. Text scrap[Grey]="+="
+0013[24]: @{ Open defn.
+0013[26]: Text. Text scrap[Grey]="No equals in this macro definition."
+0013[61]: @} Close defn.
+0013[63]: Text. Text scrap[Grey]="<010>
+<010>
+4. Test with syntax errors.<010>
+<010>
+"
+0017[01]: @$ Macro defn.
+0017[03]: @< Open name.
+0017[05]: Text. Text scrap[Grey]="Error1"
+0017[11]: @> Close name.
+0017[13]: Text. Text scrap[Grey]="++"
+0017[15]: @{ Open defn.
+0017[17]: Text. Text scrap[Grey]="No equals in this macro definition."
+0017[52]: @} Close defn.
+0017[54]: Text. Text scrap[White]="<010>
+"
+0018[01]: @A New section (Level 1).
+0018[03]: @< Open name.
+0018[05]: Text. Text scrap[Grey]="Error recovery point"
+0018[25]: @> Close name.
+0018[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0020[01]: @$ Macro defn.
+0020[03]: @< Open name.
+0020[05]: Text. Text scrap[Grey]="Error2"
+0020[11]: @> Close name.
+0020[13]: Text. Text scrap[White]="<010>
+"
+0020[15]: Text. Text scrap[Grey]="="
+0020[16]: @{ Open defn.
+0020[18]: Text. Text scrap[Grey]="No equals in this macro definition."
+0020[53]: @} Close defn.
+0020[55]: Text. Text scrap[White]="<010>
+"
+0021[01]: @A New section (Level 1).
+0021[03]: @< Open name.
+0021[05]: Text. Text scrap[Grey]="Error recovery point"
+0021[25]: @> Close name.
+0021[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0023[01]: @$ Macro defn.
+0023[03]: @< Open name.
+0023[05]: Text. Text scrap[Grey]="Error3"
+0023[11]: @> Close name.
+0023[13]: Text. Text scrap[Grey]="+==+"
+0023[17]: @{ Open defn.
+0023[19]: Text. Text scrap[Grey]="No equals in this macro definition."
+0023[54]: @} Close defn.
+0023[56]: Text. Text scrap[White]="<010>
+"
+0024[01]: @A New section (Level 1).
+0024[03]: @< Open name.
+0024[05]: Text. Text scrap[Grey]="Error recovery point"
+0024[25]: @> Close name.
+0024[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0026[01]: @$ Macro defn.
+0026[03]: @< Open name.
+0026[05]: Text. Text scrap[Grey]="Error4"
+0026[11]: @> Close name.
+0026[13]: Text. Text scrap[Grey]="=+"
+0026[15]: @{ Open defn.
+0026[17]: Text. Text scrap[Grey]="No equals in this macro definition."
+0026[52]: @} Close defn.
+0026[54]: Text. Text scrap[White]="<010>
+"
+0027[01]: @A New section (Level 1).
+0027[03]: @< Open name.
+0027[05]: Text. Text scrap[Grey]="Error recovery point"
+0027[25]: @> Close name.
+0027[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0029[01]: @$ Macro defn.
+0029[03]: @< Open name.
+0029[05]: Text. Text scrap[Grey]="Error4"
+0029[11]: @> Close name.
+0029[16]: Text. Text scrap[Grey]="="
+0029[17]: @{ Open defn.
+0029[19]: Text. Text scrap[Grey]="No equals in this macro definition."
+0029[54]: @} Close defn.
+0029[56]: Text. Text scrap[White]="<010>
+"
+0030[01]: @A New section (Level 1).
+0030[03]: @< Open name.
+0030[05]: Text. Text scrap[Grey]="Error recovery point"
+0030[25]: @> Close name.
+0030[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0032[01]: @$ Macro defn.
+0032[03]: @< Open name.
+0032[05]: Text. Text scrap[Grey]="Error4"
+0032[11]: @> Close name.
+0032[13]: Text. Text scrap[White]="<010>
+"
+0032[18]: Text. Text scrap[Grey]="{No equals in this macro definition."
+0032[54]: @} Close defn.
+0032[56]: Text. Text scrap[White]="<010>
+"
+0033[01]: @A New section (Level 1).
+0033[03]: @< Open name.
+0033[05]: Text. Text scrap[Grey]="Error recovery point"
+0033[25]: @> Close name.
+0033[27]: Text. Text scrap[White]="<010>
+<010>
+<010>
+<010>
+"
+0037[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error1"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error2"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error3"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error4"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="No equals in this macro definition."
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with equals"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="No equals in this macro definition."
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth with plus"
+Defined? : Yes.
+Parameters : 0
+Additive? : Yes.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="No equals in this macro definition."
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR07: Test the parsing of == and += in macro definitions.<010>
+<010>
+Trip the parser so we don't get any further.<010>
+"
+--- End of Text Scrap List ---
+
+
+TEXT COMPONENT: Pos(L,C)=(4,3).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+1. Test with no equals.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
+Part 1 of macro @<Sloth@>.
+
+TEXT COMPONENT: Pos(L,C)=(7,51).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+2. Test with ==.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
+Part 1 of macro @<Sloth with equals@>.
+
+TEXT COMPONENT: Pos(L,C)=(10,65).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+3. Test with +=.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
+Part 1 of macro @<Sloth with plus@>.
+
+TEXT COMPONENT: Pos(L,C)=(13,63).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+4. Test with syntax errors.<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(18,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(21,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "3", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(24,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(27,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "5", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(30,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "6", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(33,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| PR07: Test the parsing of == and += in macro definitions.
+ 2 2|
+ 3 3| Trip the parser so we don't get any further.
+ 4 4| @>
+ Error|.^The parser was at the top level and was expecting
+ |.^one of: {Directive, Text, Macro definition, EOF}.
+ 5 5|
+ 6 6| 1. Test with no equals.
+ 7 7| @$@<Sloth@>@{No equals in this macro definition.@}
+ 8 8|
+ 9 9| 2. Test with ==.
+ 10 10| @$@<Sloth with equals@>==@{No equals in this macro definition.@}
+ 11 11|
+ 12 12| 3. Test with +=.
+ 13 13| @$@<Sloth with plus@>+=@{No equals in this macro definition.@}
+ 14 14|
+ 15 15| 4. Test with syntax errors.
+ 16 16|
+ 17 17| @$@<Error1@>++@{No equals in this macro definition.@}
+ Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+ |.............^(or @Z or @M if they have not already appeared).
+ |.............^Note: FunnelWeb is intolerant of spaces at this point.
+ |...............^Skipping after error to the next major construct...
+ 18 18| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 19 19|
+ 20 20| @$@<Error2@>@+=@{No equals in this macro definition.@}
+ Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+ |.............^(or @Z or @M if they have not already appeared).
+ |.............^Note: FunnelWeb is intolerant of spaces at this point.
+ |................^Skipping after error to the next major construct...
+ 21 21| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 22 22|
+ 23 23| @$@<Error3@>+==+@{No equals in this macro definition.@}
+ Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+ |.............^(or @Z or @M if they have not already appeared).
+ |.............^Note: FunnelWeb is intolerant of spaces at this point.
+ |.................^Skipping after error to the next major construct...
+ 24 24| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 25 25|
+ 26 26| @$@<Error4@>=+@{No equals in this macro definition.@}
+ Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+ |.............^(or @Z or @M if they have not already appeared).
+ |.............^Note: FunnelWeb is intolerant of spaces at this point.
+ |...............^Skipping after error to the next major construct...
+ 27 27| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 28 28|
+ 29 29| @$@<Error4@>@=@=@{No equals in this macro definition.@}
+ Error|................^Expecting "==@{" or "+=@{" or just "@{".
+ |................^(or @Z or @M if they have not already appeared).
+ |................^Note: FunnelWeb is intolerant of spaces at this point.
+ |.................^Skipping after error to the next major construct...
+ 30 30| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 31 31|
+ 32 32| @$@<Error4@>@+@=@{No equals in this macro definition.@}
+ Error|.............^Expecting "==@{" or "+=@{" or just "@{".
+ |.............^(or @Z or @M if they have not already appeared).
+ |.............^Note: FunnelWeb is intolerant of spaces at this point.
+ |......................................................^Skipping after error to the next major construct...
+ 33 33| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 34 34|
+ 35 35|
+ 36 36|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 7 Errors.
diff --git a/web/funnelAC/results/pr08.lis b/web/funnelAC/results/pr08.lis
new file mode 100644
index 0000000000..daf44e8219
--- /dev/null
+++ b/web/funnelAC/results/pr08.lis
@@ -0,0 +1,1360 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 30 38 3A 20 54 65 73 74 20 73 65 6D 61 6E | PR08: Test seman |
+| 74 69 63 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 | tic checking of |
+| 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 6F 6E | macro definition |
+| 73 2E 0A 0A 54 72 69 70 20 70 61 72 73 65 72 20 | s...Trip parser |
+| 74 6F 20 62 65 20 73 75 72 65 20 74 68 61 74 20 | to be sure that |
+| 77 65 20 77 6F 6E 27 74 20 67 65 74 20 61 6E 79 | we won't get any |
+| 20 6F 75 74 70 75 74 20 66 69 6C 65 73 21 0A 40 | output files!.@ |
+| 3E 0A 0A 31 2E 20 46 69 6C 65 20 6D 61 63 72 6F | >..1. File macro |
+| 20 68 61 73 20 70 61 72 61 6D 65 74 65 72 73 2E | has parameters. |
+| 20 45 72 72 6F 72 2E 0A 40 4F 40 3C 53 6C 6F 74 | Error..@O@<Slot |
+| 68 20 31 40 3E 40 28 40 33 40 29 40 7B 57 61 6C | h 1@>@(@3@)@{Wal |
+| 72 75 73 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | rus@}.@A@<Error |
+| 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E | recovery point@> |
+| 0A 0A 32 2E 20 46 69 6C 65 20 6D 61 63 72 6F 20 | ..2. File macro |
+| 69 73 20 61 64 64 69 74 69 76 65 2E 20 45 72 72 | is additive. Err |
+| 6F 72 2E 0A 40 4F 40 3C 53 6C 6F 74 68 20 32 40 | or..@O@<Sloth 2@ |
+| 3E 2B 3D 40 7B 57 61 6C 72 75 73 40 7D 0A 40 41 | >+=@{Walrus@}.@A |
+| 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 | @<Error recovery |
+| 20 70 6F 69 6E 74 40 3E 0A 0A 33 2E 20 46 69 6C | point@>..3. Fil |
+| 65 20 6D 61 63 72 6F 20 68 61 73 20 74 6F 6F 20 | e macro has too |
+| 6C 6F 6E 67 20 61 20 6E 61 6D 65 2E 20 54 68 65 | long a name. The |
+| 20 74 65 73 74 20 6E 61 6D 65 20 68 61 73 20 31 | test name has 1 |
+| 32 30 30 20 63 68 61 72 61 63 74 65 72 73 2E 20 | 200 characters. |
+| 45 72 72 2E 0A 4E 6F 74 65 3A 20 54 68 69 73 20 | Err..Note: This |
+| 74 65 73 74 20 63 61 6E 27 74 20 74 65 73 74 20 | test can't test |
+| 74 68 65 20 65 72 72 6F 72 20 6D 65 73 73 61 67 | the error messag |
+| 65 20 69 66 20 74 68 65 20 6D 61 78 69 6D 75 6D | e if the maximum |
+| 20 6C 65 6E 67 74 68 20 6F 66 20 61 0A 6D 61 63 | length of a.mac |
+| 72 6F 20 6E 61 6D 65 20 69 73 20 6C 65 73 73 20 | ro name is less |
+| 74 68 61 6E 20 74 68 65 20 6D 61 78 69 6D 75 6D | than the maximum |
+| 20 6C 65 6E 67 74 68 20 6F 66 20 61 20 66 69 6C | length of a fil |
+| 65 20 6E 61 6D 65 20 61 73 20 74 68 65 20 6E 61 | e name as the na |
+| 6D 65 0A 65 72 72 6F 72 20 69 73 20 63 61 75 67 | me.error is caug |
+| 68 74 20 66 69 72 73 74 2E 0A 40 70 20 6D 61 78 | ht first..@p max |
+| 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F | imum_input_line_ |
+| 6C 65 6E 67 74 68 20 3D 20 69 6E 66 69 6E 69 74 | length = infinit |
+| 79 0A 40 4F 40 3C 31 32 33 34 35 36 37 38 39 30 | y.@O@<1234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 40 3E 40 7B 40 7D 0A 40 41 40 | 567890@>@{@}.@A@ |
+| 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 | <Error recovery |
+| 70 6F 69 6E 74 40 3E 0A 0A 34 2E 20 46 69 6C 65 | point@>..4. File |
+| 20 6D 61 63 72 6F 20 68 61 73 20 7A 65 72 6F 20 | macro has zero |
+| 6F 72 20 6D 61 6E 79 20 61 74 74 72 69 62 75 74 | or many attribut |
+| 65 73 2E 20 45 72 72 6F 72 2E 0A 40 4F 40 3C 53 | es. Error..@O@<S |
+| 6C 6F 74 68 20 33 40 3E 40 5A 40 7B 57 61 6C 72 | loth 3@>@Z@{Walr |
+| 75 73 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 | us@}.@A@<Error r |
+| 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A | ecovery point@>. |
+| 0A 40 4F 40 3C 53 6C 6F 74 68 20 34 40 3E 40 4D | .@O@<Sloth 4@>@M |
+| 40 7B 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C 45 | @{Walrus@}.@A@<E |
+| 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F | rror recovery po |
+| 69 6E 74 40 3E 0A 0A 40 4F 40 3C 53 6C 6F 74 68 | int@>..@O@<Sloth |
+| 20 35 40 3E 40 5A 40 4D 40 7B 57 61 6C 72 75 73 | 5@>@Z@M@{Walrus |
+| 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 | @}.@A@<Error rec |
+| 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 35 | overy point@>..5 |
+| 2E 20 50 72 65 76 69 6F 75 73 20 64 65 66 69 6E | . Previous defin |
+| 69 74 69 6F 6E 20 69 73 20 66 75 6C 6C 2C 20 63 | ition is full, c |
+| 75 72 72 65 6E 74 20 69 73 20 61 64 64 69 74 69 | urrent is additi |
+| 76 65 2E 0A 40 24 40 3C 57 61 6C 72 75 73 20 31 | ve..@$@<Walrus 1 |
+| 40 3E 3D 3D 40 7B 53 6C 6F 74 68 40 7D 0A 40 24 | @>==@{Sloth@}.@$ |
+| 40 3C 57 61 6C 72 75 73 20 31 40 3E 2B 3D 40 7B | @<Walrus 1@>+=@{ |
+| 41 61 72 64 76 61 72 6B 40 7D 0A 40 41 40 3C 45 | Aardvark@}.@A@<E |
+| 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F | rror recovery po |
+| 69 6E 74 40 3E 0A 0A 36 2E 20 50 72 65 76 69 6F | int@>..6. Previo |
+| 75 73 20 64 65 66 69 6E 69 74 69 6F 6E 20 69 73 | us definition is |
+| 20 61 64 64 69 74 69 76 65 2C 20 63 75 72 72 65 | additive, curre |
+| 6E 74 20 69 73 20 66 75 6C 6C 2E 0A 40 24 40 3C | nt is full..@$@< |
+| 57 61 6C 72 75 73 20 32 40 3E 2B 3D 40 7B 53 6C | Walrus 2@>+=@{Sl |
+| 6F 74 68 40 7D 0A 40 24 40 3C 57 61 6C 72 75 73 | oth@}.@$@<Walrus |
+| 20 32 40 3E 3D 3D 40 7B 41 61 72 64 76 61 72 6B | 2@>==@{Aardvark |
+| 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 | @}.@A@<Error rec |
+| 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 37 | overy point@>..7 |
+| 2E 20 4E 6F 6E 2D 66 69 72 73 74 20 62 6F 64 79 | . Non-first body |
+| 20 70 61 72 74 20 6F 66 20 70 61 72 74 69 61 6C | part of partial |
+| 20 68 61 73 20 70 61 72 61 6D 65 74 65 72 2E 0A | has parameter.. |
+| 40 24 40 3C 55 6E 69 63 6F 72 6E 40 3E 40 28 40 | @$@<Unicorn@>@(@ |
+| 33 40 29 2B 3D 40 7B 54 75 72 6B 65 79 40 7D 0A | 3@)+=@{Turkey@}. |
+| 40 24 40 3C 55 6E 69 63 6F 72 6E 40 3E 40 28 40 | @$@<Unicorn@>@(@ |
+| 33 40 29 2B 3D 40 7B 54 75 72 6B 65 79 40 7D 0A | 3@)+=@{Turkey@}. |
+| 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 | @A@<Error recove |
+| 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 38 2E 20 5A | ry point@>..8. Z |
+| 65 72 6F 20 6F 72 20 6D 61 6E 79 20 61 74 74 72 | ero or many attr |
+| 69 62 75 74 65 73 20 6F 6E 20 6E 6F 6E 2D 66 69 | ibutes on non-fi |
+| 72 73 74 20 62 6F 64 79 20 70 61 72 74 20 6F 66 | rst body part of |
+| 20 61 64 64 69 74 69 76 65 2E 0A 40 24 40 3C 45 | additive..@$@<E |
+| 6C 65 70 68 61 6E 74 40 3E 40 5A 40 4D 2B 3D 40 | lephant@>@Z@M+=@ |
+| 7B 54 75 72 6B 65 79 40 7D 0A 40 24 40 3C 45 6C | {Turkey@}.@$@<El |
+| 65 70 68 61 6E 74 40 3E 40 5A 40 4D 2B 3D 40 7B | ephant@>@Z@M+=@{ |
+| 54 75 72 6B 65 79 40 7D 0A 40 41 40 3C 45 72 72 | Turkey@}.@A@<Err |
+| 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E | or recovery poin |
+| 74 40 3E 0A 0A 39 2E 20 43 68 65 63 6B 20 74 68 | t@>..9. Check th |
+| 61 74 20 6E 6F 6E 2D 65 78 69 73 74 65 6E 74 20 | at non-existent |
+| 66 6F 72 6D 61 6C 20 70 61 72 61 6D 65 74 65 72 | formal parameter |
+| 73 20 61 72 65 20 63 61 75 67 68 74 2E 0A 0A 40 | s are caught...@ |
+| 24 40 3C 5A 65 72 6F 40 3E 40 5A 40 7B 53 6C 6F | $@<Zero@>@Z@{Slo |
+| 74 68 40 31 57 61 6C 72 75 73 40 7D 0A 40 41 40 | th@1Walrus@}.@A@ |
+| 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 | <Error recovery |
+| 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 4F 6E 65 | point@>..@$@<One |
+| 40 3E 40 28 40 31 40 29 40 5A 40 7B 53 6C 6F 74 | @>@(@1@)@Z@{Slot |
+| 68 40 32 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C | h@2Walrus@}.@A@< |
+| 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p |
+| 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 4D 61 6E 79 | oint@>..@$@<Many |
+| 40 3E 40 28 40 37 40 29 40 5A 40 7B 53 6C 6F 74 | @>@(@7@)@Z@{Slot |
+| 68 40 38 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C | h@8Walrus@}.@A@< |
+| 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p |
+| 6F 69 6E 74 40 3E 0A | oint@>. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR08: Test semantic checking of macro definitions.<010>
+00002 00002| <010>
+00003 00003| Trip parser to be sure that we won't get any output files!<010>
+00004 00004| @><010>
+00005 00005| <010>
+00006 00006| 1. File macro has parameters. Error.<010>
+00007 00007| @O@<Sloth 1@>@(@3@)@{Walrus@}<010>
+00008 00008| @A@<Error recovery point@><010>
+00009 00009| <010>
+00010 00010| 2. File macro is additive. Error.<010>
+00011 00011| @O@<Sloth 2@>+=@{Walrus@}<010>
+00012 00012| @A@<Error recovery point@><010>
+00013 00013| <010>
+00014 00014| 3. File macro has too long a name. The test name has 1200 characters. Err.<010>
+00015 00015| Note: This test can't test the error message if the maximum length of a<010>
+00016 00016| macro name is less than the maximum length of a file name as the name<010>
+00017 00017| error is caught first.<010>
+00018 00018| @p maximum_input_line_length = infinity<010>
+00019 00019| @O@<123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}<010>
+00020 00020| @A@<Error recovery point@><010>
+00021 00021| <010>
+00022 00022| 4. File macro has zero or many attributes. Error.<010>
+00023 00023| @O@<Sloth 3@>@Z@{Walrus@}<010>
+00024 00024| @A@<Error recovery point@><010>
+00025 00025| <010>
+00026 00026| @O@<Sloth 4@>@M@{Walrus@}<010>
+00027 00027| @A@<Error recovery point@><010>
+00028 00028| <010>
+00029 00029| @O@<Sloth 5@>@Z@M@{Walrus@}<010>
+00030 00030| @A@<Error recovery point@><010>
+00031 00031| <010>
+00032 00032| 5. Previous definition is full, current is additive.<010>
+00033 00033| @$@<Walrus 1@>==@{Sloth@}<010>
+00034 00034| @$@<Walrus 1@>+=@{Aardvark@}<010>
+00035 00035| @A@<Error recovery point@><010>
+00036 00036| <010>
+00037 00037| 6. Previous definition is additive, current is full.<010>
+00038 00038| @$@<Walrus 2@>+=@{Sloth@}<010>
+00039 00039| @$@<Walrus 2@>==@{Aardvark@}<010>
+00040 00040| @A@<Error recovery point@><010>
+00041 00041| <010>
+00042 00042| 7. Non-first body part of partial has parameter.<010>
+00043 00043| @$@<Unicorn@>@(@3@)+=@{Turkey@}<010>
+00044 00044| @$@<Unicorn@>@(@3@)+=@{Turkey@}<010>
+00045 00045| @A@<Error recovery point@><010>
+00046 00046| <010>
+00047 00047| 8. Zero or many attributes on non-first body part of additive.<010>
+00048 00048| @$@<Elephant@>@Z@M+=@{Turkey@}<010>
+00049 00049| @$@<Elephant@>@Z@M+=@{Turkey@}<010>
+00050 00050| @A@<Error recovery point@><010>
+00051 00051| <010>
+00052 00052| 9. Check that non-existent formal parameters are caught.<010>
+00053 00053| <010>
+00054 00054| @$@<Zero@>@Z@{Sloth@1Walrus@}<010>
+00055 00055| @A@<Error recovery point@><010>
+00056 00056| <010>
+00057 00057| @$@<One@>@(@1@)@Z@{Sloth@2Walrus@}<010>
+00058 00058| @A@<Error recovery point@><010>
+00059 00059| <010>
+00060 00060| @$@<Many@>@(@7@)@Z@{Sloth@8Walrus@}<010>
+00061 00061| @A@<Error recovery point@><010>
+00062 00062| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 245 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR08: Test semantic checking of macro definitions.<010>
+<010>
+Trip parser to be sure that we won't get any output files!<010>
+"
+0004[01]: @> Close name.
+0004[03]: Text. Text scrap[Grey]="<010>
+<010>
+1. File macro has parameters. Error.<010>
+"
+0007[01]: @F File defn.
+0007[03]: @< Open name.
+0007[05]: Text. Text scrap[Grey]="Sloth 1"
+0007[12]: @> Close name.
+0007[14]: @( Open param.
+0007[16]: @n Parameter. Parameterno=3.
+0007[18]: @} Close param.
+0007[20]: @{ Open defn.
+0007[22]: Text. Text scrap[Grey]="Walrus"
+0007[28]: @} Close defn.
+0007[30]: Text. Text scrap[White]="<010>
+"
+0008[01]: @A New section (Level 1).
+0008[03]: @< Open name.
+0008[05]: Text. Text scrap[Grey]="Error recovery point"
+0008[25]: @> Close name.
+0008[27]: Text. Text scrap[Grey]="<010>
+<010>
+2. File macro is additive. Error.<010>
+"
+0011[01]: @F File defn.
+0011[03]: @< Open name.
+0011[05]: Text. Text scrap[Grey]="Sloth 2"
+0011[12]: @> Close name.
+0011[14]: Text. Text scrap[Grey]="+="
+0011[16]: @{ Open defn.
+0011[18]: Text. Text scrap[Grey]="Walrus"
+0011[24]: @} Close defn.
+0011[26]: Text. Text scrap[White]="<010>
+"
+0012[01]: @A New section (Level 1).
+0012[03]: @< Open name.
+0012[05]: Text. Text scrap[Grey]="Error recovery point"
+0012[25]: @> Close name.
+0012[27]: Text. Text scrap[Grey]="<010>
+<010>
+3. File macro has too long a name. The test name has 1200 characters. Err.<010>
+Note: This test can't test the error message if the maximum length of a<010>
+macro name is less than the maximum length of a file name as the name<010>
+error is caught first.<010>
+"
+0019[01]: @F File defn.
+0019[03]: @< Open name.
+0019[05]: Text. Text scrap[Grey]="123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
+0019[1205]: @> Close name.
+0019[1207]: @{ Open defn.
+0019[1209]: @} Close defn.
+0019[1211]: Text. Text scrap[White]="<010>
+"
+0020[01]: @A New section (Level 1).
+0020[03]: @< Open name.
+0020[05]: Text. Text scrap[Grey]="Error recovery point"
+0020[25]: @> Close name.
+0020[27]: Text. Text scrap[Grey]="<010>
+<010>
+4. File macro has zero or many attributes. Error.<010>
+"
+0023[01]: @F File defn.
+0023[03]: @< Open name.
+0023[05]: Text. Text scrap[Grey]="Sloth 3"
+0023[12]: @> Close name.
+0023[14]: @Z Zero calls.
+0023[16]: @{ Open defn.
+0023[18]: Text. Text scrap[Grey]="Walrus"
+0023[24]: @} Close defn.
+0023[26]: Text. Text scrap[White]="<010>
+"
+0024[01]: @A New section (Level 1).
+0024[03]: @< Open name.
+0024[05]: Text. Text scrap[Grey]="Error recovery point"
+0024[25]: @> Close name.
+0024[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0026[01]: @F File defn.
+0026[03]: @< Open name.
+0026[05]: Text. Text scrap[Grey]="Sloth 4"
+0026[12]: @> Close name.
+0026[14]: @M Many calls.
+0026[16]: @{ Open defn.
+0026[18]: Text. Text scrap[Grey]="Walrus"
+0026[24]: @} Close defn.
+0026[26]: Text. Text scrap[White]="<010>
+"
+0027[01]: @A New section (Level 1).
+0027[03]: @< Open name.
+0027[05]: Text. Text scrap[Grey]="Error recovery point"
+0027[25]: @> Close name.
+0027[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0029[01]: @F File defn.
+0029[03]: @< Open name.
+0029[05]: Text. Text scrap[Grey]="Sloth 5"
+0029[12]: @> Close name.
+0029[14]: @Z Zero calls.
+0029[16]: @M Many calls.
+0029[18]: @{ Open defn.
+0029[20]: Text. Text scrap[Grey]="Walrus"
+0029[26]: @} Close defn.
+0029[28]: Text. Text scrap[White]="<010>
+"
+0030[01]: @A New section (Level 1).
+0030[03]: @< Open name.
+0030[05]: Text. Text scrap[Grey]="Error recovery point"
+0030[25]: @> Close name.
+0030[27]: Text. Text scrap[Grey]="<010>
+<010>
+5. Previous definition is full, current is additive.<010>
+"
+0033[01]: @$ Macro defn.
+0033[03]: @< Open name.
+0033[05]: Text. Text scrap[Grey]="Walrus 1"
+0033[13]: @> Close name.
+0033[15]: Text. Text scrap[Grey]="=="
+0033[17]: @{ Open defn.
+0033[19]: Text. Text scrap[Grey]="Sloth"
+0033[24]: @} Close defn.
+0033[26]: Text. Text scrap[White]="<010>
+"
+0034[01]: @$ Macro defn.
+0034[03]: @< Open name.
+0034[05]: Text. Text scrap[Grey]="Walrus 1"
+0034[13]: @> Close name.
+0034[15]: Text. Text scrap[Grey]="+="
+0034[17]: @{ Open defn.
+0034[19]: Text. Text scrap[Grey]="Aardvark"
+0034[27]: @} Close defn.
+0034[29]: Text. Text scrap[White]="<010>
+"
+0035[01]: @A New section (Level 1).
+0035[03]: @< Open name.
+0035[05]: Text. Text scrap[Grey]="Error recovery point"
+0035[25]: @> Close name.
+0035[27]: Text. Text scrap[Grey]="<010>
+<010>
+6. Previous definition is additive, current is full.<010>
+"
+0038[01]: @$ Macro defn.
+0038[03]: @< Open name.
+0038[05]: Text. Text scrap[Grey]="Walrus 2"
+0038[13]: @> Close name.
+0038[15]: Text. Text scrap[Grey]="+="
+0038[17]: @{ Open defn.
+0038[19]: Text. Text scrap[Grey]="Sloth"
+0038[24]: @} Close defn.
+0038[26]: Text. Text scrap[White]="<010>
+"
+0039[01]: @$ Macro defn.
+0039[03]: @< Open name.
+0039[05]: Text. Text scrap[Grey]="Walrus 2"
+0039[13]: @> Close name.
+0039[15]: Text. Text scrap[Grey]="=="
+0039[17]: @{ Open defn.
+0039[19]: Text. Text scrap[Grey]="Aardvark"
+0039[27]: @} Close defn.
+0039[29]: Text. Text scrap[White]="<010>
+"
+0040[01]: @A New section (Level 1).
+0040[03]: @< Open name.
+0040[05]: Text. Text scrap[Grey]="Error recovery point"
+0040[25]: @> Close name.
+0040[27]: Text. Text scrap[Grey]="<010>
+<010>
+7. Non-first body part of partial has parameter.<010>
+"
+0043[01]: @$ Macro defn.
+0043[03]: @< Open name.
+0043[05]: Text. Text scrap[Grey]="Unicorn"
+0043[12]: @> Close name.
+0043[14]: @( Open param.
+0043[16]: @n Parameter. Parameterno=3.
+0043[18]: @} Close param.
+0043[20]: Text. Text scrap[Grey]="+="
+0043[22]: @{ Open defn.
+0043[24]: Text. Text scrap[Grey]="Turkey"
+0043[30]: @} Close defn.
+0043[32]: Text. Text scrap[White]="<010>
+"
+0044[01]: @$ Macro defn.
+0044[03]: @< Open name.
+0044[05]: Text. Text scrap[Grey]="Unicorn"
+0044[12]: @> Close name.
+0044[14]: @( Open param.
+0044[16]: @n Parameter. Parameterno=3.
+0044[18]: @} Close param.
+0044[20]: Text. Text scrap[Grey]="+="
+0044[22]: @{ Open defn.
+0044[24]: Text. Text scrap[Grey]="Turkey"
+0044[30]: @} Close defn.
+0044[32]: Text. Text scrap[White]="<010>
+"
+0045[01]: @A New section (Level 1).
+0045[03]: @< Open name.
+0045[05]: Text. Text scrap[Grey]="Error recovery point"
+0045[25]: @> Close name.
+0045[27]: Text. Text scrap[Grey]="<010>
+<010>
+8. Zero or many attributes on non-first body part of additive.<010>
+"
+0048[01]: @$ Macro defn.
+0048[03]: @< Open name.
+0048[05]: Text. Text scrap[Grey]="Elephant"
+0048[13]: @> Close name.
+0048[15]: @Z Zero calls.
+0048[17]: @M Many calls.
+0048[19]: Text. Text scrap[Grey]="+="
+0048[21]: @{ Open defn.
+0048[23]: Text. Text scrap[Grey]="Turkey"
+0048[29]: @} Close defn.
+0048[31]: Text. Text scrap[White]="<010>
+"
+0049[01]: @$ Macro defn.
+0049[03]: @< Open name.
+0049[05]: Text. Text scrap[Grey]="Elephant"
+0049[13]: @> Close name.
+0049[15]: @Z Zero calls.
+0049[17]: @M Many calls.
+0049[19]: Text. Text scrap[Grey]="+="
+0049[21]: @{ Open defn.
+0049[23]: Text. Text scrap[Grey]="Turkey"
+0049[29]: @} Close defn.
+0049[31]: Text. Text scrap[White]="<010>
+"
+0050[01]: @A New section (Level 1).
+0050[03]: @< Open name.
+0050[05]: Text. Text scrap[Grey]="Error recovery point"
+0050[25]: @> Close name.
+0050[27]: Text. Text scrap[Grey]="<010>
+<010>
+9. Check that non-existent formal parameters are caught.<010>
+<010>
+"
+0054[01]: @$ Macro defn.
+0054[03]: @< Open name.
+0054[05]: Text. Text scrap[Grey]="Zero"
+0054[09]: @> Close name.
+0054[11]: @Z Zero calls.
+0054[13]: @{ Open defn.
+0054[15]: Text. Text scrap[Grey]="Sloth"
+0054[20]: @n Parameter. Parameterno=1.
+0054[22]: Text. Text scrap[Grey]="Walrus"
+0054[28]: @} Close defn.
+0054[30]: Text. Text scrap[White]="<010>
+"
+0055[01]: @A New section (Level 1).
+0055[03]: @< Open name.
+0055[05]: Text. Text scrap[Grey]="Error recovery point"
+0055[25]: @> Close name.
+0055[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0057[01]: @$ Macro defn.
+0057[03]: @< Open name.
+0057[05]: Text. Text scrap[Grey]="One"
+0057[08]: @> Close name.
+0057[10]: @( Open param.
+0057[12]: @n Parameter. Parameterno=1.
+0057[14]: @} Close param.
+0057[16]: @Z Zero calls.
+0057[18]: @{ Open defn.
+0057[20]: Text. Text scrap[Grey]="Sloth"
+0057[25]: @n Parameter. Parameterno=2.
+0057[27]: Text. Text scrap[Grey]="Walrus"
+0057[33]: @} Close defn.
+0057[35]: Text. Text scrap[White]="<010>
+"
+0058[01]: @A New section (Level 1).
+0058[03]: @< Open name.
+0058[05]: Text. Text scrap[Grey]="Error recovery point"
+0058[25]: @> Close name.
+0058[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0060[01]: @$ Macro defn.
+0060[03]: @< Open name.
+0060[05]: Text. Text scrap[Grey]="Many"
+0060[09]: @> Close name.
+0060[11]: @( Open param.
+0060[13]: @n Parameter. Parameterno=7.
+0060[15]: @} Close param.
+0060[17]: @Z Zero calls.
+0060[19]: @{ Open defn.
+0060[21]: Text. Text scrap[Grey]="Sloth"
+0060[26]: @n Parameter. Parameterno=8.
+0060[28]: Text. Text scrap[Grey]="Walrus"
+0060[34]: @} Close defn.
+0060[36]: Text. Text scrap[White]="<010>
+"
+0061[01]: @A New section (Level 1).
+0061[03]: @< Open name.
+0061[05]: Text. Text scrap[Grey]="Error recovery point"
+0061[25]: @> Close name.
+0061[27]: Text. Text scrap[White]="<010>
+"
+0062[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Elephant"
+Defined? : Yes.
+Parameters : 0
+Additive? : Yes.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=4, Pos(L,C)=(48,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Turkey"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Many"
+Defined? : Yes.
+Parameters : 7
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=7, Pos(L,C)=(60,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Sloth"
+------ End Text Element ------
+
+
+-- Start Parameter Element --
+Parameter number=8.
+Parameter is of macro "Many".
+--- End Parameter Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "One"
+Defined? : Yes.
+Parameters : 1
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=6, Pos(L,C)=(57,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Sloth"
+------ End Text Element ------
+
+
+-- Start Parameter Element --
+Parameter number=2.
+Parameter is of macro "One".
+--- End Parameter Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth 1"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth 2"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth 3"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth 4"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth 5"
+Defined? : No.
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Unicorn"
+Defined? : Yes.
+Parameters : 3
+Additive? : Yes.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=3, Pos(L,C)=(43,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Turkey"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Walrus 1"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=1, Pos(L,C)=(33,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Sloth"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Walrus 2"
+Defined? : Yes.
+Parameters : 0
+Additive? : Yes.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=2, Pos(L,C)=(38,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Sloth"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Zero"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=5, Pos(L,C)=(54,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Sloth"
+------ End Text Element ------
+
+
+-- Start Parameter Element --
+Parameter number=1.
+Parameter is of macro "Zero".
+--- End Parameter Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR08: Test semantic checking of macro definitions.<010>
+<010>
+Trip parser to be sure that we won't get any output files!<010>
+"
+--- End of Text Scrap List ---
+
+
+TEXT COMPONENT: Pos(L,C)=(4,3).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+1. File macro has parameters. Error.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(8,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+2. File macro is additive. Error.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(12,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+3. File macro has too long a name. The test name has 1200 characters. Err.<010>
+Note: This test can't test the error message if the maximum length of a<010>
+macro name is less than the maximum length of a file name as the name<010>
+error is caught first.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "3", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(20,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+4. File macro has zero or many attributes. Error.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(24,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "5", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(27,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "6", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(30,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+5. Previous definition is full, current is additive.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(33,1).
+Part 1 of macro @<Walrus 1@>.
+
+TEXT COMPONENT: Pos(L,C)=(33,26).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "7", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(35,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+6. Previous definition is additive, current is full.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(38,1).
+Part 1 of macro @<Walrus 2@>.
+
+TEXT COMPONENT: Pos(L,C)=(38,26).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "8", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(40,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+7. Non-first body part of partial has parameter.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(43,1).
+Part 1 of macro @<Unicorn@>.
+
+TEXT COMPONENT: Pos(L,C)=(43,32).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "9", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(45,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+8. Zero or many attributes on non-first body part of additive.<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(48,1).
+Part 1 of macro @<Elephant@>.
+
+TEXT COMPONENT: Pos(L,C)=(48,31).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "10", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(50,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+9. Check that non-existent formal parameters are caught.<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(54,1).
+Part 1 of macro @<Zero@>.
+
+TEXT COMPONENT: Pos(L,C)=(54,30).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "11", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(55,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(57,1).
+Part 1 of macro @<One@>.
+
+TEXT COMPONENT: Pos(L,C)=(57,35).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "12", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(58,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(60,1).
+Part 1 of macro @<Many@>.
+
+TEXT COMPONENT: Pos(L,C)=(60,36).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "13", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(61,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| PR08: Test semantic checking of macro definitions.
+ 2 2|
+ 3 3| Trip parser to be sure that we won't get any output files!
+ 4 4| @>
+ Error|.^The parser was at the top level and was expecting
+ |.^one of: {Directive, Text, Macro definition, EOF}.
+ 5 5|
+ 6 6| 1. File macro has parameters. Error.
+ 7 7| @O@<Sloth 1@>@(@3@)@{Walrus@}
+ |...^Macro definition ignored.
+ Error|................^Macros attached to output files cannot be parameterized.
+ |................^Reason: No actual parameters would be available during
+ |................^ output file generation.
+ |....................^Skipping after error to the next major construct...
+ 8 8| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 9 9|
+ 10 10| 2. File macro is additive. Error.
+ 11 11| @O@<Sloth 2@>+=@{Walrus@}
+ |...^Macro definition ignored.
+ Error|..............^Macros attached to output files cannot be additive.
+ |..............^Reason: Preventing this makes it easy to find output
+ |..............^file macros later, because there will be exactly one
+ |..............^@O declaration in the input file for each output file.
+ |..............^To do what you are trying to do, just create an additive
+ |..............^bridging macro, like this:
+ |..............^ @O@<prog.c@>@{@<Bridge@>@}
+ |..............^ @$@<Bridge@>+=@{void stringhack()...@}
+ |..............^ @$@<Bridge@>+=@{main()...@}
+ |................^Skipping after error to the next major construct...
+ 12 12| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 13 13|
+ 14 14| 3. File macro has too long a name. The test name has 1200 characters. Err.
+ 15 15| Note: This test can't test the error message if the maximum length of a
+ 16 16| macro name is less than the maximum length of a file name as the name
+ 17 17| error is caught first.
+ 18 18| @p maximum_input_line_length = infinity
+ 19 19| @O@<123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}
+ Error|.....^Name is too long.
+ |.....^The maximum length of a legal name is 80 characters.
+ |.....^Skipping after error to the next major construct...
+ 20 20| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 21 21|
+ 22 22| 4. File macro has zero or many attributes. Error.
+ 23 23| @O@<Sloth 3@>@Z@{Walrus@}
+ |...^Macro definition ignored.
+ Error|..............^Macros attached to output files cannot have @Z or @M.
+ |..............^Reason: They are always called once to generate their
+ |..............^output file and they cannot be called from other macros.
+ |..............^Hence they are always called exactly once and so there
+ |..............^can be no need for @Z or @M in their declarations.
+ |................^Skipping after error to the next major construct...
+ 24 24| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 25 25|
+ 26 26| @O@<Sloth 4@>@M@{Walrus@}
+ |...^Macro definition ignored.
+ Error|..............^Macros attached to output files cannot have @Z or @M.
+ |..............^Reason: They are always called once to generate their
+ |..............^output file and they cannot be called from other macros.
+ |..............^Hence they are always called exactly once and so there
+ |..............^can be no need for @Z or @M in their declarations.
+ |................^Skipping after error to the next major construct...
+ 27 27| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 28 28|
+ 29 29| @O@<Sloth 5@>@Z@M@{Walrus@}
+ |...^Macro definition ignored.
+ Error|..............^Macros attached to output files cannot have @Z or @M.
+ |..............^Reason: They are always called once to generate their
+ |..............^output file and they cannot be called from other macros.
+ |..............^Hence they are always called exactly once and so there
+ |..............^can be no need for @Z or @M in their declarations.
+ |..................^Skipping after error to the next major construct...
+ 30 30| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 31 31|
+ 32 32| 5. Previous definition is full, current is additive.
+ 33 33| @$@<Walrus 1@>==@{Sloth@}
+ 34 34| @$@<Walrus 1@>+=@{Aardvark@}
+ Error|...^A full definition of this macro appears at line 33.
+ |...^Full and additive definitions of the same macro cannot coexist.
+ |...^Macro definition ignored.
+ |.................^Skipping after error to the next major construct...
+ 35 35| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 36 36|
+ 37 37| 6. Previous definition is additive, current is full.
+ 38 38| @$@<Walrus 2@>+=@{Sloth@}
+ 39 39| @$@<Walrus 2@>==@{Aardvark@}
+ Error|...^An additive definition of this macro appears at line 38.
+ |...^Full and additive definitions of the same macro cannot coexist.
+ |...^Macro definition ignored.
+ |.................^Skipping after error to the next major construct...
+ 40 40| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 41 41|
+ 42 42| 7. Non-first body part of partial has parameter.
+ 43 43| @$@<Unicorn@>@(@3@)+=@{Turkey@}
+ 44 44| @$@<Unicorn@>@(@3@)+=@{Turkey@}
+ |...^Macro definition ignored.
+ Error|................^The formal parameter list of an additive macro
+ |................^must be placed only in the first definition part.
+ |................^The first part of this macro appears at line 43.
+ |......................^Skipping after error to the next major construct...
+ 45 45| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 46 46|
+ 47 47| 8. Zero or many attributes on non-first body part of additive.
+ 48 48| @$@<Elephant@>@Z@M+=@{Turkey@}
+ 49 49| @$@<Elephant@>@Z@M+=@{Turkey@}
+ |...^Macro definition ignored.
+ Error|...............^@Z and @M modifiers for additive macros must
+ |...............^be placed only in the first definition part.
+ |...............^The first part of this macro appears at line 48.
+ |.....................^Skipping after error to the next major construct...
+ 50 50| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 51 51|
+ 52 52| 9. Check that non-existent formal parameters are caught.
+ 53 53|
+ 54 54| @$@<Zero@>@Z@{Sloth@1Walrus@}
+ Error|....................^Macro being defined has only 0 parameters.
+ 55 55| @A@<Error recovery point@>
+ 56 56|
+ 57 57| @$@<One@>@(@1@)@Z@{Sloth@2Walrus@}
+ Error|.........................^Macro being defined has only 1 parameter.
+ 58 58| @A@<Error recovery point@>
+ 59 59|
+ 60 60| @$@<Many@>@(@7@)@Z@{Sloth@8Walrus@}
+ Error|..........................^Macro being defined has only 7 parameters.
+ 61 61| @A@<Error recovery point@>
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 14 Errors.
diff --git a/web/funnelAC/results/pr09.lis b/web/funnelAC/results/pr09.lis
new file mode 100644
index 0000000000..1b42ee5601
--- /dev/null
+++ b/web/funnelAC/results/pr09.lis
@@ -0,0 +1,2234 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 30 39 3A 20 54 65 73 74 20 63 61 6C 6C 73 | PR09: Test calls |
+| 20 61 6E 64 20 61 63 74 75 61 6C 20 70 61 72 61 | and actual para |
+| 6D 65 74 65 72 20 6C 69 73 74 73 2E 0A 0A 46 69 | meter lists...Fi |
+| 72 73 74 20 74 72 69 70 20 75 70 20 74 68 65 20 | rst trip up the |
+| 70 61 72 73 65 72 20 73 6F 20 77 65 20 64 6F 6E | parser so we don |
+| 27 74 20 67 65 74 20 61 6E 79 20 66 75 72 74 68 | 't get any furth |
+| 65 72 2E 0A 40 3E 0A 0A 4E 6F 77 20 64 65 66 69 | er..@>..Now defi |
+| 6E 65 20 73 6F 6D 65 20 6D 61 63 72 6F 73 20 74 | ne some macros t |
+| 6F 20 63 61 6C 6C 2E 20 4E 6F 20 65 72 72 6F 72 | o call. No error |
+| 2E 0A 0A 40 24 40 3C 5A 65 72 6F 40 3E 40 7B 40 | ...@$@<Zero@>@{@ |
+| 7D 0A 40 24 40 3C 4F 6E 65 40 3E 40 28 40 31 40 | }.@$@<One@>@(@1@ |
+| 29 40 7B 40 7D 0A 40 24 40 3C 54 77 6F 40 3E 40 | )@{@}.@$@<Two@>@ |
+| 28 40 32 40 29 40 7B 40 7D 0A 40 24 40 3C 54 68 | (@2@)@{@}.@$@<Th |
+| 72 65 65 40 3E 40 28 40 33 40 29 40 7B 40 7D 0A | ree@>@(@3@)@{@}. |
+| 40 24 40 3C 4E 69 6E 65 40 3E 40 28 40 39 40 29 | @$@<Nine@>@(@9@) |
+| 40 7B 40 7D 0A 40 24 40 23 22 40 7B 40 7D 0A 0A | @{@}.@$@#"@{@}.. |
+| 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 74 65 | The following te |
+| 73 74 20 63 61 6C 6C 73 20 73 68 6F 75 6C 64 20 | st calls should |
+| 4E 4F 54 20 67 65 6E 65 72 61 74 65 20 61 6E 79 | NOT generate any |
+| 20 65 72 72 6F 72 73 2E 0A 0A 40 24 40 3C 4D 61 | errors...@$@<Ma |
+| 63 72 6F 20 63 6F 6E 74 61 69 6E 69 6E 67 20 74 | cro containing t |
+| 68 65 20 74 65 73 74 20 6D 61 63 72 6F 20 63 61 | he test macro ca |
+| 6C 6C 73 2E 40 3E 3D 3D 40 7B 0A 31 2E 20 54 65 | lls.@>==@{.1. Te |
+| 73 74 20 6D 61 63 72 6F 20 63 61 6C 6C 20 77 69 | st macro call wi |
+| 74 68 20 6E 6F 20 70 61 72 61 6D 65 74 65 72 20 | th no parameter |
+| 6C 69 73 74 2E 0A 40 3C 5A 65 72 6F 40 3E 0A 0A | list..@<Zero@>.. |
+| 32 2E 20 54 65 73 74 20 6D 61 63 72 6F 20 63 61 | 2. Test macro ca |
+| 6C 6C 20 77 69 74 68 20 71 75 69 63 6B 20 6E 61 | ll with quick na |
+| 6D 65 2E 0A 40 23 22 0A 0A 33 2E 20 54 65 73 74 | me..@#"..3. Test |
+| 20 6D 61 63 72 6F 20 63 61 6C 6C 20 77 69 74 68 | macro call with |
+| 20 6F 6E 65 20 70 61 72 61 6D 65 74 65 72 2E 0A | one parameter.. |
+| 40 3C 4F 6E 65 40 3E 40 28 54 6F 75 63 61 6E 40 | @<One@>@(Toucan@ |
+| 29 0A 0A 34 2E 20 54 65 73 74 20 6D 61 63 72 6F | )..4. Test macro |
+| 20 63 61 6C 6C 20 77 69 74 68 20 6D 61 6E 79 20 | call with many |
+| 70 61 72 61 6D 65 74 65 72 73 2E 0A 40 3C 54 77 | parameters..@<Tw |
+| 6F 40 3E 40 28 54 6F 75 63 61 6E 40 2C 54 65 61 | o@>@(Toucan@,Tea |
+| 70 6F 74 40 29 0A 40 3C 54 68 72 65 65 40 3E 40 | pot@).@<Three@>@ |
+| 28 54 6F 75 63 61 6E 40 2C 54 65 61 70 6F 74 40 | (Toucan@,Teapot@ |
+| 2C 57 61 6C 72 75 73 40 29 0A 40 3C 4E 69 6E 65 | ,Walrus@).@<Nine |
+| 40 3E 40 28 54 6F 75 63 61 6E 40 2C 54 65 61 70 | @>@(Toucan@,Teap |
+| 6F 74 40 2C 57 61 6C 72 75 73 40 2C 0A 20 20 20 | ot@,Walrus@,. |
+| 20 20 20 20 20 20 20 54 6F 75 63 61 6E 40 2C 54 | Toucan@,T |
+| 65 61 70 6F 74 40 2C 57 61 6C 72 75 73 40 2C 0A | eapot@,Walrus@,. |
+| 20 20 20 20 20 20 20 20 20 20 54 6F 75 63 61 6E | Toucan |
+| 40 2C 54 65 61 70 6F 74 40 2C 57 61 6C 72 75 73 | @,Teapot@,Walrus |
+| 40 29 0A 0A 35 2E 20 54 65 73 74 20 6D 61 63 72 | @)..5. Test macr |
+| 6F 20 63 61 6C 6C 73 20 77 69 74 68 20 64 6F 75 | o calls with dou |
+| 62 6C 65 20 71 75 6F 74 65 73 20 6F 6E 20 70 61 | ble quotes on pa |
+| 72 61 6D 65 74 65 72 73 2E 0A 40 3C 4F 6E 65 40 | rameters..@<One@ |
+| 3E 40 28 20 40 22 54 6F 75 63 61 6E 40 22 40 29 | >@( @"Toucan@"@) |
+| 0A 40 3C 54 77 6F 40 3E 40 28 40 22 54 6F 75 63 | .@<Two@>@(@"Touc |
+| 61 6E 40 22 20 20 20 40 2C 20 20 20 40 22 54 65 | an@" @, @"Te |
+| 61 70 6F 74 40 22 40 29 0A 40 3C 54 68 72 65 65 | apot@"@).@<Three |
+| 40 3E 40 28 40 22 54 6F 75 63 61 6E 40 22 20 40 | @>@(@"Toucan@" @ |
+| 2C 0A 20 20 20 20 20 20 20 20 20 20 20 40 22 54 | ,. @"T |
+| 65 61 70 6F 74 40 22 20 40 2C 0A 20 20 20 20 20 | eapot@" @,. |
+| 20 20 20 20 20 20 40 22 57 61 6C 72 75 73 40 22 | @"Walrus@" |
+| 20 40 29 0A 40 3C 4E 69 6E 65 40 3E 40 28 20 40 | @).@<Nine@>@( @ |
+| 22 54 6F 75 63 61 6E 40 22 20 40 2C 20 40 22 54 | "Toucan@" @, @"T |
+| 65 61 70 6F 74 40 22 20 40 2C 20 40 22 57 61 6C | eapot@" @, @"Wal |
+| 72 75 73 40 22 20 40 2C 0A 20 20 20 20 20 20 20 | rus@" @,. |
+| 20 20 20 20 40 22 54 6F 75 63 61 6E 40 22 20 40 | @"Toucan@" @ |
+| 2C 20 40 22 54 65 61 70 6F 74 40 22 20 40 2C 20 | , @"Teapot@" @, |
+| 40 22 57 61 6C 72 75 73 40 22 20 40 2C 0A 20 20 | @"Walrus@" @,. |
+| 20 20 20 20 20 20 20 20 20 40 22 54 6F 75 63 61 | @"Touca |
+| 6E 40 22 20 40 2C 20 40 22 54 65 61 70 6F 74 40 | n@" @, @"Teapot@ |
+| 22 20 40 2C 20 40 22 57 61 6C 72 75 73 40 22 20 | " @, @"Walrus@" |
+| 40 29 0A 0A 37 2E 20 54 65 73 74 20 6D 61 63 72 | @)..7. Test macr |
+| 6F 20 63 61 6C 6C 73 20 77 69 74 68 20 6D 69 78 | o calls with mix |
+| 65 64 20 64 6F 75 62 6C 65 20 71 75 6F 74 65 73 | ed double quotes |
+| 20 6F 6E 20 70 61 72 61 6D 65 74 65 72 73 2E 0A | on parameters.. |
+| 40 3C 54 77 6F 40 3E 40 28 40 22 54 6F 75 63 61 | @<Two@>@(@"Touca |
+| 6E 40 22 20 20 20 40 2C 54 65 61 70 6F 74 40 29 | n@" @,Teapot@) |
+| 0A 40 3C 54 68 72 65 65 40 3E 40 28 40 22 54 6F | .@<Three@>@(@"To |
+| 75 63 61 6E 40 22 20 40 2C 0A 20 20 20 20 20 20 | ucan@" @,. |
+| 20 20 20 20 20 40 22 54 65 61 70 6F 74 40 22 20 | @"Teapot@" |
+| 40 2C 57 61 6C 72 75 73 40 29 0A 40 3C 4E 69 6E | @,Walrus@).@<Nin |
+| 65 40 3E 40 28 20 40 22 54 6F 75 63 61 6E 40 22 | e@>@( @"Toucan@" |
+| 20 40 2C 20 40 22 54 65 61 70 6F 74 40 22 20 40 | @, @"Teapot@" @ |
+| 2C 20 20 20 57 61 6C 72 75 73 20 20 20 40 2C 0A | , Walrus @,. |
+| 20 20 20 20 20 20 20 20 20 20 20 40 22 54 6F 75 | @"Tou |
+| 63 61 6E 40 22 20 40 2C 20 20 20 54 65 61 70 6F | can@" @, Teapo |
+| 74 20 20 20 40 2C 20 40 22 57 61 6C 72 75 73 40 | t @, @"Walrus@ |
+| 22 20 40 2C 0A 20 20 20 20 20 20 20 20 20 20 20 | " @,. |
+| 40 22 54 6F 75 63 61 6E 40 22 20 40 2C 20 40 22 | @"Toucan@" @, @" |
+| 54 65 61 70 6F 74 40 22 20 40 2C 20 40 22 57 61 | Teapot@" @, @"Wa |
+| 6C 72 75 73 40 22 20 40 29 0A 0A 40 7D 20 40 21 | lrus@" @)..@} @! |
+| 20 45 6E 64 20 6F 66 20 6D 61 63 72 6F 20 64 65 | End of macro de |
+| 66 69 6E 69 74 69 6F 6E 20 65 6E 63 6C 6F 73 69 | finition enclosi |
+| 6E 67 20 61 6C 6C 20 74 68 65 73 65 20 6C 65 67 | ng all these leg |
+| 61 6C 20 74 65 73 74 73 2E 0A 0A 38 2E 20 54 65 | al tests...8. Te |
+| 73 74 20 6D 61 63 72 6F 20 63 61 6C 6C 73 20 77 | st macro calls w |
+| 69 74 68 20 61 20 76 61 72 69 65 74 79 20 6F 66 | ith a variety of |
+| 20 73 79 6E 74 61 78 20 65 72 72 6F 72 73 20 69 | syntax errors i |
+| 6E 20 70 61 72 61 6D 65 74 65 72 20 6C 69 73 74 | n parameter list |
+| 2E 0A 40 24 40 3C 45 72 72 6F 72 31 40 3E 40 7B | ..@$@<Error1@>@{ |
+| 0A 40 3C 5A 65 72 6F 40 3E 40 28 0A 40 7D 0A 40 | .@<Zero@>@(.@}.@ |
+| 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 | A@<Error recover |
+| 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 45 | y point@>..@$@<E |
+| 72 72 6F 72 32 40 3E 40 7B 0A 40 3C 5A 65 72 6F | rror2@>@{.@<Zero |
+| 40 3E 40 29 0A 40 7D 0A 40 41 40 3C 45 72 72 6F | @>@).@}.@A@<Erro |
+| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point |
+| 40 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 33 40 3E | @>..@$@<Error3@> |
+| 40 7B 0A 40 3C 4F 6E 65 40 3E 40 28 40 22 54 6F | @{.@<One@>@(@"To |
+| 75 63 61 6E 40 29 0A 40 7D 0A 40 41 40 3C 45 72 | ucan@).@}.@A@<Er |
+| 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 | ror recovery poi |
+| 6E 74 40 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 34 | nt@>..@$@<Error4 |
+| 40 3E 40 7B 0A 40 3C 4F 6E 65 40 3E 40 28 40 22 | @>@{.@<One@>@(@" |
+| 54 6F 75 63 61 6E 40 22 40 22 53 6C 6F 74 68 40 | Toucan@"@"Sloth@ |
+| 22 40 29 0A 40 7D 0A 40 41 40 3C 45 72 72 6F 72 | "@).@}.@A@<Error |
+| 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 | recovery point@ |
+| 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 35 40 3E 40 | >..@$@<Error5@>@ |
+| 7B 0A 40 3C 54 77 6F 40 3E 40 28 40 22 54 6F 75 | {.@<Two@>@(@"Tou |
+| 63 61 6E 40 22 54 65 61 70 6F 74 40 29 0A 40 7D | can@"Teapot@).@} |
+| 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 | .@A@<Error recov |
+| 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 | ery point@>..@$@ |
+| 3C 45 72 72 6F 72 36 40 3E 40 7B 0A 40 3C 54 77 | <Error6@>@{.@<Tw |
+| 6F 40 3E 40 28 40 22 54 6F 75 63 61 6E 40 22 54 | o@>@(@"Toucan@"T |
+| 65 61 70 6F 74 0A 40 7D 0A 40 41 40 3C 45 72 72 | eapot.@}.@A@<Err |
+| 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E | or recovery poin |
+| 74 40 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 37 40 | t@>..@$@<Error7@ |
+| 3E 40 7B 0A 40 3C 54 77 6F 40 3E 40 28 40 22 54 | >@{.@<Two@>@(@"T |
+| 6F 75 63 61 6E 40 22 54 65 61 70 6F 74 0A 40 3C | oucan@"Teapot.@< |
+| 54 68 72 65 65 40 3E 40 28 54 6F 75 63 61 6E 40 | Three@>@(Toucan@ |
+| 2C 0A 20 20 20 20 20 20 20 20 20 20 20 40 22 54 | ,. @"T |
+| 65 61 70 6F 74 40 2C 57 61 6C 72 75 73 0A 0A 40 | eapot@,Walrus..@ |
+| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco |
+| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A | very point@>.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR09: Test calls and actual parameter lists.<010>
+00002 00002| <010>
+00003 00003| First trip up the parser so we don't get any further.<010>
+00004 00004| @><010>
+00005 00005| <010>
+00006 00006| Now define some macros to call. No error.<010>
+00007 00007| <010>
+00008 00008| @$@<Zero@>@{@}<010>
+00009 00009| @$@<One@>@(@1@)@{@}<010>
+00010 00010| @$@<Two@>@(@2@)@{@}<010>
+00011 00011| @$@<Three@>@(@3@)@{@}<010>
+00012 00012| @$@<Nine@>@(@9@)@{@}<010>
+00013 00013| @$@#"@{@}<010>
+00014 00014| <010>
+00015 00015| The following test calls should NOT generate any errors.<010>
+00016 00016| <010>
+00017 00017| @$@<Macro containing the test macro calls.@>==@{<010>
+00018 00018| 1. Test macro call with no parameter list.<010>
+00019 00019| @<Zero@><010>
+00020 00020| <010>
+00021 00021| 2. Test macro call with quick name.<010>
+00022 00022| @#"<010>
+00023 00023| <010>
+00024 00024| 3. Test macro call with one parameter.<010>
+00025 00025| @<One@>@(Toucan@)<010>
+00026 00026| <010>
+00027 00027| 4. Test macro call with many parameters.<010>
+00028 00028| @<Two@>@(Toucan@,Teapot@)<010>
+00029 00029| @<Three@>@(Toucan@,Teapot@,Walrus@)<010>
+00030 00030| @<Nine@>@(Toucan@,Teapot@,Walrus@,<010>
+00031 00031| Toucan@,Teapot@,Walrus@,<010>
+00032 00032| Toucan@,Teapot@,Walrus@)<010>
+00033 00033| <010>
+00034 00034| 5. Test macro calls with double quotes on parameters.<010>
+00035 00035| @<One@>@( @"Toucan@"@)<010>
+00036 00036| @<Two@>@(@"Toucan@" @, @"Teapot@"@)<010>
+00037 00037| @<Three@>@(@"Toucan@" @,<010>
+00038 00038| @"Teapot@" @,<010>
+00039 00039| @"Walrus@" @)<010>
+00040 00040| @<Nine@>@( @"Toucan@" @, @"Teapot@" @, @"Walrus@" @,<010>
+00041 00041| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @,<010>
+00042 00042| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @)<010>
+00043 00043| <010>
+00044 00044| 7. Test macro calls with mixed double quotes on parameters.<010>
+00045 00045| @<Two@>@(@"Toucan@" @,Teapot@)<010>
+00046 00046| @<Three@>@(@"Toucan@" @,<010>
+00047 00047| @"Teapot@" @,Walrus@)<010>
+00048 00048| @<Nine@>@( @"Toucan@" @, @"Teapot@" @, Walrus @,<010>
+00049 00049| @"Toucan@" @, Teapot @, @"Walrus@" @,<010>
+00050 00050| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @)<010>
+00051 00051| <010>
+00052 00052| @} @! End of macro definition enclosing all these legal tests.<010>
+00053 00053| <010>
+00054 00054| 8. Test macro calls with a variety of syntax errors in parameter list.<010>
+00055 00055| @$@<Error1@>@{<010>
+00056 00056| @<Zero@>@(<010>
+00057 00057| @}<010>
+00058 00058| @A@<Error recovery point@><010>
+00059 00059| <010>
+00060 00060| @$@<Error2@>@{<010>
+00061 00061| @<Zero@>@)<010>
+00062 00062| @}<010>
+00063 00063| @A@<Error recovery point@><010>
+00064 00064| <010>
+00065 00065| @$@<Error3@>@{<010>
+00066 00066| @<One@>@(@"Toucan@)<010>
+00067 00067| @}<010>
+00068 00068| @A@<Error recovery point@><010>
+00069 00069| <010>
+00070 00070| @$@<Error4@>@{<010>
+00071 00071| @<One@>@(@"Toucan@"@"Sloth@"@)<010>
+00072 00072| @}<010>
+00073 00073| @A@<Error recovery point@><010>
+00074 00074| <010>
+00075 00075| @$@<Error5@>@{<010>
+00076 00076| @<Two@>@(@"Toucan@"Teapot@)<010>
+00077 00077| @}<010>
+00078 00078| @A@<Error recovery point@><010>
+00079 00079| <010>
+00080 00080| @$@<Error6@>@{<010>
+00081 00081| @<Two@>@(@"Toucan@"Teapot<010>
+00082 00082| @}<010>
+00083 00083| @A@<Error recovery point@><010>
+00084 00084| <010>
+00085 00085| @$@<Error7@>@{<010>
+00086 00086| @<Two@>@(@"Toucan@"Teapot<010>
+00087 00087| @<Three@>@(Toucan@,<010>
+00088 00088| @"Teapot@,Walrus<010>
+00089 00089| <010>
+00090 00090| @}<010>
+00091 00091| @A@<Error recovery point@><010>
+00092 00092| <010>
+00093 00093| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 467 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR09: Test calls and actual parameter lists.<010>
+<010>
+First trip up the parser so we don't get any further.<010>
+"
+0004[01]: @> Close name.
+0004[03]: Text. Text scrap[Grey]="<010>
+<010>
+Now define some macros to call. No error.<010>
+<010>
+"
+0008[01]: @$ Macro defn.
+0008[03]: @< Open name.
+0008[05]: Text. Text scrap[Grey]="Zero"
+0008[09]: @> Close name.
+0008[11]: @{ Open defn.
+0008[13]: @} Close defn.
+0008[15]: Text. Text scrap[White]="<010>
+"
+0009[01]: @$ Macro defn.
+0009[03]: @< Open name.
+0009[05]: Text. Text scrap[Grey]="One"
+0009[08]: @> Close name.
+0009[10]: @( Open param.
+0009[12]: @n Parameter. Parameterno=1.
+0009[14]: @} Close param.
+0009[16]: @{ Open defn.
+0009[18]: @} Close defn.
+0009[20]: Text. Text scrap[White]="<010>
+"
+0010[01]: @$ Macro defn.
+0010[03]: @< Open name.
+0010[05]: Text. Text scrap[Grey]="Two"
+0010[08]: @> Close name.
+0010[10]: @( Open param.
+0010[12]: @n Parameter. Parameterno=2.
+0010[14]: @} Close param.
+0010[16]: @{ Open defn.
+0010[18]: @} Close defn.
+0010[20]: Text. Text scrap[White]="<010>
+"
+0011[01]: @$ Macro defn.
+0011[03]: @< Open name.
+0011[05]: Text. Text scrap[Grey]="Three"
+0011[10]: @> Close name.
+0011[12]: @( Open param.
+0011[14]: @n Parameter. Parameterno=3.
+0011[16]: @} Close param.
+0011[18]: @{ Open defn.
+0011[20]: @} Close defn.
+0011[22]: Text. Text scrap[White]="<010>
+"
+0012[01]: @$ Macro defn.
+0012[03]: @< Open name.
+0012[05]: Text. Text scrap[Grey]="Nine"
+0012[09]: @> Close name.
+0012[11]: @( Open param.
+0012[13]: @n Parameter. Parameterno=9.
+0012[15]: @} Close param.
+0012[17]: @{ Open defn.
+0012[19]: @} Close defn.
+0012[21]: Text. Text scrap[White]="<010>
+"
+0013[01]: @$ Macro defn.
+0013[03]: @# Name. Character='"'.
+0013[06]: @{ Open defn.
+0013[08]: @} Close defn.
+0013[10]: Text. Text scrap[Grey]="<010>
+<010>
+The following test calls should NOT generate any errors.<010>
+<010>
+"
+0017[01]: @$ Macro defn.
+0017[03]: @< Open name.
+0017[05]: Text. Text scrap[Grey]="Macro containing the test macro calls."
+0017[43]: @> Close name.
+0017[45]: Text. Text scrap[Grey]="=="
+0017[47]: @{ Open defn.
+0017[49]: Text. Text scrap[Grey]="<010>
+1. Test macro call with no parameter list.<010>
+"
+0019[01]: @< Open name.
+0019[03]: Text. Text scrap[Grey]="Zero"
+0019[07]: @> Close name.
+0019[09]: Text. Text scrap[Grey]="<010>
+<010>
+2. Test macro call with quick name.<010>
+"
+0022[01]: @# Name. Character='"'.
+0022[04]: Text. Text scrap[Grey]="<010>
+<010>
+3. Test macro call with one parameter.<010>
+"
+0025[01]: @< Open name.
+0025[03]: Text. Text scrap[Grey]="One"
+0025[06]: @> Close name.
+0025[08]: @( Open param.
+0025[10]: Text. Text scrap[Grey]="Toucan"
+0025[16]: @} Close param.
+0025[18]: Text. Text scrap[Grey]="<010>
+<010>
+4. Test macro call with many parameters.<010>
+"
+0028[01]: @< Open name.
+0028[03]: Text. Text scrap[Grey]="Two"
+0028[06]: @> Close name.
+0028[08]: @( Open param.
+0028[10]: Text. Text scrap[Grey]="Toucan"
+0028[16]: @, Comma.
+0028[18]: Text. Text scrap[Grey]="Teapot"
+0028[24]: @} Close param.
+0028[26]: Text. Text scrap[White]="<010>
+"
+0029[01]: @< Open name.
+0029[03]: Text. Text scrap[Grey]="Three"
+0029[08]: @> Close name.
+0029[10]: @( Open param.
+0029[12]: Text. Text scrap[Grey]="Toucan"
+0029[18]: @, Comma.
+0029[20]: Text. Text scrap[Grey]="Teapot"
+0029[26]: @, Comma.
+0029[28]: Text. Text scrap[Grey]="Walrus"
+0029[34]: @} Close param.
+0029[36]: Text. Text scrap[White]="<010>
+"
+0030[01]: @< Open name.
+0030[03]: Text. Text scrap[Grey]="Nine"
+0030[07]: @> Close name.
+0030[09]: @( Open param.
+0030[11]: Text. Text scrap[Grey]="Toucan"
+0030[17]: @, Comma.
+0030[19]: Text. Text scrap[Grey]="Teapot"
+0030[25]: @, Comma.
+0030[27]: Text. Text scrap[Grey]="Walrus"
+0030[33]: @, Comma.
+0030[35]: Text. Text scrap[Grey]="<010>
+ Toucan"
+0031[17]: @, Comma.
+0031[19]: Text. Text scrap[Grey]="Teapot"
+0031[25]: @, Comma.
+0031[27]: Text. Text scrap[Grey]="Walrus"
+0031[33]: @, Comma.
+0031[35]: Text. Text scrap[Grey]="<010>
+ Toucan"
+0032[17]: @, Comma.
+0032[19]: Text. Text scrap[Grey]="Teapot"
+0032[25]: @, Comma.
+0032[27]: Text. Text scrap[Grey]="Walrus"
+0032[33]: @} Close param.
+0032[35]: Text. Text scrap[Grey]="<010>
+<010>
+5. Test macro calls with double quotes on parameters.<010>
+"
+0035[01]: @< Open name.
+0035[03]: Text. Text scrap[Grey]="One"
+0035[06]: @> Close name.
+0035[08]: @( Open param.
+0035[10]: Text. Text scrap[White]=" "
+0035[11]: @" Quote.
+0035[13]: Text. Text scrap[Grey]="Toucan"
+0035[19]: @" Quote.
+0035[21]: @} Close param.
+0035[23]: Text. Text scrap[White]="<010>
+"
+0036[01]: @< Open name.
+0036[03]: Text. Text scrap[Grey]="Two"
+0036[06]: @> Close name.
+0036[08]: @( Open param.
+0036[10]: @" Quote.
+0036[12]: Text. Text scrap[Grey]="Toucan"
+0036[18]: @" Quote.
+0036[20]: Text. Text scrap[White]=" "
+0036[23]: @, Comma.
+0036[25]: Text. Text scrap[White]=" "
+0036[28]: @" Quote.
+0036[30]: Text. Text scrap[Grey]="Teapot"
+0036[36]: @" Quote.
+0036[38]: @} Close param.
+0036[40]: Text. Text scrap[White]="<010>
+"
+0037[01]: @< Open name.
+0037[03]: Text. Text scrap[Grey]="Three"
+0037[08]: @> Close name.
+0037[10]: @( Open param.
+0037[12]: @" Quote.
+0037[14]: Text. Text scrap[Grey]="Toucan"
+0037[20]: @" Quote.
+0037[22]: Text. Text scrap[White]=" "
+0037[23]: @, Comma.
+0037[25]: Text. Text scrap[White]="<010>
+ "
+0038[12]: @" Quote.
+0038[14]: Text. Text scrap[Grey]="Teapot"
+0038[20]: @" Quote.
+0038[22]: Text. Text scrap[White]=" "
+0038[23]: @, Comma.
+0038[25]: Text. Text scrap[White]="<010>
+ "
+0039[12]: @" Quote.
+0039[14]: Text. Text scrap[Grey]="Walrus"
+0039[20]: @" Quote.
+0039[22]: Text. Text scrap[White]=" "
+0039[23]: @} Close param.
+0039[25]: Text. Text scrap[White]="<010>
+"
+0040[01]: @< Open name.
+0040[03]: Text. Text scrap[Grey]="Nine"
+0040[07]: @> Close name.
+0040[09]: @( Open param.
+0040[11]: Text. Text scrap[White]=" "
+0040[12]: @" Quote.
+0040[14]: Text. Text scrap[Grey]="Toucan"
+0040[20]: @" Quote.
+0040[22]: Text. Text scrap[White]=" "
+0040[23]: @, Comma.
+0040[25]: Text. Text scrap[White]=" "
+0040[26]: @" Quote.
+0040[28]: Text. Text scrap[Grey]="Teapot"
+0040[34]: @" Quote.
+0040[36]: Text. Text scrap[White]=" "
+0040[37]: @, Comma.
+0040[39]: Text. Text scrap[White]=" "
+0040[40]: @" Quote.
+0040[42]: Text. Text scrap[Grey]="Walrus"
+0040[48]: @" Quote.
+0040[50]: Text. Text scrap[White]=" "
+0040[51]: @, Comma.
+0040[53]: Text. Text scrap[White]="<010>
+ "
+0041[12]: @" Quote.
+0041[14]: Text. Text scrap[Grey]="Toucan"
+0041[20]: @" Quote.
+0041[22]: Text. Text scrap[White]=" "
+0041[23]: @, Comma.
+0041[25]: Text. Text scrap[White]=" "
+0041[26]: @" Quote.
+0041[28]: Text. Text scrap[Grey]="Teapot"
+0041[34]: @" Quote.
+0041[36]: Text. Text scrap[White]=" "
+0041[37]: @, Comma.
+0041[39]: Text. Text scrap[White]=" "
+0041[40]: @" Quote.
+0041[42]: Text. Text scrap[Grey]="Walrus"
+0041[48]: @" Quote.
+0041[50]: Text. Text scrap[White]=" "
+0041[51]: @, Comma.
+0041[53]: Text. Text scrap[White]="<010>
+ "
+0042[12]: @" Quote.
+0042[14]: Text. Text scrap[Grey]="Toucan"
+0042[20]: @" Quote.
+0042[22]: Text. Text scrap[White]=" "
+0042[23]: @, Comma.
+0042[25]: Text. Text scrap[White]=" "
+0042[26]: @" Quote.
+0042[28]: Text. Text scrap[Grey]="Teapot"
+0042[34]: @" Quote.
+0042[36]: Text. Text scrap[White]=" "
+0042[37]: @, Comma.
+0042[39]: Text. Text scrap[White]=" "
+0042[40]: @" Quote.
+0042[42]: Text. Text scrap[Grey]="Walrus"
+0042[48]: @" Quote.
+0042[50]: Text. Text scrap[White]=" "
+0042[51]: @} Close param.
+0042[53]: Text. Text scrap[Grey]="<010>
+<010>
+7. Test macro calls with mixed double quotes on parameters.<010>
+"
+0045[01]: @< Open name.
+0045[03]: Text. Text scrap[Grey]="Two"
+0045[06]: @> Close name.
+0045[08]: @( Open param.
+0045[10]: @" Quote.
+0045[12]: Text. Text scrap[Grey]="Toucan"
+0045[18]: @" Quote.
+0045[20]: Text. Text scrap[White]=" "
+0045[23]: @, Comma.
+0045[25]: Text. Text scrap[Grey]="Teapot"
+0045[31]: @} Close param.
+0045[33]: Text. Text scrap[White]="<010>
+"
+0046[01]: @< Open name.
+0046[03]: Text. Text scrap[Grey]="Three"
+0046[08]: @> Close name.
+0046[10]: @( Open param.
+0046[12]: @" Quote.
+0046[14]: Text. Text scrap[Grey]="Toucan"
+0046[20]: @" Quote.
+0046[22]: Text. Text scrap[White]=" "
+0046[23]: @, Comma.
+0046[25]: Text. Text scrap[White]="<010>
+ "
+0047[12]: @" Quote.
+0047[14]: Text. Text scrap[Grey]="Teapot"
+0047[20]: @" Quote.
+0047[22]: Text. Text scrap[White]=" "
+0047[23]: @, Comma.
+0047[25]: Text. Text scrap[Grey]="Walrus"
+0047[31]: @} Close param.
+0047[33]: Text. Text scrap[White]="<010>
+"
+0048[01]: @< Open name.
+0048[03]: Text. Text scrap[Grey]="Nine"
+0048[07]: @> Close name.
+0048[09]: @( Open param.
+0048[11]: Text. Text scrap[White]=" "
+0048[12]: @" Quote.
+0048[14]: Text. Text scrap[Grey]="Toucan"
+0048[20]: @" Quote.
+0048[22]: Text. Text scrap[White]=" "
+0048[23]: @, Comma.
+0048[25]: Text. Text scrap[White]=" "
+0048[26]: @" Quote.
+0048[28]: Text. Text scrap[Grey]="Teapot"
+0048[34]: @" Quote.
+0048[36]: Text. Text scrap[White]=" "
+0048[37]: @, Comma.
+0048[39]: Text. Text scrap[Grey]=" Walrus "
+0048[51]: @, Comma.
+0048[53]: Text. Text scrap[White]="<010>
+ "
+0049[12]: @" Quote.
+0049[14]: Text. Text scrap[Grey]="Toucan"
+0049[20]: @" Quote.
+0049[22]: Text. Text scrap[White]=" "
+0049[23]: @, Comma.
+0049[25]: Text. Text scrap[Grey]=" Teapot "
+0049[37]: @, Comma.
+0049[39]: Text. Text scrap[White]=" "
+0049[40]: @" Quote.
+0049[42]: Text. Text scrap[Grey]="Walrus"
+0049[48]: @" Quote.
+0049[50]: Text. Text scrap[White]=" "
+0049[51]: @, Comma.
+0049[53]: Text. Text scrap[White]="<010>
+ "
+0050[12]: @" Quote.
+0050[14]: Text. Text scrap[Grey]="Toucan"
+0050[20]: @" Quote.
+0050[22]: Text. Text scrap[White]=" "
+0050[23]: @, Comma.
+0050[25]: Text. Text scrap[White]=" "
+0050[26]: @" Quote.
+0050[28]: Text. Text scrap[Grey]="Teapot"
+0050[34]: @" Quote.
+0050[36]: Text. Text scrap[White]=" "
+0050[37]: @, Comma.
+0050[39]: Text. Text scrap[White]=" "
+0050[40]: @" Quote.
+0050[42]: Text. Text scrap[Grey]="Walrus"
+0050[48]: @" Quote.
+0050[50]: Text. Text scrap[White]=" "
+0050[51]: @} Close param.
+0050[53]: Text. Text scrap[White]="<010>
+<010>
+"
+0052[01]: @} Close defn.
+0052[03]: Text. Text scrap[White]=" "
+0053[01]: Text. Text scrap[Grey]="<010>
+8. Test macro calls with a variety of syntax errors in parameter list.<010>
+"
+0055[01]: @$ Macro defn.
+0055[03]: @< Open name.
+0055[05]: Text. Text scrap[Grey]="Error1"
+0055[11]: @> Close name.
+0055[13]: @{ Open defn.
+0055[15]: Text. Text scrap[White]="<010>
+"
+0056[01]: @< Open name.
+0056[03]: Text. Text scrap[Grey]="Zero"
+0056[07]: @> Close name.
+0056[09]: @( Open param.
+0056[11]: Text. Text scrap[White]="<010>
+"
+0057[01]: @} Close defn.
+0057[03]: Text. Text scrap[White]="<010>
+"
+0058[01]: @A New section (Level 1).
+0058[03]: @< Open name.
+0058[05]: Text. Text scrap[Grey]="Error recovery point"
+0058[25]: @> Close name.
+0058[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0060[01]: @$ Macro defn.
+0060[03]: @< Open name.
+0060[05]: Text. Text scrap[Grey]="Error2"
+0060[11]: @> Close name.
+0060[13]: @{ Open defn.
+0060[15]: Text. Text scrap[White]="<010>
+"
+0061[01]: @< Open name.
+0061[03]: Text. Text scrap[Grey]="Zero"
+0061[07]: @> Close name.
+0061[09]: @} Close param.
+0061[11]: Text. Text scrap[White]="<010>
+"
+0062[01]: @} Close defn.
+0062[03]: Text. Text scrap[White]="<010>
+"
+0063[01]: @A New section (Level 1).
+0063[03]: @< Open name.
+0063[05]: Text. Text scrap[Grey]="Error recovery point"
+0063[25]: @> Close name.
+0063[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0065[01]: @$ Macro defn.
+0065[03]: @< Open name.
+0065[05]: Text. Text scrap[Grey]="Error3"
+0065[11]: @> Close name.
+0065[13]: @{ Open defn.
+0065[15]: Text. Text scrap[White]="<010>
+"
+0066[01]: @< Open name.
+0066[03]: Text. Text scrap[Grey]="One"
+0066[06]: @> Close name.
+0066[08]: @( Open param.
+0066[10]: @" Quote.
+0066[12]: Text. Text scrap[Grey]="Toucan"
+0066[18]: @} Close param.
+0066[20]: Text. Text scrap[White]="<010>
+"
+0067[01]: @} Close defn.
+0067[03]: Text. Text scrap[White]="<010>
+"
+0068[01]: @A New section (Level 1).
+0068[03]: @< Open name.
+0068[05]: Text. Text scrap[Grey]="Error recovery point"
+0068[25]: @> Close name.
+0068[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0070[01]: @$ Macro defn.
+0070[03]: @< Open name.
+0070[05]: Text. Text scrap[Grey]="Error4"
+0070[11]: @> Close name.
+0070[13]: @{ Open defn.
+0070[15]: Text. Text scrap[White]="<010>
+"
+0071[01]: @< Open name.
+0071[03]: Text. Text scrap[Grey]="One"
+0071[06]: @> Close name.
+0071[08]: @( Open param.
+0071[10]: @" Quote.
+0071[12]: Text. Text scrap[Grey]="Toucan"
+0071[18]: @" Quote.
+0071[20]: @" Quote.
+0071[22]: Text. Text scrap[Grey]="Sloth"
+0071[27]: @" Quote.
+0071[29]: @} Close param.
+0071[31]: Text. Text scrap[White]="<010>
+"
+0072[01]: @} Close defn.
+0072[03]: Text. Text scrap[White]="<010>
+"
+0073[01]: @A New section (Level 1).
+0073[03]: @< Open name.
+0073[05]: Text. Text scrap[Grey]="Error recovery point"
+0073[25]: @> Close name.
+0073[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0075[01]: @$ Macro defn.
+0075[03]: @< Open name.
+0075[05]: Text. Text scrap[Grey]="Error5"
+0075[11]: @> Close name.
+0075[13]: @{ Open defn.
+0075[15]: Text. Text scrap[White]="<010>
+"
+0076[01]: @< Open name.
+0076[03]: Text. Text scrap[Grey]="Two"
+0076[06]: @> Close name.
+0076[08]: @( Open param.
+0076[10]: @" Quote.
+0076[12]: Text. Text scrap[Grey]="Toucan"
+0076[18]: @" Quote.
+0076[20]: Text. Text scrap[Grey]="Teapot"
+0076[26]: @} Close param.
+0076[28]: Text. Text scrap[White]="<010>
+"
+0077[01]: @} Close defn.
+0077[03]: Text. Text scrap[White]="<010>
+"
+0078[01]: @A New section (Level 1).
+0078[03]: @< Open name.
+0078[05]: Text. Text scrap[Grey]="Error recovery point"
+0078[25]: @> Close name.
+0078[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0080[01]: @$ Macro defn.
+0080[03]: @< Open name.
+0080[05]: Text. Text scrap[Grey]="Error6"
+0080[11]: @> Close name.
+0080[13]: @{ Open defn.
+0080[15]: Text. Text scrap[White]="<010>
+"
+0081[01]: @< Open name.
+0081[03]: Text. Text scrap[Grey]="Two"
+0081[06]: @> Close name.
+0081[08]: @( Open param.
+0081[10]: @" Quote.
+0081[12]: Text. Text scrap[Grey]="Toucan"
+0081[18]: @" Quote.
+0081[20]: Text. Text scrap[Grey]="Teapot<010>
+"
+0082[01]: @} Close defn.
+0082[03]: Text. Text scrap[White]="<010>
+"
+0083[01]: @A New section (Level 1).
+0083[03]: @< Open name.
+0083[05]: Text. Text scrap[Grey]="Error recovery point"
+0083[25]: @> Close name.
+0083[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0085[01]: @$ Macro defn.
+0085[03]: @< Open name.
+0085[05]: Text. Text scrap[Grey]="Error7"
+0085[11]: @> Close name.
+0085[13]: @{ Open defn.
+0085[15]: Text. Text scrap[White]="<010>
+"
+0086[01]: @< Open name.
+0086[03]: Text. Text scrap[Grey]="Two"
+0086[06]: @> Close name.
+0086[08]: @( Open param.
+0086[10]: @" Quote.
+0086[12]: Text. Text scrap[Grey]="Toucan"
+0086[18]: @" Quote.
+0086[20]: Text. Text scrap[Grey]="Teapot<010>
+"
+0087[01]: @< Open name.
+0087[03]: Text. Text scrap[Grey]="Three"
+0087[08]: @> Close name.
+0087[10]: @( Open param.
+0087[12]: Text. Text scrap[Grey]="Toucan"
+0087[18]: @, Comma.
+0087[20]: Text. Text scrap[White]="<010>
+ "
+0088[12]: @" Quote.
+0088[14]: Text. Text scrap[Grey]="Teapot"
+0088[20]: @, Comma.
+0088[22]: Text. Text scrap[Grey]="Walrus<010>
+<010>
+"
+0090[01]: @} Close defn.
+0090[03]: Text. Text scrap[White]="<010>
+"
+0091[01]: @A New section (Level 1).
+0091[03]: @< Open name.
+0091[05]: Text. Text scrap[Grey]="Error recovery point"
+0091[25]: @> Close name.
+0091[27]: Text. Text scrap[White]="<010>
+<010>
+"
+0093[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : """
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+ Call 1: Parameters=0, Sequence num=7, Position(L,C)=(22,1).
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=6, Pos(L,C)=(13,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error1"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error2"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error3"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error4"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error5"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=8, Pos(L,C)=(75,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[White]="<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Two@>
+This invocation has 1 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[White]="<010>
+"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error6"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Error7"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Macro containing the test macro calls."
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=7, Pos(L,C)=(17,3), Expression follows:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="<010>
+1. Test macro call with no parameter list.<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Zero@>
+No actual parameters.
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="<010>
+<010>
+2. Test macro call with quick name.<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<"@>
+No actual parameters.
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="<010>
+<010>
+3. Test macro call with one parameter.<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<One@>
+This invocation has 1 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="<010>
+<010>
+4. Test macro call with many parameters.<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Two@>
+This invocation has 2 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 2:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[White]="<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Three@>
+This invocation has 3 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 2:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 3:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[White]="<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Nine@>
+This invocation has 9 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 2:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 3:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 4:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="<010>
+ Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 5:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 6:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 7:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="<010>
+ Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 8:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 9:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="<010>
+<010>
+5. Test macro calls with double quotes on parameters.<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<One@>
+This invocation has 1 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[White]="<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Two@>
+This invocation has 2 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 2:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[White]="<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Three@>
+This invocation has 3 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 2:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 3:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[White]="<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Nine@>
+This invocation has 9 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 2:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 3:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 4:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 5:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 6:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 7:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 8:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 9:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[Grey]="<010>
+<010>
+7. Test macro calls with mixed double quotes on parameters.<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Two@>
+This invocation has 2 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 2:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[White]="<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Three@>
+This invocation has 3 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 2:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 3:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[White]="<010>
+"
+------ End Text Element ------
+
+
+-- Begin Invocation Element --
+Invocation of macro @<Nine@>
+This invocation has 9 actual parameters.
+Actual parameter list follows as a sequence of expressions:
+(Text crud before and after parameter has been omitted).
+Expression for parameter number 1:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 2:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 3:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]=" Walrus "
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 4:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 5:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]=" Teapot "
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 6:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 7:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Toucan"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 8:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Teapot"
+------ End Text Element ------
+
+----- End of Expression -----
+
+Expression for parameter number 9:
+
+---- Start of Expression ----
+
+----- Start Text Element -----
+Text scrap[Grey]="Walrus"
+------ End Text Element ------
+
+----- End of Expression -----
+
+--- End Invocation Element ---
+
+
+----- Start Text Element -----
+Text scrap[White]="<010>
+<010>
+"
+------ End Text Element ------
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Nine"
+Defined? : Yes.
+Parameters : 9
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+ Call 1: Parameters=9, Sequence num=7, Position(L,C)=(30,1).
+ Call 2: Parameters=9, Sequence num=7, Position(L,C)=(40,1).
+ Call 3: Parameters=9, Sequence num=7, Position(L,C)=(48,1).
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=5, Pos(L,C)=(12,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "One"
+Defined? : Yes.
+Parameters : 1
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+ Call 1: Parameters=1, Sequence num=7, Position(L,C)=(25,1).
+ Call 2: Parameters=1, Sequence num=7, Position(L,C)=(35,1).
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=2, Pos(L,C)=(9,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Three"
+Defined? : Yes.
+Parameters : 3
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+ Call 1: Parameters=3, Sequence num=7, Position(L,C)=(29,1).
+ Call 2: Parameters=3, Sequence num=7, Position(L,C)=(37,1).
+ Call 3: Parameters=3, Sequence num=7, Position(L,C)=(46,1).
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=4, Pos(L,C)=(11,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Two"
+Defined? : Yes.
+Parameters : 2
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+ Call 1: Parameters=2, Sequence num=7, Position(L,C)=(28,1).
+ Call 2: Parameters=2, Sequence num=7, Position(L,C)=(36,1).
+ Call 3: Parameters=2, Sequence num=7, Position(L,C)=(45,1).
+ Call 4: Parameters=1, Sequence num=8, Position(L,C)=(76,1).
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=3, Pos(L,C)=(10,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Zero"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+ Call 1: Parameters=0, Sequence num=7, Position(L,C)=(19,1).
+ Call 2: Parameters=0, Sequence num=8, Position(L,C)=(61,1).
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=1, Pos(L,C)=(8,3), Expression follows:
+
+---- Start of Expression ----
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR09: Test calls and actual parameter lists.<010>
+<010>
+First trip up the parser so we don't get any further.<010>
+"
+--- End of Text Scrap List ---
+
+
+TEXT COMPONENT: Pos(L,C)=(4,3).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+Now define some macros to call. No error.<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(8,1).
+Part 1 of macro @<Zero@>.
+
+TEXT COMPONENT: Pos(L,C)=(8,15).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(9,1).
+Part 1 of macro @<One@>.
+
+TEXT COMPONENT: Pos(L,C)=(9,20).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
+Part 1 of macro @<Two@>.
+
+TEXT COMPONENT: Pos(L,C)=(10,20).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(11,1).
+Part 1 of macro @<Three@>.
+
+TEXT COMPONENT: Pos(L,C)=(11,22).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(12,1).
+Part 1 of macro @<Nine@>.
+
+TEXT COMPONENT: Pos(L,C)=(12,21).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
+Part 1 of macro @<"@>.
+
+TEXT COMPONENT: Pos(L,C)=(13,10).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+The following test calls should NOT generate any errors.<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(17,1).
+Part 1 of macro @<Macro containing the test macro calls.@>.
+
+TEXT COMPONENT: Pos(L,C)=(52,3).
+
+-- Start of Text Scrap List --
+Text scrap[White]=" "
+Text scrap[Grey]="<010>
+8. Test macro calls with a variety of syntax errors in parameter list.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(58,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(63,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "3", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(68,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "4", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(73,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+MACRO DEFINITION COMPONENT: Pos(L,C)=(75,1).
+Part 1 of macro @<Error5@>.
+
+TEXT COMPONENT: Pos(L,C)=(77,3).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "5", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(78,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "6", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(83,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "7", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(91,27).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| PR09: Test calls and actual parameter lists.
+ 2 2|
+ 3 3| First trip up the parser so we don't get any further.
+ 4 4| @>
+ Error|.^The parser was at the top level and was expecting
+ |.^one of: {Directive, Text, Macro definition, EOF}.
+ 5 5|
+ 6 6| Now define some macros to call. No error.
+ 7 7|
+ 8 8| @$@<Zero@>@{@}
+ 9 9| @$@<One@>@(@1@)@{@}
+ 10 10| @$@<Two@>@(@2@)@{@}
+ 11 11| @$@<Three@>@(@3@)@{@}
+ 12 12| @$@<Nine@>@(@9@)@{@}
+ 13 13| @$@#"@{@}
+ 14 14|
+ 15 15| The following test calls should NOT generate any errors.
+ 16 16|
+ 17 17| @$@<Macro containing the test macro calls.@>==@{
+ 18 18| 1. Test macro call with no parameter list.
+ 19 19| @<Zero@>
+ 20 20|
+ 21 21| 2. Test macro call with quick name.
+ 22 22| @#"
+ 23 23|
+ 24 24| 3. Test macro call with one parameter.
+ 25 25| @<One@>@(Toucan@)
+ 26 26|
+ 27 27| 4. Test macro call with many parameters.
+ 28 28| @<Two@>@(Toucan@,Teapot@)
+ 29 29| @<Three@>@(Toucan@,Teapot@,Walrus@)
+ 30 30| @<Nine@>@(Toucan@,Teapot@,Walrus@,
+ 31 31| Toucan@,Teapot@,Walrus@,
+ 32 32| Toucan@,Teapot@,Walrus@)
+ 33 33|
+ 34 34| 5. Test macro calls with double quotes on parameters.
+ 35 35| @<One@>@( @"Toucan@"@)
+ 36 36| @<Two@>@(@"Toucan@" @, @"Teapot@"@)
+ 37 37| @<Three@>@(@"Toucan@" @,
+ 38 38| @"Teapot@" @,
+ 39 39| @"Walrus@" @)
+ 40 40| @<Nine@>@( @"Toucan@" @, @"Teapot@" @, @"Walrus@" @,
+ 41 41| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @,
+ 42 42| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @)
+ 43 43|
+ 44 44| 7. Test macro calls with mixed double quotes on parameters.
+ 45 45| @<Two@>@(@"Toucan@" @,Teapot@)
+ 46 46| @<Three@>@(@"Toucan@" @,
+ 47 47| @"Teapot@" @,Walrus@)
+ 48 48| @<Nine@>@( @"Toucan@" @, @"Teapot@" @, Walrus @,
+ 49 49| @"Toucan@" @, Teapot @, @"Walrus@" @,
+ 50 50| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @)
+ 51 51|
+ 52 52| @} @! End of macro definition enclosing all these legal tests.
+ 53 53|
+ 54 54| 8. Test macro calls with a variety of syntax errors in parameter list.
+ 55 55| @$@<Error1@>@{
+ 56 56| @<Zero@>@(
+ 57 57| @}
+ Error|.^Expecting @" or @, or @).
+ |.^Skipping after error to the next major construct...
+ 58 58| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 59 59|
+ 60 60| @$@<Error2@>@{
+ 61 61| @<Zero@>@)
+ Error|.........^Expecting '@}'.
+ |.........^Skipping after error to the next major construct...
+ 62 62| @}
+ 63 63| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 64 64|
+ 65 65| @$@<Error3@>@{
+ 66 66| @<One@>@(@"Toucan@)
+ Error|..................^Expecting '@"'.
+ |..................^Skipping after error to the next major construct...
+ 67 67| @}
+ 68 68| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 69 69|
+ 70 70| @$@<Error4@>@{
+ 71 71| @<One@>@(@"Toucan@"@"Sloth@"@)
+ Error|....................^Expecting @, or @).
+ |....................^Skipping after error to the next major construct...
+ 72 72| @}
+ 73 73| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 74 74|
+ 75 75| @$@<Error5@>@{
+ 76 76| @<Two@>@(@"Toucan@"Teapot@)
+ Error|....................^Expecting whitespace text.
+ 77 77| @}
+ 78 78| @A@<Error recovery point@>
+ 79 79|
+ 80 80| @$@<Error6@>@{
+ 81 81| @<Two@>@(@"Toucan@"Teapot
+ Error|....................^Expecting whitespace text.
+ 82 82| @}
+ Error|.^Expecting @, or @).
+ |.^Skipping after error to the next major construct...
+ 83 83| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 84 84|
+ 85 85| @$@<Error7@>@{
+ 86 86| @<Two@>@(@"Toucan@"Teapot
+ Error|....................^Expecting whitespace text.
+ 87 87| @<Three@>@(Toucan@,
+ Error|.^Expecting @, or @).
+ |.^Skipping after error to the next major construct...
+ 88 88| @"Teapot@,Walrus
+ 89 89|
+ 90 90| @}
+ 91 91| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 92 92|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 10 Errors.
diff --git a/web/funnelAC/results/pr10.lis b/web/funnelAC/results/pr10.lis
new file mode 100644
index 0000000000..2575a8c12c
--- /dev/null
+++ b/web/funnelAC/results/pr10.lis
@@ -0,0 +1,487 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 50 52 31 30 3A 20 54 65 73 74 20 73 79 6E 74 61 | PR10: Test synta |
+| 63 74 69 63 20 65 72 72 6F 72 20 72 65 63 6F 76 | ctic error recov |
+| 65 72 79 2E 0A 0A 31 2E 20 54 65 73 74 20 72 65 | ery...1. Test re |
+| 63 6F 76 65 72 79 20 61 74 20 74 6F 70 20 70 61 | covery at top pa |
+| 72 73 69 6E 67 20 6C 65 76 65 6C 2E 0A 40 3C 0A | rsing level..@<. |
+| 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 | .@A@<Error recov |
+| 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 32 2E 20 | ery point@>..2. |
+| 54 65 73 74 20 72 65 63 6F 76 65 72 79 20 69 6E | Test recovery in |
+| 73 69 64 65 20 6D 61 63 72 6F 20 64 65 66 69 6E | side macro defin |
+| 69 74 69 6F 6E 2E 0A 0A 40 24 40 3C 53 6C 6F 74 | ition...@$@<Slot |
+| 68 31 40 3E 40 3E 3D 3D 40 7B 0A 57 61 6C 72 75 | h1@>@>==@{.Walru |
+| 73 40 7D 0A 0A 40 24 40 3C 53 6C 6F 74 68 32 40 | s@}..@$@<Sloth2@ |
+| 3E 3D 3D 40 7B 0A 40 3C 57 61 6C 72 75 73 40 3C | >==@{.@<Walrus@< |
+| 0A 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 | .@}.@A@<Error re |
+| 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A | covery point@>.. |
+| 33 2E 20 54 65 73 74 20 72 65 63 6F 76 65 72 79 | 3. Test recovery |
+| 20 69 6E 73 69 64 65 20 61 63 74 75 61 6C 20 70 | inside actual p |
+| 61 72 61 6D 65 74 65 72 20 6C 69 73 74 20 69 6E | arameter list in |
+| 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 6F | macro definitio |
+| 6E 2E 0A 40 24 40 3C 53 6C 6F 74 68 33 40 3E 3D | n..@$@<Sloth3@>= |
+| 3D 40 7B 0A 40 3C 57 61 6C 72 75 73 40 3E 40 28 | =@{.@<Walrus@>@( |
+| 40 22 61 61 72 64 76 61 72 6B 40 3E 0A 40 7D 0A | @"aardvark@>.@}. |
+| 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 | @A@<Error recove |
+| 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 34 2E 20 54 | ry point@>..4. T |
+| 65 73 74 20 45 4F 46 20 69 6E 20 74 68 65 20 6D | est EOF in the m |
+| 69 64 64 6C 65 20 6F 66 20 61 20 63 6F 6D 70 6C | iddle of a compl |
+| 69 63 61 74 65 64 20 63 6F 6E 73 74 72 75 63 74 | icated construct |
+| 2E 0A 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 | ..The following |
+| 6D 61 6B 65 73 20 74 68 65 20 65 6E 64 20 6F 66 | makes the end of |
+| 20 74 68 65 20 66 69 6C 65 20 6C 6F 6F 6B 65 64 | the file looked |
+| 20 63 68 6F 70 70 65 64 20 6F 66 66 2C 20 62 75 | chopped off, bu |
+| 74 20 69 74 20 69 73 0A 61 63 74 75 61 6C 6C 79 | t it is.actually |
+| 20 69 6E 74 65 6E 74 69 6F 6E 61 6C 2E 0A 40 24 | intentional..@$ |
+| 40 3C 53 6C 6F 74 68 34 40 3E 3D 3D 40 7B 0A 40 | @<Sloth4@>==@{.@ |
+| 3C 57 61 6C 72 75 73 40 3E 40 28 40 22 61 61 72 | <Walrus@>@(@"aar |
+| 64 76 61 0A | dva. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| PR10: Test syntactic error recovery.<010>
+00002 00002| <010>
+00003 00003| 1. Test recovery at top parsing level.<010>
+00004 00004| @<<010>
+00005 00005| <010>
+00006 00006| @A@<Error recovery point@><010>
+00007 00007| <010>
+00008 00008| 2. Test recovery inside macro definition.<010>
+00009 00009| <010>
+00010 00010| @$@<Sloth1@>@>==@{<010>
+00011 00011| Walrus@}<010>
+00012 00012| <010>
+00013 00013| @$@<Sloth2@>==@{<010>
+00014 00014| @<Walrus@<<010>
+00015 00015| @}<010>
+00016 00016| @A@<Error recovery point@><010>
+00017 00017| <010>
+00018 00018| 3. Test recovery inside actual parameter list in macro definition.<010>
+00019 00019| @$@<Sloth3@>==@{<010>
+00020 00020| @<Walrus@>@(@"aardvark@><010>
+00021 00021| @}<010>
+00022 00022| @A@<Error recovery point@><010>
+00023 00023| <010>
+00024 00024| 4. Test EOF in the middle of a complicated construct.<010>
+00025 00025| The following makes the end of the file looked chopped off, but it is<010>
+00026 00026| actually intentional.<010>
+00027 00027| @$@<Sloth4@>==@{<010>
+00028 00028| @<Walrus@>@(@"aardva<010>
+00029 00029| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 72 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="PR10: Test syntactic error recovery.<010>
+<010>
+1. Test recovery at top parsing level.<010>
+"
+0004[01]: @< Open name.
+0004[03]: Text. Text scrap[White]="<010>
+<010>
+"
+0006[01]: @A New section (Level 1).
+0006[03]: @< Open name.
+0006[05]: Text. Text scrap[Grey]="Error recovery point"
+0006[25]: @> Close name.
+0006[27]: Text. Text scrap[Grey]="<010>
+<010>
+2. Test recovery inside macro definition.<010>
+<010>
+"
+0010[01]: @$ Macro defn.
+0010[03]: @< Open name.
+0010[05]: Text. Text scrap[Grey]="Sloth1"
+0010[11]: @> Close name.
+0010[13]: @> Close name.
+0010[15]: Text. Text scrap[Grey]="=="
+0010[17]: @{ Open defn.
+0010[19]: Text. Text scrap[Grey]="<010>
+Walrus"
+0011[07]: @} Close defn.
+0011[09]: Text. Text scrap[White]="<010>
+<010>
+"
+0013[01]: @$ Macro defn.
+0013[03]: @< Open name.
+0013[05]: Text. Text scrap[Grey]="Sloth2"
+0013[11]: @> Close name.
+0013[13]: Text. Text scrap[Grey]="=="
+0013[15]: @{ Open defn.
+0013[17]: Text. Text scrap[White]="<010>
+"
+0014[01]: @< Open name.
+0014[03]: Text. Text scrap[Grey]="Walrus"
+0014[09]: @< Open name.
+0014[11]: Text. Text scrap[White]="<010>
+"
+0015[01]: @} Close defn.
+0015[03]: Text. Text scrap[White]="<010>
+"
+0016[01]: @A New section (Level 1).
+0016[03]: @< Open name.
+0016[05]: Text. Text scrap[Grey]="Error recovery point"
+0016[25]: @> Close name.
+0016[27]: Text. Text scrap[Grey]="<010>
+<010>
+3. Test recovery inside actual parameter list in macro definition.<010>
+"
+0019[01]: @$ Macro defn.
+0019[03]: @< Open name.
+0019[05]: Text. Text scrap[Grey]="Sloth3"
+0019[11]: @> Close name.
+0019[13]: Text. Text scrap[Grey]="=="
+0019[15]: @{ Open defn.
+0019[17]: Text. Text scrap[White]="<010>
+"
+0020[01]: @< Open name.
+0020[03]: Text. Text scrap[Grey]="Walrus"
+0020[09]: @> Close name.
+0020[11]: @( Open param.
+0020[13]: @" Quote.
+0020[15]: Text. Text scrap[Grey]="aardvark"
+0020[23]: @> Close name.
+0020[25]: Text. Text scrap[White]="<010>
+"
+0021[01]: @} Close defn.
+0021[03]: Text. Text scrap[White]="<010>
+"
+0022[01]: @A New section (Level 1).
+0022[03]: @< Open name.
+0022[05]: Text. Text scrap[Grey]="Error recovery point"
+0022[25]: @> Close name.
+0022[27]: Text. Text scrap[Grey]="<010>
+<010>
+4. Test EOF in the middle of a complicated construct.<010>
+The following makes the end of the file looked chopped off, but it is<010>
+actually intentional.<010>
+"
+0027[01]: @$ Macro defn.
+0027[03]: @< Open name.
+0027[05]: Text. Text scrap[Grey]="Sloth4"
+0027[11]: @> Close name.
+0027[13]: Text. Text scrap[Grey]="=="
+0027[15]: @{ Open defn.
+0027[17]: Text. Text scrap[White]="<010>
+"
+0028[01]: @< Open name.
+0028[03]: Text. Text scrap[Grey]="Walrus"
+0028[09]: @> Close name.
+0028[11]: @( Open param.
+0028[13]: @" Quote.
+0028[15]: Text. Text scrap[Grey]="aardva<010>
+"
+0029[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth1"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth2"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth3"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "Sloth4"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : No.
+Many Calls? : No.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 0 body parts.
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="PR10: Test syntactic error recovery.<010>
+<010>
+1. Test recovery at top parsing level.<010>
+"
+--- End of Text Scrap List ---
+
+
+TEXT COMPONENT: Pos(L,C)=(4,3).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "1", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(6,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+2. Test recovery inside macro definition.<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "2", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(16,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+3. Test recovery inside actual parameter list in macro definition.<010>
+"
+--- End of Text Scrap List ---
+
+
+TYPESETTER DIRECTIVE COMPONENT:
+ Section "3", Section name="Error recovery point".
+
+TEXT COMPONENT: Pos(L,C)=(22,27).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="<010>
+<010>
+4. Test EOF in the middle of a complicated construct.<010>
+The following makes the end of the file looked chopped off, but it is<010>
+actually intentional.<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| PR10: Test syntactic error recovery.
+ 2 2|
+ 3 3| 1. Test recovery at top parsing level.
+ 4 4| @<
+ Error|.^The parser was at the top level and was expecting
+ |.^one of: {Directive, Text, Macro definition, EOF}.
+ 5 5|
+ 6 6| @A@<Error recovery point@>
+ 7 7|
+ 8 8| 2. Test recovery inside macro definition.
+ 9 9|
+ 10 10| @$@<Sloth1@>@>==@{
+ Error|.............^Expecting '@{'.
+ |.............^Skipping after error to the next major construct...
+ 11 11| Walrus@}
+ 12 12|
+ 13 13| @$@<Sloth2@>==@{
+ |.^...skipped to here after the error.
+ 14 14| @<Walrus@<
+ Error|.........^Illegal character or symbol in name.
+ |.........^Skipping after error to the next major construct...
+ 15 15| @}
+ 16 16| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 17 17|
+ 18 18| 3. Test recovery inside actual parameter list in macro definition.
+ 19 19| @$@<Sloth3@>==@{
+ 20 20| @<Walrus@>@(@"aardvark@>
+ Error|.......................^Expecting '@"'.
+ |.......................^Skipping after error to the next major construct...
+ 21 21| @}
+ 22 22| @A@<Error recovery point@>
+ |.^...skipped to here after the error.
+ 23 23|
+ 24 24| 4. Test EOF in the middle of a complicated construct.
+ 25 25| The following makes the end of the file looked chopped off, but it is
+ 26 26| actually intentional.
+ 27 27| @$@<Sloth4@>==@{
+ 28 28| @<Walrus@>@(@"aardva
+ | <End-Of-File>
+ Error|.^Expecting '@"'.
+ |.^Skipping after error to the next major construct...
+ |.^...skipped to here after the error.
+------------+-------------------------------------------------------------------
+
+There were 5 Errors.
diff --git a/web/funnelAC/results/sc01.lis b/web/funnelAC/results/sc01.lis
new file mode 100644
index 0000000000..63a28eb6b6
--- /dev/null
+++ b/web/funnelAC/results/sc01.lis
@@ -0,0 +1,35 @@
+FUNNELWEB LISTING FILE
+======================
+
+S: Error opening input file "<<Suppressed>>".
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 1 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+There was 1 Severe error.
diff --git a/web/funnelAC/results/sc02.lis b/web/funnelAC/results/sc02.lis
new file mode 100644
index 0000000000..c56ff926c9
--- /dev/null
+++ b/web/funnelAC/results/sc02.lis
@@ -0,0 +1,143 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 1 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ | <End-Of-File>
+ Warning|.^Input file is empty (not a byte in syte)!
+------------+-------------------------------------------------------------------
+
+There was 1 Error and 1 Warning.
diff --git a/web/funnelAC/results/sc03.lis b/web/funnelAC/results/sc03.lis
new file mode 100644
index 0000000000..7ab141b85a
--- /dev/null
+++ b/web/funnelAC/results/sc03.lis
@@ -0,0 +1,154 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 0A | . |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| <010>
+00002 00002| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 2 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[White]="<010>
+"
+0002[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/sc04.lis b/web/funnelAC/results/sc04.lis
new file mode 100644
index 0000000000..7f5a985041
--- /dev/null
+++ b/web/funnelAC/results/sc04.lis
@@ -0,0 +1,157 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 0A 0A | .. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| <010>
+00002 00002| <010>
+00003 00003| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 2 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[White]="<010>
+<010>
+"
+0003[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[White]="<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/sc05.lis b/web/funnelAC/results/sc05.lis
new file mode 100644
index 0000000000..1a1d59e6d0
--- /dev/null
+++ b/web/funnelAC/results/sc05.lis
@@ -0,0 +1,158 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 30 35 3A 20 54 68 69 73 20 69 6E 70 75 74 | SC05: This input |
+| 20 66 69 6C 65 20 63 6F 6E 74 61 69 6E 73 20 61 | file contains a |
+| 20 73 69 6E 67 6C 65 20 6C 69 6E 65 20 63 6F 6E | single line con |
+| 74 61 69 6E 69 6E 67 20 74 68 69 73 20 74 65 78 | taining this tex |
+| 74 21 0A | t!. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC05: This input file contains a single line containing this text!<010>
+00002 00002| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 2 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC05: This input file contains a single line containing this text!<010>
+"
+0002[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="SC05: This input file contains a single line containing this text!<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/sc06.lis b/web/funnelAC/results/sc06.lis
new file mode 100644
index 0000000000..3eaf782140
--- /dev/null
+++ b/web/funnelAC/results/sc06.lis
@@ -0,0 +1,166 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 30 36 3A 20 54 65 73 74 20 46 75 6E 6E 65 | SC06: Test Funne |
+| 6C 57 65 62 20 6F 6E 20 61 20 66 69 6C 65 20 77 | lWeb on a file w |
+| 68 6F 73 65 20 6C 61 73 74 20 6C 69 6E 65 20 69 | hose last line i |
+| 73 20 6E 6F 74 20 74 65 72 6D 69 6E 61 74 65 64 | s not terminated |
+| 20 70 72 6F 70 65 72 6C 79 0A 77 69 74 68 20 61 | properly.with a |
+| 6E 20 65 6E 64 20 6F 66 20 6C 69 6E 65 20 6D 61 | n end of line ma |
+| 72 6B 65 72 2E 0A 0A | rker... |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC06: Test FunnelWeb on a file whose last line is not terminated properly<010>
+00002 00002| with an end of line marker.<010>
+00003 00003| <010>
+00004 00004| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 2 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC06: Test FunnelWeb on a file whose last line is not terminated properly<010>
+with an end of line marker.<010>
+<010>
+"
+0004[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="SC06: Test FunnelWeb on a file whose last line is not terminated properly<010>
+with an end of line marker.<010>
+<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/sc07.lis b/web/funnelAC/results/sc07.lis
new file mode 100644
index 0000000000..b4f069ddcf
--- /dev/null
+++ b/web/funnelAC/results/sc07.lis
@@ -0,0 +1,187 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 30 37 3A 20 50 72 6F 63 65 73 73 69 6E 67 | SC07: Processing |
+| 20 6F 66 20 6C 6F 6E 67 20 6C 69 6E 65 73 2E 0A | of long lines.. |
+| 0A 53 43 30 37 2E 31 3A 20 44 65 74 65 63 74 69 | .SC07.1: Detecti |
+| 6F 6E 20 6F 66 20 61 20 6C 69 6E 65 20 6C 6F 6E | on of a line lon |
+| 67 65 72 20 74 68 61 6E 20 74 68 65 20 64 65 66 | ger than the def |
+| 61 75 6C 74 20 6C 69 6D 69 74 2E 0A 0A 54 68 65 | ault limit...The |
+| 20 64 65 66 61 75 6C 74 20 6C 69 6D 69 74 20 69 | default limit i |
+| 73 20 38 30 20 63 68 61 72 61 63 74 65 72 73 20 | s 80 characters |
+| 73 6F 20 77 65 20 77 69 6C 6C 20 74 65 73 74 20 | so we will test |
+| 6F 6E 20 65 69 74 68 65 72 20 73 69 64 65 20 6F | on either side o |
+| 66 0A 74 68 61 74 3A 0A 20 20 20 20 20 20 20 20 | f.that:. |
+| 20 31 20 20 20 20 20 20 20 20 20 32 20 20 20 20 | 1 2 |
+| 20 20 20 20 20 33 20 20 20 20 20 20 20 20 20 34 | 3 4 |
+| 20 20 20 20 20 20 20 20 20 35 20 20 20 20 20 20 | 5 |
+| 20 20 20 36 20 20 20 20 20 20 20 20 20 37 20 20 | 6 7 |
+| 20 20 20 20 20 20 20 38 0A 31 32 33 34 35 36 37 | 8.1234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 0A 54 68 65 20 61 62 | 234567890.The ab |
+| 6F 76 65 20 73 68 6F 75 6C 64 20 6E 6F 74 20 74 | ove should not t |
+| 72 69 67 67 65 72 20 61 20 22 6C 69 6E 65 20 74 | rigger a "line t |
+| 6F 6F 20 6C 6F 6E 67 20 65 72 72 6F 72 22 2E 20 | oo long error". |
+| 42 75 74 20 74 68 69 73 20 6C 69 6E 65 20 73 68 | But this line sh |
+| 6F 75 6C 64 21 2D 2D 2D 2D 2D 2D 0A 0A 53 43 30 | ould!------..SC0 |
+| 37 2E 33 3A 20 54 65 73 74 20 74 68 65 20 6C 69 | 7.3: Test the li |
+| 6D 69 74 20 73 65 74 20 61 74 20 69 6E 66 69 6E | mit set at infin |
+| 69 74 79 2E 0A 0A 40 70 20 6D 61 78 69 6D 75 6D | ity...@p maximum |
+| 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | _input_line_leng |
+| 74 68 20 3D 20 69 6E 66 69 6E 69 74 79 0A 0A 20 | th = infinity.. |
+| 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 | 1 |
+| 20 20 32 20 20 20 20 20 20 20 20 20 33 20 20 20 | 2 3 |
+| 20 20 20 20 20 20 34 20 20 20 20 20 20 20 20 20 | 4 |
+| 35 20 20 20 20 20 20 20 20 20 36 20 20 20 20 20 | 5 6 |
+| 20 20 20 20 37 20 20 20 20 20 20 20 20 20 38 0A | 7 8. |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 0A 54 68 65 20 61 62 6F 76 65 20 73 68 6F 75 6C | .The above shoul |
+| 64 20 6E 6F 74 20 74 72 69 67 67 65 72 20 61 20 | d not trigger a |
+| 22 6C 69 6E 65 20 74 6F 6F 20 6C 6F 6E 67 20 65 | "line too long e |
+| 72 72 6F 72 22 2E 20 4E 6F 72 20 73 68 6F 75 6C | rror". Nor shoul |
+| 64 20 74 68 69 73 20 6F 6E 65 21 2D 2D 2D 2D 2D | d this one!----- |
+| 2D 2D 0A 0A 53 43 30 37 2E 33 3A 20 54 65 73 74 | --..SC07.3: Test |
+| 20 74 68 65 20 6C 69 6D 69 74 20 73 65 74 20 6C | the limit set l |
+| 6F 77 65 72 2E 0A 0A 40 70 20 6D 61 78 69 6D 75 | ower...@p maximu |
+| 6D 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E | m_input_line_len |
+| 67 74 68 20 3D 20 35 30 0A 0A 20 20 20 20 20 20 | gth = 50.. |
+| 20 20 20 31 20 20 20 20 20 20 20 20 20 32 20 20 | 1 2 |
+| 20 20 20 20 20 20 20 33 20 20 20 20 20 20 20 20 | 3 |
+| 20 34 20 20 20 20 20 20 20 20 20 35 0A 31 32 33 | 4 5.123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 0A | 678901234567890. |
+| 4E 6F 20 65 72 72 6F 72 20 66 6F 72 20 74 68 65 | No error for the |
+| 20 61 62 6F 76 65 20 62 75 74 20 74 68 69 73 20 | above but this |
+| 6C 69 6E 65 20 77 69 6C 6C 21 2D 2D 2D 2D 2D 2D | line will!------ |
+| 2D 2D 2D 0A | ---. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC07: Processing of long lines.<010>
+00002 00002| <010>
+00003 00003| SC07.1: Detection of a line longer than the default limit.<010>
+00004 00004| <010>
+00005 00005| The default limit is 80 characters so we will test on either side of<010>
+00006 00006| that:<010>
+00007 00007| 1 2 3 4 5 6 7 8<010>
+00008 00008| 12345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
+00009 00009| The above should not trigger a "line too long error". But this line should!------<010>
+00010 00010| <010>
+00011 00011| SC07.3: Test the limit set at infinity.<010>
+00012 00012| <010>
+00013 00013| @p maximum_input_line_length = infinity<010>
+00014 00014| <010>
+00015 00015| 1 2 3 4 5 6 7 8<010>
+00016 00016| 12345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
+00017 00017| The above should not trigger a "line too long error". Nor should this one!-------<010>
+00018 00018| <010>
+00019 00019| SC07.3: Test the limit set lower.<010>
+00020 00020| <010>
+00021 00021| @p maximum_input_line_length = 50<010>
+00022 00022| <010>
+00023 00023| 1 2 3 4 5<010>
+00024 00024| 12345678901234567890123456789012345678901234567890<010>
+00025 00025| No error for the above but this line will!---------<010>
+00026 00026| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 4 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC07: Processing of long lines.<010>
+<010>
+SC07.1: Detection of a line longer than the default limit.<010>
+<010>
+The default limit is 80 characters so we will test on either side of<010>
+that:<010>
+ 1 2 3 4 5 6 7 8<010>
+12345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
+The above should not trigger a "line too long error". But this line should!------<010>
+<010>
+SC07.3: Test the limit set at infinity.<010>
+<010>
+"
+0014[01]: Text. Text scrap[Grey]="<010>
+ 1 2 3 4 5 6 7 8<010>
+12345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
+The above should not trigger a "line too long error". Nor should this one!-------<010>
+<010>
+SC07.3: Test the limit set lower.<010>
+<010>
+"
+0022[01]: Text. Text scrap[Grey]="<010>
+ 1 2 3 4 5<010>
+12345678901234567890123456789012345678901234567890<010>
+No error for the above but this line will!---------<010>
+"
+0026[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC07: Processing of long lines.
+ 2 2|
+ 3 3| SC07.1: Detection of a line longer than the default limit.
+ 4 4|
+ 5 5| The default limit is 80 characters so we will test on either side of
+ 6 6| that:
+ 7 7| 1 2 3 4 5 6 7 8
+ 8 8| 12345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 9 9| The above should not trigger a "line too long error". But this line should!------
+ Error|.................................................................................^Input line is too long (this character is the first offender).
+ |.................................................................................^Currently, the maximum allowable input line length is 80.
+ |.................................................................................^Note: You can change this using a pragma directive (@p).
+ 10 10|
+ 11 11| SC07.3: Test the limit set at infinity.
+ 12 12|
+ 13 13| @p maximum_input_line_length = infinity
+ 14 14|
+ 15 15| 1 2 3 4 5 6 7 8
+ 16 16| 12345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 17 17| The above should not trigger a "line too long error". Nor should this one!-------
+ 18 18|
+ 19 19| SC07.3: Test the limit set lower.
+ 20 20|
+ 21 21| @p maximum_input_line_length = 50
+ 22 22|
+ 23 23| 1 2 3 4 5
+ 24 24| 12345678901234567890123456789012345678901234567890
+ 25 25| No error for the above but this line will!---------
+ Error|...................................................^Input line is too long (this character is the first offender).
+ |...................................................^Currently, the maximum allowable input line length is 50.
+ |...................................................^Note: You can change this using a pragma directive (@p).
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 2 Errors.
diff --git a/web/funnelAC/results/sc08.lis b/web/funnelAC/results/sc08.lis
new file mode 100644
index 0000000000..3651c0a371
--- /dev/null
+++ b/web/funnelAC/results/sc08.lis
@@ -0,0 +1,190 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 30 38 3A 20 44 65 74 65 63 74 69 6F 6E 20 | SC08: Detection |
+| 6F 66 20 74 72 61 69 6C 69 6E 67 20 73 70 61 63 | of trailing spac |
+| 65 73 2E 0A 0A 54 68 69 73 20 6C 69 6E 65 20 68 | es...This line h |
+| 61 73 20 7A 65 72 6F 20 20 74 72 61 69 6C 69 6E | as zero trailin |
+| 67 20 73 70 61 63 65 73 20 7C 0A 54 68 69 73 20 | g spaces |.This |
+| 6C 69 6E 65 20 68 61 73 20 6F 6E 65 20 20 20 74 | line has one t |
+| 72 61 69 6C 69 6E 67 20 73 70 61 63 65 20 20 7C | railing space | |
+| 20 0A 54 68 69 73 20 6C 69 6E 65 20 68 61 73 20 | .This line has |
+| 74 77 6F 20 20 20 74 72 61 69 6C 69 6E 67 20 73 | two trailing s |
+| 70 61 63 65 73 20 7C 20 20 0A 54 68 69 73 20 6C | paces | .This l |
+| 69 6E 65 20 68 61 73 20 74 68 72 65 65 20 74 72 | ine has three tr |
+| 61 69 6C 69 6E 67 20 73 70 61 63 65 73 20 7C 20 | ailing spaces | |
+| 20 20 0A | . |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC08: Detection of trailing spaces.<010>
+00002 00002| <010>
+00003 00003| This line has zero trailing spaces |<010>
+00004 00004| This line has one trailing space | <010>
+00005 00005| This line has two trailing spaces | <010>
+00006 00006| This line has three trailing spaces | <010>
+00007 00007| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 2 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC08: Detection of trailing spaces.<010>
+<010>
+This line has zero trailing spaces |<010>
+This line has one trailing space | <010>
+This line has two trailing spaces | <010>
+This line has three trailing spaces | <010>
+"
+0007[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="SC08: Detection of trailing spaces.<010>
+<010>
+This line has zero trailing spaces |<010>
+This line has one trailing space | <010>
+This line has two trailing spaces | <010>
+This line has three trailing spaces | <010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC08: Detection of trailing spaces.
+ 2 2|
+ 3 3| This line has zero trailing spaces |
+ 4 4| This line has one trailing space |
+ Warning|......................................^Line has trailing spaces up to and including this space.
+ 5 5| This line has two trailing spaces |
+ Warning|.......................................^Line has trailing spaces up to and including this space.
+ 6 6| This line has three trailing spaces |
+ Warning|........................................^Line has trailing spaces up to and including this space.
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There was 1 Error and 3 Warnings.
diff --git a/web/funnelAC/results/sc09.lis b/web/funnelAC/results/sc09.lis
new file mode 100644
index 0000000000..eeea2f8c82
--- /dev/null
+++ b/web/funnelAC/results/sc09.lis
@@ -0,0 +1,106 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 30 39 3A 20 44 65 74 65 63 74 69 6F 6E 20 | SC09: Detection |
+| 6F 66 20 63 6F 6E 74 72 6F 6C 20 63 68 61 72 61 | of control chara |
+| 63 74 65 72 73 2E 0A 0A 53 43 30 39 2E 31 20 54 | cters...SC09.1 T |
+| 65 73 74 20 74 68 61 74 20 63 6F 6E 74 72 6F 6C | est that control |
+| 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65 20 | characters are |
+| 64 65 74 65 63 74 65 64 20 61 6E 64 20 72 65 70 | detected and rep |
+| 6C 61 63 65 64 20 62 79 20 22 3F 22 2E 0A 53 43 | laced by "?"..SC |
+| 30 39 2E 32 20 54 65 73 74 20 6E 6F 6E 20 70 72 | 09.2 Test non pr |
+| 69 6E 74 61 62 6C 65 20 74 68 61 74 20 68 61 73 | intable that has |
+| 20 61 20 6D 6E 65 6D 6F 6E 69 63 2E 0A 0A 54 68 | a mnemonic...Th |
+| 65 72 65 20 69 73 20 61 20 74 61 62 20 62 65 74 | ere is a tab bet |
+| 77 65 65 6E 20 74 68 65 73 65 20 74 77 6F 20 62 | ween these two b |
+| 61 72 73 20 7C 09 7C 20 77 68 69 63 68 20 73 68 | ars |.| which sh |
+| 6F 75 6C 64 20 63 6F 6D 65 20 6F 75 74 20 61 73 | ould come out as |
+| 20 22 3F 22 2E 0A 54 68 65 20 61 62 6F 76 65 20 | "?"..The above |
+| 65 72 72 6F 72 20 6D 65 73 73 61 67 65 20 73 68 | error message sh |
+| 6F 75 6C 64 20 63 6F 6E 74 61 69 6E 20 74 68 65 | ould contain the |
+| 20 6D 6E 65 6D 6F 6E 69 63 20 22 48 54 22 2E 0A | mnemonic "HT".. |
+| 0A 53 43 30 39 2E 33 20 54 65 73 74 20 6E 6F 6E | .SC09.3 Test non |
+| 20 70 72 69 6E 74 61 62 6C 65 20 74 68 61 74 20 | printable that |
+| 68 61 73 20 6E 6F 20 6D 6E 65 6D 6F 6E 69 63 2E | has no mnemonic. |
+| 0A 0A 54 68 65 72 65 20 69 73 20 61 20 6E 6F 6E | ..There is a non |
+| 2D 6D 6E 65 6D 6F 6E 69 63 20 63 6F 6E 74 72 6F | -mnemonic contro |
+| 6C 20 63 68 61 72 61 63 74 65 72 20 62 65 74 77 | l character betw |
+| 65 65 6E 20 74 68 65 73 65 20 62 61 72 73 20 7C | een these bars | |
+| EA 7C 2E 0A | .|.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC09: Detection of control characters.<010>
+00002 00002| <010>
+00003 00003| SC09.1 Test that control characters are detected and replaced by "?".<010>
+00004 00004| SC09.2 Test non printable that has a mnemonic.<010>
+00005 00005| <010>
+00006 00006| There is a tab between these two bars |?| which should come out as "?".<010>
+00007 00007| The above error message should contain the mnemonic "HT".<010>
+00008 00008| <010>
+00009 00009| SC09.3 Test non printable that has no mnemonic.<010>
+00010 00010| <010>
+00011 00011| There is a non-mnemonic control character between these bars |?|.<010>
+00012 00012| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 2 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC09: Detection of control characters.<010>
+<010>
+SC09.1 Test that control characters are detected and replaced by "?".<010>
+SC09.2 Test non printable that has a mnemonic.<010>
+<010>
+There is a tab between these two bars |?| which should come out as "?".<010>
+The above error message should contain the mnemonic "HT".<010>
+<010>
+SC09.3 Test non printable that has no mnemonic.<010>
+<010>
+There is a non-mnemonic control character between these bars |?|.<010>
+"
+0012[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC09: Detection of control characters.
+ 2 2|
+ 3 3| SC09.1 Test that control characters are detected and replaced by "?".
+ 4 4| SC09.2 Test non printable that has a mnemonic.
+ 5 5|
+ 6 6| There is a tab between these two bars |?| which should come out as "?".
+ Error|........................................^Non printable character (Sym=HT, Dec=009, Hex=09, Oct=011).
+ 7 7| The above error message should contain the mnemonic "HT".
+ 8 8|
+ 9 9| SC09.3 Test non printable that has no mnemonic.
+ 10 10|
+ 11 11| There is a non-mnemonic control character between these bars |?|.
+ Error|...............................................................^Non printable character (Sym=<none>, Dec=234, Hex=EA, Oct=352).
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 2 Errors.
diff --git a/web/funnelAC/results/sc10.lis b/web/funnelAC/results/sc10.lis
new file mode 100644
index 0000000000..55bfe19df8
--- /dev/null
+++ b/web/funnelAC/results/sc10.lis
@@ -0,0 +1,882 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 63 61 6E 6E 65 72 20 54 65 73 74 3A 20 53 70 | Scanner Test: Sp |
+| 65 63 69 61 6C 20 53 65 71 75 65 6E 63 65 20 52 | ecial Sequence R |
+| 65 63 6F 67 6E 69 74 69 6F 6E 0A 3D 3D 3D 3D 3D | ecognition.===== |
+| 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | ================ |
+| 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | ================ |
+| 3D 3D 3D 3D 3D 0A 54 68 69 73 20 74 65 73 74 20 | =====.This test |
+| 74 65 73 74 73 20 74 6F 20 73 65 65 20 74 68 61 | tests to see tha |
+| 74 20 46 75 6E 6E 65 6C 57 65 62 20 69 73 20 72 | t FunnelWeb is r |
+| 65 63 6F 67 6E 69 73 69 6E 67 20 74 68 65 20 66 | ecognising the f |
+| 75 6C 6C 20 73 65 74 20 6F 66 20 73 70 65 63 69 | ull set of speci |
+| 61 6C 0A 73 65 71 75 65 6E 63 65 73 2E 0A 0A 54 | al.sequences...T |
+| 75 72 6E 20 4F 66 66 20 74 68 65 20 50 61 72 73 | urn Off the Pars |
+| 65 72 0A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | er.------------- |
+| 2D 2D 2D 2D 2D 2D 0A 46 69 72 73 74 20 77 65 20 | ------.First we |
+| 63 61 75 73 65 20 61 20 64 65 6C 69 62 65 72 61 | cause a delibera |
+| 74 65 20 73 63 61 6E 6E 65 72 20 65 72 72 6F 72 | te scanner error |
+| 20 73 6F 20 61 73 20 74 6F 20 70 72 65 76 65 6E | so as to preven |
+| 74 20 74 68 65 20 70 61 72 73 65 72 20 66 72 6F | t the parser fro |
+| 6D 0A 67 65 6E 65 72 61 74 69 6E 67 20 6C 6F 74 | m.generating lot |
+| 73 20 6F 66 20 65 72 72 6F 72 73 20 6F 76 65 72 | s of errors over |
+| 20 74 68 65 20 73 79 6E 74 61 63 74 69 63 20 72 | the syntactic r |
+| 75 62 62 69 73 68 20 70 72 65 73 65 6E 74 65 64 | ubbish presented |
+| 20 68 65 72 65 2E 0A 0A 20 20 20 40 20 0A 0A 4C | here... @ ..L |
+| 69 73 74 20 6F 66 20 41 6C 6C 20 50 6F 73 73 69 | ist of All Possi |
+| 62 6C 65 20 53 70 65 63 69 61 6C 20 53 65 71 75 | ble Special Sequ |
+| 65 6E 63 65 73 0A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | ences.---------- |
+| 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | ---------------- |
+| 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0A 54 68 65 | ------------.The |
+| 20 66 6F 6C 6C 6F 77 69 6E 67 20 69 73 20 61 20 | following is a |
+| 6C 69 73 74 20 6F 66 20 74 68 65 20 64 65 66 61 | list of the defa |
+| 75 6C 74 20 73 70 65 63 69 61 6C 20 63 68 61 72 | ult special char |
+| 61 63 74 65 72 20 66 6F 6C 6C 6F 77 65 64 20 62 | acter followed b |
+| 79 20 65 61 63 68 20 6F 66 0A 74 68 65 20 41 53 | y each of.the AS |
+| 43 49 49 20 70 72 69 6E 74 61 62 6C 65 73 2E 0A | CII printables.. |
+| 30 30 30 20 74 6F 20 30 33 31 20 61 72 65 20 75 | 000 to 031 are u |
+| 6E 70 72 69 6E 74 61 62 6C 65 20 63 6F 6E 74 72 | nprintable contr |
+| 6F 6C 20 63 68 61 72 61 63 74 65 72 73 2E 0A 0A | ol characters... |
+| 30 33 32 20 20 40 20 20 20 20 2D 20 49 4C 4C 45 | 032 @ - ILLE |
+| 47 41 4C 2E 20 20 28 4E 6F 74 65 3A 20 48 79 70 | GAL. (Note: Hyp |
+| 68 65 6E 20 69 73 20 6E 65 65 64 65 64 20 74 6F | hen is needed to |
+| 20 61 76 6F 69 64 20 74 72 61 69 6C 69 6E 67 20 | avoid trailing |
+| 62 6C 61 6E 6B 73 20 65 72 72 6F 72 2E 29 0A 30 | blanks error.).0 |
+| 33 33 20 20 40 21 20 20 20 2D 20 43 6F 6D 6D 65 | 33 @! - Comme |
+| 6E 74 2E 0A 30 33 34 20 20 40 22 20 20 20 2D 20 | nt..034 @" - |
+| 50 61 72 61 6D 65 74 65 72 20 64 65 6C 69 6D 65 | Parameter delime |
+| 74 65 72 2E 0A 30 33 35 20 20 40 23 58 20 20 2D | ter..035 @#X - |
+| 20 53 68 6F 72 74 20 6E 61 6D 65 20 73 65 71 75 | Short name sequ |
+| 65 6E 63 65 2E 0A 40 24 20 20 20 30 33 36 20 20 | ence..@$ 036 |
+| 2D 20 44 65 66 69 6E 65 20 6D 61 63 72 6F 2E 20 | - Define macro. |
+| 48 61 73 20 74 6F 20 62 65 20 61 74 20 73 74 61 | Has to be at sta |
+| 72 74 20 6F 66 20 6C 69 6E 65 2E 0A 30 33 37 20 | rt of line..037 |
+| 20 40 25 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E | @% - ILLEGAL. |
+| 0A 30 33 38 20 20 40 26 20 20 20 2D 20 49 4C 4C | .038 @& - ILL |
+| 45 47 41 4C 2E 0A 30 33 39 20 20 40 27 20 20 20 | EGAL..039 @' |
+| 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 34 30 20 20 | - ILLEGAL..040 |
+| 40 28 20 20 20 2D 20 4F 70 65 6E 20 70 61 72 61 | @( - Open para |
+| 6D 65 74 65 72 20 6C 69 73 74 2E 0A 30 34 31 20 | meter list..041 |
+| 20 40 29 20 20 20 2D 20 43 6C 6F 73 65 20 70 61 | @) - Close pa |
+| 72 61 6D 65 74 65 72 20 6C 69 73 74 2E 0A 30 34 | rameter list..04 |
+| 32 0A 40 2A 20 20 20 20 20 20 20 20 2D 20 4F 6C | 2.@* - Ol |
+| 64 20 66 61 73 68 69 6F 6E 65 64 20 73 65 63 74 | d fashioned sect |
+| 69 6F 6E 20 6D 61 72 6B 65 72 20 28 68 61 73 20 | ion marker (has |
+| 74 6F 20 62 65 20 61 74 20 73 74 61 72 74 20 6F | to be at start o |
+| 66 20 61 20 6C 69 6E 65 2E 29 2E 0A 30 34 33 20 | f a line.)..043 |
+| 20 40 2B 20 20 20 2D 20 49 6E 73 65 72 74 20 6E | @+ - Insert n |
+| 65 77 6C 69 6E 65 2E 0A 30 34 34 20 20 40 2C 20 | ewline..044 @, |
+| 20 20 2D 20 50 61 72 61 6D 65 74 65 72 20 73 65 | - Parameter se |
+| 70 61 72 61 74 6F 72 2E 0A 30 34 35 20 20 40 2D | parator..045 @- |
+| 0A 20 20 20 20 20 20 20 20 20 20 2D 20 49 67 6E | . - Ign |
+| 6F 72 65 20 65 6E 64 20 6F 66 20 6C 69 6E 65 20 | ore end of line |
+| 6D 61 72 6B 65 72 20 28 68 61 73 20 74 6F 20 62 | marker (has to b |
+| 65 20 61 74 20 65 6E 64 20 6F 66 20 6C 69 6E 65 | e at end of line |
+| 29 2E 0A 30 34 36 20 20 40 2E 20 20 20 2D 20 49 | )..046 @. - I |
+| 4C 4C 45 47 41 4C 2E 0A 30 34 37 20 20 40 2F 20 | LLEGAL..047 @/ |
+| 20 20 2D 20 45 6D 70 68 61 73 69 73 65 64 20 74 | - Emphasised t |
+| 65 78 74 2E 0A 30 34 38 20 20 40 30 20 20 20 2D | ext..048 @0 - |
+| 20 49 4C 4C 45 47 41 4C 2E 0A 30 34 39 20 20 40 | ILLEGAL..049 @ |
+| 31 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 1 - Formal par |
+| 61 6D 65 74 65 72 20 31 2E 0A 30 35 30 20 20 40 | ameter 1..050 @ |
+| 32 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 2 - Formal par |
+| 61 6D 65 74 65 72 20 32 2E 0A 30 35 31 20 20 40 | ameter 2..051 @ |
+| 33 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 3 - Formal par |
+| 61 6D 65 74 65 72 20 33 2E 0A 30 35 32 20 20 40 | ameter 3..052 @ |
+| 34 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 4 - Formal par |
+| 61 6D 65 74 65 72 20 34 2E 0A 30 35 33 20 20 40 | ameter 4..053 @ |
+| 35 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 5 - Formal par |
+| 61 6D 65 74 65 72 20 35 2E 0A 30 35 34 20 20 40 | ameter 5..054 @ |
+| 36 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 6 - Formal par |
+| 61 6D 65 74 65 72 20 36 2E 0A 30 35 35 20 20 40 | ameter 6..055 @ |
+| 37 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 7 - Formal par |
+| 61 6D 65 74 65 72 20 37 2E 0A 30 35 36 20 20 40 | ameter 7..056 @ |
+| 38 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 8 - Formal par |
+| 61 6D 65 74 65 72 20 38 2E 0A 30 35 37 20 20 40 | ameter 8..057 @ |
+| 39 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 9 - Formal par |
+| 61 6D 65 74 65 72 20 39 2E 0A 30 35 38 20 20 40 | ameter 9..058 @ |
+| 3A 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 | : - ILLEGAL..0 |
+| 35 39 20 20 40 3B 20 20 20 2D 20 49 4C 4C 45 47 | 59 @; - ILLEG |
+| 41 4C 2E 0A 30 36 30 20 20 40 3C 20 20 20 2D 20 | AL..060 @< - |
+| 4F 70 65 6E 20 6D 61 63 72 6F 20 6E 61 6D 65 2E | Open macro name. |
+| 0A 30 36 31 20 20 40 3D 40 20 20 2D 20 53 65 74 | .061 @=@ - Set |
+| 20 73 70 65 63 69 61 6C 20 63 68 61 72 61 63 74 | special charact |
+| 65 72 2E 0A 30 36 32 20 20 40 3E 20 20 20 2D 20 | er..062 @> - |
+| 43 6C 6F 73 65 20 6D 61 63 72 6F 20 6E 61 6D 65 | Close macro name |
+| 2E 0A 30 36 33 20 20 40 3F 20 20 20 2D 20 49 4C | ..063 @? - IL |
+| 4C 45 47 41 4C 2E 0A 30 36 34 20 20 40 40 20 20 | LEGAL..064 @@ |
+| 20 2D 20 49 6E 73 65 72 74 20 73 70 65 63 69 61 | - Insert specia |
+| 6C 20 63 68 61 72 61 63 74 65 72 20 69 6E 74 6F | l character into |
+| 20 74 65 78 74 2E 0A 40 41 20 20 30 36 35 20 20 | text..@A 065 |
+| 20 2D 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 | - New section ( |
+| 6C 65 76 65 6C 20 31 29 2E 20 4D 75 73 74 20 62 | level 1). Must b |
+| 65 20 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 | e at start of a |
+| 6C 69 6E 65 2E 0A 40 42 20 20 30 36 36 20 20 20 | line..@B 066 |
+| 2D 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C | - New section (l |
+| 65 76 65 6C 20 32 29 2E 20 4D 75 73 74 20 62 65 | evel 2). Must be |
+| 20 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C | at start of a l |
+| 69 6E 65 2E 0A 40 43 20 20 30 36 37 20 20 20 2D | ine..@C 067 - |
+| 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C 65 | New section (le |
+| 76 65 6C 20 33 29 2E 20 4D 75 73 74 20 62 65 20 | vel 3). Must be |
+| 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C 69 | at start of a li |
+| 6E 65 2E 0A 40 44 20 20 30 36 38 20 20 20 2D 20 | ne..@D 068 - |
+| 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C 65 76 | New section (lev |
+| 65 6C 20 34 29 2E 20 4D 75 73 74 20 62 65 20 61 | el 4). Must be a |
+| 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C 69 6E | t start of a lin |
+| 65 2E 0A 40 45 20 20 30 36 39 20 20 20 2D 20 4E | e..@E 069 - N |
+| 65 77 20 73 65 63 74 69 6F 6E 20 28 6C 65 76 65 | ew section (leve |
+| 6C 20 35 29 2E 20 4D 75 73 74 20 62 65 20 61 74 | l 5). Must be at |
+| 20 73 74 61 72 74 20 6F 66 20 61 20 6C 69 6E 65 | start of a line |
+| 2E 0A 30 37 30 20 20 40 46 20 20 20 2D 20 49 4C | ..070 @F - IL |
+| 4C 45 47 41 4C 2E 0A 30 37 31 20 20 40 47 20 20 | LEGAL..071 @G |
+| 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 37 32 20 | - ILLEGAL..072 |
+| 20 40 48 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E | @H - ILLEGAL. |
+| 0A 30 37 33 20 20 40 49 20 20 20 2D 20 49 6E 63 | .073 @I - Inc |
+| 6C 75 64 65 20 66 69 6C 65 2E 20 57 69 6C 6C 20 | lude file. Will |
+| 70 72 6F 76 6F 6B 65 20 61 6E 20 65 72 72 6F 72 | provoke an error |
+| 20 68 65 72 65 20 74 68 6F 75 67 68 2E 0A 30 37 | here though..07 |
+| 34 20 20 40 4A 20 20 20 2D 20 49 4C 4C 45 47 41 | 4 @J - ILLEGA |
+| 4C 2E 0A 30 37 35 20 20 40 4B 20 20 20 2D 20 49 | L..075 @K - I |
+| 4C 4C 45 47 41 4C 2E 0A 30 37 36 20 20 40 4C 20 | LLEGAL..076 @L |
+| 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 37 37 | - ILLEGAL..077 |
+| 20 20 40 4D 20 20 20 2D 20 54 61 67 73 20 6D 61 | @M - Tags ma |
+| 63 72 6F 20 61 73 20 62 65 69 6E 67 20 61 6C 6C | cro as being all |
+| 6F 77 65 64 20 74 6F 20 62 65 20 63 61 6C 6C 65 | owed to be calle |
+| 64 20 6D 61 6E 79 20 74 69 6D 65 73 2E 0A 30 37 | d many times..07 |
+| 38 20 20 40 4E 20 20 20 2D 20 49 4C 4C 45 47 41 | 8 @N - ILLEGA |
+| 4C 2E 0A 40 4F 20 20 20 30 37 39 20 20 2D 20 4E | L..@O 079 - N |
+| 65 77 20 6D 61 63 72 6F 20 61 74 74 61 63 68 65 | ew macro attache |
+| 64 20 74 6F 20 6F 75 74 70 75 74 20 66 69 6C 65 | d to output file |
+| 2E 20 48 61 73 20 74 6F 20 62 65 20 61 74 20 73 | . Has to be at s |
+| 74 61 72 74 20 6F 66 20 6C 69 6E 65 2E 0A 30 38 | tart of line..08 |
+| 30 20 20 40 50 20 20 20 2D 20 50 72 61 67 6D 61 | 0 @P - Pragma |
+| 2E 20 57 69 6C 6C 20 63 61 75 73 65 20 65 72 72 | . Will cause err |
+| 6F 72 20 68 65 72 65 20 74 68 6F 75 67 68 2E 0A | or here though.. |
+| 30 38 31 20 20 40 51 20 20 20 2D 20 49 4C 4C 45 | 081 @Q - ILLE |
+| 47 41 4C 2E 0A 30 38 32 20 20 40 52 20 20 20 2D | GAL..082 @R - |
+| 20 49 4C 4C 45 47 41 4C 2E 0A 30 38 33 20 20 40 | ILLEGAL..083 @ |
+| 53 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 | S - ILLEGAL..0 |
+| 38 34 20 20 40 54 20 20 20 2D 20 54 79 70 65 73 | 84 @T - Types |
+| 65 74 74 65 72 20 64 69 72 65 63 74 69 76 65 2E | etter directive. |
+| 20 57 69 6C 6C 20 63 61 75 73 65 20 61 6E 20 65 | Will cause an e |
+| 72 72 6F 72 20 68 65 72 65 20 74 68 6F 75 67 68 | rror here though |
+| 2E 0A 30 38 35 20 20 40 55 20 20 20 2D 20 49 4C | ..085 @U - IL |
+| 4C 45 47 41 4C 2E 0A 30 38 36 20 20 40 56 20 20 | LEGAL..086 @V |
+| 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 38 37 20 | - ILLEGAL..087 |
+| 20 40 57 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E | @W - ILLEGAL. |
+| 0A 30 38 38 20 20 40 58 20 20 20 2D 20 49 4C 4C | .088 @X - ILL |
+| 45 47 41 4C 2E 0A 30 38 39 20 20 40 59 20 20 20 | EGAL..089 @Y |
+| 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 39 30 20 20 | - ILLEGAL..090 |
+| 40 5A 20 20 20 2D 20 54 61 67 73 20 6D 61 63 72 | @Z - Tags macr |
+| 6F 20 61 73 20 62 65 69 6E 67 20 61 6C 6C 6F 77 | o as being allow |
+| 65 64 20 74 6F 20 62 65 20 63 61 6C 6C 65 64 20 | ed to be called |
+| 7A 65 72 6F 20 74 69 6D 65 73 2E 0A 30 39 31 20 | zero times..091 |
+| 20 40 5B 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E | @[ - ILLEGAL. |
+| 0A 30 39 32 20 20 40 5C 20 20 20 2D 20 49 4C 4C | .092 @\ - ILL |
+| 45 47 41 4C 2E 0A 30 39 33 20 20 40 5D 20 20 20 | EGAL..093 @] |
+| 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 39 34 20 20 | - ILLEGAL..094 |
+| 40 5E 44 28 30 36 35 29 20 2D 20 49 6E 73 65 72 | @^D(065) - Inser |
+| 74 20 63 6F 6E 74 72 6F 6C 20 63 68 61 72 61 63 | t control charac |
+| 74 65 72 20 69 6E 74 6F 20 74 65 78 74 0A 30 39 | ter into text.09 |
+| 35 20 20 40 5F 20 20 20 2D 20 49 4C 4C 45 47 41 | 5 @_ - ILLEGA |
+| 4C 2E 0A 30 39 36 20 20 40 60 20 20 20 2D 20 49 | L..096 @` - I |
+| 4C 4C 45 47 41 4C 2E 0A 40 61 20 20 20 30 39 37 | LLEGAL..@a 097 |
+| 20 20 2D 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 | - New section |
+| 28 6C 65 76 65 6C 20 31 29 2E 20 4D 75 73 74 20 | (level 1). Must |
+| 62 65 20 61 74 20 73 74 61 72 74 20 6F 66 20 61 | be at start of a |
+| 20 6C 69 6E 65 2E 0A 40 62 20 20 20 30 39 38 20 | line..@b 098 |
+| 20 2D 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 | - New section ( |
+| 6C 65 76 65 6C 20 31 29 2E 20 4D 75 73 74 20 62 | level 1). Must b |
+| 65 20 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 | e at start of a |
+| 6C 69 6E 65 2E 0A 40 63 20 20 20 30 39 39 20 20 | line..@c 099 |
+| 2D 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C | - New section (l |
+| 65 76 65 6C 20 31 29 2E 20 4D 75 73 74 20 62 65 | evel 1). Must be |
+| 20 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C | at start of a l |
+| 69 6E 65 2E 0A 40 64 20 20 20 31 30 30 20 20 2D | ine..@d 100 - |
+| 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C 65 | New section (le |
+| 76 65 6C 20 31 29 2E 20 4D 75 73 74 20 62 65 20 | vel 1). Must be |
+| 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C 69 | at start of a li |
+| 6E 65 2E 0A 40 65 20 20 20 31 30 31 20 20 2D 20 | ne..@e 101 - |
+| 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C 65 76 | New section (lev |
+| 65 6C 20 31 29 2E 20 4D 75 73 74 20 62 65 20 61 | el 1). Must be a |
+| 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C 69 6E | t start of a lin |
+| 65 2E 0A 31 30 32 20 20 40 66 20 20 20 2D 20 49 | e..102 @f - I |
+| 4C 4C 45 47 41 4C 2E 0A 31 30 33 20 20 40 67 20 | LLEGAL..103 @g |
+| 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 30 34 | - ILLEGAL..104 |
+| 20 20 40 68 20 20 20 2D 20 49 4C 4C 45 47 41 4C | @h - ILLEGAL |
+| 2E 0A 31 30 35 20 20 40 69 20 20 20 2D 20 49 6E | ..105 @i - In |
+| 63 6C 75 64 65 20 66 69 6C 65 2E 20 57 69 6C 6C | clude file. Will |
+| 20 70 72 6F 76 6F 6B 65 20 61 6E 20 65 72 72 6F | provoke an erro |
+| 72 20 68 65 72 65 20 74 68 6F 75 67 68 2E 0A 31 | r here though..1 |
+| 30 36 20 20 40 6A 20 20 20 2D 20 49 4C 4C 45 47 | 06 @j - ILLEG |
+| 41 4C 2E 0A 31 30 37 20 20 40 6B 20 20 20 2D 20 | AL..107 @k - |
+| 49 4C 4C 45 47 41 4C 2E 0A 31 30 38 20 20 40 6C | ILLEGAL..108 @l |
+| 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 30 | - ILLEGAL..10 |
+| 39 20 20 40 6D 20 20 20 2D 20 54 61 67 73 20 6D | 9 @m - Tags m |
+| 61 63 72 6F 20 61 73 20 62 65 69 6E 67 20 61 6C | acro as being al |
+| 6C 6F 77 65 64 20 74 6F 20 62 65 20 63 61 6C 6C | lowed to be call |
+| 65 64 20 6D 61 6E 79 20 74 69 6D 65 73 2E 0A 31 | ed many times..1 |
+| 31 30 20 20 40 6E 20 20 20 2D 20 49 4C 4C 45 47 | 10 @n - ILLEG |
+| 41 4C 2E 0A 40 4F 20 20 20 31 31 31 20 20 2D 20 | AL..@O 111 - |
+| 4E 65 77 20 6D 61 63 72 6F 20 61 74 74 61 63 68 | New macro attach |
+| 65 64 20 74 6F 20 6F 75 74 70 75 74 20 66 69 6C | ed to output fil |
+| 65 2E 20 48 61 73 20 74 6F 20 62 65 20 61 74 20 | e. Has to be at |
+| 73 74 61 72 74 20 6F 66 20 6C 69 6E 65 2E 0A 31 | start of line..1 |
+| 31 32 20 20 40 70 20 20 20 2D 20 50 72 61 67 6D | 12 @p - Pragm |
+| 61 2E 20 57 69 6C 6C 20 63 61 75 73 65 20 65 72 | a. Will cause er |
+| 72 6F 72 20 68 65 72 65 20 74 68 6F 75 67 68 2E | ror here though. |
+| 0A 31 31 33 20 20 40 71 20 20 20 2D 20 49 4C 4C | .113 @q - ILL |
+| 45 47 41 4C 2E 0A 31 31 34 20 20 40 72 20 20 20 | EGAL..114 @r |
+| 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 31 35 20 20 | - ILLEGAL..115 |
+| 40 73 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A | @s - ILLEGAL.. |
+| 31 31 36 20 20 40 74 20 20 20 2D 20 54 79 70 65 | 116 @t - Type |
+| 73 65 74 74 65 72 20 64 69 72 65 63 74 69 76 65 | setter directive |
+| 2E 20 57 69 6C 6C 20 63 61 75 73 65 20 61 6E 20 | . Will cause an |
+| 65 72 72 6F 72 20 68 65 72 65 20 74 68 6F 75 67 | error here thoug |
+| 68 2E 0A 31 31 37 20 20 40 75 20 20 20 2D 20 49 | h..117 @u - I |
+| 4C 4C 45 47 41 4C 2E 0A 31 31 38 20 20 40 76 20 | LLEGAL..118 @v |
+| 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 31 39 | - ILLEGAL..119 |
+| 20 20 40 77 20 20 20 2D 20 49 4C 4C 45 47 41 4C | @w - ILLEGAL |
+| 2E 0A 31 32 30 20 20 40 78 20 20 20 2D 20 49 4C | ..120 @x - IL |
+| 4C 45 47 41 4C 2E 0A 31 32 31 20 20 40 79 20 20 | LEGAL..121 @y |
+| 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 32 32 20 | - ILLEGAL..122 |
+| 20 40 7A 20 20 20 2D 20 54 61 67 73 20 6D 61 63 | @z - Tags mac |
+| 72 6F 20 61 73 20 62 65 69 6E 67 20 61 6C 6C 6F | ro as being allo |
+| 77 65 64 20 74 6F 20 62 65 20 63 61 6C 6C 65 64 | wed to be called |
+| 20 7A 65 72 6F 20 74 69 6D 65 73 2E 0A 31 32 33 | zero times..123 |
+| 20 20 40 7B 20 20 20 2D 20 4F 70 65 6E 20 6D 61 | @{ - Open ma |
+| 63 72 6F 20 62 6F 64 79 2E 0A 31 32 34 20 20 40 | cro body..124 @ |
+| 7C 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 | | - ILLEGAL..1 |
+| 32 35 20 20 40 7D 20 20 20 2D 20 43 6C 6F 73 65 | 25 @} - Close |
+| 20 6D 61 63 72 6F 20 62 6F 64 79 2E 0A 31 32 36 | macro body..126 |
+| 20 20 40 7E 20 20 20 2D 20 49 4C 4C 45 47 41 4C | @~ - ILLEGAL |
+| 2E 0A 31 32 37 20 74 6F 20 32 35 35 20 61 72 65 | ..127 to 255 are |
+| 20 6E 6F 74 20 73 74 61 6E 64 61 72 64 20 70 72 | not standard pr |
+| 69 6E 74 61 62 6C 65 20 41 53 43 49 49 20 63 68 | intable ASCII ch |
+| 61 72 61 63 74 65 72 73 2E 0A | aracters.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| Scanner Test: Special Sequence Recognition<010>
+00002 00002| ==========================================<010>
+00003 00003| This test tests to see that FunnelWeb is recognising the full set of special<010>
+00004 00004| sequences.<010>
+00005 00005| <010>
+00006 00006| Turn Off the Parser<010>
+00007 00007| -------------------<010>
+00008 00008| First we cause a deliberate scanner error so as to prevent the parser from<010>
+00009 00009| generating lots of errors over the syntactic rubbish presented here.<010>
+00010 00010| <010>
+00011 00011| @ <010>
+00012 00012| <010>
+00013 00013| List of All Possible Special Sequences<010>
+00014 00014| --------------------------------------<010>
+00015 00015| The following is a list of the default special character followed by each of<010>
+00016 00016| the ASCII printables.<010>
+00017 00017| 000 to 031 are unprintable control characters.<010>
+00018 00018| <010>
+00019 00019| 032 @ - ILLEGAL. (Note: Hyphen is needed to avoid trailing blanks error.)<010>
+00020 00020| 033 @! - Comment.<010>
+00021 00021| 034 @" - Parameter delimeter.<010>
+00022 00022| 035 @#X - Short name sequence.<010>
+00023 00023| @$ 036 - Define macro. Has to be at start of line.<010>
+00024 00024| 037 @% - ILLEGAL.<010>
+00025 00025| 038 @& - ILLEGAL.<010>
+00026 00026| 039 @' - ILLEGAL.<010>
+00027 00027| 040 @( - Open parameter list.<010>
+00028 00028| 041 @) - Close parameter list.<010>
+00029 00029| 042<010>
+00030 00030| @* - Old fashioned section marker (has to be at start of a line.).<010>
+00031 00031| 043 @+ - Insert newline.<010>
+00032 00032| 044 @, - Parameter separator.<010>
+00033 00033| 045 @-<010>
+00034 00034| - Ignore end of line marker (has to be at end of line).<010>
+00035 00035| 046 @. - ILLEGAL.<010>
+00036 00036| 047 @/ - Emphasised text.<010>
+00037 00037| 048 @0 - ILLEGAL.<010>
+00038 00038| 049 @1 - Formal parameter 1.<010>
+00039 00039| 050 @2 - Formal parameter 2.<010>
+00040 00040| 051 @3 - Formal parameter 3.<010>
+00041 00041| 052 @4 - Formal parameter 4.<010>
+00042 00042| 053 @5 - Formal parameter 5.<010>
+00043 00043| 054 @6 - Formal parameter 6.<010>
+00044 00044| 055 @7 - Formal parameter 7.<010>
+00045 00045| 056 @8 - Formal parameter 8.<010>
+00046 00046| 057 @9 - Formal parameter 9.<010>
+00047 00047| 058 @: - ILLEGAL.<010>
+00048 00048| 059 @; - ILLEGAL.<010>
+00049 00049| 060 @< - Open macro name.<010>
+00050 00050| 061 @=@ - Set special character.<010>
+00051 00051| 062 @> - Close macro name.<010>
+00052 00052| 063 @? - ILLEGAL.<010>
+00053 00053| 064 @@ - Insert special character into text.<010>
+00054 00054| @A 065 - New section (level 1). Must be at start of a line.<010>
+00055 00055| @B 066 - New section (level 2). Must be at start of a line.<010>
+00056 00056| @C 067 - New section (level 3). Must be at start of a line.<010>
+00057 00057| @D 068 - New section (level 4). Must be at start of a line.<010>
+00058 00058| @E 069 - New section (level 5). Must be at start of a line.<010>
+00059 00059| 070 @F - ILLEGAL.<010>
+00060 00060| 071 @G - ILLEGAL.<010>
+00061 00061| 072 @H - ILLEGAL.<010>
+00062 00062| 073 @I - Include file. Will provoke an error here though.<010>
+00063 00063| 074 @J - ILLEGAL.<010>
+00064 00064| 075 @K - ILLEGAL.<010>
+00065 00065| 076 @L - ILLEGAL.<010>
+00066 00066| 077 @M - Tags macro as being allowed to be called many times.<010>
+00067 00067| 078 @N - ILLEGAL.<010>
+00068 00068| @O 079 - New macro attached to output file. Has to be at start of line.<010>
+00069 00069| 080 @P - Pragma. Will cause error here though.<010>
+00070 00070| 081 @Q - ILLEGAL.<010>
+00071 00071| 082 @R - ILLEGAL.<010>
+00072 00072| 083 @S - ILLEGAL.<010>
+00073 00073| 084 @T - Typesetter directive. Will cause an error here though.<010>
+00074 00074| 085 @U - ILLEGAL.<010>
+00075 00075| 086 @V - ILLEGAL.<010>
+00076 00076| 087 @W - ILLEGAL.<010>
+00077 00077| 088 @X - ILLEGAL.<010>
+00078 00078| 089 @Y - ILLEGAL.<010>
+00079 00079| 090 @Z - Tags macro as being allowed to be called zero times.<010>
+00080 00080| 091 @[ - ILLEGAL.<010>
+00081 00081| 092 @\ - ILLEGAL.<010>
+00082 00082| 093 @] - ILLEGAL.<010>
+00083 00083| 094 @^D(065) - Insert control character into text<010>
+00084 00084| 095 @_ - ILLEGAL.<010>
+00085 00085| 096 @` - ILLEGAL.<010>
+00086 00086| @a 097 - New section (level 1). Must be at start of a line.<010>
+00087 00087| @b 098 - New section (level 1). Must be at start of a line.<010>
+00088 00088| @c 099 - New section (level 1). Must be at start of a line.<010>
+00089 00089| @d 100 - New section (level 1). Must be at start of a line.<010>
+00090 00090| @e 101 - New section (level 1). Must be at start of a line.<010>
+00091 00091| 102 @f - ILLEGAL.<010>
+00092 00092| 103 @g - ILLEGAL.<010>
+00093 00093| 104 @h - ILLEGAL.<010>
+00094 00094| 105 @i - Include file. Will provoke an error here though.<010>
+00095 00095| 106 @j - ILLEGAL.<010>
+00096 00096| 107 @k - ILLEGAL.<010>
+00097 00097| 108 @l - ILLEGAL.<010>
+00098 00098| 109 @m - Tags macro as being allowed to be called many times.<010>
+00099 00099| 110 @n - ILLEGAL.<010>
+00100 00100| @O 111 - New macro attached to output file. Has to be at start of line.<010>
+00101 00101| 112 @p - Pragma. Will cause error here though.<010>
+00102 00102| 113 @q - ILLEGAL.<010>
+00103 00103| 114 @r - ILLEGAL.<010>
+00104 00104| 115 @s - ILLEGAL.<010>
+00105 00105| 116 @t - Typesetter directive. Will cause an error here though.<010>
+00106 00106| 117 @u - ILLEGAL.<010>
+00107 00107| 118 @v - ILLEGAL.<010>
+00108 00108| 119 @w - ILLEGAL.<010>
+00109 00109| 120 @x - ILLEGAL.<010>
+00110 00110| 121 @y - ILLEGAL.<010>
+00111 00111| 122 @z - Tags macro as being allowed to be called zero times.<010>
+00112 00112| 123 @{ - Open macro body.<010>
+00113 00113| 124 @| - ILLEGAL.<010>
+00114 00114| 125 @} - Close macro body.<010>
+00115 00115| 126 @~ - ILLEGAL.<010>
+00116 00116| 127 to 255 are not standard printable ASCII characters.<010>
+00117 00117| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 137 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="Scanner Test: Special Sequence Recognition<010>
+==========================================<010>
+This test tests to see that FunnelWeb is recognising the full set of special<010>
+sequences.<010>
+<010>
+Turn Off the Parser<010>
+-------------------<010>
+First we cause a deliberate scanner error so as to prevent the parser from<010>
+generating lots of errors over the syntactic rubbish presented here.<010>
+<010>
+ "
+0011[06]: Text. Text scrap[Grey]="<010>
+<010>
+List of All Possible Special Sequences<010>
+--------------------------------------<010>
+The following is a list of the default special character followed by each of<010>
+the ASCII printables.<010>
+000 to 031 are unprintable control characters.<010>
+<010>
+032 "
+0019[08]: Text. Text scrap[Grey]=" - ILLEGAL. (Note: Hyphen is needed to avoid trailing blanks error.)<010>
+033 "
+0021[01]: Text. Text scrap[Grey]="034 "
+0021[06]: @" Quote.
+0021[08]: Text. Text scrap[Grey]=" - Parameter delimeter.<010>
+035 "
+0022[06]: @# Name. Character='X'.
+0022[09]: Text. Text scrap[Grey]=" - Short name sequence.<010>
+"
+0023[01]: @$ Macro defn.
+0023[03]: Text. Text scrap[Grey]=" 036 - Define macro. Has to be at start of line.<010>
+037 "
+0024[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+038 "
+0025[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+039 "
+0026[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+040 "
+0027[06]: @( Open param.
+0027[08]: Text. Text scrap[Grey]=" - Open parameter list.<010>
+041 "
+0028[06]: @} Close param.
+0028[08]: Text. Text scrap[Grey]=" - Close parameter list.<010>
+042<010>
+"
+0030[03]: Text. Text scrap[Grey]=" - Old fashioned section marker (has to be at start of a line.).<010>
+043 "
+0031[06]: Text. Text scrap[White]="<010>
+"
+0031[08]: Text. Text scrap[Grey]=" - Insert newline.<010>
+044 "
+0032[06]: @, Comma.
+0032[08]: Text. Text scrap[Grey]=" - Parameter separator.<010>
+045 "
+0034[01]: Text. Text scrap[Grey]=" - Ignore end of line marker (has to be at end of line).<010>
+046 "
+0035[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+047 "
+0036[06]: @/ Emphasise.
+0036[08]: Text. Text scrap[Grey]=" - Emphasised text.<010>
+048 "
+0037[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+049 "
+0038[06]: @n Parameter. Parameterno=1.
+0038[08]: Text. Text scrap[Grey]=" - Formal parameter 1.<010>
+050 "
+0039[06]: @n Parameter. Parameterno=2.
+0039[08]: Text. Text scrap[Grey]=" - Formal parameter 2.<010>
+051 "
+0040[06]: @n Parameter. Parameterno=3.
+0040[08]: Text. Text scrap[Grey]=" - Formal parameter 3.<010>
+052 "
+0041[06]: @n Parameter. Parameterno=4.
+0041[08]: Text. Text scrap[Grey]=" - Formal parameter 4.<010>
+053 "
+0042[06]: @n Parameter. Parameterno=5.
+0042[08]: Text. Text scrap[Grey]=" - Formal parameter 5.<010>
+054 "
+0043[06]: @n Parameter. Parameterno=6.
+0043[08]: Text. Text scrap[Grey]=" - Formal parameter 6.<010>
+055 "
+0044[06]: @n Parameter. Parameterno=7.
+0044[08]: Text. Text scrap[Grey]=" - Formal parameter 7.<010>
+056 "
+0045[06]: @n Parameter. Parameterno=8.
+0045[08]: Text. Text scrap[Grey]=" - Formal parameter 8.<010>
+057 "
+0046[06]: @n Parameter. Parameterno=9.
+0046[08]: Text. Text scrap[Grey]=" - Formal parameter 9.<010>
+058 "
+0047[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+059 "
+0048[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+060 "
+0049[06]: @< Open name.
+0049[08]: Text. Text scrap[Grey]=" - Open macro name.<010>
+061 "
+0050[09]: Text. Text scrap[Grey]=" - Set special character.<010>
+062 "
+0051[06]: @> Close name.
+0051[08]: Text. Text scrap[Grey]=" - Close macro name.<010>
+063 "
+0052[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+064 "
+0053[06]: Text. Text scrap[Grey]="@"
+0053[08]: Text. Text scrap[Grey]=" - Insert special character into text.<010>
+"
+0054[01]: @A New section (Level 1).
+0054[03]: Text. Text scrap[Grey]=" 065 - New section (level 1). Must be at start of a line.<010>
+"
+0055[01]: @B New section (Level 2).
+0055[03]: Text. Text scrap[Grey]=" 066 - New section (level 2). Must be at start of a line.<010>
+"
+0056[01]: @C New section (Level 3).
+0056[03]: Text. Text scrap[Grey]=" 067 - New section (level 3). Must be at start of a line.<010>
+"
+0057[01]: @D New section (Level 4).
+0057[03]: Text. Text scrap[Grey]=" 068 - New section (level 4). Must be at start of a line.<010>
+"
+0058[01]: @E New section (Level 5).
+0058[03]: Text. Text scrap[Grey]=" 069 - New section (level 5). Must be at start of a line.<010>
+070 "
+0059[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+071 "
+0060[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+072 "
+0061[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+073 "
+0063[01]: Text. Text scrap[Grey]="074 "
+0063[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+075 "
+0064[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+076 "
+0065[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+077 "
+0066[06]: @M Many calls.
+0066[08]: Text. Text scrap[Grey]=" - Tags macro as being allowed to be called many times.<010>
+078 "
+0067[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+"
+0068[01]: @F File defn.
+0068[03]: Text. Text scrap[Grey]=" 079 - New macro attached to output file. Has to be at start of line.<010>
+080 "
+0070[01]: Text. Text scrap[Grey]="081 "
+0070[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+082 "
+0071[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+083 "
+0072[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+084 "
+0074[01]: Text. Text scrap[Grey]="085 "
+0074[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+086 "
+0075[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+087 "
+0076[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+088 "
+0077[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+089 "
+0078[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+090 "
+0079[06]: @Z Zero calls.
+0079[08]: Text. Text scrap[Grey]=" - Tags macro as being allowed to be called zero times.<010>
+091 "
+0080[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+092 "
+0081[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+093 "
+0082[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+094 "
+0083[06]: Text. Text scrap[Grey]="A"
+0083[14]: Text. Text scrap[Grey]=" - Insert control character into text<010>
+095 "
+0084[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+096 "
+0085[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+"
+0086[01]: @A New section (Level 1).
+0086[03]: Text. Text scrap[Grey]=" 097 - New section (level 1). Must be at start of a line.<010>
+"
+0087[01]: @B New section (Level 2).
+0087[03]: Text. Text scrap[Grey]=" 098 - New section (level 1). Must be at start of a line.<010>
+"
+0088[01]: @C New section (Level 3).
+0088[03]: Text. Text scrap[Grey]=" 099 - New section (level 1). Must be at start of a line.<010>
+"
+0089[01]: @D New section (Level 4).
+0089[03]: Text. Text scrap[Grey]=" 100 - New section (level 1). Must be at start of a line.<010>
+"
+0090[01]: @E New section (Level 5).
+0090[03]: Text. Text scrap[Grey]=" 101 - New section (level 1). Must be at start of a line.<010>
+102 "
+0091[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+103 "
+0092[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+104 "
+0093[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+105 "
+0095[01]: Text. Text scrap[Grey]="106 "
+0095[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+107 "
+0096[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+108 "
+0097[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+109 "
+0098[06]: @M Many calls.
+0098[08]: Text. Text scrap[Grey]=" - Tags macro as being allowed to be called many times.<010>
+110 "
+0099[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+"
+0100[01]: @F File defn.
+0100[03]: Text. Text scrap[Grey]=" 111 - New macro attached to output file. Has to be at start of line.<010>
+112 "
+0102[01]: Text. Text scrap[Grey]="113 "
+0102[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+114 "
+0103[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+115 "
+0104[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+116 "
+0106[01]: Text. Text scrap[Grey]="117 "
+0106[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+118 "
+0107[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+119 "
+0108[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+120 "
+0109[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+121 "
+0110[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+122 "
+0111[06]: @Z Zero calls.
+0111[08]: Text. Text scrap[Grey]=" - Tags macro as being allowed to be called zero times.<010>
+123 "
+0112[06]: @{ Open defn.
+0112[08]: Text. Text scrap[Grey]=" - Open macro body.<010>
+124 "
+0113[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+125 "
+0114[06]: @} Close defn.
+0114[08]: Text. Text scrap[Grey]=" - Close macro body.<010>
+126 "
+0115[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010>
+127 to 255 are not standard printable ASCII characters.<010>
+"
+0117[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| Scanner Test: Special Sequence Recognition
+ 2 2| ==========================================
+ 3 3| This test tests to see that FunnelWeb is recognising the full set of special
+ 4 4| sequences.
+ 5 5|
+ 6 6| Turn Off the Parser
+ 7 7| -------------------
+ 8 8| First we cause a deliberate scanner error so as to prevent the parser from
+ 9 9| generating lots of errors over the syntactic rubbish presented here.
+ 10 10|
+ 11 11| @
+ Error|....^<special><space> is not a legal special sequence.
+ Warning|.....^Line has trailing spaces up to and including this space.
+ 12 12|
+ 13 13| List of All Possible Special Sequences
+ 14 14| --------------------------------------
+ 15 15| The following is a list of the default special character followed by each of
+ 16 16| the ASCII printables.
+ 17 17| 000 to 031 are unprintable control characters.
+ 18 18|
+ 19 19| 032 @ - ILLEGAL. (Note: Hyphen is needed to avoid trailing blanks error.)
+ Error|......^<special><space> is not a legal special sequence.
+ 20 20| 033 @! - Comment.
+ 21 21| 034 @" - Parameter delimeter.
+ 22 22| 035 @#X - Short name sequence.
+ 23 23| @$ 036 - Define macro. Has to be at start of line.
+ 24 24| 037 @% - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 25 25| 038 @& - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 26 26| 039 @' - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 27 27| 040 @( - Open parameter list.
+ 28 28| 041 @) - Close parameter list.
+ 29 29| 042
+ 30 30| @* - Old fashioned section marker (has to be at start of a line.).
+ Error|.^Unknown special sequence.
+ 31 31| 043 @+ - Insert newline.
+ 32 32| 044 @, - Parameter separator.
+ 33 33| 045 @-
+ 34 34| - Ignore end of line marker (has to be at end of line).
+ 35 35| 046 @. - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 36 36| 047 @/ - Emphasised text.
+ 37 37| 048 @0 - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 38 38| 049 @1 - Formal parameter 1.
+ 39 39| 050 @2 - Formal parameter 2.
+ 40 40| 051 @3 - Formal parameter 3.
+ 41 41| 052 @4 - Formal parameter 4.
+ 42 42| 053 @5 - Formal parameter 5.
+ 43 43| 054 @6 - Formal parameter 6.
+ 44 44| 055 @7 - Formal parameter 7.
+ 45 45| 056 @8 - Formal parameter 8.
+ 46 46| 057 @9 - Formal parameter 9.
+ 47 47| 058 @: - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 48 48| 059 @; - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 49 49| 060 @< - Open macro name.
+ 50 50| 061 @=@ - Set special character.
+ 51 51| 062 @> - Close macro name.
+ 52 52| 063 @? - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 53 53| 064 @@ - Insert special character into text.
+ 54 54| @A 065 - New section (level 1). Must be at start of a line.
+ 55 55| @B 066 - New section (level 2). Must be at start of a line.
+ 56 56| @C 067 - New section (level 3). Must be at start of a line.
+ 57 57| @D 068 - New section (level 4). Must be at start of a line.
+ 58 58| @E 069 - New section (level 5). Must be at start of a line.
+ 59 59| 070 @F - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 60 60| 071 @G - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 61 61| 072 @H - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 62 62| 073 @I - Include file. Will provoke an error here though.
+ Error|......^Include sequence must be at the beginning of a line.
+ |......^Include ignored.
+ 63 63| 074 @J - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 64 64| 075 @K - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 65 65| 076 @L - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 66 66| 077 @M - Tags macro as being allowed to be called many times.
+ 67 67| 078 @N - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 68 68| @O 079 - New macro attached to output file. Has to be at start of line.
+ 69 69| 080 @P - Pragma. Will cause error here though.
+ Error|......^Pragma sequence @p must be at the start of a line.
+ |......^The rest of this line will be ignored.
+ Error|......^Unrecognised pragma. Possible legal pragmas are:
+ |......^ @p indentation = none | blank
+ |......^ @p maximum_input_line_length = <num>|infinity
+ |......^ @p maximum_output_line_length = <num>|infinity
+ |......^ @p typesetter = none | tex | hypertext | html
+ |......^ @p no_doc_header
+ |......^ @p raw_macro_and_section_names
+ |......^ @p ignore_text_after_special_minus
+ |......^ @p no_paragraph_markups
+ |......^ @p declare_source_code_type "<name>"
+ |......^ @p automatic_line_directive_macro = "<name>"
+ |......^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+ |......^ @p #line_offset = <num>
+ |......^ @p #line_depth = <num>
+ |......^The blanks between arguments are important.
+ |......^Pragma ignored.
+ 70 70| 081 @Q - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 71 71| 082 @R - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 72 72| 083 @S - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 73 73| 084 @T - Typesetter directive. Will cause an error here though.
+ Error|......^Typesetter directive @t must be at the start of a line.
+ |......^The rest of this line will be ignored.
+ Error|......^Unrecognised typesetter directive. Legal ones are:
+ |......^ @t new_page
+ |......^ @t table_of_contents
+ |......^ @t title <font> <align> <string>
+ |......^ @t vskip <num> mm
+ |......^The blanks between arguments are important.
+ |......^Typesetter directive ignored.
+ 74 74| 085 @U - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 75 75| 086 @V - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 76 76| 087 @W - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 77 77| 088 @X - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 78 78| 089 @Y - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 79 79| 090 @Z - Tags macro as being allowed to be called zero times.
+ 80 80| 091 @[ - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 81 81| 092 @\ - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 82 82| 093 @] - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 83 83| 094 @^D(065) - Insert control character into text
+ 84 84| 095 @_ - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 85 85| 096 @` - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 86 86| @a 097 - New section (level 1). Must be at start of a line.
+ 87 87| @b 098 - New section (level 1). Must be at start of a line.
+ 88 88| @c 099 - New section (level 1). Must be at start of a line.
+ 89 89| @d 100 - New section (level 1). Must be at start of a line.
+ 90 90| @e 101 - New section (level 1). Must be at start of a line.
+ 91 91| 102 @f - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 92 92| 103 @g - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 93 93| 104 @h - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 94 94| 105 @i - Include file. Will provoke an error here though.
+ Error|......^Include sequence must be at the beginning of a line.
+ |......^Include ignored.
+ 95 95| 106 @j - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 96 96| 107 @k - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 97 97| 108 @l - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 98 98| 109 @m - Tags macro as being allowed to be called many times.
+ 99 99| 110 @n - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 100 100| @O 111 - New macro attached to output file. Has to be at start of line.
+ 101 101| 112 @p - Pragma. Will cause error here though.
+ Error|......^Pragma sequence @p must be at the start of a line.
+ |......^The rest of this line will be ignored.
+ Error|......^Unrecognised pragma. Possible legal pragmas are:
+ |......^ @p indentation = none | blank
+ |......^ @p maximum_input_line_length = <num>|infinity
+ |......^ @p maximum_output_line_length = <num>|infinity
+ |......^ @p typesetter = none | tex | hypertext | html
+ |......^ @p no_doc_header
+ |......^ @p raw_macro_and_section_names
+ |......^ @p ignore_text_after_special_minus
+ |......^ @p no_paragraph_markups
+ |......^ @p declare_source_code_type "<name>"
+ |......^ @p automatic_line_directive_macro = "<name>"
+ |......^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+ |......^ @p #line_offset = <num>
+ |......^ @p #line_depth = <num>
+ |......^The blanks between arguments are important.
+ |......^Pragma ignored.
+ 102 102| 113 @q - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 103 103| 114 @r - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 104 104| 115 @s - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 105 105| 116 @t - Typesetter directive. Will cause an error here though.
+ Error|......^Typesetter directive @t must be at the start of a line.
+ |......^The rest of this line will be ignored.
+ Error|......^Unrecognised typesetter directive. Legal ones are:
+ |......^ @t new_page
+ |......^ @t table_of_contents
+ |......^ @t title <font> <align> <string>
+ |......^ @t vskip <num> mm
+ |......^The blanks between arguments are important.
+ |......^Typesetter directive ignored.
+ 106 106| 117 @u - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 107 107| 118 @v - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 108 108| 119 @w - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 109 109| 120 @x - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 110 110| 121 @y - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 111 111| 122 @z - Tags macro as being allowed to be called zero times.
+ 112 112| 123 @{ - Open macro body.
+ 113 113| 124 @| - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 114 114| 125 @} - Close macro body.
+ 115 115| 126 @~ - ILLEGAL.
+ Error|......^Unknown special sequence.
+ 116 116| 127 to 255 are not standard printable ASCII characters.
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 58 Errors and 1 Warning.
diff --git a/web/funnelAC/results/sc11.lis b/web/funnelAC/results/sc11.lis
new file mode 100644
index 0000000000..6082c059c4
--- /dev/null
+++ b/web/funnelAC/results/sc11.lis
@@ -0,0 +1,307 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 31 3A 20 53 79 6E 74 61 78 20 6F 66 20 | SC11: Syntax of |
+| 74 68 65 20 69 6E 63 6C 75 64 65 20 70 72 61 67 | the include prag |
+| 6D 61 2E 0A 0A 31 2E 20 54 65 73 74 20 69 6E 63 | ma...1. Test inc |
+| 6C 75 64 65 20 70 72 61 67 6D 61 20 6E 6F 74 20 | lude pragma not |
+| 61 74 20 73 74 61 72 74 20 6F 66 20 6C 69 6E 65 | at start of line |
+| 2E 0A 0A 20 20 20 40 69 0A 0A 32 2E 20 54 65 73 | ... @i..2. Tes |
+| 74 20 41 54 69 20 6E 6F 74 20 66 6F 6C 6C 6F 77 | t ATi not follow |
+| 65 64 20 62 79 20 61 20 62 6C 61 6E 6B 2E 0A 0A | ed by a blank... |
+| 40 69 78 0A 0A 33 2E 20 54 65 73 74 20 69 6E 63 | @ix..3. Test inc |
+| 6C 75 64 65 20 66 69 6C 65 6E 61 6D 65 20 69 73 | lude filename is |
+| 20 74 6F 6F 20 6C 6F 6E 67 2E 20 54 68 65 20 6D | too long. The m |
+| 61 78 69 6D 75 6D 20 6F 6E 20 74 68 65 20 4D 61 | aximum on the Ma |
+| 63 69 6E 74 6F 73 68 20 69 73 0A 20 20 20 32 35 | cintosh is. 25 |
+| 35 20 62 75 74 20 77 65 20 77 69 6C 6C 20 75 73 | 5 but we will us |
+| 65 20 61 20 66 69 6C 65 6E 61 6D 65 20 6F 66 20 | e a filename of |
+| 6F 76 65 72 20 31 30 32 34 20 63 68 61 72 61 63 | over 1024 charac |
+| 74 65 72 73 20 73 6F 20 61 73 20 74 6F 20 6D 61 | ters so as to ma |
+| 6B 65 0A 20 20 20 74 68 65 20 74 65 73 74 20 70 | ke. the test p |
+| 6F 72 74 61 62 6C 65 2E 20 54 68 65 20 61 63 74 | ortable. The act |
+| 75 61 6C 20 6C 65 6E 67 74 68 20 75 73 65 64 20 | ual length used |
+| 69 73 20 31 31 30 30 20 63 68 61 72 61 63 74 65 | is 1100 characte |
+| 72 73 20 69 6E 20 74 68 65 0A 20 20 20 66 69 6C | rs in the. fil |
+| 65 6E 61 6D 65 2E 0A 0A 20 20 20 20 20 20 20 20 | ename... |
+| 20 20 20 20 31 20 20 20 20 20 20 20 20 20 32 20 | 1 2 |
+| 20 20 20 20 20 20 20 20 33 20 20 20 20 20 20 20 | 3 |
+| 20 20 34 20 20 20 20 20 20 20 20 20 35 20 20 20 | 4 5 |
+| 20 20 20 20 20 20 36 20 20 20 20 20 20 20 20 20 | 6 |
+| 37 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 | 7 8 |
+| 20 20 20 20 39 20 20 20 20 20 20 20 20 20 30 20 | 9 0 |
+| 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 | 1 |
+| 20 20 32 20 20 20 20 20 20 20 20 20 33 20 20 20 | 2 3 |
+| 20 20 20 20 20 20 34 20 20 20 20 20 20 20 20 20 | 4 |
+| 35 20 20 20 20 20 20 20 20 20 36 20 20 20 20 20 | 5 6 |
+| 20 20 20 20 37 20 20 20 20 20 20 20 20 20 38 20 | 7 8 |
+| 20 20 20 20 20 20 20 20 39 20 20 20 20 20 20 20 | 9 |
+| 20 20 30 20 20 20 20 20 20 20 20 20 31 20 20 20 | 0 1 |
+| 20 20 20 20 20 20 32 20 20 20 20 20 20 20 20 20 | 2 |
+| 33 20 20 20 20 20 20 20 20 20 34 20 20 20 20 20 | 3 4 |
+| 20 20 20 20 35 20 20 20 20 20 20 20 20 20 36 20 | 5 6 |
+| 20 20 20 20 20 20 20 20 37 20 20 20 20 20 20 20 | 7 |
+| 20 20 38 20 20 20 20 20 20 20 20 20 39 20 20 20 | 8 9 |
+| 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 | 0 |
+| 31 20 20 20 20 20 20 20 20 20 32 20 20 20 20 20 | 1 2 |
+| 20 20 20 20 33 20 20 20 20 20 20 20 20 20 34 20 | 3 4 |
+| 20 20 20 20 20 20 20 20 35 20 20 20 20 20 20 20 | 5 |
+| 20 20 36 20 20 20 20 20 20 20 20 20 37 20 20 20 | 6 7 |
+| 20 20 20 20 20 20 38 20 20 20 20 20 20 20 20 20 | 8 |
+| 39 20 20 20 20 20 20 20 20 20 30 20 20 20 20 20 | 9 0 |
+| 20 20 20 20 31 20 20 20 20 20 20 20 20 20 32 20 | 1 2 |
+| 20 20 20 20 20 20 20 20 33 20 20 20 20 20 20 20 | 3 |
+| 20 20 34 20 20 20 20 20 20 20 20 20 35 20 20 20 | 4 5 |
+| 20 20 20 20 20 20 36 20 20 20 20 20 20 20 20 20 | 6 |
+| 37 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 | 7 8 |
+| 20 20 20 20 39 20 20 20 20 20 20 20 20 20 30 20 | 9 0 |
+| 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 | 1 |
+| 20 20 32 20 20 20 20 20 20 20 20 20 33 20 20 20 | 2 3 |
+| 20 20 20 20 20 20 34 20 20 20 20 20 20 20 20 20 | 4 |
+| 35 20 20 20 20 20 20 20 20 20 36 20 20 20 20 20 | 5 6 |
+| 20 20 20 20 37 20 20 20 20 20 20 20 20 20 38 20 | 7 8 |
+| 20 20 20 20 20 20 20 20 39 20 20 20 20 20 20 20 | 9 |
+| 20 20 30 20 20 20 20 20 20 20 20 20 31 20 20 20 | 0 1 |
+| 20 20 20 20 20 20 32 20 20 20 20 20 20 20 20 20 | 2 |
+| 33 20 20 20 20 20 20 20 20 20 34 20 20 20 20 20 | 3 4 |
+| 20 20 20 20 35 20 20 20 20 20 20 20 20 20 36 20 | 5 6 |
+| 20 20 20 20 20 20 20 20 37 20 20 20 20 20 20 20 | 7 |
+| 20 20 38 20 20 20 20 20 20 20 20 20 39 20 20 20 | 8 9 |
+| 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 | 0 |
+| 31 20 20 20 20 20 20 20 20 20 32 20 20 20 20 20 | 1 2 |
+| 20 20 20 20 33 20 20 20 20 20 20 20 20 20 34 20 | 3 4 |
+| 20 20 20 20 20 20 20 20 35 20 20 20 20 20 20 20 | 5 |
+| 20 20 36 20 20 20 20 20 20 20 20 20 37 20 20 20 | 6 7 |
+| 20 20 20 20 20 20 38 20 20 20 20 20 20 20 20 20 | 8 |
+| 39 20 20 20 20 20 20 20 20 20 30 20 20 20 20 20 | 9 0 |
+| 20 20 20 20 31 20 20 20 20 20 20 20 20 20 32 20 | 1 2 |
+| 20 20 20 20 20 20 20 20 33 20 20 20 20 20 20 20 | 3 |
+| 20 20 34 20 20 20 20 20 20 20 20 20 35 20 20 20 | 4 5 |
+| 20 20 20 20 20 20 36 20 20 20 20 20 20 20 20 20 | 6 |
+| 37 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 | 7 8 |
+| 20 20 20 20 39 20 20 20 20 20 20 20 20 20 30 20 | 9 0 |
+| 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 | 1 |
+| 20 20 32 20 20 20 20 20 20 20 20 20 33 20 20 20 | 2 3 |
+| 20 20 20 20 20 20 34 20 20 20 20 20 20 20 20 20 | 4 |
+| 35 20 20 20 20 20 20 20 20 20 36 20 20 20 20 20 | 5 6 |
+| 20 20 20 20 37 20 20 20 20 20 20 20 20 20 38 20 | 7 8 |
+| 20 20 20 20 20 20 20 20 39 20 20 20 20 20 20 20 | 9 |
+| 20 20 30 20 20 20 20 20 20 20 20 20 31 20 20 20 | 0 1 |
+| 20 20 20 20 20 20 32 20 20 20 20 20 20 20 20 20 | 2 |
+| 33 20 20 20 20 20 20 20 20 20 34 20 20 20 20 20 | 3 4 |
+| 20 20 20 20 35 20 20 20 20 20 20 20 20 20 36 20 | 5 6 |
+| 20 20 20 20 20 20 20 20 37 20 20 20 20 20 20 20 | 7 |
+| 20 20 38 20 20 20 20 20 20 20 20 20 39 20 20 20 | 8 9 |
+| 20 20 20 20 20 20 30 0A 40 69 20 31 32 33 34 35 | 0.@i 12345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 0A 0A 34 2E 20 49 6E 63 6C | 4567890..4. Incl |
+| 75 64 65 20 70 72 61 67 6D 61 20 68 61 73 20 61 | ude pragma has a |
+| 6E 20 65 6D 70 74 79 20 66 69 6C 65 6E 61 6D 65 | n empty filename |
+| 2E 20 4E 6F 74 65 3A 20 42 65 63 61 75 73 65 20 | . Note: Because |
+| 74 68 65 20 41 54 69 20 68 61 73 20 74 6F 20 62 | the ATi has to b |
+| 65 0A 20 20 20 66 6F 6C 6C 6F 77 65 64 20 62 79 | e. followed by |
+| 20 61 20 62 6C 61 6E 6B 2C 20 77 65 20 68 61 76 | a blank, we hav |
+| 65 20 74 6F 20 69 6E 63 75 72 20 61 20 74 72 61 | e to incur a tra |
+| 69 6C 69 6E 67 20 62 6C 61 6E 6B 20 65 72 72 6F | iling blank erro |
+| 72 20 68 65 72 65 20 69 6E 0A 20 20 20 6F 72 64 | r here in. ord |
+| 65 72 20 74 6F 20 70 72 6F 76 6F 6B 65 20 74 68 | er to provoke th |
+| 65 20 65 72 72 6F 72 20 77 65 20 72 65 61 6C 6C | e error we reall |
+| 79 20 77 61 6E 74 20 74 6F 20 73 65 65 2E 0A 0A | y want to see... |
+| 40 69 20 0A 0A | @i .. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC11: Syntax of the include pragma.<010>
+00002 00002| <010>
+00003 00003| 1. Test include pragma not at start of line.<010>
+00004 00004| <010>
+00005 00005| @i<010>
+00006 00006| <010>
+00007 00007| 2. Test ATi not followed by a blank.<010>
+00008 00008| <010>
+00009 00009| @ix<010>
+00010 00010| <010>
+00011 00011| 3. Test include filename is too long. The maximum on the Macintosh is<010>
+00012 00012| 255 but we will use a filename of over 1024 characters so as to make<010>
+00013 00013| the test portable. The actual length used is 1100 characters in the<010>
+00014 00014| filename.<010>
+00015 00015| <010>
+00016 00016| 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0<010>
+00017 00017| @i 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
+00018 00018| <010>
+00019 00019| 4. Include pragma has an empty filename. Note: Because the ATi has to be<010>
+00020 00020| followed by a blank, we have to incur a trailing blank error here in<010>
+00021 00021| order to provoke the error we really want to see.<010>
+00022 00022| <010>
+00023 00023| @i <010>
+00024 00024| <010>
+00025 00025| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 6 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC11: Syntax of the include pragma.<010>
+<010>
+1. Test include pragma not at start of line.<010>
+<010>
+ "
+0006[01]: Text. Text scrap[Grey]="<010>
+2. Test ATi not followed by a blank.<010>
+<010>
+"
+0010[01]: Text. Text scrap[Grey]="<010>
+3. Test include filename is too long. The maximum on the Macintosh is<010>
+ 255 but we will use a filename of over 1024 characters so as to make<010>
+ the test portable. The actual length used is 1100 characters in the<010>
+ filename.<010>
+<010>
+ 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0<010>
+"
+0018[01]: Text. Text scrap[Grey]="<010>
+4. Include pragma has an empty filename. Note: Because the ATi has to be<010>
+ followed by a blank, we have to incur a trailing blank error here in<010>
+ order to provoke the error we really want to see.<010>
+<010>
+"
+0024[01]: Text. Text scrap[White]="<010>
+"
+0025[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC11: Syntax of the include pragma.
+ 2 2|
+ 3 3| 1. Test include pragma not at start of line.
+ 4 4|
+ 5 5| @i
+ Error|....^Include sequence must be at the beginning of a line.
+ |....^Include ignored.
+ 6 6|
+ 7 7| 2. Test ATi not followed by a blank.
+ 8 8|
+ 9 9| @ix
+ Error|...^Include sequence (@i) must be followed by a blank.
+ |...^Example include: @i macros.fwi
+ |...^Include ignored.
+ 10 10|
+ 11 11| 3. Test include filename is too long. The maximum on the Macintosh is
+ 12 12| 255 but we will use a filename of over 1024 characters so as to make
+ 13 13| the test portable. The actual length used is 1100 characters in the
+ 14 14| filename.
+ 15 15|
+ 16 16| 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
+ Error|.................................................................................^Input line is too long (this character is the first offender).
+ |.................................................................................^Currently, the maximum allowable input line length is 80.
+ |.................................................................................^Note: You can change this using a pragma directive (@p).
+ 17 17| @i 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ Error|.^This include command's file specification is too long.
+ |.^The maximum file name length is <<Suppressed>> characters.
+ |.^Include ignored.
+ Error|.................................................................................^Input line is too long (this character is the first offender).
+ |.................................................................................^Currently, the maximum allowable input line length is 80.
+ |.................................................................................^Note: You can change this using a pragma directive (@p).
+ 18 18|
+ 19 19| 4. Include pragma has an empty filename. Note: Because the ATi has to be
+ 20 20| followed by a blank, we have to incur a trailing blank error here in
+ 21 21| order to provoke the error we really want to see.
+ 22 22|
+ 23 23| @i
+ Warning|...^Line has trailing spaces up to and including this space.
+ Error|....^Expecting the name of a file to include.
+ 24 24|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 6 Errors and 1 Warning.
diff --git a/web/funnelAC/results/sc12.lis b/web/funnelAC/results/sc12.lis
new file mode 100644
index 0000000000..1421eacfbc
--- /dev/null
+++ b/web/funnelAC/results/sc12.lis
@@ -0,0 +1,77 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 32 3A 20 49 6E 63 6C 75 64 65 20 66 69 | SC12: Include fi |
+| 6C 65 20 63 61 6E 6E 6F 74 20 62 65 20 66 6F 75 | le cannot be fou |
+| 6E 64 2E 0A 54 65 73 74 20 70 65 72 73 6F 6E 3A | nd..Test person: |
+| 20 44 4F 4E 54 20 63 72 65 61 74 65 20 73 63 31 | DONT create sc1 |
+| 32 61 2E 69 6E 63 2E 20 49 74 20 69 73 20 6E 6F | 2a.inc. It is no |
+| 74 20 73 75 70 70 6F 73 65 64 20 74 6F 20 65 78 | t supposed to ex |
+| 69 73 74 21 0A 54 68 65 20 66 6F 6C 6C 6F 77 69 | ist!.The followi |
+| 6E 67 20 69 6E 63 6C 75 64 65 20 73 68 6F 75 6C | ng include shoul |
+| 64 20 79 69 65 6C 64 20 61 20 22 66 69 6C 65 20 | d yield a "file |
+| 6E 6F 74 20 66 6F 75 6E 64 20 65 72 72 6F 72 2E | not found error. |
+| 22 0A 0A 40 69 20 73 63 31 32 61 2E 69 6E 63 0A | "..@i sc12a.inc. |
+| 0A | . |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC12: Include file cannot be found.<010>
+00002 00002| Test person: DONT create sc12a.inc. It is not supposed to exist!<010>
+00003 00003| The following include should yield a "file not found error."<010>
+00004 00004| <010>
+00005 00005| @i sc12a.inc<010>
+00006 00006| <010>
+00007 00007| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 3 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC12: Include file cannot be found.<010>
+Test person: DONT create sc12a.inc. It is not supposed to exist!<010>
+The following include should yield a "file not found error."<010>
+<010>
+"
+0006[01]: Text. Text scrap[White]="<010>
+"
+0007[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC12: Include file cannot be found.
+ 2 2| Test person: DONT create sc12a.inc. It is not supposed to exist!
+ 3 3| The following include should yield a "file not found error."
+ 4 4|
+ 5 5| @i sc12a.inc
+ Error|....^Error opening include file.
+ |....^The include file's expanded name was "<<Suppressed>>".
+ 6 6|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/sc13.lis b/web/funnelAC/results/sc13.lis
new file mode 100644
index 0000000000..39e82c6a79
--- /dev/null
+++ b/web/funnelAC/results/sc13.lis
@@ -0,0 +1,500 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 33 3A 20 56 61 72 69 6F 75 73 20 6B 69 | SC13: Various ki |
+| 6E 64 73 20 6F 66 20 69 6E 63 6C 75 64 65 20 66 | nds of include f |
+| 69 6C 65 2E 0A 0A 31 2E 20 49 6E 63 6C 75 64 65 | ile...1. Include |
+| 20 66 69 6C 65 20 69 73 20 65 6D 70 74 79 2E 0A | file is empty.. |
+| 42 65 66 6F 72 65 20 69 6E 63 6C 75 64 65 0A 40 | Before include.@ |
+| 69 20 73 63 31 33 61 0A 41 66 74 65 72 20 69 6E | i sc13a.After in |
+| 63 6C 75 64 65 0A 0A 32 2E 20 49 6E 63 6C 75 64 | clude..2. Includ |
+| 65 20 66 69 6C 65 20 63 6F 6E 74 61 69 6E 73 20 | e file contains |
+| 61 20 73 69 6E 67 6C 65 20 62 6C 61 6E 6B 20 6C | a single blank l |
+| 69 6E 65 2E 0A 42 65 66 6F 72 65 20 69 6E 63 6C | ine..Before incl |
+| 75 64 65 0A 40 69 20 73 63 31 33 62 0A 41 66 74 | ude.@i sc13b.Aft |
+| 65 72 20 69 6E 63 6C 75 64 65 0A 0A 33 2E 20 49 | er include..3. I |
+| 6E 63 6C 75 64 65 20 66 69 6C 65 20 63 6F 6E 74 | nclude file cont |
+| 61 69 6E 73 20 74 77 6F 20 62 6C 61 6E 6B 20 6C | ains two blank l |
+| 69 6E 65 73 2E 0A 42 65 66 6F 72 65 20 69 6E 63 | ines..Before inc |
+| 6C 75 64 65 0A 40 69 20 73 63 31 33 63 0A 41 66 | lude.@i sc13c.Af |
+| 74 65 72 20 69 6E 63 6C 75 64 65 0A 0A 34 2E 20 | ter include..4. |
+| 49 6E 63 6C 75 64 65 20 66 69 6C 65 20 63 6F 6E | Include file con |
+| 74 61 69 6E 73 20 61 20 73 69 6E 67 6C 65 20 6C | tains a single l |
+| 69 6E 65 20 77 69 74 68 20 74 65 78 74 20 6F 6E | ine with text on |
+| 20 69 74 2E 0A 42 65 66 6F 72 65 20 69 6E 63 6C | it..Before incl |
+| 75 64 65 0A 40 69 20 73 63 31 33 64 0A 41 66 74 | ude.@i sc13d.Aft |
+| 65 72 20 69 6E 63 6C 75 64 65 0A 0A 35 2E 20 49 | er include..5. I |
+| 6E 63 6C 75 64 65 20 66 69 6C 65 27 73 20 6C 61 | nclude file's la |
+| 73 74 20 6C 69 6E 65 20 69 73 20 6E 6F 74 20 70 | st line is not p |
+| 72 6F 70 65 72 6C 79 20 74 65 72 6D 69 6E 61 74 | roperly terminat |
+| 65 64 2E 0A 42 65 66 6F 72 65 20 69 6E 63 6C 75 | ed..Before inclu |
+| 64 65 0A 40 69 20 73 63 31 33 65 0A 41 66 74 65 | de.@i sc13e.Afte |
+| 72 20 69 6E 63 6C 75 64 65 0A 0A 36 2E 20 49 6E | r include..6. In |
+| 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 6F 72 | clude file is or |
+| 64 69 6E 61 72 79 2E 0A 42 65 66 6F 72 65 20 69 | dinary..Before i |
+| 6E 63 6C 75 64 65 0A 40 69 20 73 63 31 33 66 0A | nclude.@i sc13f. |
+| 41 66 74 65 72 20 69 6E 63 6C 75 64 65 0A 0A 37 | After include..7 |
+| 2E 20 54 65 73 74 20 75 70 70 65 72 20 63 61 73 | . Test upper cas |
+| 65 20 49 20 61 6E 64 20 66 69 6C 65 20 65 78 74 | e I and file ext |
+| 65 6E 73 69 6F 6E 20 69 6E 68 65 72 69 74 61 6E | ension inheritan |
+| 63 65 2E 0A 42 65 66 6F 72 65 20 69 6E 63 6C 75 | ce..Before inclu |
+| 64 65 0A 40 49 20 73 63 31 33 66 0A 41 66 74 65 | de.@I sc13f.Afte |
+| 72 20 69 6E 63 6C 75 64 65 0A 0A 45 6E 64 20 6F | r include..End o |
+| 66 20 74 65 73 74 20 46 69 6C 65 2E 0A | f test File.. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 0A | . |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 0A 0A | .. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl |
+| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes |
+| 74 20 53 43 31 33 64 2E 20 4A 75 73 74 20 61 20 | t SC13d. Just a |
+| 66 69 6C 65 20 63 6F 6E 74 61 69 6E 69 6E 67 20 | file containing |
+| 6F 6E 65 20 6C 69 6E 65 2E 0A | one line.. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl |
+| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes |
+| 74 20 53 43 31 33 65 2E 20 54 68 65 20 74 65 73 | t SC13e. The tes |
+| 74 20 69 73 20 74 6F 20 73 65 65 20 68 6F 77 20 | t is to see how |
+| 46 75 6E 6E 65 6C 57 65 62 0A 63 6F 70 65 73 20 | FunnelWeb.copes |
+| 77 69 74 68 20 61 6E 20 69 6E 63 6C 75 64 65 20 | with an include |
+| 66 69 6C 65 20 74 68 61 74 20 68 61 73 20 61 6E | file that has an |
+| 20 69 6D 70 72 6F 70 65 72 6C 79 20 74 65 72 6D | improperly term |
+| 69 6E 61 74 65 64 20 6C 61 73 74 20 6C 69 6E 65 | inated last line |
+| 2E 0A 0A | ... |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl |
+| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes |
+| 74 73 20 53 43 31 33 2E 36 20 61 6E 64 20 53 43 | ts SC13.6 and SC |
+| 31 33 2E 37 2E 0A 54 68 65 72 65 20 61 72 65 20 | 13.7..There are |
+| 6F 6E 6C 79 20 74 77 6F 20 6C 69 6E 65 73 2C 20 | only two lines, |
+| 61 6E 64 20 74 68 69 73 20 69 73 20 74 68 65 20 | and this is the |
+| 73 65 63 6F 6E 64 20 6F 6E 65 2E 0A | second one.. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl |
+| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes |
+| 74 73 20 53 43 31 33 2E 36 20 61 6E 64 20 53 43 | ts SC13.6 and SC |
+| 31 33 2E 37 2E 0A 54 68 65 72 65 20 61 72 65 20 | 13.7..There are |
+| 6F 6E 6C 79 20 74 77 6F 20 6C 69 6E 65 73 2C 20 | only two lines, |
+| 61 6E 64 20 74 68 69 73 20 69 73 20 74 68 65 20 | and this is the |
+| 73 65 63 6F 6E 64 20 6F 6E 65 2E 0A | second one.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC13: Various kinds of include file.<010>
+00002 00002| <010>
+00003 00003| 1. Include file is empty.<010>
+00004 00004| Before include<010>
+00005 00005| @i sc13a<010>
+00006 00006| After include<010>
+00007 00007| <010>
+00008 00008| 2. Include file contains a single blank line.<010>
+00009 00009| Before include<010>
+00010 00010| @i sc13b<010>
+00011 00001| <010>
+00012 00011| After include<010>
+00013 00012| <010>
+00014 00013| 3. Include file contains two blank lines.<010>
+00015 00014| Before include<010>
+00016 00015| @i sc13c<010>
+00017 00001| <010>
+00018 00002| <010>
+00019 00016| After include<010>
+00020 00017| <010>
+00021 00018| 4. Include file contains a single line with text on it.<010>
+00022 00019| Before include<010>
+00023 00020| @i sc13d<010>
+00024 00001| This is the include file for test SC13d. Just a file containing one line.<010>
+00025 00021| After include<010>
+00026 00022| <010>
+00027 00023| 5. Include file's last line is not properly terminated.<010>
+00028 00024| Before include<010>
+00029 00025| @i sc13e<010>
+00030 00001| This is the include file for test SC13e. The test is to see how FunnelWeb<010>
+00031 00002| copes with an include file that has an improperly terminated last line.<010>
+00032 00003| <010>
+00033 00026| After include<010>
+00034 00027| <010>
+00035 00028| 6. Include file is ordinary.<010>
+00036 00029| Before include<010>
+00037 00030| @i sc13f<010>
+00038 00001| This is the include file for tests SC13.6 and SC13.7.<010>
+00039 00002| There are only two lines, and this is the second one.<010>
+00040 00031| After include<010>
+00041 00032| <010>
+00042 00033| 7. Test upper case I and file extension inheritance.<010>
+00043 00034| Before include<010>
+00044 00035| @I sc13f<010>
+00045 00001| This is the include file for tests SC13.6 and SC13.7.<010>
+00046 00002| There are only two lines, and this is the second one.<010>
+00047 00036| After include<010>
+00048 00037| <010>
+00049 00038| End of test File.<010>
+00050 00039| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 15 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC13: Various kinds of include file.<010>
+<010>
+1. Include file is empty.<010>
+Before include<010>
+"
+0006[01]: Text. Text scrap[Grey]="After include<010>
+<010>
+2. Include file contains a single blank line.<010>
+Before include<010>
+"
+0011[01]: Text. Text scrap[White]="<010>
+"
+0012[01]: Text. Text scrap[Grey]="After include<010>
+<010>
+3. Include file contains two blank lines.<010>
+Before include<010>
+"
+0017[01]: Text. Text scrap[White]="<010>
+<010>
+"
+0019[01]: Text. Text scrap[Grey]="After include<010>
+<010>
+4. Include file contains a single line with text on it.<010>
+Before include<010>
+"
+0024[01]: Text. Text scrap[Grey]="This is the include file for test SC13d. Just a file containing one line.<010>
+"
+0025[01]: Text. Text scrap[Grey]="After include<010>
+<010>
+5. Include file's last line is not properly terminated.<010>
+Before include<010>
+"
+0030[01]: Text. Text scrap[Grey]="This is the include file for test SC13e. The test is to see how FunnelWeb<010>
+copes with an include file that has an improperly terminated last line.<010>
+<010>
+"
+0033[01]: Text. Text scrap[Grey]="After include<010>
+<010>
+6. Include file is ordinary.<010>
+Before include<010>
+"
+0038[01]: Text. Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+There are only two lines, and this is the second one.<010>
+"
+0040[01]: Text. Text scrap[Grey]="After include<010>
+<010>
+7. Test upper case I and file extension inheritance.<010>
+Before include<010>
+"
+0045[01]: Text. Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+There are only two lines, and this is the second one.<010>
+"
+0047[01]: Text. Text scrap[Grey]="After include<010>
+<010>
+End of test File.<010>
+"
+0050[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="SC13: Various kinds of include file.<010>
+<010>
+1. Include file is empty.<010>
+Before include<010>
+"
+Text scrap[Grey]="After include<010>
+<010>
+2. Include file contains a single blank line.<010>
+Before include<010>
+"
+Text scrap[White]="<010>
+"
+Text scrap[Grey]="After include<010>
+<010>
+3. Include file contains two blank lines.<010>
+Before include<010>
+"
+Text scrap[White]="<010>
+<010>
+"
+Text scrap[Grey]="After include<010>
+<010>
+4. Include file contains a single line with text on it.<010>
+Before include<010>
+"
+Text scrap[Grey]="This is the include file for test SC13d. Just a file containing one line.<010>
+"
+Text scrap[Grey]="After include<010>
+<010>
+5. Include file's last line is not properly terminated.<010>
+Before include<010>
+"
+Text scrap[Grey]="This is the include file for test SC13e. The test is to see how FunnelWeb<010>
+copes with an include file that has an improperly terminated last line.<010>
+<010>
+"
+Text scrap[Grey]="After include<010>
+<010>
+6. Include file is ordinary.<010>
+Before include<010>
+"
+Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+There are only two lines, and this is the second one.<010>
+"
+Text scrap[Grey]="After include<010>
+<010>
+7. Test upper case I and file extension inheritance.<010>
+Before include<010>
+"
+Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010>
+There are only two lines, and this is the second one.<010>
+"
+Text scrap[Grey]="After include<010>
+<010>
+End of test File.<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC13: Various kinds of include file.
+ 2 2|
+ 3 3| 1. Include file is empty.
+ 4 4| Before include
+ 5 5| @i sc13a
+ Warning|.^Include file is empty (not a byte in syte)!
+ 6 6| After include
+ 7 7|
+ 8 8| 2. Include file contains a single blank line.
+ 9 9| Before include
+ 10 10| @i sc13b
+ 11 1|
+ 12 11| After include
+ 13 12|
+ 14 13| 3. Include file contains two blank lines.
+ 15 14| Before include
+ 16 15| @i sc13c
+ 17 1|
+ 18 2|
+ 19 16| After include
+ 20 17|
+ 21 18| 4. Include file contains a single line with text on it.
+ 22 19| Before include
+ 23 20| @i sc13d
+ 24 1| This is the include file for test SC13d. Just a file containing one line.
+ 25 21| After include
+ 26 22|
+ 27 23| 5. Include file's last line is not properly terminated.
+ 28 24| Before include
+ 29 25| @i sc13e
+ 30 1| This is the include file for test SC13e. The test is to see how FunnelWeb
+ 31 2| copes with an include file that has an improperly terminated last line.
+ 32 3|
+ 33 26| After include
+ 34 27|
+ 35 28| 6. Include file is ordinary.
+ 36 29| Before include
+ 37 30| @i sc13f
+ 38 1| This is the include file for tests SC13.6 and SC13.7.
+ 39 2| There are only two lines, and this is the second one.
+ 40 31| After include
+ 41 32|
+ 42 33| 7. Test upper case I and file extension inheritance.
+ 43 34| Before include
+ 44 35| @I sc13f
+ 45 1| This is the include file for tests SC13.6 and SC13.7.
+ 46 2| There are only two lines, and this is the second one.
+ 47 36| After include
+ 48 37|
+ 49 38| End of test File.
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There was 1 Error and 1 Warning.
diff --git a/web/funnelAC/results/sc14.lis b/web/funnelAC/results/sc14.lis
new file mode 100644
index 0000000000..228c6c5f64
--- /dev/null
+++ b/web/funnelAC/results/sc14.lis
@@ -0,0 +1,477 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that |
+| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb |
+| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of |
+| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is |
+| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most |
+| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit |
+| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in |
+| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before |
+| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i |
+| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th |
+| 65 20 69 6E 63 6C 75 64 65 0A | e include. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00002 00002| This is most easily done with a recursive inclusion.<010>
+00003 00003| <010>
+00004 00004| Before the include<010>
+00005 00005| @i sc14.fw<010>
+00006 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00007 00002| This is most easily done with a recursive inclusion.<010>
+00008 00003| <010>
+00009 00004| Before the include<010>
+00010 00005| @i sc14.fw<010>
+00011 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00012 00002| This is most easily done with a recursive inclusion.<010>
+00013 00003| <010>
+00014 00004| Before the include<010>
+00015 00005| @i sc14.fw<010>
+00016 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00017 00002| This is most easily done with a recursive inclusion.<010>
+00018 00003| <010>
+00019 00004| Before the include<010>
+00020 00005| @i sc14.fw<010>
+00021 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00022 00002| This is most easily done with a recursive inclusion.<010>
+00023 00003| <010>
+00024 00004| Before the include<010>
+00025 00005| @i sc14.fw<010>
+00026 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00027 00002| This is most easily done with a recursive inclusion.<010>
+00028 00003| <010>
+00029 00004| Before the include<010>
+00030 00005| @i sc14.fw<010>
+00031 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00032 00002| This is most easily done with a recursive inclusion.<010>
+00033 00003| <010>
+00034 00004| Before the include<010>
+00035 00005| @i sc14.fw<010>
+00036 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00037 00002| This is most easily done with a recursive inclusion.<010>
+00038 00003| <010>
+00039 00004| Before the include<010>
+00040 00005| @i sc14.fw<010>
+00041 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00042 00002| This is most easily done with a recursive inclusion.<010>
+00043 00003| <010>
+00044 00004| Before the include<010>
+00045 00005| @i sc14.fw<010>
+00046 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00047 00002| This is most easily done with a recursive inclusion.<010>
+00048 00003| <010>
+00049 00004| Before the include<010>
+00050 00005| @i sc14.fw<010>
+00051 00001| SC14: Test that the maximum number of levels of include file is 10.<010>
+00052 00002| This is most easily done with a recursive inclusion.<010>
+00053 00003| <010>
+00054 00004| Before the include<010>
+00055 00005| @i sc14.fw<010>
+00056 00006| After the include<010>
+00057 00006| After the include<010>
+00058 00006| After the include<010>
+00059 00006| After the include<010>
+00060 00006| After the include<010>
+00061 00006| After the include<010>
+00062 00006| After the include<010>
+00063 00006| After the include<010>
+00064 00006| After the include<010>
+00065 00006| After the include<010>
+00066 00006| After the include<010>
+00067 00007| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 23 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0006[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0011[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0016[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0021[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0026[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0031[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0036[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0041[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0046[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0051[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010>
+This is most easily done with a recursive inclusion.<010>
+<010>
+Before the include<010>
+"
+0056[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0057[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0058[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0059[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0060[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0061[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0062[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0063[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0064[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0065[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0066[01]: Text. Text scrap[Grey]="After the include<010>
+"
+0067[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC14: Test that the maximum number of levels of include file is 10.
+ 2 2| This is most easily done with a recursive inclusion.
+ 3 3|
+ 4 4| Before the include
+ 5 5| @i sc14.fw
+ 6 1| SC14: Test that the maximum number of levels of include file is 10.
+ 7 2| This is most easily done with a recursive inclusion.
+ 8 3|
+ 9 4| Before the include
+ 10 5| @i sc14.fw
+ 11 1| SC14: Test that the maximum number of levels of include file is 10.
+ 12 2| This is most easily done with a recursive inclusion.
+ 13 3|
+ 14 4| Before the include
+ 15 5| @i sc14.fw
+ 16 1| SC14: Test that the maximum number of levels of include file is 10.
+ 17 2| This is most easily done with a recursive inclusion.
+ 18 3|
+ 19 4| Before the include
+ 20 5| @i sc14.fw
+ 21 1| SC14: Test that the maximum number of levels of include file is 10.
+ 22 2| This is most easily done with a recursive inclusion.
+ 23 3|
+ 24 4| Before the include
+ 25 5| @i sc14.fw
+ 26 1| SC14: Test that the maximum number of levels of include file is 10.
+ 27 2| This is most easily done with a recursive inclusion.
+ 28 3|
+ 29 4| Before the include
+ 30 5| @i sc14.fw
+ 31 1| SC14: Test that the maximum number of levels of include file is 10.
+ 32 2| This is most easily done with a recursive inclusion.
+ 33 3|
+ 34 4| Before the include
+ 35 5| @i sc14.fw
+ 36 1| SC14: Test that the maximum number of levels of include file is 10.
+ 37 2| This is most easily done with a recursive inclusion.
+ 38 3|
+ 39 4| Before the include
+ 40 5| @i sc14.fw
+ 41 1| SC14: Test that the maximum number of levels of include file is 10.
+ 42 2| This is most easily done with a recursive inclusion.
+ 43 3|
+ 44 4| Before the include
+ 45 5| @i sc14.fw
+ 46 1| SC14: Test that the maximum number of levels of include file is 10.
+ 47 2| This is most easily done with a recursive inclusion.
+ 48 3|
+ 49 4| Before the include
+ 50 5| @i sc14.fw
+ 51 1| SC14: Test that the maximum number of levels of include file is 10.
+ 52 2| This is most easily done with a recursive inclusion.
+ 53 3|
+ 54 4| Before the include
+ 55 5| @i sc14.fw
+ Error|.^This include file is nested too deeply. It's probably recursive.
+ |.^The maximum level of nested includes is 10.
+ |.^Include ignored.
+ 56 6| After the include
+ 57 6| After the include
+ 58 6| After the include
+ 59 6| After the include
+ 60 6| After the include
+ 61 6| After the include
+ 62 6| After the include
+ 63 6| After the include
+ 64 6| After the include
+ 65 6| After the include
+ 66 6| After the include
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/sc15.lis b/web/funnelAC/results/sc15.lis
new file mode 100644
index 0000000000..317e9453cc
--- /dev/null
+++ b/web/funnelAC/results/sc15.lis
@@ -0,0 +1,355 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 35 3A 20 54 65 73 74 20 74 68 61 74 20 | SC15: Test that |
+| 63 65 72 74 61 69 6E 20 61 74 74 72 69 62 75 74 | certain attribut |
+| 65 73 20 61 72 65 20 73 61 76 65 64 20 61 63 72 | es are saved acr |
+| 6F 73 73 20 69 6E 63 6C 75 73 69 6F 6E 73 2E 0A | oss inclusions.. |
+| 0A 31 2E 20 4D 61 78 69 6D 75 6D 20 69 6E 70 75 | .1. Maximum inpu |
+| 74 20 6C 69 6E 65 20 6C 65 6E 67 74 68 2E 0A 32 | t line length..2 |
+| 2E 20 53 70 65 63 69 61 6C 20 63 68 61 72 61 63 | . Special charac |
+| 74 65 72 2E 0A 33 2E 20 4C 6F 63 61 6C 20 6C 69 | ter..3. Local li |
+| 6E 65 20 6E 75 6D 62 65 72 2E 0A 0A 54 6F 20 74 | ne number...To t |
+| 65 73 74 20 74 68 69 73 2C 20 77 65 20 66 69 72 | est this, we fir |
+| 73 74 20 73 65 74 20 74 68 65 20 66 69 72 73 74 | st set the first |
+| 20 74 77 6F 20 61 74 74 72 69 62 75 74 65 73 20 | two attributes |
+| 61 77 61 79 20 66 72 6F 6D 20 74 68 65 0A 64 65 | away from the.de |
+| 66 61 75 6C 74 2E 20 54 68 69 73 20 77 69 6C 6C | fault. This will |
+| 20 65 6E 61 62 6C 65 20 75 73 20 74 6F 20 62 65 | enable us to be |
+| 20 73 75 72 65 20 74 68 61 74 20 77 68 65 6E 20 | sure that when |
+| 74 68 65 79 20 61 72 65 20 72 65 73 74 6F 72 65 | they are restore |
+| 64 20 74 68 61 74 0A 74 68 65 79 20 61 72 65 20 | d that.they are |
+| 62 65 69 6E 67 20 72 65 73 74 6F 72 65 64 20 74 | being restored t |
+| 6F 20 74 68 65 69 72 20 66 6F 72 6D 65 72 20 76 | o their former v |
+| 61 6C 75 65 73 20 61 6E 64 20 6E 6F 74 20 6A 75 | alues and not ju |
+| 73 74 20 73 65 74 20 74 6F 20 74 68 65 0A 64 65 | st set to the.de |
+| 66 61 75 6C 74 2E 0A 0A 40 3D 2A 20 20 20 2A 21 | fault...@=* *! |
+| 20 43 68 61 6E 67 65 20 74 68 65 20 73 70 65 63 | Change the spec |
+| 69 61 6C 20 63 68 61 72 61 63 74 65 72 2E 0A 2A | ial character..* |
+| 70 20 6D 61 78 69 6D 75 6D 5F 69 6E 70 75 74 5F | p maximum_input_ |
+| 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 3D 20 37 35 | line_length = 75 |
+| 0A 0A 42 65 66 6F 72 65 20 69 6E 63 6C 75 64 65 | ..Before include |
+| 2E 0A 2A 69 20 73 63 31 35 61 0A 41 66 74 65 72 | ..*i sc15a.After |
+| 20 69 6E 63 6C 75 64 65 2E 0A 0A 49 66 20 74 68 | include...If th |
+| 65 20 6D 61 78 69 6D 75 6D 20 69 6E 70 75 74 20 | e maximum input |
+| 6C 69 6E 65 20 6C 65 6E 67 74 68 20 68 61 73 20 | line length has |
+| 62 65 65 6E 20 63 6F 72 72 65 63 74 6C 79 20 72 | been correctly r |
+| 65 73 74 6F 72 65 64 20 74 68 65 6E 20 74 68 65 | estored then the |
+| 0A 73 65 63 6F 6E 64 20 6F 66 20 74 68 65 20 66 | .second of the f |
+| 6F 6C 6C 6F 77 69 6E 67 20 74 77 6F 20 6C 69 6E | ollowing two lin |
+| 65 73 20 73 68 6F 75 6C 64 20 67 69 76 65 20 61 | es should give a |
+| 6E 20 65 72 72 6F 72 2C 20 62 75 74 20 6E 6F 74 | n error, but not |
+| 20 74 68 65 20 66 69 72 73 74 2E 0A 31 32 33 34 | the first..1234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 0A 31 32 33 34 35 36 37 38 | 9012345.12345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 0A 0A 49 66 20 74 68 65 20 73 70 65 | 3456..If the spe |
+| 63 69 61 6C 20 63 68 61 72 61 63 74 65 72 20 68 | cial character h |
+| 61 73 20 62 65 65 6E 20 70 72 65 73 65 72 76 65 | as been preserve |
+| 64 2C 20 74 68 65 6E 20 74 68 65 20 66 6F 6C 6C | d, then the foll |
+| 6F 77 69 6E 67 20 73 68 6F 75 6C 64 0A 67 65 6E | owing should.gen |
+| 65 72 61 74 65 20 61 6E 20 65 72 72 6F 72 2E 0A | erate an error.. |
+| 0A 2A 20 20 20 2D 20 54 68 69 73 20 73 68 6F 75 | .* - This shou |
+| 6C 64 20 67 65 6E 65 72 61 74 65 20 61 6E 20 65 | ld generate an e |
+| 72 72 6F 72 20 69 66 20 61 6C 6C 20 69 73 20 77 | rror if all is w |
+| 65 6C 6C 2E 0A 0A 50 72 65 73 65 72 76 61 74 69 | ell...Preservati |
+| 6F 6E 20 6F 66 20 74 68 65 20 6C 6F 63 61 6C 20 | on of the local |
+| 6C 69 6E 65 20 6E 75 6D 62 65 72 20 63 61 6E 20 | line number can |
+| 62 65 20 63 68 65 63 6B 65 64 20 62 79 20 6C 6F | be checked by lo |
+| 6F 6B 69 6E 67 20 61 74 20 74 68 65 0A 6C 69 73 | oking at the.lis |
+| 74 69 6E 67 20 66 69 6C 65 2E 0A | ting file.. |
++-------------------------------------------------+------------------+
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl |
+| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes |
+| 74 20 53 43 31 35 2E 20 54 68 65 20 53 43 31 35 | t SC15. The SC15 |
+| 20 74 65 73 74 20 63 68 65 63 6B 73 20 74 6F 20 | test checks to |
+| 6D 61 6B 65 0A 73 75 72 65 20 74 68 61 74 20 46 | make.sure that F |
+| 75 6E 6E 65 6C 57 65 62 20 69 73 20 73 61 76 69 | unnelWeb is savi |
+| 6E 67 20 61 6E 64 20 72 65 73 74 6F 72 69 6E 67 | ng and restoring |
+| 20 74 68 72 65 65 20 73 63 61 6E 6E 69 6E 67 0A | three scanning. |
+| 61 74 74 72 69 62 75 74 65 73 20 61 63 72 6F 73 | attributes acros |
+| 73 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 73 2E | s include files. |
+| 20 57 65 20 61 6C 73 6F 20 77 61 6E 74 20 74 6F | We also want to |
+| 20 6D 61 6B 65 20 73 75 72 65 0A 74 68 61 74 20 | make sure.that |
+| 74 68 65 20 73 63 61 6E 6E 65 72 20 69 73 20 69 | the scanner is i |
+| 6E 69 74 69 61 6C 69 7A 69 6E 67 20 74 68 65 73 | nitializing thes |
+| 65 20 61 74 74 72 69 62 75 74 65 73 20 63 6F 72 | e attributes cor |
+| 72 65 63 74 6C 79 20 77 69 74 68 69 6E 0A 74 68 | rectly within.th |
+| 65 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 2E 0A | e include file.. |
+| 0A 53 43 31 35 2E 34 3A 20 4D 61 6B 65 20 73 75 | .SC15.4: Make su |
+| 72 65 20 74 68 61 74 20 74 68 65 20 73 70 65 63 | re that the spec |
+| 69 61 6C 20 63 68 61 72 61 63 74 65 72 20 69 73 | ial character is |
+| 20 41 54 20 61 74 20 74 68 65 20 73 74 61 72 74 | AT at the start |
+| 20 6F 66 0A 69 6E 63 6C 75 64 65 20 66 69 6C 65 | of.include file |
+| 73 2E 0A 0A 40 20 20 20 20 2D 20 54 68 69 73 20 | s...@ - This |
+| 73 68 6F 75 6C 64 20 79 69 65 6C 64 20 61 6E 20 | should yield an |
+| 65 72 72 6F 72 2E 0A 0A 53 43 31 35 2E 35 20 45 | error...SC15.5 E |
+| 6E 73 75 72 65 20 74 68 61 74 20 74 68 65 20 6D | nsure that the m |
+| 61 78 69 6D 75 6D 20 69 6E 70 75 74 20 6C 69 6E | aximum input lin |
+| 65 20 6C 65 6E 67 74 68 20 69 73 20 38 30 20 61 | e length is 80 a |
+| 74 20 74 68 65 20 73 74 61 72 74 0A 6F 66 20 61 | t the start.of a |
+| 6E 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 2E 20 | n include file. |
+| 49 66 20 61 6C 6C 20 69 73 20 77 65 6C 6C 2C 20 | If all is well, |
+| 6F 6E 6C 79 20 74 68 65 20 73 65 63 6F 6E 64 20 | only the second |
+| 6F 66 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 | of the following |
+| 20 74 77 6F 0A 6C 69 6E 65 73 20 77 69 6C 6C 20 | two.lines will |
+| 70 72 6F 76 6F 6B 65 20 61 20 22 6C 69 6E 65 20 | provoke a "line |
+| 74 6F 6F 20 6C 6F 6E 67 22 20 65 72 72 6F 72 2E | too long" error. |
+| 0A 0A 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | ..12345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 0A 31 32 33 34 35 36 37 38 39 30 31 32 33 | 90.1234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 0A 0A 4E 6F 77 20 74 68 61 74 20 77 | 8901..Now that w |
+| 65 20 68 61 76 65 20 63 68 65 63 6B 65 64 20 74 | e have checked t |
+| 68 65 20 64 65 66 61 75 6C 74 20 61 74 74 72 69 | he default attri |
+| 62 75 74 65 73 20 6F 6E 20 65 6E 74 65 72 69 6E | butes on enterin |
+| 67 20 61 6E 20 69 6E 63 6C 75 64 65 20 66 69 6C | g an include fil |
+| 65 2C 0A 77 65 20 77 61 6E 74 20 74 6F 20 73 74 | e,.we want to st |
+| 75 66 66 20 74 68 65 6D 20 75 70 20 73 6F 20 61 | uff them up so a |
+| 73 20 74 6F 20 6D 61 6B 65 20 73 75 72 65 20 74 | s to make sure t |
+| 68 61 74 20 74 68 65 20 61 74 74 72 69 62 75 74 | hat the attribut |
+| 65 73 0A 70 72 65 76 61 69 6C 69 6E 67 20 77 68 | es.prevailing wh |
+| 65 6E 20 74 68 65 20 69 6E 63 6C 75 64 65 20 77 | en the include w |
+| 61 73 20 68 69 74 20 61 72 65 20 72 65 73 74 6F | as hit are resto |
+| 72 65 64 2E 0A 0A 40 70 20 6D 61 78 69 6D 75 6D | red...@p maximum |
+| 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | _input_line_leng |
+| 74 68 20 3D 20 36 35 0A 40 3D 2B 0A 0A | th = 65.@=+.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC15: Test that certain attributes are saved across inclusions.<010>
+00002 00002| <010>
+00003 00003| 1. Maximum input line length.<010>
+00004 00004| 2. Special character.<010>
+00005 00005| 3. Local line number.<010>
+00006 00006| <010>
+00007 00007| To test this, we first set the first two attributes away from the<010>
+00008 00008| default. This will enable us to be sure that when they are restored that<010>
+00009 00009| they are being restored to their former values and not just set to the<010>
+00010 00010| default.<010>
+00011 00011| <010>
+00012 00012| @=* *! Change the special character.<010>
+00013 00013| *p maximum_input_line_length = 75<010>
+00014 00014| <010>
+00015 00015| Before include.<010>
+00016 00016| *i sc15a<010>
+00017 00001| This is the include file for test SC15. The SC15 test checks to make<010>
+00018 00002| sure that FunnelWeb is saving and restoring three scanning<010>
+00019 00003| attributes across include files. We also want to make sure<010>
+00020 00004| that the scanner is initializing these attributes correctly within<010>
+00021 00005| the include file.<010>
+00022 00006| <010>
+00023 00007| SC15.4: Make sure that the special character is AT at the start of<010>
+00024 00008| include files.<010>
+00025 00009| <010>
+00026 00010| @ - This should yield an error.<010>
+00027 00011| <010>
+00028 00012| SC15.5 Ensure that the maximum input line length is 80 at the start<010>
+00029 00013| of an include file. If all is well, only the second of the following two<010>
+00030 00014| lines will provoke a "line too long" error.<010>
+00031 00015| <010>
+00032 00016| 12345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
+00033 00017| 123456789012345678901234567890123456789012345678901234567890123456789012345678901<010>
+00034 00018| <010>
+00035 00019| Now that we have checked the default attributes on entering an include file,<010>
+00036 00020| we want to stuff them up so as to make sure that the attributes<010>
+00037 00021| prevailing when the include was hit are restored.<010>
+00038 00022| <010>
+00039 00023| @p maximum_input_line_length = 65<010>
+00040 00024| @=+<010>
+00041 00025| <010>
+00042 00017| After include.<010>
+00043 00018| <010>
+00044 00019| If the maximum input line length has been correctly restored then the<010>
+00045 00020| second of the following two lines should give an error, but not the first.<010>
+00046 00021| 123456789012345678901234567890123456789012345678901234567890123456789012345<010>
+00047 00022| 1234567890123456789012345678901234567890123456789012345678901234567890123456<010>
+00048 00023| <010>
+00049 00024| If the special character has been preserved, then the following should<010>
+00050 00025| generate an error.<010>
+00051 00026| <010>
+00052 00027| * - This should generate an error if all is well.<010>
+00053 00028| <010>
+00054 00029| Preservation of the local line number can be checked by looking at the<010>
+00055 00030| listing file.<010>
+00056 00031| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 9 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC15: Test that certain attributes are saved across inclusions.<010>
+<010>
+1. Maximum input line length.<010>
+2. Special character.<010>
+3. Local line number.<010>
+<010>
+To test this, we first set the first two attributes away from the<010>
+default. This will enable us to be sure that when they are restored that<010>
+they are being restored to their former values and not just set to the<010>
+default.<010>
+<010>
+"
+0012[04]: Text. Text scrap[White]=" "
+0014[01]: Text. Text scrap[Grey]="<010>
+Before include.<010>
+"
+0017[01]: Text. Text scrap[Grey]="This is the include file for test SC15. The SC15 test checks to make<010>
+sure that FunnelWeb is saving and restoring three scanning<010>
+attributes across include files. We also want to make sure<010>
+that the scanner is initializing these attributes correctly within<010>
+the include file.<010>
+<010>
+SC15.4: Make sure that the special character is AT at the start of<010>
+include files.<010>
+<010>
+"
+0026[03]: Text. Text scrap[Grey]=" - This should yield an error.<010>
+<010>
+SC15.5 Ensure that the maximum input line length is 80 at the start<010>
+of an include file. If all is well, only the second of the following two<010>
+lines will provoke a "line too long" error.<010>
+<010>
+12345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
+123456789012345678901234567890123456789012345678901234567890123456789012345678901<010>
+<010>
+Now that we have checked the default attributes on entering an include file,<010>
+we want to stuff them up so as to make sure that the attributes<010>
+prevailing when the include was hit are restored.<010>
+<010>
+"
+0040[04]: Text. Text scrap[White]="<010>
+<010>
+"
+0042[01]: Text. Text scrap[Grey]="After include.<010>
+<010>
+If the maximum input line length has been correctly restored then the<010>
+second of the following two lines should give an error, but not the first.<010>
+123456789012345678901234567890123456789012345678901234567890123456789012345<010>
+1234567890123456789012345678901234567890123456789012345678901234567890123456<010>
+<010>
+If the special character has been preserved, then the following should<010>
+generate an error.<010>
+<010>
+"
+0052[03]: Text. Text scrap[Grey]=" - This should generate an error if all is well.<010>
+<010>
+Preservation of the local line number can be checked by looking at the<010>
+listing file.<010>
+"
+0056[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC15: Test that certain attributes are saved across inclusions.
+ 2 2|
+ 3 3| 1. Maximum input line length.
+ 4 4| 2. Special character.
+ 5 5| 3. Local line number.
+ 6 6|
+ 7 7| To test this, we first set the first two attributes away from the
+ 8 8| default. This will enable us to be sure that when they are restored that
+ 9 9| they are being restored to their former values and not just set to the
+ 10 10| default.
+ 11 11|
+ 12 12| @=* *! Change the special character.
+ 13 13| *p maximum_input_line_length = 75
+ 14 14|
+ 15 15| Before include.
+ 16 16| *i sc15a
+ 17 1| This is the include file for test SC15. The SC15 test checks to make
+ 18 2| sure that FunnelWeb is saving and restoring three scanning
+ 19 3| attributes across include files. We also want to make sure
+ 20 4| that the scanner is initializing these attributes correctly within
+ 21 5| the include file.
+ 22 6|
+ 23 7| SC15.4: Make sure that the special character is AT at the start of
+ 24 8| include files.
+ 25 9|
+ 26 10| @ - This should yield an error.
+ Error|.^<special><space> is not a legal special sequence.
+ 27 11|
+ 28 12| SC15.5 Ensure that the maximum input line length is 80 at the start
+ 29 13| of an include file. If all is well, only the second of the following two
+ 30 14| lines will provoke a "line too long" error.
+ 31 15|
+ 32 16| 12345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 33 17| 123456789012345678901234567890123456789012345678901234567890123456789012345678901
+ Error|.................................................................................^Input line is too long (this character is the first offender).
+ |.................................................................................^Currently, the maximum allowable input line length is 80.
+ |.................................................................................^Note: You can change this using a pragma directive (@p).
+ 34 18|
+ 35 19| Now that we have checked the default attributes on entering an include file,
+ 36 20| we want to stuff them up so as to make sure that the attributes
+ 37 21| prevailing when the include was hit are restored.
+ 38 22|
+ 39 23| @p maximum_input_line_length = 65
+ 40 24| @=+
+ 41 25|
+ 42 17| After include.
+ 43 18|
+ 44 19| If the maximum input line length has been correctly restored then the
+ 45 20| second of the following two lines should give an error, but not the first.
+ 46 21| 123456789012345678901234567890123456789012345678901234567890123456789012345
+ 47 22| 1234567890123456789012345678901234567890123456789012345678901234567890123456
+ Error|............................................................................^Input line is too long (this character is the first offender).
+ |............................................................................^Currently, the maximum allowable input line length is 75.
+ |............................................................................^Note: You can change this using a pragma directive (@p).
+ 48 23|
+ 49 24| If the special character has been preserved, then the following should
+ 50 25| generate an error.
+ 51 26|
+ 52 27| * - This should generate an error if all is well.
+ Error|.^<special><space> is not a legal special sequence.
+ 53 28|
+ 54 29| Preservation of the local line number can be checked by looking at the
+ 55 30| listing file.
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 4 Errors.
diff --git a/web/funnelAC/results/sc16.lis b/web/funnelAC/results/sc16.lis
new file mode 100644
index 0000000000..3170ba293f
--- /dev/null
+++ b/web/funnelAC/results/sc16.lis
@@ -0,0 +1,456 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 36 3A 20 54 65 73 74 20 3C 73 70 65 63 | SC16: Test <spec |
+| 69 61 6C 3E 5E 20 73 65 71 75 65 6E 63 65 2E 0A | ial>^ sequence.. |
+| 0A 31 2E 20 54 65 73 74 20 74 68 61 74 20 61 6C | .1. Test that al |
+| 6C 20 62 61 73 65 20 63 68 61 72 61 63 74 65 72 | l base character |
+| 73 20 77 6F 72 6B 20 28 69 6E 20 62 6F 74 68 20 | s work (in both |
+| 63 61 73 65 73 29 2E 0A 20 20 20 54 68 65 73 65 | cases).. These |
+| 20 73 68 6F 75 6C 64 20 70 72 6F 76 6F 6B 65 20 | should provoke |
+| 6E 6F 20 65 72 72 6F 72 73 2E 0A 0A 20 20 20 40 | no errors... @ |
+| 5E 42 28 30 30 30 30 30 30 30 30 29 20 20 20 40 | ^B(00000000) @ |
+| 5E 62 28 30 30 30 30 30 30 30 30 29 0A 20 20 20 | ^b(00000000). |
+| 40 5E 4F 28 30 30 30 29 20 20 20 40 5E 6F 28 30 | @^O(000) @^o(0 |
+| 30 30 29 0A 20 20 20 40 5E 51 28 30 30 30 29 20 | 00). @^Q(000) |
+| 20 20 40 5E 71 28 30 30 30 29 0A 20 20 20 40 5E | @^q(000). @^ |
+| 44 28 30 30 30 29 20 20 20 40 5E 64 28 30 30 30 | D(000) @^d(000 |
+| 29 0A 20 20 20 40 5E 48 28 30 30 29 20 20 20 20 | ). @^H(00) |
+| 40 5E 68 28 30 30 29 0A 20 20 20 40 5E 58 28 30 | @^h(00). @^X(0 |
+| 30 29 20 20 20 20 40 5E 78 28 30 30 29 0A 0A 32 | 0) @^x(00)..2 |
+| 2E 20 54 65 73 74 20 74 68 61 74 20 73 6F 6D 65 | . Test that some |
+| 20 6F 74 68 65 72 20 62 61 73 65 20 63 68 61 72 | other base char |
+| 61 63 74 65 72 73 20 67 65 6E 65 72 61 74 65 20 | acters generate |
+| 61 6E 20 65 72 72 6F 72 2E 0A 0A 20 20 20 40 5E | an error... @^ |
+| 75 28 30 29 0A 20 20 20 40 5E 79 0A 20 20 20 40 | u(0). @^y. @ |
+| 5E 23 0A 20 20 20 40 5E 28 0A 0A 33 2E 20 54 65 | ^#. @^(..3. Te |
+| 73 74 20 74 68 61 74 20 61 6E 20 65 72 72 6F 72 | st that an error |
+| 20 69 73 20 67 65 6E 65 72 61 74 65 64 20 69 66 | is generated if |
+| 20 70 61 72 65 6E 74 68 65 73 69 73 20 69 73 20 | parenthesis is |
+| 6D 69 73 73 69 6E 67 2E 0A 0A 20 20 20 40 5E 44 | missing... @^D |
+| 33 34 29 0A 0A 34 2E 20 54 65 73 74 20 6C 65 67 | 34)..4. Test leg |
+| 61 6C 20 64 69 67 69 74 73 20 69 6E 20 65 61 63 | al digits in eac |
+| 68 20 62 61 73 65 2E 0A 0A 20 20 20 40 5E 42 28 | h base... @^B( |
+| 30 30 30 30 31 31 31 31 29 0A 20 20 20 40 5E 4F | 00001111). @^O |
+| 28 30 31 32 29 20 20 40 5E 4F 28 30 33 34 29 20 | (012) @^O(034) |
+| 40 5E 4F 28 30 35 36 29 20 40 5E 4F 28 30 37 37 | @^O(056) @^O(077 |
+| 29 0A 20 20 20 40 5E 44 28 30 31 32 29 20 20 40 | ). @^D(012) @ |
+| 5E 44 28 30 33 34 29 20 40 5E 44 28 30 35 36 29 | ^D(034) @^D(056) |
+| 20 40 5E 44 28 30 37 38 29 20 40 5E 44 28 30 39 | @^D(078) @^D(09 |
+| 39 29 0A 20 20 20 40 5E 48 28 30 31 29 20 40 5E | 9). @^H(01) @^ |
+| 48 28 32 33 29 20 40 5E 48 28 34 35 29 20 40 5E | H(23) @^H(45) @^ |
+| 48 28 36 37 29 0A 20 20 20 40 5E 48 28 38 39 29 | H(67). @^H(89) |
+| 20 40 5E 48 28 41 42 29 20 40 5E 58 28 43 44 29 | @^H(AB) @^X(CD) |
+| 20 40 5E 58 28 45 46 29 20 20 40 5E 78 28 61 66 | @^X(EF) @^x(af |
+| 29 0A 0A 35 2E 20 54 65 73 74 20 69 6C 6C 65 67 | )..5. Test illeg |
+| 61 6C 20 64 69 67 69 74 73 20 69 6E 20 65 61 63 | al digits in eac |
+| 68 20 62 61 73 65 2E 0A 0A 20 20 20 40 5E 42 28 | h base... @^B( |
+| 30 30 30 30 30 30 30 32 29 0A 20 20 20 40 5E 4F | 00000002). @^O |
+| 28 30 30 38 29 0A 20 20 20 40 5E 44 28 30 30 41 | (008). @^D(00A |
+| 29 0A 20 20 20 40 5E 48 28 30 47 29 0A 0A 36 2E | ). @^H(0G)..6. |
+| 20 54 65 73 74 20 77 68 61 74 20 68 61 70 70 65 | Test what happe |
+| 6E 73 20 69 66 20 74 68 65 72 65 20 61 72 65 20 | ns if there are |
+| 74 68 65 20 77 72 6F 6E 67 20 6E 75 6D 62 65 72 | the wrong number |
+| 20 6F 66 20 64 69 67 69 74 73 0A 20 20 20 28 74 | of digits. (t |
+| 6F 6F 20 66 65 77 2C 20 74 6F 6F 20 6D 61 6E 79 | oo few, too many |
+| 29 2E 0A 0A 20 20 20 40 5E 42 28 31 29 0A 20 20 | )... @^B(1). |
+| 20 40 5E 4F 28 31 29 0A 20 20 20 40 5E 44 28 31 | @^O(1). @^D(1 |
+| 29 0A 20 20 20 40 5E 48 28 31 29 0A 0A 20 20 20 | ). @^H(1).. |
+| 40 5E 42 28 30 30 30 30 30 30 30 30 31 29 0A 20 | @^B(000000001). |
+| 20 20 40 5E 4F 28 30 30 30 34 29 0A 20 20 20 40 | @^O(0004). @ |
+| 5E 44 28 30 30 30 31 29 0A 20 20 20 40 5E 48 28 | ^D(0001). @^H( |
+| 30 30 35 29 0A 0A 37 2E 20 54 65 73 74 20 74 68 | 005)..7. Test th |
+| 61 74 20 61 6E 20 65 72 72 6F 72 20 69 73 20 67 | at an error is g |
+| 65 6E 65 72 61 74 65 64 20 66 6F 72 20 61 20 6D | enerated for a m |
+| 69 73 73 69 6E 67 20 63 6C 6F 73 69 6E 67 20 70 | issing closing p |
+| 61 72 65 6E 74 68 65 73 69 73 2E 0A 0A 20 20 40 | arenthesis... @ |
+| 5E 42 28 30 30 30 30 30 30 30 30 0A 20 20 40 5E | ^B(00000000. @^ |
+| 44 28 30 34 35 28 0A 0A 38 2E 20 54 65 73 74 20 | D(045(..8. Test |
+| 77 68 61 74 20 68 61 70 70 65 6E 73 20 69 6E 20 | what happens in |
+| 6E 75 6D 62 65 72 20 69 73 20 6F 75 74 20 6F 66 | number is out of |
+| 20 74 68 65 20 72 61 6E 67 65 20 5B 30 2C 32 35 | the range [0,25 |
+| 35 5D 2E 0A 0A 20 20 40 5E 44 28 32 35 35 29 0A | 5]... @^D(255). |
+| 20 20 40 5E 44 28 32 35 36 29 0A 20 20 40 5E 44 | @^D(256). @^D |
+| 28 39 39 39 29 0A 0A | (999).. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC16: Test <special>^ sequence.<010>
+00002 00002| <010>
+00003 00003| 1. Test that all base characters work (in both cases).<010>
+00004 00004| These should provoke no errors.<010>
+00005 00005| <010>
+00006 00006| @^B(00000000) @^b(00000000)<010>
+00007 00007| @^O(000) @^o(000)<010>
+00008 00008| @^Q(000) @^q(000)<010>
+00009 00009| @^D(000) @^d(000)<010>
+00010 00010| @^H(00) @^h(00)<010>
+00011 00011| @^X(00) @^x(00)<010>
+00012 00012| <010>
+00013 00013| 2. Test that some other base characters generate an error.<010>
+00014 00014| <010>
+00015 00015| @^u(0)<010>
+00016 00016| @^y<010>
+00017 00017| @^#<010>
+00018 00018| @^(<010>
+00019 00019| <010>
+00020 00020| 3. Test that an error is generated if parenthesis is missing.<010>
+00021 00021| <010>
+00022 00022| @^D34)<010>
+00023 00023| <010>
+00024 00024| 4. Test legal digits in each base.<010>
+00025 00025| <010>
+00026 00026| @^B(00001111)<010>
+00027 00027| @^O(012) @^O(034) @^O(056) @^O(077)<010>
+00028 00028| @^D(012) @^D(034) @^D(056) @^D(078) @^D(099)<010>
+00029 00029| @^H(01) @^H(23) @^H(45) @^H(67)<010>
+00030 00030| @^H(89) @^H(AB) @^X(CD) @^X(EF) @^x(af)<010>
+00031 00031| <010>
+00032 00032| 5. Test illegal digits in each base.<010>
+00033 00033| <010>
+00034 00034| @^B(00000002)<010>
+00035 00035| @^O(008)<010>
+00036 00036| @^D(00A)<010>
+00037 00037| @^H(0G)<010>
+00038 00038| <010>
+00039 00039| 6. Test what happens if there are the wrong number of digits<010>
+00040 00040| (too few, too many).<010>
+00041 00041| <010>
+00042 00042| @^B(1)<010>
+00043 00043| @^O(1)<010>
+00044 00044| @^D(1)<010>
+00045 00045| @^H(1)<010>
+00046 00046| <010>
+00047 00047| @^B(000000001)<010>
+00048 00048| @^O(0004)<010>
+00049 00049| @^D(0001)<010>
+00050 00050| @^H(005)<010>
+00051 00051| <010>
+00052 00052| 7. Test that an error is generated for a missing closing parenthesis.<010>
+00053 00053| <010>
+00054 00054| @^B(00000000<010>
+00055 00055| @^D(045(<010>
+00056 00056| <010>
+00057 00057| 8. Test what happens in number is out of the range [0,255].<010>
+00058 00058| <010>
+00059 00059| @^D(255)<010>
+00060 00060| @^D(256)<010>
+00061 00061| @^D(999)<010>
+00062 00062| <010>
+00063 00063| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 87 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC16: Test <special>^ sequence.<010>
+<010>
+1. Test that all base characters work (in both cases).<010>
+ These should provoke no errors.<010>
+<010>
+ "
+0006[04]: Text. Text scrap[Grey]="<000>"
+0006[17]: Text. Text scrap[White]=" "
+0006[20]: Text. Text scrap[Grey]="<000>"
+0006[33]: Text. Text scrap[White]="<010>
+ "
+0007[04]: Text. Text scrap[Grey]="<000>"
+0007[12]: Text. Text scrap[White]=" "
+0007[15]: Text. Text scrap[Grey]="<000>"
+0007[23]: Text. Text scrap[White]="<010>
+ "
+0008[04]: Text. Text scrap[Grey]="<000>"
+0008[12]: Text. Text scrap[White]=" "
+0008[15]: Text. Text scrap[Grey]="<000>"
+0008[23]: Text. Text scrap[White]="<010>
+ "
+0009[04]: Text. Text scrap[Grey]="<000>"
+0009[12]: Text. Text scrap[White]=" "
+0009[15]: Text. Text scrap[Grey]="<000>"
+0009[23]: Text. Text scrap[White]="<010>
+ "
+0010[04]: Text. Text scrap[Grey]="<000>"
+0010[11]: Text. Text scrap[White]=" "
+0010[15]: Text. Text scrap[Grey]="<000>"
+0010[22]: Text. Text scrap[White]="<010>
+ "
+0011[04]: Text. Text scrap[Grey]="<000>"
+0011[11]: Text. Text scrap[White]=" "
+0011[15]: Text. Text scrap[Grey]="<000>"
+0011[22]: Text. Text scrap[Grey]="<010>
+<010>
+2. Test that some other base characters generate an error.<010>
+<010>
+ "
+0015[07]: Text. Text scrap[Grey]="(0)<010>
+ "
+0016[07]: Text. Text scrap[White]="<010>
+ "
+0017[07]: Text. Text scrap[White]="<010>
+ "
+0018[07]: Text. Text scrap[Grey]="<010>
+<010>
+3. Test that an error is generated if parenthesis is missing.<010>
+<010>
+ "
+0022[08]: Text. Text scrap[Grey]="4)<010>
+<010>
+4. Test legal digits in each base.<010>
+<010>
+ "
+0026[04]: Text. Text scrap[Grey]="<015>"
+0026[17]: Text. Text scrap[White]="<010>
+ "
+0027[04]: Text. Text scrap[Grey]="<010>
+"
+0027[12]: Text. Text scrap[White]=" "
+0027[14]: Text. Text scrap[Grey]="<028>"
+0027[22]: Text. Text scrap[White]=" "
+0027[23]: Text. Text scrap[Grey]="."
+0027[31]: Text. Text scrap[White]=" "
+0027[32]: Text. Text scrap[Grey]="?"
+0027[40]: Text. Text scrap[White]="<010>
+ "
+0028[04]: Text. Text scrap[Grey]="<012>"
+0028[12]: Text. Text scrap[White]=" "
+0028[14]: Text. Text scrap[Grey]="""
+0028[22]: Text. Text scrap[White]=" "
+0028[23]: Text. Text scrap[Grey]="8"
+0028[31]: Text. Text scrap[White]=" "
+0028[32]: Text. Text scrap[Grey]="N"
+0028[40]: Text. Text scrap[White]=" "
+0028[41]: Text. Text scrap[Grey]="c"
+0028[49]: Text. Text scrap[White]="<010>
+ "
+0029[04]: Text. Text scrap[Grey]="<001>"
+0029[11]: Text. Text scrap[White]=" "
+0029[12]: Text. Text scrap[Grey]="#"
+0029[19]: Text. Text scrap[White]=" "
+0029[20]: Text. Text scrap[Grey]="E"
+0029[27]: Text. Text scrap[White]=" "
+0029[28]: Text. Text scrap[Grey]="g"
+0029[35]: Text. Text scrap[White]="<010>
+ "
+0030[04]: Text. Text scrap[Grey]="<137>"
+0030[11]: Text. Text scrap[White]=" "
+0030[12]: Text. Text scrap[Grey]="<171>"
+0030[19]: Text. Text scrap[White]=" "
+0030[20]: Text. Text scrap[Grey]="<205>"
+0030[27]: Text. Text scrap[White]=" "
+0030[28]: Text. Text scrap[Grey]="<239>"
+0030[35]: Text. Text scrap[White]=" "
+0030[37]: Text. Text scrap[Grey]="<175>"
+0030[44]: Text. Text scrap[Grey]="<010>
+<010>
+5. Test illegal digits in each base.<010>
+<010>
+ "
+0034[16]: Text. Text scrap[Grey]=")<010>
+ "
+0035[11]: Text. Text scrap[Grey]=")<010>
+ "
+0036[11]: Text. Text scrap[Grey]=")<010>
+ "
+0037[10]: Text. Text scrap[Grey]=")<010>
+<010>
+6. Test what happens if there are the wrong number of digits<010>
+ (too few, too many).<010>
+<010>
+ "
+0042[10]: Text. Text scrap[White]="<010>
+ "
+0043[10]: Text. Text scrap[White]="<010>
+ "
+0044[10]: Text. Text scrap[White]="<010>
+ "
+0045[10]: Text. Text scrap[White]="<010>
+<010>
+ "
+0047[17]: Text. Text scrap[Grey]=")<010>
+ "
+0048[12]: Text. Text scrap[Grey]=")<010>
+ "
+0049[12]: Text. Text scrap[Grey]=")<010>
+ "
+0050[11]: Text. Text scrap[Grey]=")<010>
+<010>
+7. Test that an error is generated for a missing closing parenthesis.<010>
+<010>
+ "
+0055[01]: Text. Text scrap[White]=" "
+0055[11]: Text. Text scrap[Grey]="<010>
+<010>
+8. Test what happens in number is out of the range [0,255].<010>
+<010>
+ "
+0059[03]: Text. Text scrap[Grey]="<255>"
+0059[11]: Text. Text scrap[White]="<010>
+ "
+0060[11]: Text. Text scrap[White]="<010>
+ "
+0061[11]: Text. Text scrap[White]="<010>
+<010>
+"
+0063[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC16: Test <special>^ sequence.
+ 2 2|
+ 3 3| 1. Test that all base characters work (in both cases).
+ 4 4| These should provoke no errors.
+ 5 5|
+ 6 6| @^B(00000000) @^b(00000000)
+ 7 7| @^O(000) @^o(000)
+ 8 8| @^Q(000) @^q(000)
+ 9 9| @^D(000) @^d(000)
+ 10 10| @^H(00) @^h(00)
+ 11 11| @^X(00) @^x(00)
+ 12 12|
+ 13 13| 2. Test that some other base characters generate an error.
+ 14 14|
+ 15 15| @^u(0)
+ Error|......^Expecting one of 'B', 'Q', 'D', 'H'.
+ |......^(For Binary, Octal, Decimal, and Hexadecimal).
+ |......^A decimal character representation takes the form "@^D(ddd)".
+ |......^(exactly 3 digits) where each digit d is in the range 0..9.
+ 16 16| @^y
+ Error|......^Expecting one of 'B', 'Q', 'D', 'H'.
+ |......^(For Binary, Octal, Decimal, and Hexadecimal).
+ |......^A decimal character representation takes the form "@^D(ddd)".
+ |......^(exactly 3 digits) where each digit d is in the range 0..9.
+ 17 17| @^#
+ Error|......^Expecting one of 'B', 'Q', 'D', 'H'.
+ |......^(For Binary, Octal, Decimal, and Hexadecimal).
+ |......^A decimal character representation takes the form "@^D(ddd)".
+ |......^(exactly 3 digits) where each digit d is in the range 0..9.
+ 18 18| @^(
+ Error|......^Expecting one of 'B', 'Q', 'D', 'H'.
+ |......^(For Binary, Octal, Decimal, and Hexadecimal).
+ |......^A decimal character representation takes the form "@^D(ddd)".
+ |......^(exactly 3 digits) where each digit d is in the range 0..9.
+ 19 19|
+ 20 20| 3. Test that an error is generated if parenthesis is missing.
+ 21 21|
+ 22 22| @^D34)
+ Error|.......^Expecting '('.
+ |.......^A decimal character representation takes the form "@^D(ddd)".
+ |.......^(exactly 3 digits) where each digit d is in the range 0..9.
+ 23 23|
+ 24 24| 4. Test legal digits in each base.
+ 25 25|
+ 26 26| @^B(00001111)
+ 27 27| @^O(012) @^O(034) @^O(056) @^O(077)
+ 28 28| @^D(012) @^D(034) @^D(056) @^D(078) @^D(099)
+ 29 29| @^H(01) @^H(23) @^H(45) @^H(67)
+ 30 30| @^H(89) @^H(AB) @^X(CD) @^X(EF) @^x(af)
+ 31 31|
+ 32 32| 5. Test illegal digits in each base.
+ 33 33|
+ 34 34| @^B(00000002)
+ Error|...............^Illegal digit.
+ |...............^A binary character representation takes the form "@^B(dddddddd)".
+ |...............^(exactly 8 digits) where each digit d is either 0 or 1.
+ 35 35| @^O(008)
+ Error|..........^Illegal digit.
+ |..........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)").
+ |..........^(exactly 3 digits) where each digit d is in the range 0..7.
+ 36 36| @^D(00A)
+ Error|..........^Illegal digit.
+ |..........^A decimal character representation takes the form "@^D(ddd)".
+ |..........^(exactly 3 digits) where each digit d is in the range 0..9.
+ 37 37| @^H(0G)
+ Error|.........^Illegal digit.
+ |.........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)").
+ |.........^(exactly 2 digits) where each digit d is in the range 0..9,A..F.
+ 38 38|
+ 39 39| 6. Test what happens if there are the wrong number of digits
+ 40 40| (too few, too many).
+ 41 41|
+ 42 42| @^B(1)
+ Error|.........^Illegal digit.
+ |.........^A binary character representation takes the form "@^B(dddddddd)".
+ |.........^(exactly 8 digits) where each digit d is either 0 or 1.
+ 43 43| @^O(1)
+ Error|.........^Illegal digit.
+ |.........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)").
+ |.........^(exactly 3 digits) where each digit d is in the range 0..7.
+ 44 44| @^D(1)
+ Error|.........^Illegal digit.
+ |.........^A decimal character representation takes the form "@^D(ddd)".
+ |.........^(exactly 3 digits) where each digit d is in the range 0..9.
+ 45 45| @^H(1)
+ Error|.........^Illegal digit.
+ |.........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)").
+ |.........^(exactly 2 digits) where each digit d is in the range 0..9,A..F.
+ 46 46|
+ 47 47| @^B(000000001)
+ Error|................^Expecting ')'.
+ |................^A binary character representation takes the form "@^B(dddddddd)".
+ |................^(exactly 8 digits) where each digit d is either 0 or 1.
+ 48 48| @^O(0004)
+ Error|...........^Expecting ')'.
+ |...........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)").
+ |...........^(exactly 3 digits) where each digit d is in the range 0..7.
+ 49 49| @^D(0001)
+ Error|...........^Expecting ')'.
+ |...........^A decimal character representation takes the form "@^D(ddd)".
+ |...........^(exactly 3 digits) where each digit d is in the range 0..9.
+ 50 50| @^H(005)
+ Error|..........^Expecting ')'.
+ |..........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)").
+ |..........^(exactly 2 digits) where each digit d is in the range 0..9,A..F.
+ 51 51|
+ 52 52| 7. Test that an error is generated for a missing closing parenthesis.
+ 53 53|
+ 54 54| @^B(00000000
+ Error|...............^Expecting ')'.
+ |...............^A binary character representation takes the form "@^B(dddddddd)".
+ |...............^(exactly 8 digits) where each digit d is either 0 or 1.
+ 55 55| @^D(045(
+ Error|..........^Expecting ')'.
+ |..........^A decimal character representation takes the form "@^D(ddd)".
+ |..........^(exactly 3 digits) where each digit d is in the range 0..9.
+ 56 56|
+ 57 57| 8. Test what happens in number is out of the range [0,255].
+ 58 58|
+ 59 59| @^D(255)
+ 60 60| @^D(256)
+ Error|..........^Character number is too large.
+ |..........^Character number must be in the range [0,255] (decimal).
+ |..........^A decimal character representation takes the form "@^D(ddd)".
+ |..........^(exactly 3 digits) where each digit d is in the range 0..9.
+ 61 61| @^D(999)
+ Error|..........^Character number is too large.
+ |..........^Character number must be in the range [0,255] (decimal).
+ |..........^A decimal character representation takes the form "@^D(ddd)".
+ |..........^(exactly 3 digits) where each digit d is in the range 0..9.
+ 62 62|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 21 Errors.
diff --git a/web/funnelAC/results/sc17.lis b/web/funnelAC/results/sc17.lis
new file mode 100644
index 0000000000..e23bf05b1d
--- /dev/null
+++ b/web/funnelAC/results/sc17.lis
@@ -0,0 +1,352 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 37 3A 20 54 65 73 74 20 3C 73 70 65 63 | SC17: Test <spec |
+| 69 61 6C 3E 23 2E 0A 0A 46 69 72 73 74 20 77 65 | ial>#...First we |
+| 20 74 72 69 70 20 75 70 20 74 68 65 20 73 63 61 | trip up the sca |
+| 6E 6E 65 72 20 73 6F 20 6E 6F 20 66 75 72 74 68 | nner so no furth |
+| 65 72 20 70 61 73 73 65 73 20 74 61 6B 65 20 70 | er passes take p |
+| 6C 61 63 65 2E 0A 0A 40 0A 0A 31 2E 20 54 65 73 | lace...@..1. Tes |
+| 74 20 77 69 74 68 20 61 6C 6C 20 70 6F 73 73 69 | t with all possi |
+| 62 6C 65 20 70 72 69 6E 74 61 62 6C 65 20 63 68 | ble printable ch |
+| 61 72 61 63 74 65 72 73 2E 0A 0A 40 23 21 20 40 | aracters...@#! @ |
+| 23 22 20 40 23 23 20 40 23 24 20 40 23 25 20 40 | #" @## @#$ @#% @ |
+| 23 26 20 40 23 27 20 40 23 28 20 40 23 29 20 40 | #& @#' @#( @#) @ |
+| 23 2A 20 40 23 2B 20 40 23 2C 20 40 23 2D 20 40 | #* @#+ @#, @#- @ |
+| 23 2E 20 40 23 2F 0A 40 23 30 20 40 23 31 20 40 | #. @#/.@#0 @#1 @ |
+| 23 32 20 40 23 33 20 40 23 34 20 40 23 35 20 40 | #2 @#3 @#4 @#5 @ |
+| 23 36 20 40 23 37 20 40 23 38 20 40 23 39 20 40 | #6 @#7 @#8 @#9 @ |
+| 23 3A 20 40 23 3B 20 40 23 3C 20 40 23 3D 20 40 | #: @#; @#< @#= @ |
+| 23 3E 0A 40 23 3F 20 40 23 40 20 40 23 41 20 40 | #>.@#? @#@ @#A @ |
+| 23 42 20 40 23 43 20 40 23 44 20 40 23 45 20 40 | #B @#C @#D @#E @ |
+| 23 46 20 40 23 47 20 40 23 48 20 40 23 49 20 40 | #F @#G @#H @#I @ |
+| 23 4A 20 40 23 4B 20 40 23 4C 20 40 23 4D 0A 40 | #J @#K @#L @#M.@ |
+| 23 4E 20 40 23 4F 20 40 23 50 20 40 23 51 20 40 | #N @#O @#P @#Q @ |
+| 23 52 20 40 23 53 20 40 23 54 20 40 23 55 20 40 | #R @#S @#T @#U @ |
+| 23 56 20 40 23 57 20 40 23 58 20 40 23 59 20 40 | #V @#W @#X @#Y @ |
+| 23 5A 20 40 23 5B 20 40 23 5C 0A 40 23 5D 20 40 | #Z @#[ @#\.@#] @ |
+| 23 5E 20 40 23 5F 20 40 23 60 20 40 23 61 20 40 | #^ @#_ @#` @#a @ |
+| 23 62 20 40 23 63 20 40 23 64 20 40 23 65 20 40 | #b @#c @#d @#e @ |
+| 23 66 20 40 23 67 20 40 23 68 20 40 23 69 20 40 | #f @#g @#h @#i @ |
+| 23 6A 20 40 23 6B 0A 40 23 6C 20 40 23 6D 20 40 | #j @#k.@#l @#m @ |
+| 23 6E 20 40 23 6F 20 40 23 70 20 40 23 71 20 40 | #n @#o @#p @#q @ |
+| 23 72 20 40 23 73 20 40 23 74 20 40 23 75 20 40 | #r @#s @#t @#u @ |
+| 23 76 20 40 23 77 20 40 23 78 20 40 23 79 20 40 | #v @#w @#x @#y @ |
+| 23 7A 0A 40 23 7B 20 40 23 7C 20 40 23 7D 20 40 | #z.@#{ @#| @#} @ |
+| 23 7E 0A 0A 32 2E 20 54 65 73 74 20 74 68 61 74 | #~..2. Test that |
+| 20 3C 73 70 65 63 69 61 6C 3E 23 3C 73 70 61 63 | <special>#<spac |
+| 65 3E 20 69 73 20 66 6C 61 67 67 65 64 20 61 73 | e> is flagged as |
+| 20 61 6E 20 65 72 72 6F 72 2E 0A 0A 20 20 20 40 | an error... @ |
+| 23 20 20 20 20 20 40 21 20 53 68 6F 75 6C 64 20 | # @! Should |
+| 62 65 20 66 6C 61 67 67 65 64 20 61 73 20 61 6E | be flagged as an |
+| 20 65 72 72 6F 72 2E 0A 0A 33 2E 20 54 65 73 74 | error...3. Test |
+| 20 74 68 61 74 20 3C 73 70 65 63 69 61 6C 3E 23 | that <special># |
+| 45 4F 4C 20 69 73 20 66 6C 61 67 67 65 64 20 61 | EOL is flagged a |
+| 73 20 61 6E 20 65 72 72 6F 72 2E 0A 0A 20 20 20 | s an error... |
+| 40 23 0A 0A | @#.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC17: Test <special>#.<010>
+00002 00002| <010>
+00003 00003| First we trip up the scanner so no further passes take place.<010>
+00004 00004| <010>
+00005 00005| @<010>
+00006 00006| <010>
+00007 00007| 1. Test with all possible printable characters.<010>
+00008 00008| <010>
+00009 00009| @#! @#" @## @#$ @#% @#& @#' @#( @#) @#* @#+ @#, @#- @#. @#/<010>
+00010 00010| @#0 @#1 @#2 @#3 @#4 @#5 @#6 @#7 @#8 @#9 @#: @#; @#< @#= @#><010>
+00011 00011| @#? @#@ @#A @#B @#C @#D @#E @#F @#G @#H @#I @#J @#K @#L @#M<010>
+00012 00012| @#N @#O @#P @#Q @#R @#S @#T @#U @#V @#W @#X @#Y @#Z @#[ @#\<010>
+00013 00013| @#] @#^ @#_ @#` @#a @#b @#c @#d @#e @#f @#g @#h @#i @#j @#k<010>
+00014 00014| @#l @#m @#n @#o @#p @#q @#r @#s @#t @#u @#v @#w @#x @#y @#z<010>
+00015 00015| @#{ @#| @#} @#~<010>
+00016 00016| <010>
+00017 00017| 2. Test that <special>#<space> is flagged as an error.<010>
+00018 00018| <010>
+00019 00019| @# @! Should be flagged as an error.<010>
+00020 00020| <010>
+00021 00021| 3. Test that <special>#EOL is flagged as an error.<010>
+00022 00022| <010>
+00023 00023| @#<010>
+00024 00024| <010>
+00025 00025| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 194 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC17: Test <special>#.<010>
+<010>
+First we trip up the scanner so no further passes take place.<010>
+<010>
+"
+0006[01]: Text. Text scrap[Grey]="<010>
+1. Test with all possible printable characters.<010>
+<010>
+"
+0009[01]: @# Name. Character='!'.
+0009[04]: Text. Text scrap[White]=" "
+0009[05]: @# Name. Character='"'.
+0009[08]: Text. Text scrap[White]=" "
+0009[09]: @# Name. Character='#'.
+0009[12]: Text. Text scrap[White]=" "
+0009[13]: @# Name. Character='$'.
+0009[16]: Text. Text scrap[White]=" "
+0009[17]: @# Name. Character='%'.
+0009[20]: Text. Text scrap[White]=" "
+0009[21]: @# Name. Character='&'.
+0009[24]: Text. Text scrap[White]=" "
+0009[25]: @# Name. Character='''.
+0009[28]: Text. Text scrap[White]=" "
+0009[29]: @# Name. Character='('.
+0009[32]: Text. Text scrap[White]=" "
+0009[33]: @# Name. Character=')'.
+0009[36]: Text. Text scrap[White]=" "
+0009[37]: @# Name. Character='*'.
+0009[40]: Text. Text scrap[White]=" "
+0009[41]: @# Name. Character='+'.
+0009[44]: Text. Text scrap[White]=" "
+0009[45]: @# Name. Character=','.
+0009[48]: Text. Text scrap[White]=" "
+0009[49]: @# Name. Character='-'.
+0009[52]: Text. Text scrap[White]=" "
+0009[53]: @# Name. Character='.'.
+0009[56]: Text. Text scrap[White]=" "
+0009[57]: @# Name. Character='/'.
+0009[60]: Text. Text scrap[White]="<010>
+"
+0010[01]: @# Name. Character='0'.
+0010[04]: Text. Text scrap[White]=" "
+0010[05]: @# Name. Character='1'.
+0010[08]: Text. Text scrap[White]=" "
+0010[09]: @# Name. Character='2'.
+0010[12]: Text. Text scrap[White]=" "
+0010[13]: @# Name. Character='3'.
+0010[16]: Text. Text scrap[White]=" "
+0010[17]: @# Name. Character='4'.
+0010[20]: Text. Text scrap[White]=" "
+0010[21]: @# Name. Character='5'.
+0010[24]: Text. Text scrap[White]=" "
+0010[25]: @# Name. Character='6'.
+0010[28]: Text. Text scrap[White]=" "
+0010[29]: @# Name. Character='7'.
+0010[32]: Text. Text scrap[White]=" "
+0010[33]: @# Name. Character='8'.
+0010[36]: Text. Text scrap[White]=" "
+0010[37]: @# Name. Character='9'.
+0010[40]: Text. Text scrap[White]=" "
+0010[41]: @# Name. Character=':'.
+0010[44]: Text. Text scrap[White]=" "
+0010[45]: @# Name. Character=';'.
+0010[48]: Text. Text scrap[White]=" "
+0010[49]: @# Name. Character='<'.
+0010[52]: Text. Text scrap[White]=" "
+0010[53]: @# Name. Character='='.
+0010[56]: Text. Text scrap[White]=" "
+0010[57]: @# Name. Character='>'.
+0010[60]: Text. Text scrap[White]="<010>
+"
+0011[01]: @# Name. Character='?'.
+0011[04]: Text. Text scrap[White]=" "
+0011[05]: @# Name. Character='@'.
+0011[08]: Text. Text scrap[White]=" "
+0011[09]: @# Name. Character='A'.
+0011[12]: Text. Text scrap[White]=" "
+0011[13]: @# Name. Character='B'.
+0011[16]: Text. Text scrap[White]=" "
+0011[17]: @# Name. Character='C'.
+0011[20]: Text. Text scrap[White]=" "
+0011[21]: @# Name. Character='D'.
+0011[24]: Text. Text scrap[White]=" "
+0011[25]: @# Name. Character='E'.
+0011[28]: Text. Text scrap[White]=" "
+0011[29]: @# Name. Character='F'.
+0011[32]: Text. Text scrap[White]=" "
+0011[33]: @# Name. Character='G'.
+0011[36]: Text. Text scrap[White]=" "
+0011[37]: @# Name. Character='H'.
+0011[40]: Text. Text scrap[White]=" "
+0011[41]: @# Name. Character='I'.
+0011[44]: Text. Text scrap[White]=" "
+0011[45]: @# Name. Character='J'.
+0011[48]: Text. Text scrap[White]=" "
+0011[49]: @# Name. Character='K'.
+0011[52]: Text. Text scrap[White]=" "
+0011[53]: @# Name. Character='L'.
+0011[56]: Text. Text scrap[White]=" "
+0011[57]: @# Name. Character='M'.
+0011[60]: Text. Text scrap[White]="<010>
+"
+0012[01]: @# Name. Character='N'.
+0012[04]: Text. Text scrap[White]=" "
+0012[05]: @# Name. Character='O'.
+0012[08]: Text. Text scrap[White]=" "
+0012[09]: @# Name. Character='P'.
+0012[12]: Text. Text scrap[White]=" "
+0012[13]: @# Name. Character='Q'.
+0012[16]: Text. Text scrap[White]=" "
+0012[17]: @# Name. Character='R'.
+0012[20]: Text. Text scrap[White]=" "
+0012[21]: @# Name. Character='S'.
+0012[24]: Text. Text scrap[White]=" "
+0012[25]: @# Name. Character='T'.
+0012[28]: Text. Text scrap[White]=" "
+0012[29]: @# Name. Character='U'.
+0012[32]: Text. Text scrap[White]=" "
+0012[33]: @# Name. Character='V'.
+0012[36]: Text. Text scrap[White]=" "
+0012[37]: @# Name. Character='W'.
+0012[40]: Text. Text scrap[White]=" "
+0012[41]: @# Name. Character='X'.
+0012[44]: Text. Text scrap[White]=" "
+0012[45]: @# Name. Character='Y'.
+0012[48]: Text. Text scrap[White]=" "
+0012[49]: @# Name. Character='Z'.
+0012[52]: Text. Text scrap[White]=" "
+0012[53]: @# Name. Character='['.
+0012[56]: Text. Text scrap[White]=" "
+0012[57]: @# Name. Character='\'.
+0012[60]: Text. Text scrap[White]="<010>
+"
+0013[01]: @# Name. Character=']'.
+0013[04]: Text. Text scrap[White]=" "
+0013[05]: @# Name. Character='^'.
+0013[08]: Text. Text scrap[White]=" "
+0013[09]: @# Name. Character='_'.
+0013[12]: Text. Text scrap[White]=" "
+0013[13]: @# Name. Character='`'.
+0013[16]: Text. Text scrap[White]=" "
+0013[17]: @# Name. Character='a'.
+0013[20]: Text. Text scrap[White]=" "
+0013[21]: @# Name. Character='b'.
+0013[24]: Text. Text scrap[White]=" "
+0013[25]: @# Name. Character='c'.
+0013[28]: Text. Text scrap[White]=" "
+0013[29]: @# Name. Character='d'.
+0013[32]: Text. Text scrap[White]=" "
+0013[33]: @# Name. Character='e'.
+0013[36]: Text. Text scrap[White]=" "
+0013[37]: @# Name. Character='f'.
+0013[40]: Text. Text scrap[White]=" "
+0013[41]: @# Name. Character='g'.
+0013[44]: Text. Text scrap[White]=" "
+0013[45]: @# Name. Character='h'.
+0013[48]: Text. Text scrap[White]=" "
+0013[49]: @# Name. Character='i'.
+0013[52]: Text. Text scrap[White]=" "
+0013[53]: @# Name. Character='j'.
+0013[56]: Text. Text scrap[White]=" "
+0013[57]: @# Name. Character='k'.
+0013[60]: Text. Text scrap[White]="<010>
+"
+0014[01]: @# Name. Character='l'.
+0014[04]: Text. Text scrap[White]=" "
+0014[05]: @# Name. Character='m'.
+0014[08]: Text. Text scrap[White]=" "
+0014[09]: @# Name. Character='n'.
+0014[12]: Text. Text scrap[White]=" "
+0014[13]: @# Name. Character='o'.
+0014[16]: Text. Text scrap[White]=" "
+0014[17]: @# Name. Character='p'.
+0014[20]: Text. Text scrap[White]=" "
+0014[21]: @# Name. Character='q'.
+0014[24]: Text. Text scrap[White]=" "
+0014[25]: @# Name. Character='r'.
+0014[28]: Text. Text scrap[White]=" "
+0014[29]: @# Name. Character='s'.
+0014[32]: Text. Text scrap[White]=" "
+0014[33]: @# Name. Character='t'.
+0014[36]: Text. Text scrap[White]=" "
+0014[37]: @# Name. Character='u'.
+0014[40]: Text. Text scrap[White]=" "
+0014[41]: @# Name. Character='v'.
+0014[44]: Text. Text scrap[White]=" "
+0014[45]: @# Name. Character='w'.
+0014[48]: Text. Text scrap[White]=" "
+0014[49]: @# Name. Character='x'.
+0014[52]: Text. Text scrap[White]=" "
+0014[53]: @# Name. Character='y'.
+0014[56]: Text. Text scrap[White]=" "
+0014[57]: @# Name. Character='z'.
+0014[60]: Text. Text scrap[White]="<010>
+"
+0015[01]: @# Name. Character='{'.
+0015[04]: Text. Text scrap[White]=" "
+0015[05]: @# Name. Character='|'.
+0015[08]: Text. Text scrap[White]=" "
+0015[09]: @# Name. Character='}'.
+0015[12]: Text. Text scrap[White]=" "
+0015[13]: @# Name. Character='~'.
+0015[16]: Text. Text scrap[Grey]="<010>
+<010>
+2. Test that <special>#<space> is flagged as an error.<010>
+<010>
+ "
+0019[07]: Text. Text scrap[White]=" "
+0020[01]: Text. Text scrap[Grey]="<010>
+3. Test that <special>#EOL is flagged as an error.<010>
+<010>
+ "
+0024[01]: Text. Text scrap[White]="<010>
+"
+0025[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC17: Test <special>#.
+ 2 2|
+ 3 3| First we trip up the scanner so no further passes take place.
+ 4 4|
+ 5 5| @
+ Error|.^<special><endofline> is not a legal special sequence.
+ 6 6|
+ 7 7| 1. Test with all possible printable characters.
+ 8 8|
+ 9 9| @#! @#" @## @#$ @#% @#& @#' @#( @#) @#* @#+ @#, @#- @#. @#/
+ 10 10| @#0 @#1 @#2 @#3 @#4 @#5 @#6 @#7 @#8 @#9 @#: @#; @#< @#= @#>
+ 11 11| @#? @#@ @#A @#B @#C @#D @#E @#F @#G @#H @#I @#J @#K @#L @#M
+ 12 12| @#N @#O @#P @#Q @#R @#S @#T @#U @#V @#W @#X @#Y @#Z @#[ @#\
+ 13 13| @#] @#^ @#_ @#` @#a @#b @#c @#d @#e @#f @#g @#h @#i @#j @#k
+ 14 14| @#l @#m @#n @#o @#p @#q @#r @#s @#t @#u @#v @#w @#x @#y @#z
+ 15 15| @#{ @#| @#} @#~
+ 16 16|
+ 17 17| 2. Test that <special>#<space> is flagged as an error.
+ 18 18|
+ 19 19| @# @! Should be flagged as an error.
+ Error|......^Expecting a printable character.
+ 20 20|
+ 21 21| 3. Test that <special>#EOL is flagged as an error.
+ 22 22|
+ 23 23| @#
+ Error|......^Expecting a printable character.
+ 24 24|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 3 Errors.
diff --git a/web/funnelAC/results/sc18.lis b/web/funnelAC/results/sc18.lis
new file mode 100644
index 0000000000..1442d3938d
--- /dev/null
+++ b/web/funnelAC/results/sc18.lis
@@ -0,0 +1,261 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 38 3A 20 54 65 73 74 20 3C 73 70 65 63 | SC18: Test <spec |
+| 69 61 6C 3E 23 3D 0A 0A 46 69 72 73 74 20 77 65 | ial>#=..First we |
+| 20 74 72 69 70 20 75 70 20 74 68 65 20 73 63 61 | trip up the sca |
+| 6E 6E 65 72 20 73 6F 20 6E 6F 20 66 75 72 74 68 | nner so no furth |
+| 65 72 20 70 61 73 73 65 73 20 74 61 6B 65 20 70 | er passes take p |
+| 6C 61 63 65 2E 0A 0A 40 0A 0A 31 2E 20 54 65 73 | lace...@..1. Tes |
+| 74 20 77 69 74 68 20 61 6C 6C 20 70 6F 73 73 69 | t with all possi |
+| 62 6C 65 20 70 72 69 6E 74 61 62 6C 65 20 63 68 | ble printable ch |
+| 61 72 61 63 74 65 72 73 2E 0A 0A 40 3D 21 20 21 | aracters...@=! ! |
+| 3D 22 20 22 3D 23 20 23 3D 24 20 24 3D 25 20 25 | =" "=# #=$ $=% % |
+| 3D 26 20 26 3D 27 20 27 3D 28 20 28 3D 29 20 29 | =& &=' '=( (=) ) |
+| 3D 2A 20 2A 3D 2B 20 2B 3D 2C 20 2C 3D 2D 20 2D | =* *=+ +=, ,=- - |
+| 3D 2E 20 2E 3D 2F 0A 2F 3D 30 20 30 3D 31 20 31 | =. .=/./=0 0=1 1 |
+| 3D 32 20 32 3D 33 20 33 3D 34 20 34 3D 35 20 35 | =2 2=3 3=4 4=5 5 |
+| 3D 36 20 36 3D 37 20 37 3D 38 20 38 3D 39 20 39 | =6 6=7 7=8 8=9 9 |
+| 3D 3A 20 3A 3D 3B 20 3B 3D 3C 20 3C 3D 3D 20 3D | =: :=; ;=< <== = |
+| 3D 3E 0A 3E 3D 3F 20 3F 3D 40 20 40 3D 41 20 41 | =>.>=? ?=@ @=A A |
+| 3D 42 20 42 3D 43 20 43 3D 44 20 44 3D 45 20 45 | =B B=C C=D D=E E |
+| 3D 46 20 46 3D 47 20 47 3D 48 20 48 3D 49 20 49 | =F F=G G=H H=I I |
+| 3D 4A 20 4A 3D 4B 20 4B 3D 4C 20 4C 3D 4D 0A 4D | =J J=K K=L L=M.M |
+| 3D 4E 20 4E 3D 4F 20 4F 3D 50 20 50 3D 51 20 51 | =N N=O O=P P=Q Q |
+| 3D 52 20 52 3D 53 20 53 3D 54 20 54 3D 55 20 55 | =R R=S S=T T=U U |
+| 3D 56 20 56 3D 57 20 57 3D 58 20 58 3D 59 20 59 | =V V=W W=X X=Y Y |
+| 3D 5A 20 5A 3D 5B 20 5B 3D 5C 0A 5C 3D 5D 20 5D | =Z Z=[ [=\.\=] ] |
+| 3D 5E 20 5E 3D 5F 20 5F 3D 60 20 60 3D 61 20 61 | =^ ^=_ _=` `=a a |
+| 3D 62 20 62 3D 63 20 63 3D 64 20 64 3D 65 20 65 | =b b=c c=d d=e e |
+| 3D 66 20 66 3D 67 20 67 3D 68 20 68 3D 69 20 69 | =f f=g g=h h=i i |
+| 3D 6A 20 6A 3D 6B 0A 6B 3D 6C 20 6C 3D 6D 20 6D | =j j=k.k=l l=m m |
+| 3D 6E 20 6E 3D 6F 20 6F 3D 70 20 70 3D 71 20 71 | =n n=o o=p p=q q |
+| 3D 72 20 72 3D 73 20 73 3D 74 20 74 3D 75 20 75 | =r r=s s=t t=u u |
+| 3D 76 20 76 3D 77 20 77 3D 78 20 78 3D 79 20 79 | =v v=w w=x x=y y |
+| 3D 7A 0A 7A 3D 7B 20 7B 3D 7C 20 7C 3D 7D 20 7D | =z.z={ {=| |=} } |
+| 3D 7E 20 7E 3D 40 0A 0A 32 2E 20 54 65 73 74 20 | =~ ~=@..2. Test |
+| 74 68 61 74 20 3C 73 70 65 63 69 61 6C 3E 3D 3C | that <special>=< |
+| 73 70 61 63 65 3E 20 69 73 20 66 6C 61 67 67 65 | space> is flagge |
+| 64 20 61 73 20 61 6E 20 65 72 72 6F 72 2E 0A 0A | d as an error... |
+| 20 20 20 40 3D 20 20 20 20 20 40 21 20 53 68 6F | @= @! Sho |
+| 75 6C 64 20 62 65 20 66 6C 61 67 67 65 64 20 61 | uld be flagged a |
+| 73 20 61 6E 20 65 72 72 6F 72 2E 0A 0A 33 2E 20 | s an error...3. |
+| 54 65 73 74 20 74 68 61 74 20 3C 73 70 65 63 69 | Test that <speci |
+| 61 6C 3E 3D 45 4F 4C 20 69 73 20 66 6C 61 67 67 | al>=EOL is flagg |
+| 65 64 20 61 73 20 61 6E 20 65 72 72 6F 72 2E 0A | ed as an error.. |
+| 0A 20 20 20 40 3D 0A 0A | . @=.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC18: Test <special>#=<010>
+00002 00002| <010>
+00003 00003| First we trip up the scanner so no further passes take place.<010>
+00004 00004| <010>
+00005 00005| @<010>
+00006 00006| <010>
+00007 00007| 1. Test with all possible printable characters.<010>
+00008 00008| <010>
+00009 00009| @=! !=" "=# #=$ $=% %=& &=' '=( (=) )=* *=+ +=, ,=- -=. .=/<010>
+00010 00010| /=0 0=1 1=2 2=3 3=4 4=5 5=6 6=7 7=8 8=9 9=: :=; ;=< <== ==><010>
+00011 00011| >=? ?=@ @=A A=B B=C C=D D=E E=F F=G G=H H=I I=J J=K K=L L=M<010>
+00012 00012| M=N N=O O=P P=Q Q=R R=S S=T T=U U=V V=W W=X X=Y Y=Z Z=[ [=\<010>
+00013 00013| \=] ]=^ ^=_ _=` `=a a=b b=c c=d d=e e=f f=g g=h h=i i=j j=k<010>
+00014 00014| k=l l=m m=n n=o o=p p=q q=r r=s s=t t=u u=v v=w w=x x=y y=z<010>
+00015 00015| z={ {=| |=} }=~ ~=@<010>
+00016 00016| <010>
+00017 00017| 2. Test that <special>=<space> is flagged as an error.<010>
+00018 00018| <010>
+00019 00019| @= @! Should be flagged as an error.<010>
+00020 00020| <010>
+00021 00021| 3. Test that <special>=EOL is flagged as an error.<010>
+00022 00022| <010>
+00023 00023| @=<010>
+00024 00024| <010>
+00025 00025| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 101 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC18: Test <special>#=<010>
+<010>
+First we trip up the scanner so no further passes take place.<010>
+<010>
+"
+0006[01]: Text. Text scrap[Grey]="<010>
+1. Test with all possible printable characters.<010>
+<010>
+"
+0009[04]: Text. Text scrap[White]=" "
+0009[08]: Text. Text scrap[White]=" "
+0009[12]: Text. Text scrap[White]=" "
+0009[16]: Text. Text scrap[White]=" "
+0009[20]: Text. Text scrap[White]=" "
+0009[24]: Text. Text scrap[White]=" "
+0009[28]: Text. Text scrap[White]=" "
+0009[32]: Text. Text scrap[White]=" "
+0009[36]: Text. Text scrap[White]=" "
+0009[40]: Text. Text scrap[White]=" "
+0009[44]: Text. Text scrap[White]=" "
+0009[48]: Text. Text scrap[White]=" "
+0009[52]: Text. Text scrap[White]=" "
+0009[56]: Text. Text scrap[White]=" "
+0009[60]: Text. Text scrap[White]="<010>
+"
+0010[04]: Text. Text scrap[White]=" "
+0010[08]: Text. Text scrap[White]=" "
+0010[12]: Text. Text scrap[White]=" "
+0010[16]: Text. Text scrap[White]=" "
+0010[20]: Text. Text scrap[White]=" "
+0010[24]: Text. Text scrap[White]=" "
+0010[28]: Text. Text scrap[White]=" "
+0010[32]: Text. Text scrap[White]=" "
+0010[36]: Text. Text scrap[White]=" "
+0010[40]: Text. Text scrap[White]=" "
+0010[44]: Text. Text scrap[White]=" "
+0010[48]: Text. Text scrap[White]=" "
+0010[52]: Text. Text scrap[White]=" "
+0010[56]: Text. Text scrap[White]=" "
+0010[60]: Text. Text scrap[White]="<010>
+"
+0011[04]: Text. Text scrap[White]=" "
+0011[08]: Text. Text scrap[White]=" "
+0011[12]: Text. Text scrap[White]=" "
+0011[16]: Text. Text scrap[White]=" "
+0011[20]: Text. Text scrap[White]=" "
+0011[24]: Text. Text scrap[White]=" "
+0011[28]: Text. Text scrap[White]=" "
+0011[32]: Text. Text scrap[White]=" "
+0011[36]: Text. Text scrap[White]=" "
+0011[40]: Text. Text scrap[White]=" "
+0011[44]: Text. Text scrap[White]=" "
+0011[48]: Text. Text scrap[White]=" "
+0011[52]: Text. Text scrap[White]=" "
+0011[56]: Text. Text scrap[White]=" "
+0011[60]: Text. Text scrap[White]="<010>
+"
+0012[04]: Text. Text scrap[White]=" "
+0012[08]: Text. Text scrap[White]=" "
+0012[12]: Text. Text scrap[White]=" "
+0012[16]: Text. Text scrap[White]=" "
+0012[20]: Text. Text scrap[White]=" "
+0012[24]: Text. Text scrap[White]=" "
+0012[28]: Text. Text scrap[White]=" "
+0012[32]: Text. Text scrap[White]=" "
+0012[36]: Text. Text scrap[White]=" "
+0012[40]: Text. Text scrap[White]=" "
+0012[44]: Text. Text scrap[White]=" "
+0012[48]: Text. Text scrap[White]=" "
+0012[52]: Text. Text scrap[White]=" "
+0012[56]: Text. Text scrap[White]=" "
+0012[60]: Text. Text scrap[White]="<010>
+"
+0013[04]: Text. Text scrap[White]=" "
+0013[08]: Text. Text scrap[White]=" "
+0013[12]: Text. Text scrap[White]=" "
+0013[16]: Text. Text scrap[White]=" "
+0013[20]: Text. Text scrap[White]=" "
+0013[24]: Text. Text scrap[White]=" "
+0013[28]: Text. Text scrap[White]=" "
+0013[32]: Text. Text scrap[White]=" "
+0013[36]: Text. Text scrap[White]=" "
+0013[40]: Text. Text scrap[White]=" "
+0013[44]: Text. Text scrap[White]=" "
+0013[48]: Text. Text scrap[White]=" "
+0013[52]: Text. Text scrap[White]=" "
+0013[56]: Text. Text scrap[White]=" "
+0013[60]: Text. Text scrap[White]="<010>
+"
+0014[04]: Text. Text scrap[White]=" "
+0014[08]: Text. Text scrap[White]=" "
+0014[12]: Text. Text scrap[White]=" "
+0014[16]: Text. Text scrap[White]=" "
+0014[20]: Text. Text scrap[White]=" "
+0014[24]: Text. Text scrap[White]=" "
+0014[28]: Text. Text scrap[White]=" "
+0014[32]: Text. Text scrap[White]=" "
+0014[36]: Text. Text scrap[White]=" "
+0014[40]: Text. Text scrap[White]=" "
+0014[44]: Text. Text scrap[White]=" "
+0014[48]: Text. Text scrap[White]=" "
+0014[52]: Text. Text scrap[White]=" "
+0014[56]: Text. Text scrap[White]=" "
+0014[60]: Text. Text scrap[White]="<010>
+"
+0015[04]: Text. Text scrap[White]=" "
+0015[08]: Text. Text scrap[White]=" "
+0015[12]: Text. Text scrap[White]=" "
+0015[16]: Text. Text scrap[White]=" "
+0015[20]: Text. Text scrap[Grey]="<010>
+<010>
+2. Test that <special>=<space> is flagged as an error.<010>
+<010>
+ "
+0019[07]: Text. Text scrap[White]=" "
+0020[01]: Text. Text scrap[Grey]="<010>
+3. Test that <special>=EOL is flagged as an error.<010>
+<010>
+ "
+0024[01]: Text. Text scrap[White]="<010>
+"
+0025[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC18: Test <special>#=
+ 2 2|
+ 3 3| First we trip up the scanner so no further passes take place.
+ 4 4|
+ 5 5| @
+ Error|.^<special><endofline> is not a legal special sequence.
+ 6 6|
+ 7 7| 1. Test with all possible printable characters.
+ 8 8|
+ 9 9| @=! !=" "=# #=$ $=% %=& &=' '=( (=) )=* *=+ +=, ,=- -=. .=/
+ 10 10| /=0 0=1 1=2 2=3 3=4 4=5 5=6 6=7 7=8 8=9 9=: :=; ;=< <== ==>
+ 11 11| >=? ?=@ @=A A=B B=C C=D D=E E=F F=G G=H H=I I=J J=K K=L L=M
+ 12 12| M=N N=O O=P P=Q Q=R R=S S=T T=U U=V V=W W=X X=Y Y=Z Z=[ [=\
+ 13 13| \=] ]=^ ^=_ _=` `=a a=b b=c c=d d=e e=f f=g g=h h=i i=j j=k
+ 14 14| k=l l=m m=n n=o o=p p=q q=r r=s s=t t=u u=v v=w w=x x=y y=z
+ 15 15| z={ {=| |=} }=~ ~=@
+ 16 16|
+ 17 17| 2. Test that <special>=<space> is flagged as an error.
+ 18 18|
+ 19 19| @= @! Should be flagged as an error.
+ Error|....^You cannot set the special character to <space>!
+ |....^Special sequence ignored.
+ 20 20|
+ 21 21| 3. Test that <special>=EOL is flagged as an error.
+ 22 22|
+ 23 23| @=
+ Error|....^You cannot set the special character to <endofline>!
+ |....^Special sequence ignored.
+ 24 24|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 3 Errors.
diff --git a/web/funnelAC/results/sc19.lis b/web/funnelAC/results/sc19.lis
new file mode 100644
index 0000000000..50da9c5e30
--- /dev/null
+++ b/web/funnelAC/results/sc19.lis
@@ -0,0 +1,96 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 31 39 3A 20 54 65 73 74 20 3C 73 70 65 63 | SC19: Test <spec |
+| 69 61 6C 3E 2D 0A 0A 31 2E 20 54 65 73 74 20 74 | ial>-..1. Test t |
+| 68 61 74 20 65 72 72 6F 72 20 69 73 20 66 6C 61 | hat error is fla |
+| 67 67 65 64 20 69 66 20 73 65 71 75 65 6E 63 65 | gged if sequence |
+| 20 69 73 20 6E 6F 74 20 61 74 20 74 68 65 20 65 | is not at the e |
+| 6E 64 20 6F 66 20 61 20 6C 69 6E 65 2E 0A 0A 54 | nd of a line...T |
+| 68 69 73 20 69 73 20 61 20 6C 69 6E 65 20 63 6F | his is a line co |
+| 6E 74 61 69 6E 69 6E 67 20 40 2D 20 74 68 65 20 | ntaining @- the |
+| 65 6E 64 20 6F 66 20 6C 69 6E 65 20 73 75 70 70 | end of line supp |
+| 72 65 73 73 6F 72 2E 0A 0A 32 2E 20 54 65 73 74 | ressor...2. Test |
+| 20 74 68 65 20 73 65 71 75 65 6E 63 65 20 66 6F | the sequence fo |
+| 6C 6C 6F 77 65 64 20 62 79 20 74 72 61 69 6C 69 | llowed by traili |
+| 6E 67 20 62 6C 61 6E 6B 73 2E 0A 0A 20 20 20 20 | ng blanks... |
+| 20 40 2D 20 20 20 0A 0A | @- .. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC19: Test <special>-<010>
+00002 00002| <010>
+00003 00003| 1. Test that error is flagged if sequence is not at the end of a line.<010>
+00004 00004| <010>
+00005 00005| This is a line containing @- the end of line suppressor.<010>
+00006 00006| <010>
+00007 00007| 2. Test the sequence followed by trailing blanks.<010>
+00008 00008| <010>
+00009 00009| @- <010>
+00010 00010| <010>
+00011 00011| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 4 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC19: Test <special>-<010>
+<010>
+1. Test that error is flagged if sequence is not at the end of a line.<010>
+<010>
+This is a line containing "
+0005[29]: Text. Text scrap[Grey]=" the end of line suppressor.<010>
+<010>
+2. Test the sequence followed by trailing blanks.<010>
+<010>
+ "
+0009[08]: Text. Text scrap[White]=" <010>
+<010>
+"
+0011[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC19: Test <special>-
+ 2 2|
+ 3 3| 1. Test that error is flagged if sequence is not at the end of a line.
+ 4 4|
+ 5 5| This is a line containing @- the end of line suppressor.
+ Error|...........................^Suppress EOL sequence is legal only at the end of a line
+ |...........................^unless `@p ignore_text_after_special_minus' is used.
+ 6 6|
+ 7 7| 2. Test the sequence followed by trailing blanks.
+ 8 8|
+ 9 9| @-
+ Error|......^Suppress EOL sequence is legal only at the end of a line
+ |......^unless `@p ignore_text_after_special_minus' is used.
+ Warning|..........^Line has trailing spaces up to and including this space.
+ 10 10|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 2 Errors and 1 Warning.
diff --git a/web/funnelAC/results/sc20.lis b/web/funnelAC/results/sc20.lis
new file mode 100644
index 0000000000..8b81e40626
--- /dev/null
+++ b/web/funnelAC/results/sc20.lis
@@ -0,0 +1,198 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 32 30 3A 20 54 65 73 74 20 40 21 0A 0A 31 | SC20: Test @!..1 |
+| 2E 20 54 65 73 74 20 61 74 20 74 68 65 20 73 74 | . Test at the st |
+| 61 72 74 20 6F 66 20 61 20 6C 69 6E 65 2E 0A 0A | art of a line... |
+| 40 21 20 54 68 69 73 20 69 73 20 61 20 63 6F 6D | @! This is a com |
+| 6D 65 6E 74 20 61 6E 64 20 77 65 20 63 61 6E 20 | ment and we can |
+| 73 74 69 63 6B 20 61 6E 79 20 73 6F 72 74 20 6F | stick any sort o |
+| 66 20 72 75 62 62 69 73 68 20 69 6E 20 69 74 2E | f rubbish in it. |
+| 0A 40 21 20 40 23 20 40 69 20 40 5E 64 73 3B 61 | .@! @# @i @^ds;a |
+| 66 3B 6C 73 64 6D 66 3B 6C 61 6E 64 20 6F 74 68 | f;lsdmf;land oth |
+| 65 72 20 40 20 72 75 62 62 69 73 68 2E 0A 0A 32 | er @ rubbish...2 |
+| 2E 20 54 65 73 74 20 68 61 6C 66 77 61 79 20 74 | . Test halfway t |
+| 68 72 6F 75 67 68 20 61 20 6C 69 6E 65 2E 0A 0A | hrough a line... |
+| 54 68 69 73 20 69 73 20 61 20 6C 69 6E 65 20 40 | This is a line @ |
+| 21 20 77 68 6F 73 65 20 73 65 63 6F 6E 64 20 68 | ! whose second h |
+| 61 6C 66 20 6E 65 76 65 72 20 73 65 65 73 20 74 | alf never sees t |
+| 68 65 20 64 61 79 6C 69 67 68 74 2E 20 40 69 20 | he daylight. @i |
+| 40 3C 0A 0A | @<.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC20: Test @!<010>
+00002 00002| <010>
+00003 00003| 1. Test at the start of a line.<010>
+00004 00004| <010>
+00005 00005| @! This is a comment and we can stick any sort of rubbish in it.<010>
+00006 00006| @! @# @i @^ds;af;lsdmf;land other @ rubbish.<010>
+00007 00007| <010>
+00008 00008| 2. Test halfway through a line.<010>
+00009 00009| <010>
+00010 00010| This is a line @! whose second half never sees the daylight. @i @<<010>
+00011 00011| <010>
+00012 00012| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 5 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC20: Test "
+0002[01]: Text. Text scrap[Grey]="<010>
+1. Test at the start of a line.<010>
+<010>
+"
+0007[01]: Text. Text scrap[Grey]="<010>
+2. Test halfway through a line.<010>
+<010>
+This is a line "
+0011[01]: Text. Text scrap[White]="<010>
+"
+0012[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+
+========================== Start of MACRO TABLE DUMP ===========================
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#file"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#line"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+------------------- Start of Macro Dump --------------------
+Macro Name : "#timestamp"
+Defined? : Yes.
+Parameters : 0
+Additive? : No.
+Zero Calls? : Yes.
+Many Calls? : Yes.
+Output File?: No.
+Automatic Line Directive Macro?: No.
+Call list :
+Macro body :
+
+--Start of List of Body Parts--
+This macro has 1 body part.
+Body part 1: Seqnum=0, Pos(L,C)=(5369005744,5368823512), Expression follows:
+
+---- Start of Expression ----
+
+--- Start Special Function ---
+---- End Special Function ----
+
+----- End of Expression -----
+
+---End of List of Body Parts---
+
+-------------------- End of Macro Dump ---------------------
+
+
+
+=========================== End of MACRO TABLE DUMP ============================
+
+
+========================= Start of DOCUMENT LIST DUMP ==========================
+
+
+TEXT COMPONENT: Pos(L,C)=(1,1).
+
+-- Start of Text Scrap List --
+Text scrap[Grey]="SC20: Test "
+Text scrap[Grey]="<010>
+1. Test at the start of a line.<010>
+<010>
+"
+Text scrap[Grey]="<010>
+2. Test halfway through a line.<010>
+<010>
+This is a line "
+Text scrap[White]="<010>
+"
+--- End of Text Scrap List ---
+
+
+========================== End of DOCUMENT LIST DUMP ===========================
+
+E: No output files specified.
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/sc21.lis b/web/funnelAC/results/sc21.lis
new file mode 100644
index 0000000000..84cae9a495
--- /dev/null
+++ b/web/funnelAC/results/sc21.lis
@@ -0,0 +1,411 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 32 31 3A 20 54 65 73 74 20 67 65 6E 65 72 | SC21: Test gener |
+| 69 63 20 73 79 6E 74 61 78 20 63 68 65 63 6B 69 | ic syntax checki |
+| 6E 67 20 6F 66 20 70 72 61 67 6D 61 73 20 61 6E | ng of pragmas an |
+| 64 20 74 79 70 65 73 65 74 74 65 72 20 64 69 72 | d typesetter dir |
+| 65 63 74 69 76 65 73 2E 0A 0A 31 2E 20 54 65 73 | ectives...1. Tes |
+| 74 20 70 72 61 67 6D 61 20 6E 6F 74 20 61 74 20 | t pragma not at |
+| 74 68 65 20 73 74 61 72 74 20 6F 66 20 6C 69 6E | the start of lin |
+| 65 2E 0A 20 20 20 40 70 0A 20 20 20 40 74 0A 0A | e.. @p. @t.. |
+| 32 2E 20 54 65 73 74 20 63 68 61 72 61 63 74 65 | 2. Test characte |
+| 72 20 66 6F 6C 6C 6F 77 69 6E 67 20 3C 73 70 65 | r following <spe |
+| 63 69 61 6C 3E 70 20 69 73 20 6E 6F 74 20 61 20 | cial>p is not a |
+| 62 6C 61 6E 6B 2E 0A 40 70 78 0A 40 74 78 0A 40 | blank..@px.@tx.@ |
+| 70 0A 40 74 0A 0A 33 2E 20 54 65 73 74 20 70 72 | p.@t..3. Test pr |
+| 61 67 6D 61 20 6C 69 6E 65 20 69 73 20 74 6F 6F | agma line is too |
+| 20 6C 6F 6E 67 20 28 6C 69 6D 69 74 20 69 73 20 | long (limit is |
+| 31 30 30 29 0A 20 20 20 20 20 20 20 20 20 31 20 | 100). 1 |
+| 20 20 20 20 20 20 20 20 32 20 20 20 20 20 20 20 | 2 |
+| 20 20 33 20 20 20 20 20 20 20 20 20 34 20 20 20 | 3 4 |
+| 20 20 20 20 20 20 35 20 20 20 20 20 20 20 20 20 | 5 |
+| 36 20 20 20 20 20 20 20 20 20 37 20 20 20 20 20 | 6 7 |
+| 20 20 20 20 38 20 20 20 20 20 20 20 20 20 39 20 | 8 9 |
+| 20 20 20 20 20 20 20 20 31 0A 40 70 20 34 35 36 | 1.@p 456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 0A 40 | 78901234567890.@ |
+| 70 20 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | p 45678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 0A 40 74 20 34 35 36 37 38 39 30 31 | 8901.@t 45678901 |
+| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
+| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
+| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
+| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
+| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
+| 32 33 34 35 36 37 38 39 30 0A 40 74 20 34 35 36 | 234567890.@t 456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
+| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
+| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
+| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
+| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
+| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 0A | 789012345678901. |
+| 0A 34 2E 20 54 65 73 74 20 76 61 72 69 6F 75 73 | .4. Test various |
+| 20 64 69 66 66 65 72 65 6E 74 20 70 72 61 67 6D | different pragm |
+| 61 20 6C 69 6E 65 73 2E 0A 40 70 20 24 23 25 40 | a lines..@p $#%@ |
+| 20 32 35 32 35 20 20 73 6C 6F 74 68 0A 40 74 20 | 2525 sloth.@t |
+| 24 23 25 40 20 32 35 32 35 20 20 73 6C 6F 74 68 | $#%@ 2525 sloth |
+| 0A 0A 35 2E 20 54 65 73 74 20 70 72 61 67 6D 61 | ..5. Test pragma |
+| 20 77 69 74 68 20 6E 6F 20 61 72 67 75 6D 65 6E | with no argumen |
+| 74 73 2E 20 28 57 69 6C 6C 20 67 65 74 20 61 20 | ts. (Will get a |
+| 74 72 61 69 6C 69 6E 67 20 62 6C 61 6E 6B 73 20 | trailing blanks |
+| 65 72 72 6F 72 2E 29 2E 0A 40 70 20 20 20 20 0A | error.)..@p . |
+| 40 74 20 20 20 20 0A 0A 36 2E 20 54 65 73 74 20 | @t ..6. Test |
+| 70 72 61 67 6D 61 20 77 69 74 68 20 74 6F 6F 20 | pragma with too |
+| 6D 61 6E 79 20 61 72 67 75 6D 65 6E 74 73 2E 0A | many arguments.. |
+| 40 70 20 61 20 62 20 63 20 64 20 65 20 66 20 67 | @p a b c d e f g |
+| 20 68 20 69 20 6A 20 6B 20 6C 20 6D 20 6E 20 6F | h i j k l m n o |
+| 20 70 20 71 20 72 20 73 20 74 20 75 20 76 20 77 | p q r s t u v w |
+| 20 78 20 79 20 7A 0A 40 74 20 61 20 62 20 63 20 | x y z.@t a b c |
+| 64 20 65 20 66 20 67 20 68 20 69 20 6A 20 6B 20 | d e f g h i j k |
+| 6C 20 6D 20 6E 20 6F 20 70 20 71 20 72 20 73 20 | l m n o p q r s |
+| 74 20 75 20 76 20 77 20 78 20 79 20 7A 0A 0A | t u v w x y z.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC21: Test generic syntax checking of pragmas and typesetter directives.<010>
+00002 00002| <010>
+00003 00003| 1. Test pragma not at the start of line.<010>
+00004 00004| @p<010>
+00005 00005| @t<010>
+00006 00006| <010>
+00007 00007| 2. Test character following <special>p is not a blank.<010>
+00008 00008| @px<010>
+00009 00009| @tx<010>
+00010 00010| @p<010>
+00011 00011| @t<010>
+00012 00012| <010>
+00013 00013| 3. Test pragma line is too long (limit is 100)<010>
+00014 00014| 1 2 3 4 5 6 7 8 9 1<010>
+00015 00015| @p 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
+00016 00016| @p 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901<010>
+00017 00017| @t 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
+00018 00018| @t 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901<010>
+00019 00019| <010>
+00020 00020| 4. Test various different pragma lines.<010>
+00021 00021| @p $#%@ 2525 sloth<010>
+00022 00022| @t $#%@ 2525 sloth<010>
+00023 00023| <010>
+00024 00024| 5. Test pragma with no arguments. (Will get a trailing blanks error.).<010>
+00025 00025| @p <010>
+00026 00026| @t <010>
+00027 00027| <010>
+00028 00028| 6. Test pragma with too many arguments.<010>
+00029 00029| @p a b c d e f g h i j k l m n o p q r s t u v w x y z<010>
+00030 00030| @t a b c d e f g h i j k l m n o p q r s t u v w x y z<010>
+00031 00031| <010>
+00032 00032| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 9 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC21: Test generic syntax checking of pragmas and typesetter directives.<010>
+<010>
+1. Test pragma not at the start of line.<010>
+ "
+0005[01]: Text. Text scrap[White]=" "
+0006[01]: Text. Text scrap[Grey]="<010>
+2. Test character following <special>p is not a blank.<010>
+"
+0012[01]: Text. Text scrap[Grey]="<010>
+3. Test pragma line is too long (limit is 100)<010>
+ 1 2 3 4 5 6 7 8 9 1<010>
+"
+0019[01]: Text. Text scrap[Grey]="<010>
+4. Test various different pragma lines.<010>
+"
+0023[01]: Text. Text scrap[Grey]="<010>
+5. Test pragma with no arguments. (Will get a trailing blanks error.).<010>
+"
+0027[01]: Text. Text scrap[Grey]="<010>
+6. Test pragma with too many arguments.<010>
+"
+0031[01]: Text. Text scrap[White]="<010>
+"
+0032[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC21: Test generic syntax checking of pragmas and typesetter directives.
+ 2 2|
+ 3 3| 1. Test pragma not at the start of line.
+ 4 4| @p
+ Error|....^Pragma sequence @p must be at the start of a line.
+ |....^The rest of this line will be ignored.
+ Error|....^Unrecognised pragma. Possible legal pragmas are:
+ |....^ @p indentation = none | blank
+ |....^ @p maximum_input_line_length = <num>|infinity
+ |....^ @p maximum_output_line_length = <num>|infinity
+ |....^ @p typesetter = none | tex | hypertext | html
+ |....^ @p no_doc_header
+ |....^ @p raw_macro_and_section_names
+ |....^ @p ignore_text_after_special_minus
+ |....^ @p no_paragraph_markups
+ |....^ @p declare_source_code_type "<name>"
+ |....^ @p automatic_line_directive_macro = "<name>"
+ |....^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+ |....^ @p #line_offset = <num>
+ |....^ @p #line_depth = <num>
+ |....^The blanks between arguments are important.
+ |....^Pragma ignored.
+ 5 5| @t
+ Error|....^Typesetter directive @t must be at the start of a line.
+ |....^The rest of this line will be ignored.
+ Error|....^Unrecognised typesetter directive. Legal ones are:
+ |....^ @t new_page
+ |....^ @t table_of_contents
+ |....^ @t title <font> <align> <string>
+ |....^ @t vskip <num> mm
+ |....^The blanks between arguments are important.
+ |....^Typesetter directive ignored.
+ 6 6|
+ 7 7| 2. Test character following <special>p is not a blank.
+ 8 8| @px
+ Error|.^Pragma sequence @p must be followed by a blank.
+ Error|.^Unrecognised pragma. Possible legal pragmas are:
+ |.^ @p indentation = none | blank
+ |.^ @p maximum_input_line_length = <num>|infinity
+ |.^ @p maximum_output_line_length = <num>|infinity
+ |.^ @p typesetter = none | tex | hypertext | html
+ |.^ @p no_doc_header
+ |.^ @p raw_macro_and_section_names
+ |.^ @p ignore_text_after_special_minus
+ |.^ @p no_paragraph_markups
+ |.^ @p declare_source_code_type "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+ |.^ @p #line_offset = <num>
+ |.^ @p #line_depth = <num>
+ |.^The blanks between arguments are important.
+ |.^Pragma ignored.
+ 9 9| @tx
+ Error|.^Typesetter directive @t must be followed by a blank.
+ Error|.^Unrecognised typesetter directive. Legal ones are:
+ |.^ @t new_page
+ |.^ @t table_of_contents
+ |.^ @t title <font> <align> <string>
+ |.^ @t vskip <num> mm
+ |.^The blanks between arguments are important.
+ |.^Typesetter directive ignored.
+ 10 10| @p
+ Error|.^Pragma sequence @p must be followed by a blank.
+ Error|.^Unrecognised pragma. Possible legal pragmas are:
+ |.^ @p indentation = none | blank
+ |.^ @p maximum_input_line_length = <num>|infinity
+ |.^ @p maximum_output_line_length = <num>|infinity
+ |.^ @p typesetter = none | tex | hypertext | html
+ |.^ @p no_doc_header
+ |.^ @p raw_macro_and_section_names
+ |.^ @p ignore_text_after_special_minus
+ |.^ @p no_paragraph_markups
+ |.^ @p declare_source_code_type "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+ |.^ @p #line_offset = <num>
+ |.^ @p #line_depth = <num>
+ |.^The blanks between arguments are important.
+ |.^Pragma ignored.
+ 11 11| @t
+ Error|.^Typesetter directive @t must be followed by a blank.
+ Error|.^Unrecognised typesetter directive. Legal ones are:
+ |.^ @t new_page
+ |.^ @t table_of_contents
+ |.^ @t title <font> <align> <string>
+ |.^ @t vskip <num> mm
+ |.^The blanks between arguments are important.
+ |.^Typesetter directive ignored.
+ 12 12|
+ 13 13| 3. Test pragma line is too long (limit is 100)
+ 14 14| 1 2 3 4 5 6 7 8 9 1
+ Error|.................................................................................^Input line is too long (this character is the first offender).
+ |.................................................................................^Currently, the maximum allowable input line length is 80.
+ |.................................................................................^Note: You can change this using a pragma directive (@p).
+ 15 15| @p 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ Error|.^Unrecognised pragma. Possible legal pragmas are:
+ |.^ @p indentation = none | blank
+ |.^ @p maximum_input_line_length = <num>|infinity
+ |.^ @p maximum_output_line_length = <num>|infinity
+ |.^ @p typesetter = none | tex | hypertext | html
+ |.^ @p no_doc_header
+ |.^ @p raw_macro_and_section_names
+ |.^ @p ignore_text_after_special_minus
+ |.^ @p no_paragraph_markups
+ |.^ @p declare_source_code_type "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+ |.^ @p #line_offset = <num>
+ |.^ @p #line_depth = <num>
+ |.^The blanks between arguments are important.
+ |.^Pragma ignored.
+ Error|.................................................................................^Input line is too long (this character is the first offender).
+ |.................................................................................^Currently, the maximum allowable input line length is 80.
+ |.................................................................................^Note: You can change this using a pragma directive (@p).
+ 16 16| @p 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
+ Error|.^This pragma line is too long.
+ |.^The maximum pragma line length is 100 characters.
+ Error|.^Unrecognised pragma. Possible legal pragmas are:
+ |.^ @p indentation = none | blank
+ |.^ @p maximum_input_line_length = <num>|infinity
+ |.^ @p maximum_output_line_length = <num>|infinity
+ |.^ @p typesetter = none | tex | hypertext | html
+ |.^ @p no_doc_header
+ |.^ @p raw_macro_and_section_names
+ |.^ @p ignore_text_after_special_minus
+ |.^ @p no_paragraph_markups
+ |.^ @p declare_source_code_type "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+ |.^ @p #line_offset = <num>
+ |.^ @p #line_depth = <num>
+ |.^The blanks between arguments are important.
+ |.^Pragma ignored.
+ Error|.................................................................................^Input line is too long (this character is the first offender).
+ |.................................................................................^Currently, the maximum allowable input line length is 80.
+ |.................................................................................^Note: You can change this using a pragma directive (@p).
+ 17 17| @t 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ Error|.^Unrecognised typesetter directive. Legal ones are:
+ |.^ @t new_page
+ |.^ @t table_of_contents
+ |.^ @t title <font> <align> <string>
+ |.^ @t vskip <num> mm
+ |.^The blanks between arguments are important.
+ |.^Typesetter directive ignored.
+ Error|.................................................................................^Input line is too long (this character is the first offender).
+ |.................................................................................^Currently, the maximum allowable input line length is 80.
+ |.................................................................................^Note: You can change this using a pragma directive (@p).
+ 18 18| @t 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
+ Error|.^This typestter directive line is too long.
+ |.^The maximum typesetter directive line length is 100 characters.
+ Error|.^Unrecognised typesetter directive. Legal ones are:
+ |.^ @t new_page
+ |.^ @t table_of_contents
+ |.^ @t title <font> <align> <string>
+ |.^ @t vskip <num> mm
+ |.^The blanks between arguments are important.
+ |.^Typesetter directive ignored.
+ Error|.................................................................................^Input line is too long (this character is the first offender).
+ |.................................................................................^Currently, the maximum allowable input line length is 80.
+ |.................................................................................^Note: You can change this using a pragma directive (@p).
+ 19 19|
+ 20 20| 4. Test various different pragma lines.
+ 21 21| @p $#%@ 2525 sloth
+ Error|.^Unrecognised pragma. Possible legal pragmas are:
+ |.^ @p indentation = none | blank
+ |.^ @p maximum_input_line_length = <num>|infinity
+ |.^ @p maximum_output_line_length = <num>|infinity
+ |.^ @p typesetter = none | tex | hypertext | html
+ |.^ @p no_doc_header
+ |.^ @p raw_macro_and_section_names
+ |.^ @p ignore_text_after_special_minus
+ |.^ @p no_paragraph_markups
+ |.^ @p declare_source_code_type "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+ |.^ @p #line_offset = <num>
+ |.^ @p #line_depth = <num>
+ |.^The blanks between arguments are important.
+ |.^Pragma ignored.
+ 22 22| @t $#%@ 2525 sloth
+ Error|.^Unrecognised typesetter directive. Legal ones are:
+ |.^ @t new_page
+ |.^ @t table_of_contents
+ |.^ @t title <font> <align> <string>
+ |.^ @t vskip <num> mm
+ |.^The blanks between arguments are important.
+ |.^Typesetter directive ignored.
+ 23 23|
+ 24 24| 5. Test pragma with no arguments. (Will get a trailing blanks error.).
+ 25 25| @p
+ Error|.^Pragma sequence @p must be followed by a keyword.
+ Error|.^Unrecognised pragma. Possible legal pragmas are:
+ |.^ @p indentation = none | blank
+ |.^ @p maximum_input_line_length = <num>|infinity
+ |.^ @p maximum_output_line_length = <num>|infinity
+ |.^ @p typesetter = none | tex | hypertext | html
+ |.^ @p no_doc_header
+ |.^ @p raw_macro_and_section_names
+ |.^ @p ignore_text_after_special_minus
+ |.^ @p no_paragraph_markups
+ |.^ @p declare_source_code_type "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+ |.^ @p #line_offset = <num>
+ |.^ @p #line_depth = <num>
+ |.^The blanks between arguments are important.
+ |.^Pragma ignored.
+ Warning|......^Line has trailing spaces up to and including this space.
+ 26 26| @t
+ Error|.^Typesetter directive @t must be followed by a keyword.
+ Error|.^Unrecognised typesetter directive. Legal ones are:
+ |.^ @t new_page
+ |.^ @t table_of_contents
+ |.^ @t title <font> <align> <string>
+ |.^ @t vskip <num> mm
+ |.^The blanks between arguments are important.
+ |.^Typesetter directive ignored.
+ Warning|......^Line has trailing spaces up to and including this space.
+ 27 27|
+ 28 28| 6. Test pragma with too many arguments.
+ 29 29| @p a b c d e f g h i j k l m n o p q r s t u v w x y z
+ Error|.^Unrecognised pragma. Possible legal pragmas are:
+ |.^ @p indentation = none | blank
+ |.^ @p maximum_input_line_length = <num>|infinity
+ |.^ @p maximum_output_line_length = <num>|infinity
+ |.^ @p typesetter = none | tex | hypertext | html
+ |.^ @p no_doc_header
+ |.^ @p raw_macro_and_section_names
+ |.^ @p ignore_text_after_special_minus
+ |.^ @p no_paragraph_markups
+ |.^ @p declare_source_code_type "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>"
+ |.^ @p automatic_line_directive_macro = "<name>" "<srctype>"
+ |.^ @p #line_offset = <num>
+ |.^ @p #line_depth = <num>
+ |.^The blanks between arguments are important.
+ |.^Pragma ignored.
+ 30 30| @t a b c d e f g h i j k l m n o p q r s t u v w x y z
+ Error|.^Unrecognised typesetter directive. Legal ones are:
+ |.^ @t new_page
+ |.^ @t table_of_contents
+ |.^ @t title <font> <align> <string>
+ |.^ @t vskip <num> mm
+ |.^The blanks between arguments are important.
+ |.^Typesetter directive ignored.
+ 31 31|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 31 Errors and 2 Warnings.
diff --git a/web/funnelAC/results/sc22.lis b/web/funnelAC/results/sc22.lis
new file mode 100644
index 0000000000..5fd10d7311
--- /dev/null
+++ b/web/funnelAC/results/sc22.lis
@@ -0,0 +1,165 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 32 32 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC22: Test synta |
+| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 69 6E | x checking of in |
+| 70 75 74 20 6C 69 6E 65 20 6C 65 6E 67 74 68 20 | put line length |
+| 70 72 61 67 6D 61 2E 0A 0A 31 2E 20 54 65 73 74 | pragma...1. Test |
+| 20 6E 6F 74 20 74 68 72 65 65 20 61 72 67 75 6D | not three argum |
+| 65 6E 74 73 2E 0A 40 70 20 6D 61 78 69 6D 75 6D | ents..@p maximum |
+| 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | _input_line_leng |
+| 74 68 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 69 6E | th.@p maximum_in |
+| 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 | put_line_length |
+| 3D 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 69 6E 70 | =.@p maximum_inp |
+| 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 3D | ut_line_length = |
+| 20 78 78 78 20 79 79 79 0A 0A 32 2E 20 54 65 73 | xxx yyy..2. Tes |
+| 74 20 73 65 63 6F 6E 64 20 61 72 67 75 6D 65 6E | t second argumen |
+| 74 20 6E 6F 74 20 22 3D 22 2E 0A 40 70 20 6D 61 | t not "="..@p ma |
+| 78 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 6E 65 | ximum_input_line |
+| 5F 6C 65 6E 67 74 68 20 78 20 73 6C 6F 74 68 0A | _length x sloth. |
+| 0A 33 2E 20 54 65 73 74 20 76 61 6C 75 65 20 6F | .3. Test value o |
+| 66 20 69 6E 66 69 6E 69 74 79 2E 0A 40 70 20 6D | f infinity..@p m |
+| 61 78 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 6E | aximum_input_lin |
+| 65 5F 6C 65 6E 67 74 68 20 3D 20 69 6E 66 69 6E | e_length = infin |
+| 69 74 79 0A 0A 34 2E 20 54 65 73 74 20 6E 6F 6E | ity..4. Test non |
+| 2D 64 65 63 69 6D 61 6C 20 64 69 67 69 74 20 69 | -decimal digit i |
+| 6E 20 6E 75 6D 62 65 72 2E 0A 40 70 20 6D 61 78 | n number..@p max |
+| 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F | imum_input_line_ |
+| 6C 65 6E 67 74 68 20 3D 20 32 65 66 0A 0A 35 2E | length = 2ef..5. |
+| 20 54 65 73 74 20 6E 75 6D 62 65 72 20 69 73 20 | Test number is |
+| 6D 6F 72 65 20 74 68 61 6E 20 65 69 67 68 74 20 | more than eight |
+| 64 69 67 69 74 73 20 6C 6F 6E 67 2E 0A 40 70 20 | digits long..@p |
+| 6D 61 78 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 | maximum_input_li |
+| 6E 65 5F 6C 65 6E 67 74 68 20 3D 20 31 32 33 34 | ne_length = 1234 |
+| 35 36 37 38 39 0A 0A 36 2E 20 54 65 73 74 20 6E | 56789..6. Test n |
+| 75 6D 62 65 72 20 69 73 20 65 78 61 63 74 6C 79 | umber is exactly |
+| 20 65 69 67 68 74 20 64 69 67 69 74 73 20 6C 6F | eight digits lo |
+| 6E 67 2E 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 69 | ng..@p maximum_i |
+| 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 | nput_line_length |
+| 20 3D 20 31 32 33 34 35 36 37 38 0A 0A 0A | = 12345678... |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC22: Test syntax checking of input line length pragma.<010>
+00002 00002| <010>
+00003 00003| 1. Test not three arguments.<010>
+00004 00004| @p maximum_input_line_length<010>
+00005 00005| @p maximum_input_line_length =<010>
+00006 00006| @p maximum_input_line_length = xxx yyy<010>
+00007 00007| <010>
+00008 00008| 2. Test second argument not "=".<010>
+00009 00009| @p maximum_input_line_length x sloth<010>
+00010 00010| <010>
+00011 00011| 3. Test value of infinity.<010>
+00012 00012| @p maximum_input_line_length = infinity<010>
+00013 00013| <010>
+00014 00014| 4. Test non-decimal digit in number.<010>
+00015 00015| @p maximum_input_line_length = 2ef<010>
+00016 00016| <010>
+00017 00017| 5. Test number is more than eight digits long.<010>
+00018 00018| @p maximum_input_line_length = 123456789<010>
+00019 00019| <010>
+00020 00020| 6. Test number is exactly eight digits long.<010>
+00021 00021| @p maximum_input_line_length = 12345678<010>
+00022 00022| <010>
+00023 00023| <010>
+00024 00024| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 8 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC22: Test syntax checking of input line length pragma.<010>
+<010>
+1. Test not three arguments.<010>
+"
+0007[01]: Text. Text scrap[Grey]="<010>
+2. Test second argument not "=".<010>
+"
+0010[01]: Text. Text scrap[Grey]="<010>
+3. Test value of infinity.<010>
+"
+0013[01]: Text. Text scrap[Grey]="<010>
+4. Test non-decimal digit in number.<010>
+"
+0016[01]: Text. Text scrap[Grey]="<010>
+5. Test number is more than eight digits long.<010>
+"
+0019[01]: Text. Text scrap[Grey]="<010>
+6. Test number is exactly eight digits long.<010>
+"
+0022[01]: Text. Text scrap[White]="<010>
+<010>
+"
+0024[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC22: Test syntax checking of input line length pragma.
+ 2 2|
+ 3 3| 1. Test not three arguments.
+ 4 4| @p maximum_input_line_length
+ Error|.^This pragma has the wrong number of arguments.
+ |.^The correct format is: "@p maximum_input_line_length = <num>|infinity".
+ |.^Pragma ignored.
+ 5 5| @p maximum_input_line_length =
+ Error|.^This pragma has the wrong number of arguments.
+ |.^The correct format is: "@p maximum_input_line_length = <num>|infinity".
+ |.^Pragma ignored.
+ 6 6| @p maximum_input_line_length = xxx yyy
+ Error|.^This pragma has the wrong number of arguments.
+ |.^The correct format is: "@p maximum_input_line_length = <num>|infinity".
+ |.^Pragma ignored.
+ 7 7|
+ 8 8| 2. Test second argument not "=".
+ 9 9| @p maximum_input_line_length x sloth
+ |.^The correct format is: "@p maximum_input_line_length = <num>|infinity".
+ |.^Pragma ignored.
+ Error|..............................^Expecting "=".
+ 10 10|
+ 11 11| 3. Test value of infinity.
+ 12 12| @p maximum_input_line_length = infinity
+ 13 13|
+ 14 14| 4. Test non-decimal digit in number.
+ 15 15| @p maximum_input_line_length = 2ef
+ Error|.................................^Illegal digit. Value must consist entirely of decimal digits.
+ |.................................^You can also use the value "infinity".
+ |.................................^Pragma ignored.
+ 16 16|
+ 17 17| 5. Test number is more than eight digits long.
+ 18 18| @p maximum_input_line_length = 123456789
+ Error|................................^Too many digits. The maximum is eight.
+ |................................^Pragma ignored.
+ 19 19|
+ 20 20| 6. Test number is exactly eight digits long.
+ 21 21| @p maximum_input_line_length = 12345678
+ 22 22|
+ 23 23|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 6 Errors.
diff --git a/web/funnelAC/results/sc23.lis b/web/funnelAC/results/sc23.lis
new file mode 100644
index 0000000000..df72bd6601
--- /dev/null
+++ b/web/funnelAC/results/sc23.lis
@@ -0,0 +1,188 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 32 33 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC23: Test synta |
+| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 6F 75 | x checking of ou |
+| 74 70 75 74 20 6C 69 6E 65 20 6C 65 6E 67 74 68 | tput line length |
+| 20 70 72 61 67 6D 61 2E 0A 0A 31 2E 20 54 65 73 | pragma...1. Tes |
+| 74 20 6E 6F 74 20 74 68 72 65 65 20 61 72 67 75 | t not three argu |
+| 6D 65 6E 74 73 2E 0A 40 70 20 6D 61 78 69 6D 75 | ments..@p maximu |
+| 6D 5F 6F 75 74 70 75 74 5F 6C 69 6E 65 5F 6C 65 | m_output_line_le |
+| 6E 67 74 68 0A 40 70 20 6D 61 78 69 6D 75 6D 5F | ngth.@p maximum_ |
+| 6F 75 74 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | output_line_leng |
+| 74 68 20 3D 0A 40 70 20 6D 61 78 69 6D 75 6D 5F | th =.@p maximum_ |
+| 6F 75 74 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | output_line_leng |
+| 74 68 20 3D 20 78 78 78 20 79 79 79 0A 0A 32 2E | th = xxx yyy..2. |
+| 20 54 65 73 74 20 73 65 63 6F 6E 64 20 61 72 67 | Test second arg |
+| 75 6D 65 6E 74 20 6E 6F 74 20 22 3D 22 2E 0A 40 | ument not "="..@ |
+| 70 20 6D 61 78 69 6D 75 6D 5F 6F 75 74 70 75 74 | p maximum_output |
+| 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 78 20 73 | _line_length x s |
+| 6C 6F 74 68 0A 0A 33 2E 20 54 65 73 74 20 76 61 | loth..3. Test va |
+| 6C 75 65 20 6F 66 20 69 6E 66 69 6E 69 74 79 2E | lue of infinity. |
+| 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 6F 75 74 70 | .@p maximum_outp |
+| 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 3D | ut_line_length = |
+| 20 69 6E 66 69 6E 69 74 79 0A 0A 34 2E 20 54 65 | infinity..4. Te |
+| 73 74 20 6E 6F 6E 2D 64 65 63 69 6D 61 6C 20 64 | st non-decimal d |
+| 69 67 69 74 20 69 6E 20 6E 75 6D 62 65 72 2E 0A | igit in number.. |
+| 40 70 20 6D 61 78 69 6D 75 6D 5F 6F 75 74 70 75 | @p maximum_outpu |
+| 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 3D 20 | t_line_length = |
+| 32 65 66 0A 0A 35 2E 20 54 65 73 74 20 6E 75 6D | 2ef..5. Test num |
+| 62 65 72 20 69 73 20 6D 6F 72 65 20 74 68 61 6E | ber is more than |
+| 20 65 69 67 68 74 20 64 69 67 69 74 73 20 6C 6F | eight digits lo |
+| 6E 67 2E 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 6F | ng..@p maximum_o |
+| 75 74 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 | utput_line_lengt |
+| 68 20 3D 20 31 32 33 34 35 36 37 38 39 0A 0A 36 | h = 123456789..6 |
+| 2E 20 54 65 73 74 20 6E 75 6D 62 65 72 20 69 73 | . Test number is |
+| 20 65 78 61 63 74 6C 79 20 65 69 67 68 74 20 64 | exactly eight d |
+| 69 67 69 74 73 20 6C 6F 6E 67 2E 0A 37 2E 20 54 | igits long..7. T |
+| 65 73 74 20 70 72 61 67 6D 61 20 6F 70 70 6F 73 | est pragma oppos |
+| 69 6E 67 20 65 61 72 6C 69 65 72 20 70 72 61 67 | ing earlier prag |
+| 6D 61 2E 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 6F | ma..@p maximum_o |
+| 75 74 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 | utput_line_lengt |
+| 68 20 3D 20 31 32 33 34 35 36 37 38 0A 0A 38 2E | h = 12345678..8. |
+| 20 54 65 73 74 20 70 72 61 67 6D 61 20 6E 6F 74 | Test pragma not |
+| 20 6F 70 70 6F 73 69 6E 67 20 65 61 72 6C 69 65 | opposing earlie |
+| 72 20 70 72 61 67 6D 61 2E 0A 40 70 20 6D 61 78 | r pragma..@p max |
+| 69 6D 75 6D 5F 6F 75 74 70 75 74 5F 6C 69 6E 65 | imum_output_line |
+| 5F 6C 65 6E 67 74 68 20 3D 20 69 6E 66 69 6E 69 | _length = infini |
+| 74 79 0A 0A | ty.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC23: Test syntax checking of output line length pragma.<010>
+00002 00002| <010>
+00003 00003| 1. Test not three arguments.<010>
+00004 00004| @p maximum_output_line_length<010>
+00005 00005| @p maximum_output_line_length =<010>
+00006 00006| @p maximum_output_line_length = xxx yyy<010>
+00007 00007| <010>
+00008 00008| 2. Test second argument not "=".<010>
+00009 00009| @p maximum_output_line_length x sloth<010>
+00010 00010| <010>
+00011 00011| 3. Test value of infinity.<010>
+00012 00012| @p maximum_output_line_length = infinity<010>
+00013 00013| <010>
+00014 00014| 4. Test non-decimal digit in number.<010>
+00015 00015| @p maximum_output_line_length = 2ef<010>
+00016 00016| <010>
+00017 00017| 5. Test number is more than eight digits long.<010>
+00018 00018| @p maximum_output_line_length = 123456789<010>
+00019 00019| <010>
+00020 00020| 6. Test number is exactly eight digits long.<010>
+00021 00021| 7. Test pragma opposing earlier pragma.<010>
+00022 00022| @p maximum_output_line_length = 12345678<010>
+00023 00023| <010>
+00024 00024| 8. Test pragma not opposing earlier pragma.<010>
+00025 00025| @p maximum_output_line_length = infinity<010>
+00026 00026| <010>
+00027 00027| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 9 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC23: Test syntax checking of output line length pragma.<010>
+<010>
+1. Test not three arguments.<010>
+"
+0007[01]: Text. Text scrap[Grey]="<010>
+2. Test second argument not "=".<010>
+"
+0010[01]: Text. Text scrap[Grey]="<010>
+3. Test value of infinity.<010>
+"
+0013[01]: Text. Text scrap[Grey]="<010>
+4. Test non-decimal digit in number.<010>
+"
+0016[01]: Text. Text scrap[Grey]="<010>
+5. Test number is more than eight digits long.<010>
+"
+0019[01]: Text. Text scrap[Grey]="<010>
+6. Test number is exactly eight digits long.<010>
+7. Test pragma opposing earlier pragma.<010>
+"
+0023[01]: Text. Text scrap[Grey]="<010>
+8. Test pragma not opposing earlier pragma.<010>
+"
+0026[01]: Text. Text scrap[White]="<010>
+"
+0027[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC23: Test syntax checking of output line length pragma.
+ 2 2|
+ 3 3| 1. Test not three arguments.
+ 4 4| @p maximum_output_line_length
+ Error|.^This pragma has the wrong number of arguments.
+ |.^The correct format is: "@p maximum_output_line_length = <num>|infinity".
+ |.^Pragma ignored.
+ 5 5| @p maximum_output_line_length =
+ Error|.^This pragma has the wrong number of arguments.
+ |.^The correct format is: "@p maximum_output_line_length = <num>|infinity".
+ |.^Pragma ignored.
+ 6 6| @p maximum_output_line_length = xxx yyy
+ Error|.^This pragma has the wrong number of arguments.
+ |.^The correct format is: "@p maximum_output_line_length = <num>|infinity".
+ |.^Pragma ignored.
+ 7 7|
+ 8 8| 2. Test second argument not "=".
+ 9 9| @p maximum_output_line_length x sloth
+ |.^The correct format is: "@p maximum_output_line_length = <num>|infinity".
+ |.^Pragma ignored.
+ Error|...............................^Expecting "=".
+ 10 10|
+ 11 11| 3. Test value of infinity.
+ 12 12| @p maximum_output_line_length = infinity
+ |.^This pragma is opposed by the pragma at line 22.
+ 13 13|
+ 14 14| 4. Test non-decimal digit in number.
+ 15 15| @p maximum_output_line_length = 2ef
+ Error|..................................^Illegal digit. Value must consist entirely of decimal digits.
+ |..................................^You can also use the value "infinity".
+ |..................................^Pragma ignored.
+ 16 16|
+ 17 17| 5. Test number is more than eight digits long.
+ 18 18| @p maximum_output_line_length = 123456789
+ Error|.................................^Too many digits. The maximum is eight.
+ |.................................^Pragma ignored.
+ 19 19|
+ 20 20| 6. Test number is exactly eight digits long.
+ 21 21| 7. Test pragma opposing earlier pragma.
+ 22 22| @p maximum_output_line_length = 12345678
+ Error|.^This pragma opposes the pragma at line 12.
+ |.^You can have as many output line length pragmas
+ |.^as you like, but they all have to be the same!
+ |.^Pragma ignored.
+ 23 23|
+ 24 24| 8. Test pragma not opposing earlier pragma.
+ 25 25| @p maximum_output_line_length = infinity
+ 26 26|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 7 Errors.
diff --git a/web/funnelAC/results/sc24.lis b/web/funnelAC/results/sc24.lis
new file mode 100644
index 0000000000..804e5e5d64
--- /dev/null
+++ b/web/funnelAC/results/sc24.lis
@@ -0,0 +1,162 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 32 33 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC23: Test synta |
+| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 69 6E | x checking of in |
+| 64 65 6E 74 61 74 69 6F 6E 20 70 72 61 67 6D 61 | dentation pragma |
+| 2E 0A 0A 31 2E 20 54 65 73 74 20 6E 6F 74 20 74 | ...1. Test not t |
+| 68 72 65 65 20 61 72 67 75 6D 65 6E 74 73 2E 0A | hree arguments.. |
+| 40 70 20 69 6E 64 65 6E 74 61 74 69 6F 6E 0A 40 | @p indentation.@ |
+| 70 20 69 6E 64 65 6E 74 61 74 69 6F 6E 20 3D 0A | p indentation =. |
+| 40 70 20 69 6E 64 65 6E 74 61 74 69 6F 6E 20 3D | @p indentation = |
+| 20 78 78 78 20 79 79 79 0A 0A 32 2E 20 54 65 73 | xxx yyy..2. Tes |
+| 74 20 73 65 63 6F 6E 64 20 61 72 67 75 6D 65 6E | t second argumen |
+| 74 20 6E 6F 74 20 22 3D 22 2E 0A 40 70 20 69 6E | t not "="..@p in |
+| 64 65 6E 74 61 74 69 6F 6E 20 78 20 73 6C 6F 74 | dentation x slot |
+| 68 0A 0A 33 2E 20 54 65 73 74 20 74 68 69 72 64 | h..3. Test third |
+| 20 61 72 67 75 6D 65 6E 74 20 69 73 20 6E 6F 74 | argument is not |
+| 20 6C 65 67 61 6C 2E 0A 40 70 20 69 6E 64 65 6E | legal..@p inden |
+| 74 61 74 69 6F 6E 20 3D 20 73 6C 6F 74 68 0A 0A | tation = sloth.. |
+| 34 2E 20 54 65 73 74 20 74 68 69 72 64 20 61 72 | 4. Test third ar |
+| 67 75 6D 65 6E 74 20 69 73 20 6E 6F 6E 65 2E 0A | gument is none.. |
+| 40 70 20 69 6E 64 65 6E 74 61 74 69 6F 6E 20 3D | @p indentation = |
+| 20 6E 6F 6E 65 0A 0A 35 2E 20 54 65 73 74 20 74 | none..5. Test t |
+| 68 69 72 64 20 61 72 67 75 6D 65 6E 74 20 69 73 | hird argument is |
+| 20 62 6C 61 6E 6B 2E 0A 36 2E 20 54 65 73 74 20 | blank..6. Test |
+| 70 72 61 67 6D 61 20 6F 70 70 6F 73 65 73 20 65 | pragma opposes e |
+| 61 72 6C 69 65 72 20 70 72 61 67 6D 61 2E 0A 40 | arlier pragma..@ |
+| 70 20 69 6E 64 65 6E 74 61 74 69 6F 6E 20 3D 20 | p indentation = |
+| 62 6C 61 6E 6B 0A 0A 37 2E 20 54 65 73 74 20 70 | blank..7. Test p |
+| 72 61 67 6D 61 20 64 6F 65 73 20 6E 6F 74 20 6F | ragma does not o |
+| 70 70 6F 73 65 20 65 61 72 6C 69 65 72 20 70 72 | ppose earlier pr |
+| 61 67 6D 61 2E 0A 40 70 20 69 6E 64 65 6E 74 61 | agma..@p indenta |
+| 74 69 6F 6E 20 3D 20 6E 6F 6E 65 0A 0A | tion = none.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC23: Test syntax checking of indentation pragma.<010>
+00002 00002| <010>
+00003 00003| 1. Test not three arguments.<010>
+00004 00004| @p indentation<010>
+00005 00005| @p indentation =<010>
+00006 00006| @p indentation = xxx yyy<010>
+00007 00007| <010>
+00008 00008| 2. Test second argument not "=".<010>
+00009 00009| @p indentation x sloth<010>
+00010 00010| <010>
+00011 00011| 3. Test third argument is not legal.<010>
+00012 00012| @p indentation = sloth<010>
+00013 00013| <010>
+00014 00014| 4. Test third argument is none.<010>
+00015 00015| @p indentation = none<010>
+00016 00016| <010>
+00017 00017| 5. Test third argument is blank.<010>
+00018 00018| 6. Test pragma opposes earlier pragma.<010>
+00019 00019| @p indentation = blank<010>
+00020 00020| <010>
+00021 00021| 7. Test pragma does not oppose earlier pragma.<010>
+00022 00022| @p indentation = none<010>
+00023 00023| <010>
+00024 00024| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 8 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC23: Test syntax checking of indentation pragma.<010>
+<010>
+1. Test not three arguments.<010>
+"
+0007[01]: Text. Text scrap[Grey]="<010>
+2. Test second argument not "=".<010>
+"
+0010[01]: Text. Text scrap[Grey]="<010>
+3. Test third argument is not legal.<010>
+"
+0013[01]: Text. Text scrap[Grey]="<010>
+4. Test third argument is none.<010>
+"
+0016[01]: Text. Text scrap[Grey]="<010>
+5. Test third argument is blank.<010>
+6. Test pragma opposes earlier pragma.<010>
+"
+0020[01]: Text. Text scrap[Grey]="<010>
+7. Test pragma does not oppose earlier pragma.<010>
+"
+0023[01]: Text. Text scrap[White]="<010>
+"
+0024[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC23: Test syntax checking of indentation pragma.
+ 2 2|
+ 3 3| 1. Test not three arguments.
+ 4 4| @p indentation
+ Error|.^This indentation pragma has the wrong number of arguments.
+ |.^The correct format is: "@p indentation = none|blank".
+ |.^Pragma ignored.
+ 5 5| @p indentation =
+ Error|.^This indentation pragma has the wrong number of arguments.
+ |.^The correct format is: "@p indentation = none|blank".
+ |.^Pragma ignored.
+ 6 6| @p indentation = xxx yyy
+ Error|.^This indentation pragma has the wrong number of arguments.
+ |.^The correct format is: "@p indentation = none|blank".
+ |.^Pragma ignored.
+ 7 7|
+ 8 8| 2. Test second argument not "=".
+ 9 9| @p indentation x sloth
+ |.^The correct format is: "@p indentation = none|blank".
+ |.^Pragma ignored.
+ Error|................^Expecting "=".
+ 10 10|
+ 11 11| 3. Test third argument is not legal.
+ 12 12| @p indentation = sloth
+ |.^The correct format is: "@p indentation = none|blank".
+ |.^Pragma ignored.
+ Error|..................^Expecting either "none" or "blank".
+ 13 13|
+ 14 14| 4. Test third argument is none.
+ 15 15| @p indentation = none
+ |.^This pragma is opposed by the pragma at line 19.
+ 16 16|
+ 17 17| 5. Test third argument is blank.
+ 18 18| 6. Test pragma opposes earlier pragma.
+ 19 19| @p indentation = blank
+ Error|.^This pragma opposes the pragma at line 15.
+ |.^You can have as many indentation pragmas as you like,
+ |.^but they all have to be the same!
+ |.^Pragma ignored.
+ 20 20|
+ 21 21| 7. Test pragma does not oppose earlier pragma.
+ 22 22| @p indentation = none
+ 23 23|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 6 Errors.
diff --git a/web/funnelAC/results/sc25.lis b/web/funnelAC/results/sc25.lis
new file mode 100644
index 0000000000..0182f4e147
--- /dev/null
+++ b/web/funnelAC/results/sc25.lis
@@ -0,0 +1,85 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 32 35 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC25: Test synta |
+| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 6E 65 | x checking of ne |
+| 77 20 70 61 67 65 20 74 79 70 65 73 65 74 74 65 | w page typesette |
+| 72 20 64 69 72 65 63 74 69 76 65 2E 0A 0A 31 2E | r directive...1. |
+| 20 4D 61 6B 65 20 73 75 72 65 20 74 68 61 74 20 | Make sure that |
+| 61 20 6C 65 67 61 6C 20 6E 65 77 20 70 61 67 65 | a legal new page |
+| 20 64 69 72 65 63 74 69 76 65 20 69 73 20 4F 4B | directive is OK |
+| 2E 0A 40 74 20 6E 65 77 5F 70 61 67 65 0A 0A 32 | ..@t new_page..2 |
+| 2E 20 43 68 65 63 6B 20 74 68 61 74 20 69 74 20 | . Check that it |
+| 64 6F 65 73 6E 27 74 20 73 74 61 6E 64 20 66 6F | doesn't stand fo |
+| 72 20 61 6E 79 20 6E 6F 6E 73 65 6E 73 65 2E 0A | r any nonsense.. |
+| 40 74 20 6E 65 77 5F 70 61 67 65 20 6E 6F 6E 73 | @t new_page nons |
+| 65 6E 73 65 0A 0A | ense.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC25: Test syntax checking of new page typesetter directive.<010>
+00002 00002| <010>
+00003 00003| 1. Make sure that a legal new page directive is OK.<010>
+00004 00004| @t new_page<010>
+00005 00005| <010>
+00006 00006| 2. Check that it doesn't stand for any nonsense.<010>
+00007 00007| @t new_page nonsense<010>
+00008 00008| <010>
+00009 00009| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 5 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC25: Test syntax checking of new page typesetter directive.<010>
+<010>
+1. Make sure that a legal new page directive is OK.<010>
+"
+0004[01]: @t.. Newpage.
+0005[01]: Text. Text scrap[Grey]="<010>
+2. Check that it doesn't stand for any nonsense.<010>
+"
+0008[01]: Text. Text scrap[White]="<010>
+"
+0009[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC25: Test syntax checking of new page typesetter directive.
+ 2 2|
+ 3 3| 1. Make sure that a legal new page directive is OK.
+ 4 4| @t new_page
+ 5 5|
+ 6 6| 2. Check that it doesn't stand for any nonsense.
+ 7 7| @t new_page nonsense
+ Error|.............^The new_page directive does not take arguments.
+ |.............^Directive ignored.
+ 8 8|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/sc26.lis b/web/funnelAC/results/sc26.lis
new file mode 100644
index 0000000000..5cb968aa74
--- /dev/null
+++ b/web/funnelAC/results/sc26.lis
@@ -0,0 +1,87 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 32 36 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC26: Test synta |
+| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 74 61 | x checking of ta |
+| 62 6C 65 20 6F 66 20 63 6F 6E 74 65 6E 74 73 20 | ble of contents |
+| 74 79 70 65 73 65 74 74 69 6E 67 20 70 72 61 67 | typesetting prag |
+| 6D 61 2E 0A 0A 31 2E 20 4D 61 6B 65 20 73 75 72 | ma...1. Make sur |
+| 65 20 74 68 61 74 20 61 20 6C 65 67 61 6C 20 74 | e that a legal t |
+| 61 62 6C 65 20 6F 66 20 63 6F 6E 74 65 6E 74 73 | able of contents |
+| 20 64 69 72 65 63 74 69 76 65 20 69 73 20 4F 4B | directive is OK |
+| 2E 0A 40 74 20 74 61 62 6C 65 5F 6F 66 5F 63 6F | ..@t table_of_co |
+| 6E 74 65 6E 74 73 0A 0A 32 2E 20 43 68 65 63 6B | ntents..2. Check |
+| 20 74 68 61 74 20 69 74 20 64 6F 65 73 6E 27 74 | that it doesn't |
+| 20 73 74 61 6E 64 20 66 6F 72 20 61 6E 79 20 6E | stand for any n |
+| 6F 6E 73 65 6E 73 65 2E 0A 40 74 20 74 61 62 6C | onsense..@t tabl |
+| 65 5F 6F 66 5F 63 6F 6E 74 65 6E 74 73 20 6E 6F | e_of_contents no |
+| 6E 73 65 6E 73 65 0A 0A | nsense.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC26: Test syntax checking of table of contents typesetting pragma.<010>
+00002 00002| <010>
+00003 00003| 1. Make sure that a legal table of contents directive is OK.<010>
+00004 00004| @t table_of_contents<010>
+00005 00005| <010>
+00006 00006| 2. Check that it doesn't stand for any nonsense.<010>
+00007 00007| @t table_of_contents nonsense<010>
+00008 00008| <010>
+00009 00009| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 5 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC26: Test syntax checking of table of contents typesetting pragma.<010>
+<010>
+1. Make sure that a legal table of contents directive is OK.<010>
+"
+0004[01]: @t.. TOC.
+0005[01]: Text. Text scrap[Grey]="<010>
+2. Check that it doesn't stand for any nonsense.<010>
+"
+0008[01]: Text. Text scrap[White]="<010>
+"
+0009[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC26: Test syntax checking of table of contents typesetting pragma.
+ 2 2|
+ 3 3| 1. Make sure that a legal table of contents directive is OK.
+ 4 4| @t table_of_contents
+ 5 5|
+ 6 6| 2. Check that it doesn't stand for any nonsense.
+ 7 7| @t table_of_contents nonsense
+ Error|......................^The table_of_contents directive does not take arguments.
+ |......................^Directive ignored.
+ 8 8|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There was 1 Error.
diff --git a/web/funnelAC/results/sc27.lis b/web/funnelAC/results/sc27.lis
new file mode 100644
index 0000000000..404a5b2827
--- /dev/null
+++ b/web/funnelAC/results/sc27.lis
@@ -0,0 +1,145 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 32 37 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC27: Test synta |
+| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 76 73 | x checking of vs |
+| 6B 69 70 20 74 79 70 65 73 65 74 74 69 6E 67 20 | kip typesetting |
+| 64 69 72 65 63 74 69 76 65 2E 0A 0A 31 2E 20 54 | directive...1. T |
+| 65 73 74 20 6E 6F 74 20 65 78 61 63 74 6C 79 20 | est not exactly |
+| 74 68 72 65 65 20 61 72 67 75 6D 65 6E 74 73 20 | three arguments |
+| 28 69 6E 63 6C 75 64 65 73 20 76 73 6B 69 70 29 | (includes vskip) |
+| 2E 0A 40 74 20 76 73 6B 69 70 0A 40 74 20 76 73 | ..@t vskip.@t vs |
+| 6B 69 70 20 6F 6E 65 0A 40 74 20 76 73 6B 69 70 | kip one.@t vskip |
+| 20 6F 6E 65 20 74 77 6F 20 74 68 72 65 65 20 66 | one two three f |
+| 6F 75 72 0A 0A 32 2E 20 54 65 73 74 20 74 68 69 | our..2. Test thi |
+| 72 64 20 61 72 67 75 6D 65 6E 74 20 6E 6F 74 20 | rd argument not |
+| 22 6D 6D 22 2E 0A 40 74 20 76 73 6B 69 70 20 33 | "mm"..@t vskip 3 |
+| 32 20 78 78 0A 0A 33 2E 20 54 65 73 74 20 73 65 | 2 xx..3. Test se |
+| 63 6F 6E 64 20 61 72 67 75 6D 65 6E 74 20 68 61 | cond argument ha |
+| 73 20 62 61 64 20 64 69 67 69 74 2E 0A 40 74 20 | s bad digit..@t |
+| 76 73 6B 69 70 20 33 66 20 6D 6D 0A 0A 34 2E 20 | vskip 3f mm..4. |
+| 54 65 73 74 20 6E 75 6D 62 65 72 20 68 61 73 20 | Test number has |
+| 6D 6F 72 65 20 74 68 61 6E 20 74 68 72 65 65 20 | more than three |
+| 64 69 67 69 74 73 0A 0A 40 74 20 76 73 6B 69 70 | digits..@t vskip |
+| 20 34 33 35 35 20 6D 6D 0A 0A 35 2E 20 54 65 73 | 4355 mm..5. Tes |
+| 74 20 61 20 6C 65 67 61 6C 20 6F 6E 65 20 74 6F | t a legal one to |
+| 6F 2E 0A 40 74 20 76 73 6B 69 70 20 32 30 20 6D | o..@t vskip 20 m |
+| 6D 0A 0A | m.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC27: Test syntax checking of vskip typesetting directive.<010>
+00002 00002| <010>
+00003 00003| 1. Test not exactly three arguments (includes vskip).<010>
+00004 00004| @t vskip<010>
+00005 00005| @t vskip one<010>
+00006 00006| @t vskip one two three four<010>
+00007 00007| <010>
+00008 00008| 2. Test third argument not "mm".<010>
+00009 00009| @t vskip 32 xx<010>
+00010 00010| <010>
+00011 00011| 3. Test second argument has bad digit.<010>
+00012 00012| @t vskip 3f mm<010>
+00013 00013| <010>
+00014 00014| 4. Test number has more than three digits<010>
+00015 00015| <010>
+00016 00016| @t vskip 4355 mm<010>
+00017 00017| <010>
+00018 00018| 5. Test a legal one too.<010>
+00019 00019| @t vskip 20 mm<010>
+00020 00020| <010>
+00021 00021| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 8 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC27: Test syntax checking of vskip typesetting directive.<010>
+<010>
+1. Test not exactly three arguments (includes vskip).<010>
+"
+0007[01]: Text. Text scrap[Grey]="<010>
+2. Test third argument not "mm".<010>
+"
+0010[01]: Text. Text scrap[Grey]="<010>
+3. Test second argument has bad digit.<010>
+"
+0013[01]: Text. Text scrap[Grey]="<010>
+4. Test number has more than three digits<010>
+<010>
+"
+0017[01]: Text. Text scrap[Grey]="<010>
+5. Test a legal one too.<010>
+"
+0019[01]: @t.. Vertical skip. Vertical space skipped=20mm.
+0020[01]: Text. Text scrap[White]="<010>
+"
+0021[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC27: Test syntax checking of vskip typesetting directive.
+ 2 2|
+ 3 3| 1. Test not exactly three arguments (includes vskip).
+ 4 4| @t vskip
+ Error|.^This directive has the wrong number of arguments.
+ |.^The correct format is: "@t vskip <num> mm".
+ |.^Directive ignored.
+ 5 5| @t vskip one
+ Error|.^This directive has the wrong number of arguments.
+ |.^The correct format is: "@t vskip <num> mm".
+ |.^Directive ignored.
+ 6 6| @t vskip one two three four
+ Error|.^This directive has the wrong number of arguments.
+ |.^The correct format is: "@t vskip <num> mm".
+ |.^Directive ignored.
+ 7 7|
+ 8 8| 2. Test third argument not "mm".
+ 9 9| @t vskip 32 xx
+ |.^The correct format is: "@t vskip <num> mm".
+ |.^Directive ignored.
+ Error|.............^Expecting "mm".
+ 10 10|
+ 11 11| 3. Test second argument has bad digit.
+ 12 12| @t vskip 3f mm
+ Error|...........^Illegal digit.
+ |...........^Value must consist entirely of decimal digits.
+ |...........^Directive ignored.
+ 13 13|
+ 14 14| 4. Test number has more than three digits
+ 15 15|
+ 16 16| @t vskip 4355 mm
+ Error|..........^Too many digits. The maximum is three.
+ |..........^Directive ignored.
+ 17 17|
+ 18 18| 5. Test a legal one too.
+ 19 19| @t vskip 20 mm
+ 20 20|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 6 Errors.
diff --git a/web/funnelAC/results/sc28.lis b/web/funnelAC/results/sc28.lis
new file mode 100644
index 0000000000..8208193d4b
--- /dev/null
+++ b/web/funnelAC/results/sc28.lis
@@ -0,0 +1,253 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 32 38 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC28: Test synta |
+| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 74 69 | x checking of ti |
+| 74 6C 65 20 74 79 70 65 73 65 74 74 69 6E 67 20 | tle typesetting |
+| 64 69 72 65 63 74 69 76 65 2E 0A 0A 31 2E 20 54 | directive...1. T |
+| 65 73 74 20 6C 65 73 73 20 74 68 61 6E 20 66 6F | est less than fo |
+| 75 72 20 61 72 67 75 6D 65 6E 74 73 20 28 69 6E | ur arguments (in |
+| 63 6C 75 64 65 73 20 74 69 74 6C 65 29 2E 0A 4E | cludes title)..N |
+| 6F 74 65 3A 20 54 68 65 20 74 69 74 6C 65 20 63 | ote: The title c |
+| 6F 6D 6D 61 6E 64 20 70 75 6C 6C 73 20 61 20 68 | ommand pulls a h |
+| 61 63 6B 20 74 72 65 61 74 69 6E 67 20 74 68 65 | ack treating the |
+| 20 72 65 73 74 20 6F 66 20 74 68 65 20 6C 69 6E | rest of the lin |
+| 65 20 61 66 74 65 72 0A 74 77 6F 20 61 72 67 75 | e after.two argu |
+| 6D 65 6E 74 73 20 61 73 20 74 68 65 20 73 74 72 | ments as the str |
+| 69 6E 67 2E 20 53 6F 20 69 74 20 63 61 6E 27 74 | ing. So it can't |
+| 20 64 65 74 65 63 74 20 61 6E 20 45 58 43 45 53 | detect an EXCES |
+| 53 20 6F 66 20 61 72 67 75 6D 65 6E 74 73 21 0A | S of arguments!. |
+| 40 74 20 74 69 74 6C 65 0A 40 74 20 74 69 74 6C | @t title.@t titl |
+| 65 20 74 77 6F 0A 40 74 20 74 69 74 6C 65 20 74 | e two.@t title t |
+| 77 6F 20 74 68 72 65 65 0A 0A 32 2E 20 54 65 73 | wo three..2. Tes |
+| 74 20 6F 75 74 20 62 61 64 20 66 6F 6E 74 2E 0A | t out bad font.. |
+| 40 74 20 74 69 74 6C 65 20 73 6C 6F 74 68 66 6F | @t title slothfo |
+| 6E 74 20 6C 65 66 74 20 22 53 6C 6F 74 68 22 0A | nt left "Sloth". |
+| 0A 33 2E 20 54 65 73 74 20 6F 75 74 20 62 61 64 | .3. Test out bad |
+| 20 61 6C 69 67 6E 6D 65 6E 74 2E 0A 40 74 20 74 | alignment..@t t |
+| 69 74 6C 65 20 74 69 74 6C 65 66 6F 6E 74 20 77 | itle titlefont w |
+| 65 73 74 77 61 72 64 20 22 53 6C 6F 74 68 22 0A | estward "Sloth". |
+| 0A 34 2E 20 54 65 73 74 20 6F 75 74 20 66 75 6E | .4. Test out fun |
+| 6E 79 20 73 74 72 69 6E 67 73 2E 0A 40 74 20 74 | ny strings..@t t |
+| 69 74 6C 65 20 74 69 74 6C 65 66 6F 6E 74 20 6C | itle titlefont l |
+| 65 66 74 20 22 0A 40 74 20 74 69 74 6C 65 20 74 | eft ".@t title t |
+| 69 74 6C 65 66 6F 6E 74 20 6C 65 66 74 20 22 22 | itlefont left "" |
+| 0A 40 21 20 4E 6F 74 65 3A 20 54 68 65 20 66 6F | .@! Note: The fo |
+| 6C 6C 6F 77 69 6E 67 2C 20 62 65 6C 69 65 76 65 | llowing, believe |
+| 20 69 74 20 6F 72 20 6E 6F 74 2C 20 69 73 20 61 | it or not, is a |
+| 63 74 75 61 6C 6C 79 20 4C 45 47 41 4C 21 0A 40 | ctually LEGAL!.@ |
+| 74 20 74 69 74 6C 65 20 74 69 74 6C 65 66 6F 6E | t title titlefon |
+| 74 20 6C 65 66 74 20 22 73 6C 6F 74 68 22 73 6C | t left "sloth"sl |
+| 6F 74 68 22 0A 0A 35 2E 20 54 65 73 74 20 6F 75 | oth"..5. Test ou |
+| 74 20 61 6C 6C 20 63 6F 6D 62 69 6E 61 74 69 6F | t all combinatio |
+| 6E 73 20 6F 66 20 66 6F 6E 74 20 61 6E 64 20 61 | ns of font and a |
+| 6C 69 67 6E 6D 65 6E 74 2E 0A 40 74 20 74 69 74 | lignment..@t tit |
+| 6C 65 20 74 69 74 6C 65 66 6F 6E 74 20 20 20 20 | le titlefont |
+| 20 20 6C 65 66 74 20 20 20 22 53 6C 6F 74 68 22 | left "Sloth" |
+| 0A 40 74 20 74 69 74 6C 65 20 74 69 74 6C 65 66 | .@t title titlef |
+| 6F 6E 74 20 20 20 20 20 20 63 65 6E 74 72 65 20 | ont centre |
+| 22 53 6C 6F 74 68 22 0A 40 74 20 74 69 74 6C 65 | "Sloth".@t title |
+| 20 74 69 74 6C 65 66 6F 6E 74 20 20 20 20 20 20 | titlefont |
+| 72 69 67 68 74 20 20 22 53 6C 6F 74 68 22 0A 40 | right "Sloth".@ |
+| 74 20 74 69 74 6C 65 20 73 6D 61 6C 6C 74 69 74 | t title smalltit |
+| 6C 65 66 6F 6E 74 20 6C 65 66 74 20 20 20 22 53 | lefont left "S |
+| 6C 6F 74 68 22 0A 40 74 20 74 69 74 6C 65 20 73 | loth".@t title s |
+| 6D 61 6C 6C 74 69 74 6C 65 66 6F 6E 74 20 63 65 | malltitlefont ce |
+| 6E 74 72 65 20 22 53 6C 6F 74 68 22 0A 40 74 20 | ntre "Sloth".@t |
+| 74 69 74 6C 65 20 73 6D 61 6C 6C 74 69 74 6C 65 | title smalltitle |
+| 66 6F 6E 74 20 72 69 67 68 74 20 20 22 53 6C 6F | font right "Slo |
+| 74 68 22 0A 40 74 20 74 69 74 6C 65 20 6E 6F 72 | th".@t title nor |
+| 6D 61 6C 66 6F 6E 74 20 20 20 20 20 6C 65 66 74 | malfont left |
+| 20 20 20 22 53 6C 6F 74 68 22 0A 40 74 20 74 69 | "Sloth".@t ti |
+| 74 6C 65 20 6E 6F 72 6D 61 6C 66 6F 6E 74 20 20 | tle normalfont |
+| 20 20 20 63 65 6E 74 72 65 20 22 53 6C 6F 74 68 | centre "Sloth |
+| 22 0A 40 74 20 74 69 74 6C 65 20 6E 6F 72 6D 61 | ".@t title norma |
+| 6C 66 6F 6E 74 20 20 20 20 20 72 69 67 68 74 20 | lfont right |
+| 20 22 53 6C 6F 74 68 22 0A 0A 36 2E 20 54 65 73 | "Sloth"..6. Tes |
+| 74 20 6D 69 73 73 70 65 6C 6C 69 6E 67 20 6F 66 | t misspelling of |
+| 20 63 65 6E 74 72 65 20 28 52 6F 73 73 27 73 20 | centre (Ross's |
+| 72 65 76 65 6E 67 65 29 2E 0A 40 74 20 74 69 74 | revenge)..@t tit |
+| 6C 65 20 6E 6F 72 6D 61 6C 66 6F 6E 74 20 20 20 | le normalfont |
+| 20 20 63 65 6E 74 65 72 20 22 53 6C 6F 74 68 22 | center "Sloth" |
+| 0A | . |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC28: Test syntax checking of title typesetting directive.<010>
+00002 00002| <010>
+00003 00003| 1. Test less than four arguments (includes title).<010>
+00004 00004| Note: The title command pulls a hack treating the rest of the line after<010>
+00005 00005| two arguments as the string. So it can't detect an EXCESS of arguments!<010>
+00006 00006| @t title<010>
+00007 00007| @t title two<010>
+00008 00008| @t title two three<010>
+00009 00009| <010>
+00010 00010| 2. Test out bad font.<010>
+00011 00011| @t title slothfont left "Sloth"<010>
+00012 00012| <010>
+00013 00013| 3. Test out bad alignment.<010>
+00014 00014| @t title titlefont westward "Sloth"<010>
+00015 00015| <010>
+00016 00016| 4. Test out funny strings.<010>
+00017 00017| @t title titlefont left "<010>
+00018 00018| @t title titlefont left ""<010>
+00019 00019| @! Note: The following, believe it or not, is actually LEGAL!<010>
+00020 00020| @t title titlefont left "sloth"sloth"<010>
+00021 00021| <010>
+00022 00022| 5. Test out all combinations of font and alignment.<010>
+00023 00023| @t title titlefont left "Sloth"<010>
+00024 00024| @t title titlefont centre "Sloth"<010>
+00025 00025| @t title titlefont right "Sloth"<010>
+00026 00026| @t title smalltitlefont left "Sloth"<010>
+00027 00027| @t title smalltitlefont centre "Sloth"<010>
+00028 00028| @t title smalltitlefont right "Sloth"<010>
+00029 00029| @t title normalfont left "Sloth"<010>
+00030 00030| @t title normalfont centre "Sloth"<010>
+00031 00031| @t title normalfont right "Sloth"<010>
+00032 00032| <010>
+00033 00033| 6. Test misspelling of centre (Ross's revenge).<010>
+00034 00034| @t title normalfont center "Sloth"<010>
+00035 00035| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 18 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC28: Test syntax checking of title typesetting directive.<010>
+<010>
+1. Test less than four arguments (includes title).<010>
+Note: The title command pulls a hack treating the rest of the line after<010>
+two arguments as the string. So it can't detect an EXCESS of arguments!<010>
+"
+0009[01]: Text. Text scrap[Grey]="<010>
+2. Test out bad font.<010>
+"
+0012[01]: Text. Text scrap[Grey]="<010>
+3. Test out bad alignment.<010>
+"
+0015[01]: Text. Text scrap[Grey]="<010>
+4. Test out funny strings.<010>
+"
+0018[01]: @t.. Title. Font=Title, Alignment=Left. Title text follows:
+Text scrap[Grey]=""
+0020[01]: @t.. Title. Font=Title, Alignment=Left. Title text follows:
+Text scrap[Grey]="sloth"sloth"
+0021[01]: Text. Text scrap[Grey]="<010>
+5. Test out all combinations of font and alignment.<010>
+"
+0023[01]: @t.. Title. Font=Title, Alignment=Left. Title text follows:
+Text scrap[Grey]="Sloth"
+0024[01]: @t.. Title. Font=Title, Alignment=Centre. Title text follows:
+Text scrap[Grey]="Sloth"
+0025[01]: @t.. Title. Font=Title, Alignment=Right. Title text follows:
+Text scrap[Grey]="Sloth"
+0026[01]: @t.. Title. Font=Small Title, Alignment=Left. Title text follows:
+Text scrap[Grey]="Sloth"
+0027[01]: @t.. Title. Font=Small Title, Alignment=Centre. Title text follows:
+Text scrap[Grey]="Sloth"
+0028[01]: @t.. Title. Font=Small Title, Alignment=Right. Title text follows:
+Text scrap[Grey]="Sloth"
+0029[01]: @t.. Title. Font=Normal, Alignment=Left. Title text follows:
+Text scrap[Grey]="Sloth"
+0030[01]: @t.. Title. Font=Normal, Alignment=Centre. Title text follows:
+Text scrap[Grey]="Sloth"
+0031[01]: @t.. Title. Font=Normal, Alignment=Right. Title text follows:
+Text scrap[Grey]="Sloth"
+0032[01]: Text. Text scrap[Grey]="<010>
+6. Test misspelling of centre (Ross's revenge).<010>
+"
+0035[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC28: Test syntax checking of title typesetting directive.
+ 2 2|
+ 3 3| 1. Test less than four arguments (includes title).
+ 4 4| Note: The title command pulls a hack treating the rest of the line after
+ 5 5| two arguments as the string. So it can't detect an EXCESS of arguments!
+ 6 6| @t title
+ Error|.^This directive has too few arguments.
+ |.^The correct format is: "@t title <font> <align> <text>".
+ |.^ where <font> = titlefont | smalltitlefont | normalfont.
+ |.^ and <align> = left | centre | right.
+ |.^ and <text> = text delimited by double quotes.
+ |.^Directive ignored.
+ 7 7| @t title two
+ Error|.^This directive has too few arguments.
+ |.^The correct format is: "@t title <font> <align> <text>".
+ |.^ where <font> = titlefont | smalltitlefont | normalfont.
+ |.^ and <align> = left | centre | right.
+ |.^ and <text> = text delimited by double quotes.
+ |.^Directive ignored.
+ 8 8| @t title two three
+ Error|.^This directive has too few arguments.
+ |.^The correct format is: "@t title <font> <align> <text>".
+ |.^ where <font> = titlefont | smalltitlefont | normalfont.
+ |.^ and <align> = left | centre | right.
+ |.^ and <text> = text delimited by double quotes.
+ |.^Directive ignored.
+ 9 9|
+ 10 10| 2. Test out bad font.
+ 11 11| @t title slothfont left "Sloth"
+ Error|..........^Expecting one of {titlefont,smalltitlefont,normalfont}.
+ |..........^Directive ignored.
+ 12 12|
+ 13 13| 3. Test out bad alignment.
+ 14 14| @t title titlefont westward "Sloth"
+ Error|....................^Expecting one of {left,right,centre}.
+ |....................^Directive ignored.
+ 15 15|
+ 16 16| 4. Test out funny strings.
+ 17 17| @t title titlefont left "
+ Error|.........................^Text argument must be delimited by double quotes.
+ |.........................^Directive ignored.
+ 18 18| @t title titlefont left ""
+ 19 19| @! Note: The following, believe it or not, is actually LEGAL!
+ 20 20| @t title titlefont left "sloth"sloth"
+ 21 21|
+ 22 22| 5. Test out all combinations of font and alignment.
+ 23 23| @t title titlefont left "Sloth"
+ 24 24| @t title titlefont centre "Sloth"
+ 25 25| @t title titlefont right "Sloth"
+ 26 26| @t title smalltitlefont left "Sloth"
+ 27 27| @t title smalltitlefont centre "Sloth"
+ 28 28| @t title smalltitlefont right "Sloth"
+ 29 29| @t title normalfont left "Sloth"
+ 30 30| @t title normalfont centre "Sloth"
+ 31 31| @t title normalfont right "Sloth"
+ 32 32|
+ 33 33| 6. Test misspelling of centre (Ross's revenge).
+ 34 34| @t title normalfont center "Sloth"
+ Error|.........................^Expecting one of {left,right,centre}.
+ |.........................^Note: Centre is spelt centRE, not centER.
+ |.........................^ This is my revenge for years of getting error messages
+ |.........................^ from TeX whenever I accidentally wrote \centreline - Ross Williams.
+ |.........................^Directive ignored.
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 7 Errors.
diff --git a/web/funnelAC/results/sc29.lis b/web/funnelAC/results/sc29.lis
new file mode 100644
index 0000000000..8b3ee9059b
--- /dev/null
+++ b/web/funnelAC/results/sc29.lis
@@ -0,0 +1,170 @@
+FUNNELWEB LISTING FILE
+======================
+
+Dump of mapped file "<<Suppressed>>".
+
+MEMORY DUMP OF MAPPED FILE
+==========================
+
++-------------------------------------------------+------------------+
+| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
++-------------------------------------------------+------------------+
+| 53 43 32 39 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC29: Test synta |
+| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 74 79 | x checking of ty |
+| 70 65 73 65 74 74 65 72 20 70 72 61 67 6D 61 2E | pesetter pragma. |
+| 0A 0A 31 2E 20 54 65 73 74 20 6E 6F 74 20 74 68 | ..1. Test not th |
+| 72 65 65 20 61 72 67 75 6D 65 6E 74 73 2E 0A 40 | ree arguments..@ |
+| 70 20 74 79 70 65 73 65 74 74 65 72 0A 40 70 20 | p typesetter.@p |
+| 74 79 70 65 73 65 74 74 65 72 20 3D 0A 40 70 20 | typesetter =.@p |
+| 74 79 70 65 73 65 74 74 65 72 20 3D 20 78 78 78 | typesetter = xxx |
+| 20 79 79 79 0A 0A 32 2E 20 54 65 73 74 20 73 65 | yyy..2. Test se |
+| 63 6F 6E 64 20 61 72 67 75 6D 65 6E 74 20 6E 6F | cond argument no |
+| 74 20 22 3D 22 2E 0A 40 70 20 74 79 70 65 73 65 | t "="..@p typese |
+| 74 74 65 72 20 78 20 73 6C 6F 74 68 0A 0A 33 2E | tter x sloth..3. |
+| 20 54 65 73 74 20 74 68 69 72 64 20 61 72 67 75 | Test third argu |
+| 6D 65 6E 74 20 69 73 20 6E 6F 74 20 6C 65 67 61 | ment is not lega |
+| 6C 2E 0A 40 70 20 74 79 70 65 73 65 74 74 65 72 | l..@p typesetter |
+| 20 3D 20 73 6C 6F 74 68 0A 0A 34 2E 20 54 65 73 | = sloth..4. Tes |
+| 74 20 74 68 69 72 64 20 61 72 67 75 6D 65 6E 74 | t third argument |
+| 20 69 73 20 6E 6F 6E 65 2E 0A 40 70 20 74 79 70 | is none..@p typ |
+| 65 73 65 74 74 65 72 20 3D 20 6E 6F 6E 65 0A 0A | esetter = none.. |
+| 35 2E 20 54 65 73 74 20 74 68 69 72 64 20 61 72 | 5. Test third ar |
+| 67 75 6D 65 6E 74 20 69 73 20 74 65 78 2E 0A 36 | gument is tex..6 |
+| 2E 20 54 65 73 74 20 70 72 61 67 6D 61 20 6F 70 | . Test pragma op |
+| 70 6F 73 65 73 20 65 61 72 6C 69 65 72 20 70 72 | poses earlier pr |
+| 61 67 6D 61 2E 0A 40 70 20 74 79 70 65 73 65 74 | agma..@p typeset |
+| 74 65 72 20 3D 20 74 65 78 0A 0A 37 2E 20 54 65 | ter = tex..7. Te |
+| 73 74 20 70 72 61 67 6D 61 20 64 6F 65 73 20 6E | st pragma does n |
+| 6F 74 20 6F 70 70 6F 73 65 20 65 61 72 6C 69 65 | ot oppose earlie |
+| 72 20 70 72 61 67 6D 61 2E 0A 40 70 20 74 79 70 | r pragma..@p typ |
+| 65 73 65 74 74 65 72 20 3D 20 6E 6F 6E 65 0A 0A | esetter = none.. |
++-------------------------------------------------+------------------+
+
+
+=========================== Start of LINE LIST DUMP ============================
+
+Globl Local| Text
+-----------+--------------------------------------------------------------------
+00001 00001| SC29: Test syntax checking of typesetter pragma.<010>
+00002 00002| <010>
+00003 00003| 1. Test not three arguments.<010>
+00004 00004| @p typesetter<010>
+00005 00005| @p typesetter =<010>
+00006 00006| @p typesetter = xxx yyy<010>
+00007 00007| <010>
+00008 00008| 2. Test second argument not "=".<010>
+00009 00009| @p typesetter x sloth<010>
+00010 00010| <010>
+00011 00011| 3. Test third argument is not legal.<010>
+00012 00012| @p typesetter = sloth<010>
+00013 00013| <010>
+00014 00014| 4. Test third argument is none.<010>
+00015 00015| @p typesetter = none<010>
+00016 00016| <010>
+00017 00017| 5. Test third argument is tex.<010>
+00018 00018| 6. Test pragma opposes earlier pragma.<010>
+00019 00019| @p typesetter = tex<010>
+00020 00020| <010>
+00021 00021| 7. Test pragma does not oppose earlier pragma.<010>
+00022 00022| @p typesetter = none<010>
+00023 00023| <010>
+00024 00024| <End-Of-File><010>
+-----------+--------------------------------------------------------------------
+Globl Local| Text
+
+============================ End of LINE LIST DUMP =============================
+
+
+=========================== Start of TOKEN LIST DUMP ===========================
+
+Summary: There are 8 tokens in the token list.
+
+Line[Column]: Token Description
+-------------------------------
+
+0001[01]: Text. Text scrap[Grey]="SC29: Test syntax checking of typesetter pragma.<010>
+<010>
+1. Test not three arguments.<010>
+"
+0007[01]: Text. Text scrap[Grey]="<010>
+2. Test second argument not "=".<010>
+"
+0010[01]: Text. Text scrap[Grey]="<010>
+3. Test third argument is not legal.<010>
+"
+0013[01]: Text. Text scrap[Grey]="<010>
+4. Test third argument is none.<010>
+"
+0016[01]: Text. Text scrap[Grey]="<010>
+5. Test third argument is tex.<010>
+6. Test pragma opposes earlier pragma.<010>
+"
+0020[01]: Text. Text scrap[Grey]="<010>
+7. Test pragma does not oppose earlier pragma.<010>
+"
+0023[01]: Text. Text scrap[White]="<010>
+"
+0024[01]: End Of File.
+============================ End of TOKEN LIST DUMP ============================
+
+Macro table dump skipped (Parser was not invoked).
+Document list dump skipped (Parser was not invoked).
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+ 1 1| SC29: Test syntax checking of typesetter pragma.
+ 2 2|
+ 3 3| 1. Test not three arguments.
+ 4 4| @p typesetter
+ Error|.^This typesetter pragma has the wrong number of arguments.
+ |.^The correct format is: "@p typesetter = none|tex"
+ |.^ or for hypertext "@p typesetter = hypertext|html".
+ |.^Pragma ignored.
+ 5 5| @p typesetter =
+ Error|.^This typesetter pragma has the wrong number of arguments.
+ |.^The correct format is: "@p typesetter = none|tex"
+ |.^ or for hypertext "@p typesetter = hypertext|html".
+ |.^Pragma ignored.
+ 6 6| @p typesetter = xxx yyy
+ Error|.^This typesetter pragma has the wrong number of arguments.
+ |.^The correct format is: "@p typesetter = none|tex"
+ |.^ or for hypertext "@p typesetter = hypertext|html".
+ |.^Pragma ignored.
+ 7 7|
+ 8 8| 2. Test second argument not "=".
+ 9 9| @p typesetter x sloth
+ |.^The correct format is: "@p typesetter = none|tex"
+ |.^ or for hypertext "@p typesetter = hypertext|html".
+ |.^Pragma ignored.
+ Error|...............^Expecting "=".
+ 10 10|
+ 11 11| 3. Test third argument is not legal.
+ 12 12| @p typesetter = sloth
+ |.^The correct format is: "@p typesetter = none|tex"
+ |.^ or for hypertext "@p typesetter = hypertext|html".
+ |.^Pragma ignored.
+ Error|.................^Expecting one of:
+ Error|.................^ (i) "none"
+ Error|.................^ (ii) "tex"
+ Error|.................^ (iii) "hypertext"
+ Error|.................^ (iv) "html".
+ 13 13|
+ 14 14| 4. Test third argument is none.
+ 15 15| @p typesetter = none
+ |.^This pragma is opposed by the pragma at line 19.
+ 16 16|
+ 17 17| 5. Test third argument is tex.
+ 18 18| 6. Test pragma opposes earlier pragma.
+ 19 19| @p typesetter = tex
+ Error|.^This pragma opposes the pragma at line 15.
+ |.^You can have as many typesetter pragmas as you like,
+ |.^but they all have to be the same!
+ |.^Pragma ignored.
+ 20 20|
+ 21 21| 7. Test pragma does not oppose earlier pragma.
+ 22 22| @p typesetter = none
+ 23 23|
+ | <End-Of-File>
+------------+-------------------------------------------------------------------
+
+There were 10 Errors.
diff --git a/web/funnelAC/results/tg01.lis b/web/funnelAC/results/tg01.lis
new file mode 100644
index 0000000000..47a43fdf7f
--- /dev/null
+++ b/web/funnelAC/results/tg01.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed .out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/tg01.out b/web/funnelAC/results/tg01.out
new file mode 100644
index 0000000000..148e1e38a0
--- /dev/null
+++ b/web/funnelAC/results/tg01.out
@@ -0,0 +1,3 @@
+Patterson's prayer:
+ "There is nothing I would rather be, than chairman of the ABC."
+ - Les Patterson
diff --git a/web/funnelAC/results/tg02.lis b/web/funnelAC/results/tg02.lis
new file mode 100644
index 0000000000..a9dac774ec
--- /dev/null
+++ b/web/funnelAC/results/tg02.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed tg02.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/tg02.out b/web/funnelAC/results/tg02.out
new file mode 100644
index 0000000000..4f731e9543
--- /dev/null
+++ b/web/funnelAC/results/tg02.out
@@ -0,0 +1,23 @@
+The other day upon the stair,
+I met a man who wasn't there.
+He wasn't there again today,
+I think he's from the CIA.
+
+In the output begin0 should be at the left margin, then begin1 to begin wayout
+should be indented by three spaces. Then the "It's scary" should be
+positioned over the "a" ofd margin. The rest should be at the left margin.
+
+begin0
+ begin1
+ begin2
+ begin3
+ begin4
+ begin wayout----------V
+ It's scary out here
+So far from the left margin.
+end wayout----------^
+end4
+end3
+end2
+end1
+end0
diff --git a/web/funnelAC/results/tg03.lis b/web/funnelAC/results/tg03.lis
new file mode 100644
index 0000000000..346577fb0d
--- /dev/null
+++ b/web/funnelAC/results/tg03.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed tg03.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/tg03.out b/web/funnelAC/results/tg03.out
new file mode 100644
index 0000000000..1d638b1c32
--- /dev/null
+++ b/web/funnelAC/results/tg03.out
@@ -0,0 +1,21 @@
+The other day upon the stair,
+I met a man who wasn't there.
+He wasn't there again today,
+I think he's from the CIA.
+
+The following nest of begin and ends should be indented in a nest.
+
+begin0
+ begin1
+ begin2
+ begin3
+ begin4
+ begin wayout----------V
+ It's scary out here
+ So far from the left margin.
+ end wayout----------^
+ end4
+ end3
+ end2
+ end1
+end0
diff --git a/web/funnelAC/results/tg04.lis b/web/funnelAC/results/tg04.lis
new file mode 100644
index 0000000000..0ffe1aacf9
--- /dev/null
+++ b/web/funnelAC/results/tg04.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed tg04.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/tg04.out b/web/funnelAC/results/tg04.out
new file mode 100644
index 0000000000..e65d9bf4ab
--- /dev/null
+++ b/web/funnelAC/results/tg04.out
@@ -0,0 +1,22 @@
+
+
+1. Test macro call with no parameters.
+"Teapot" =
+"Teapot"
+
+2. Test macro call with one parameter.
+"Left Testing Right" =
+"Left Testing Right"
+
+3. Test macro call with many parameters.
+"Left x Middle y Right" =
+"Left x Middle y Right"
+
+4. Test macro call as a parameter of another macro call.
+"Left Ostrich Middle Left Wombat Right Right" =
+"Left Ostrich Middle Left Wombat Right Right"
+
+5. Test expression recursive macro call.
+"[X[[Walrus]]Y]" =
+"[X[[Walrus]]Y]"
+
diff --git a/web/funnelAC/results/tg05.lis b/web/funnelAC/results/tg05.lis
new file mode 100644
index 0000000000..a9502089a9
--- /dev/null
+++ b/web/funnelAC/results/tg05.lis
@@ -0,0 +1,17 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+E: Product file line is too long (line 4 of "<<Suppressed>>").
+ Product file line length limit is 80 characters.
+ Note: You can change the limit by specifying.
+ @p maximum_output_line_length = <desired length>
+ somewhere in the input file.
+Tangle: Completed tg05.out.
+
+There was 1 Error.
diff --git a/web/funnelAC/results/tg05.out b/web/funnelAC/results/tg05.out
new file mode 100644
index 0000000000..1cc2528cae
--- /dev/null
+++ b/web/funnelAC/results/tg05.out
@@ -0,0 +1,4 @@
+We test the default limit of 80 characters.
+Only the second of the following two lines should provoke an error.
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
+123456789012345678901234567890123456789012345678901234567890123456789012345678901
diff --git a/web/funnelAC/results/tg06.lis b/web/funnelAC/results/tg06.lis
new file mode 100644
index 0000000000..749c27a39f
--- /dev/null
+++ b/web/funnelAC/results/tg06.lis
@@ -0,0 +1,17 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+E: Product file line is too long (line 6 of "<<Suppressed>>").
+ Product file line length limit is 60 characters.
+ Note: You can change the limit by specifying.
+ @p maximum_output_line_length = <desired length>
+ somewhere in the input file.
+Tangle: Completed tg06.out.
+
+There was 1 Error.
diff --git a/web/funnelAC/results/tg06.out b/web/funnelAC/results/tg06.out
new file mode 100644
index 0000000000..6d95ce3bf8
--- /dev/null
+++ b/web/funnelAC/results/tg06.out
@@ -0,0 +1,6 @@
+We test the user-set limit of 60 characters.
+Only the third of the following three lines
+should provoke an error.
+ 1 2 3 4 5 6
+123456789012345678901234567890123456789012345678901234567890
+1234567890123456789012345678901234567890123456789012345678901
diff --git a/web/funnelAC/results/tg07.lis b/web/funnelAC/results/tg07.lis
new file mode 100644
index 0000000000..d6bcf21b41
--- /dev/null
+++ b/web/funnelAC/results/tg07.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed tg07.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/tg07.out b/web/funnelAC/results/tg07.out
new file mode 100644
index 0000000000..113b1fac7b
--- /dev/null
+++ b/web/funnelAC/results/tg07.out
@@ -0,0 +1,2 @@
+The following long line should not blow the line length limit.
+12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
diff --git a/web/funnelAC/results/tg08.lis b/web/funnelAC/results/tg08.lis
new file mode 100644
index 0000000000..a3d0140430
--- /dev/null
+++ b/web/funnelAC/results/tg08.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed tg08.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/tg08.out b/web/funnelAC/results/tg08.out
new file mode 100644
index 0000000000..aab49f17ad
--- /dev/null
+++ b/web/funnelAC/results/tg08.out
@@ -0,0 +1,7 @@
+Is this a mouse I see before me?
+Its contours moulded for my hand?
+Come, let me clutch thee!
+
+Now might I drink hot jolt cola
+And create hacks in C
+That would not bear witness of the Sun.
diff --git a/web/funnelAC/results/tg09.lis b/web/funnelAC/results/tg09.lis
new file mode 100644
index 0000000000..f8c0868d36
--- /dev/null
+++ b/web/funnelAC/results/tg09.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Tangle: Completed tg09.out.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/tg09.out b/web/funnelAC/results/tg09.out
new file mode 100644
index 0000000000..64d7ff5028
--- /dev/null
+++ b/web/funnelAC/results/tg09.out
@@ -0,0 +1,23 @@
+A Megastar's Mantras
+--------------------
+(Things that Mean a Lot to Me)
+
+A is for Australia
+The land I adore;
+It's so spotless and clean
+You can eat off the floor.
+
+B is for Boomerang,
+Which our quaint Abos launch
+In the hope it will bring back
+A roast quokka's haunch.
+
+C is for Culture
+Which blossoms unchecked,
+You can't move in my homeland
+for Beckett and Brecht.
+
+...more...
+
+- Dame Edna Everage,
+"Neglected Poems and Other Creatures" by Barry Humphries, 1991.
diff --git a/web/funnelAC/results/wv01.lis b/web/funnelAC/results/wv01.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/wv01.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/wv01.tex b/web/funnelAC/results/wv01.tex
new file mode 100644
index 0000000000..83e0d3a42a
--- /dev/null
+++ b/web/funnelAC/results/wv01.tex
@@ -0,0 +1,367 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+WV01: Test basic typeset file output mechanism.
+
+\fwseca{1}{A section for no particular reason}
+
+\fwbeginmacro
+\fwfilename{wv01.out}{1}\fwequals \fwodef \fwbtx[Some text for no particular reason.
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/wv02.lis b/web/funnelAC/results/wv02.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/wv02.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/wv02.tex b/web/funnelAC/results/wv02.tex
new file mode 100644
index 0000000000..aab813ee0f
--- /dev/null
+++ b/web/funnelAC/results/wv02.tex
@@ -0,0 +1,454 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+WV05: Test typesetting features.
+
+\fwbeginmacro
+\fwfilename{wv05.out}{1}\fwequals \fwodef \fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+
+1. Test all five levels of headings with explicit titles.
+
+\fwseca{1}{One}
+\fwsecb{1.1}{Two}
+\fwsecc{1.1.1}{Three}
+\fwsecd{1.1.1.1}{Four}
+\fwsece{1.1.1.1.1}{Five}
+
+2. Test all five levels of headings with implicit titles.
+
+\fwseca{2}{Macro at level one}
+\fwbeginmacro
+\fwmacroname{Macro at level one}{2}\fwzero{}\fwequals \fwodef \fwbtx[Sloth]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecb{2.1}{Macro at level two}
+\fwbeginmacro
+\fwmacroname{Macro at level two}{3}\fwzero{}\fwequals \fwodef \fwbtx[Walrus]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecc{2.1.1}{Macro at level three}
+\fwbeginmacro
+\fwmacroname{Macro at level three}{4}\fwzero{}\fwequals \fwodef \fwbtx[Aardvark]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsecd{2.1.1.1}{Macro at level four}
+\fwbeginmacro
+\fwmacroname{Macro at level four}{5}\fwzero{}\fwequals \fwodef \fwbtx[Teapot]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwsece{2.1.1.1.1}{Macro at level five}
+\fwbeginmacro
+\fwmacroname{Macro at level five}{6}\fwzero{}\fwequals \fwodef \fwbtx[Emu]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+3. Test the table of contents directive.
+
+\fwtocstart{}
+\fwtoca{1}{One}
+\fwtocb{1.1}{Two}
+\fwtocc{1.1.1}{Three}
+\fwtocd{1.1.1.1}{Four}
+\fwtoce{1.1.1.1.1}{Five}
+\fwtoca{2}{Macro at level one}
+\fwtocb{2.1}{Macro at level two}
+\fwtocc{2.1.1}{Macro at level three}
+\fwtocd{2.1.1.1}{Macro at level four}
+\fwtoce{2.1.1.1.1}{Macro at level five}
+\fwtocfinish{}
+
+
+4. Test the newpage directive.
+
+\fwnewpage
+
+
+5. Test the vskip directive.
+\fwvskip{50}
+
+6. Test the title directive.
+\fwcenterline{\fwfonttitle{This is a test Title}}
+
+
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/wv03.lis b/web/funnelAC/results/wv03.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/wv03.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/wv03.tex b/web/funnelAC/results/wv03.tex
new file mode 100644
index 0000000000..f9d5bda6cd
--- /dev/null
+++ b/web/funnelAC/results/wv03.tex
@@ -0,0 +1,568 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+WV03: Test the typesetting of various kinds of macros.
+
+First create an output file to keep the analyser happy.
+\fwbeginmacro
+\fwfilename{wv03.out}{1}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+
+1. Test macro never used.
+\fwbeginmacro
+\fwmacroname{Never Used}{2}\fwzero{}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+2. Test a macro used once.
+\fwbeginmacro
+\fwmacroname{Used Once}{3}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definition 7.}
+\fwendmacronotes
+\fwendmacro
+
+
+3. Test a macro used twice.
+\fwbeginmacro
+\fwmacroname{Used Twice}{4}\fwmany{}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definitions 7 and 8.}
+\fwendmacronotes
+\fwendmacro
+
+
+4. Test a macro used three times.
+\fwbeginmacro
+\fwmacroname{Used Thrice}{5}\fwmany{}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definitions 7, 8, and 9.}
+\fwendmacronotes
+\fwendmacro
+
+
+5. Test a macro used five times.
+\fwbeginmacro
+\fwmacroname{Used Quice}{6}\fwmany{}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is invoked in definitions 7, 8, 9, 10, and 11.}
+\fwendmacronotes
+\fwendmacro
+
+
+Here is the macro that does all the calling for the above.
+\fwbeginmacro
+\fwmacroname{Dummy1}{7}\fwzero{}\fwequals \fwodef \fwmacroname{Used Once}{3}\fwbtx[
+]fwetx=%
+\fwmacroname{Used Twice}{4}\fwbtx[
+]fwetx=%
+\fwmacroname{Used Thrice}{5}\fwbtx[
+]fwetx=%
+\fwmacroname{Used Quice}{6}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Dummy2}{8}\fwzero{}\fwequals \fwodef \fwmacroname{Used Twice}{4}\fwbtx[
+]fwetx=%
+\fwmacroname{Used Thrice}{5}\fwbtx[
+]fwetx=%
+\fwmacroname{Used Quice}{6}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Dummy3}{9}\fwzero{}\fwequals \fwodef \fwmacroname{Used Thrice}{5}\fwbtx[
+]fwetx=%
+\fwmacroname{Used Quice}{6}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Dummy4}{10}\fwzero{}\fwequals \fwodef \fwmacroname{Used Quice}{6}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+\fwbeginmacro
+\fwmacroname{Dummy5}{11}\fwzero{}\fwequals \fwodef \fwmacroname{Used Quice}{6}\fwbtx[
+]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+6. Test a macro with two body parts.
+\fwbeginmacro
+\fwmacroname{Two body parts}{12}\fwzero{}\fwplusequals \fwodef \fwbtx[Sloth]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 12 and 13.}
+\fwusedin{This macro is invoked in definition 21.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Two body parts}{13}\fwzero{}\fwplusequals \fwodef \fwbtx[Walrus]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 12 and 13.}
+\fwusedin{This macro is invoked in definition 21.}
+\fwendmacronotes
+\fwendmacro
+
+
+7. Test a macro with three body parts.
+\fwbeginmacro
+\fwmacroname{Three body parts}{14}\fwzero{}\fwplusequals \fwodef \fwbtx[Sloth]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 14, 15, and 16.}
+\fwusedin{This macro is invoked in definition 19.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Three body parts}{15}\fwzero{}\fwplusequals \fwodef \fwbtx[Walrus]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 14, 15, and 16.}
+\fwusedin{This macro is invoked in definition 19.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Three body parts}{16}\fwzero{}\fwplusequals \fwodef \fwbtx[Aardvaark]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 14, 15, and 16.}
+\fwusedin{This macro is invoked in definition 19.}
+\fwendmacronotes
+\fwendmacro
+
+
+8. Test a macro with five body parts.
+\fwbeginmacro
+\fwmacroname{Five body parts}{17}\fwzero{}\fwplusequals \fwodef \fwbtx[Sloth]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.}
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Five body parts}{18}\fwzero{}\fwplusequals \fwodef \fwbtx[Walrus]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.}
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Five body parts}{19}\fwzero{}\fwplusequals \fwodef \fwmacroname{Three body parts}{14}\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.}
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Five body parts}{20}\fwzero{}\fwplusequals \fwodef \fwbtx[Aardvaark]fwetx=%
+\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.}
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{Five body parts}{21}\fwzero{}\fwplusequals \fwodef \fwmacroname{Two body parts}{12}\fwcdef
+\fwbeginmacronotes
+\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.}
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/wv04.lis b/web/funnelAC/results/wv04.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/wv04.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/wv04.tex b/web/funnelAC/results/wv04.tex
new file mode 100644
index 0000000000..f60d8158a3
--- /dev/null
+++ b/web/funnelAC/results/wv04.tex
@@ -0,0 +1,397 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+WV04: Test ugly string processing.
+
+\fwbeginmacro
+\fwfilename{wv04.out}{1}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+
+1. Test ugly string in section name.
+\fwseca{1}{ !\char`\"\#\$\%'()*+,-./0123456789:;$<$=$>$?}
+\fwseca{2}{ABCDEFGHIJKLMNOPQRSTUVWXYZ[$\backslash$]\char`\^\_`}
+\fwseca{3}{abcdefghijklmnopqrstuvwxyz$\{$$|$$\}$\char`\~}
+
+2. Test ugly string in macro name.
+\fwbeginmacro
+\fwmacroname{ !\char`\"\#\$\%'()*+,-./0123456789:;$<$=$>$?}{2}\fwzero{}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{ABCDEFGHIJKLMNOPQRSTUVWXYZ[$\backslash$]\char`\^\_`}{3}\fwzero{}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+\fwbeginmacro
+\fwmacroname{abcdefghijklmnopqrstuvwxyz$\{$$|$$\}$\char`\~}{4}\fwzero{}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwusedin{This macro is NEVER invoked.}
+\fwendmacronotes
+\fwendmacro
+
+
+3. Test ugly string in literal section.
+\fwlit{ !\char`\"\#\$\%'()*+,-./0123456789:;\char`\<=\char`\>?}
+\fwlit{ABCDEFGHIJKLMNOPQRSTUVWXYZ[\char`\\]\char`\^\_`}
+\fwlit{abcdefghijklmnopqrstuvwxyz\char`\{\char`\|\char`\}\char`\~}
+
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/wv05.lis b/web/funnelAC/results/wv05.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/wv05.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/wv05.tex b/web/funnelAC/results/wv05.tex
new file mode 100644
index 0000000000..833907b66e
--- /dev/null
+++ b/web/funnelAC/results/wv05.tex
@@ -0,0 +1,442 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+WV05: Test processing of ugly strings as ordinary and protected text
+with no typesetter set.
+
+\fwbeginmacro
+\fwfilename{wv05.out}{1}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+
+A paragraph in ordinary mode.
+
+33 con!text
+34 con\char`\"text
+35 con\#text
+36 con\$text
+37 con\%text
+38 con\&text
+39 con'text
+40 con(text
+41 con)text
+42 con*text
+43 con+text
+44 con,text
+45 con-text
+46 con.text
+47 con/text
+48-57 con0123456789text
+58 con:text
+59 con;text
+60 con$<$text
+61 con=text
+62 con$>$text
+63 con?text
+64 con@text
+65-90 conABCDEFGHIJKLMNOPQRSTUVWXYZtext
+91 con[text
+92 con$\backslash$text
+93 con]text
+94 con\char`\^text
+95 con\_text
+96 con`text
+97-122 conabcdefghijklmnopqrstuvwxyztext
+123 con$\{$text
+124 con$|$text
+125 con$\}$text
+126 con\char`\~text
+
+Now again, but this time inside protective braces.
+
+\fwlit{
+33 con!text
+34 con\char`\"text
+35 con\#text
+36 con\$text
+37 con\%text
+38 con\&text
+39 con'text
+40 con(text
+41 con)text
+42 con*text
+43 con+text
+44 con,text
+45 con-text
+46 con.text
+47 con/text
+48-57 con0123456789text
+58 con:text
+59 con;text
+60 con\char`\<text
+61 con=text
+62 con\char`\>text
+63 con?text
+64 con@text
+65-90 conABCDEFGHIJKLMNOPQRSTUVWXYZtext
+91 con[text
+92 con\char`\\text
+93 con]text
+94 con\char`\^text
+95 con\_text
+96 con`text
+97-122 conabcdefghijklmnopqrstuvwxyztext
+123 con\char`\{text
+124 con\char`\|text
+125 con\char`\}text
+126 con\char`\~text
+}
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+
diff --git a/web/funnelAC/results/wv06.lis b/web/funnelAC/results/wv06.lis
new file mode 100644
index 0000000000..342bdb414d
--- /dev/null
+++ b/web/funnelAC/results/wv06.lis
@@ -0,0 +1,12 @@
+FUNNELWEB LISTING FILE
+======================
+
+
+Global Local| Input File
+------------+-------------------------------------------------------------------
+.................
+------------+-------------------------------------------------------------------
+
+Weave: Completed <<Suppressed>>.
+
+SUCCESS: No diagnostics.
diff --git a/web/funnelAC/results/wv06.tex b/web/funnelAC/results/wv06.tex
new file mode 100644
index 0000000000..e2626dbb69
--- /dev/null
+++ b/web/funnelAC/results/wv06.tex
@@ -0,0 +1,443 @@
+
+%*******************************************************************************
+%* START OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+%* *
+%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
+%* You can typeset this file to produce printed documentation by running it *
+%* through the TeX typesetter using a command such as: *
+%* tex thisfilename *
+%* The resultant file thisfilename.dvi can be printed using a command such as: *
+%* lpr -Pcslw -d thisfilename.dvi *
+%* *
+%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
+%* their documentation together in a single document. The FunnelWeb program *
+%* analyses such documents producing both program files and typeset *
+%* documentation such as this TeX file. *
+%* FunnelWeb was created by Ross Williams. *
+%* *
+%* For more information on FunnelWeb look in the following FTP archive: *
+%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
+%* Directory: ~pub/funnelweb/ *
+%* (or some other appropriately named directory). *
+%* or email Ross Williams at ross@spam.adelaide.edu.au *
+%* *
+%*******************************************************************************
+
+
+%===================== Start of FunnelWeb TeX Definitions ======================
+
+
+% Version
+% -------
+% This is FunnelWeb TeX Macro Library Version 1.0.
+
+
+% Copyright
+% ---------
+% This set of FunnelWeb TeX definitions was written by Ross Williams and was
+% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
+% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
+% and hereby authorize that the set of TeX definitions pass into the public
+% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
+
+
+% Modification
+% ------------
+% Please record all modifications to these TeX definitions here. Unless
+% otherwise specified, all modified definitions fall in the public domain too.
+%
+% Programmers:
+% RNW Ross N. Williams ross@spam.adelaide.edu.au
+%
+% Changes:
+% 07-May-1992 RNW Prepared this work for public domain release.
+%
+
+
+% General Comments
+% ----------------
+% This set of TeX definitions exists for two reasons:
+%
+% 1. To shorten and neaten the FunnelWeb TeX output.
+% 2. To allow users to fiddle with the output format in their input files
+% (by inserting redefining "\def"s) without having to resort to
+% modifying the FunnelWeb code.
+%
+% The user is warned that these definitions may be changed from time to time
+% (but probably not much). The user should not be too sneaky. In particular,
+% users wishing to redefine some of these macros should do so in an explicitly
+% defined section at the top of their input file. This will mean that in the
+% event of problems, that section can simply be deleted or commented out to
+% allow the document to at least be typeset in the default format. Users should
+% limit themselves to redefining these macros in such a section and should
+% refrain from using the macros throughout their documents.
+
+
+% Environment Parameters
+% ----------------------
+% \tolerance tells TeX how tolerant it should be about making bad line and
+% page breaks. Here we set it to it's maximum, as
+% 1) Computer programs are likely to cause lots of bad breaks.
+% 2) In most cases the user would probably rather get the TeX file through
+% TeX without any errors than fiddle with spacings for perfection.
+\tolerance=10000
+
+% I don't like indentation as it makes the page look more busy. Instead,
+% paragraphs are separated by a little space (see next).
+\parindent=0pt
+
+% In many cases, users will produce documents with long runs of paragraphs.
+% In order to space out these paragraphs, it is convenient to maintain a
+% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
+% that the skip becomes a problem in macro definitions which require no skip
+% and so we have to turn the skip on and off. The following two macros
+% simplify this process.
+\def\fwparskipon{\parskip=\medskipamount}
+\def\fwparskipoff{\parskip=0pt}
+\fwparskipon
+
+% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
+% page in order to better vertically align the rest of the page (e.g. skips
+% won't stretch as much). It also means that headings are less likely to be
+% isolated at the bottom of the page without any following text.
+\raggedbottom
+
+
+% Fonts
+% -----
+% Most of the typeset output is set in 10pt roman and 10pt tt font.
+% The major extra font needs spring from titles and headings.
+% For portability's sake we use only the following fonts:
+% cmr10
+% cmbx10
+% cmtt10
+% and some enlargements of them. These fonts are all "standard" fonts
+% in Plain TeX. See The TeXbook p.350.
+\font\fwfontnote=cmr7
+
+\font\fwfontnorm=cmr10
+\font\fwfontnorma=cmr10 scaled \magstep1
+\font\fwfontnormb=cmr10 scaled \magstep2
+
+\font\fwfontbold=cmbx10
+\font\fwfontbolda=cmbx10 scaled \magstep1
+\font\fwfontboldb=cmbx10 scaled \magstep2
+\font\fwfontboldc=cmbx10 scaled \magstep3
+\font\fwfontboldd=cmbx10 scaled \magstep4
+
+
+% Macros for Stylistic Details
+% ----------------------------
+% This section contains all the fiddly little macros for setting the details
+% of each macro definition.
+
+% Macro definitions are sandwiched by calls to these macros which can be used
+% to sort out the spacing before and after the macro definition.
+\def\fwbeginmacro{\fwparskipoff\bigskip}
+\def\fwendmacro{\fwparskipon\par}
+
+% These macros deal with the macro name and definition line.
+\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
+\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
+\def\fwzero#1{{\bf Z}}
+\def\fwmany#1{{\bf M}}
+\def\fwequals{ $\equiv$}
+\def\fwplusequals{ $+\equiv$}
+
+% Now for the actual body of the definition. It looks nice to have the tt
+% code indented a little. Again, we use macros instead of writing direct TeX,
+% so as to allow the user to fiddle this stuff to taste without having to
+% modify the FunnelWeb C code.
+\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
+\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
+\def\fwoquote{`}
+\def\fwcquote{'}
+\def\fwoparen{$($}
+\def\fwcomma{$,$}
+\def\fwcparen{$)$}
+\def\fwparam#1{$\diamond #1$}
+\def\fwparams#1{$(\diamond #1)$}
+
+% These macros deal with the notes that are appended at the end of each
+% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
+% have the same definition, they are given different names so as to allow the
+% user to redefine these macros to typeset each kind of information differently
+% if desired.
+\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
+\def\fwnote#1{{\fwfontnote #1}\par}
+\def\fwisafile#1{\fwnote{#1}}
+\def\fwusedin#1{\fwnote{#1}}
+\def\fwseealso#1{\fwnote{#1}}
+\def\fwendmacronotes{\endgroup}
+
+
+% Macros to Typeset Program Code Verbatim
+% ---------------------------------------
+% This is by far the hairiest and most difficult part of the typesetting task
+% because we have to turn off most of TeX's natural instincts in order to
+% typeset the program text exactly as it appears in the input file.
+% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
+% Their code was inspired by the following sections of "The TeXbook":
+% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
+% Appendix E: Example Formats, p.421.
+% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
+% The liberal use of "%" is because I don't understand TeX well enough to
+% understand when an end of line will cause trouble, and I am playing it safe.
+
+% Before defining the main \fwbtx macro, we have to stash away some definitions
+% in the hidden part of TeX's environment. Let's hope that these "hidden"
+% definitions don't affect anything except what is desired to be affected.
+
+% The tt font in which we wish to set the text has two Latin lurking ligatures!
+% These are ?` and !`. To disable them, we define the left quote when ACTIVE
+% to be defined in such a way as to prevent ligatures. The main TeX text will
+% normally not be exposed to this definition because normally the leftquote
+% character is not active. The \fwbtx macro temporarily makes the left quote
+% character active thus activating the deactivation of left quote ligatures.
+% See The TeXbook p.381.
+{\catcode`\`=\active \gdef`{\relax\lq}}
+
+% TeX is fairly carefree about spaces and so we have to make it more serious.
+% To do so we pull the same trick as above, setting up a definition for active
+% space, but only making space active during the span of the verbatim text.
+% In Plain TeX the active space is defined to be simply a space, but here we
+% define it to be a control space. This ensures that the space cannot
+% be gobbled up by one of TeX's mysterious mechanisms when activated.
+% See The TeXbook, p.381 and p.352.
+{\obeyspaces\global\let =\ }
+
+% Here is the main \fwbtx verbatim text macro.
+% Note: The order in which all these pieces of business have to be done is
+% still a partial mystery to me. Don't fiddle with this stuff unless you
+% think you know what you are doing.
+\def\fwbtx[{%
+%
+% The funnies involved in getting verbatim output are safely housed inside
+% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
+% instead of curly braces because we have to be able to signal the end of
+% this macro with a curly brace.
+\begingroup%
+%
+% \pars at the end of empty lines in the verbatim text won't come out normally
+% because TeX is in vertical mode and they get gobbled up. To prevent this,
+% we force \par to exit vertical mode first. See The TeXbook p.381.
+\def\par{\leavevmode\endgraf}%
+%
+% Activate the leftquote character so as to avoid ligatures (see above).
+\catcode`\`=\active%
+%
+% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
+% that TeX will treat each verbatim line as a new paragraph.
+\obeylines%
+%
+% To get verbatim output, we have to desex all the special characters. This
+% is explained in detail in The TeXbook p.380.
+\def\do##1{\catcode`##1=12 }\dospecials%
+%
+% Activate the space character so as to make TeX treat blanks seriously.
+% This activation invokes an eralier definition (see above).
+\obeyspaces
+%
+% Interparagraph skips do not help the cause.
+% Note: We have to preserve the indentation though, as the code is actually
+% indented in the final output. See \fwodef in an earlier section.
+\parskip=0pt%
+%
+% We typeset the verbatim text in tt font (courier on the Macintosh) for a
+% number of reasons:
+% - tt font has the same horizontal spacing for each character.
+% - tt font covers the ASCII character set.
+% - tt font doesn't have many surprises (e.g. ligatures).
+% - tt font looks much what you might see on a computer terminal screen.
+\tt%
+%
+% Having set up an environment for verbatim, we are ready to use it.
+% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
+% part of the parameter of \fwverbatimgobble) until it sees the termination
+% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
+% must never occur in the verbatim text).
+\fwverbatimgobble}
+
+% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
+\def\fwverbatimgobble#1]fwetx={#1\endgroup}
+
+
+% Table of Contents
+% -----------------
+% The five levels of table of contents that FunnelWeb supports are identified
+% by the five letters [A..E]. These are used throughout the following macros.
+
+% The following macros are utilities to the TOC macros to follow.
+\def\fwrule{\medskip\hrule\medskip}
+\def\fwqh{\hskip1.5em\relax}
+\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
+
+% The following macros are used to typeset the table of contents.
+\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
+\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
+\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
+\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
+\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
+\def\fwtocfinish#1{\fwrule}
+
+% The following "library" macros define five different strengths of headings
+% which can be used later in the section macros.
+\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
+\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
+\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
+\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
+\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
+
+% Here are the macros that actually typeset the section headings throughout
+% the document. The fwlib system has been employed so as to easily allow the
+% user to redefine the strengths of headings to taste. For example, the
+% user could insert in the input document a similar set of definitions to these
+% but with the b..e headings set to \fwlibc. This would tone down the output.
+\def\fwseca#1#2{\fwliba{#1}{#2}}
+\def\fwsecb#1#2{\fwlibb{#1}{#2}}
+\def\fwsecc#1#2{\fwlibc{#1}{#2}}
+\def\fwsecd#1#2{\fwlibd{#1}{#2}}
+\def\fwsece#1#2{\fwlibe{#1}{#2}}
+
+
+% Support for Explicit Typesetting
+% --------------------------------
+% FunnelWeb supports pragmas and other constructs that allow
+% typesetter-independent typesetting commands to be given. The
+% following macros support these features.
+
+% The in-text literal @{sloth@} and emphasise @[walrus@] features.
+\def\fwlit#1{{\tt #1}}
+\def\fwemp#1{{\it #1}}
+
+% The "@p new_page" pragma.
+\def\fwnewpage{\vfill\eject}
+
+% The "@p vskip Nmm" pragma.
+\def\fwvskip#1{\null\vskip #1mm}
+
+% The "@p title <font> <align> <text>" pragma.
+\def\fwfontnormal#1{{\fwfontnorm {#1}}}
+\def\fwfonttitle#1{{\fwfontboldd {#1}}}
+\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
+\def\fwleftline#1{\leftline{#1}}
+\def\fwcenterline#1{\centerline{#1}}
+\def\fwrightline#1{\rightline{#1}}
+
+
+% Support for Old FunnelWeb
+% -------------------------
+% The following macros were used extensively in the first version of
+% FunnelWeb and are retained so that these older input files will still
+% typeset cleanly.
+\def\p#1{{\tt #1}} % P for Program text.
+\def\flagpage#1#2{
+ \null
+ \vfill
+ \centerline{\fwfontboldd #1}
+ \vskip 1cm
+ \centerline{\fwfontboldd #2}
+ \vfill
+ \null
+ \vfill
+}
+
+%====================== End of FunnelWeb TeX Definitions =======================
+WV06: Test processing of ugly strings as ordinary and protected text
+with typesetter = tex.
+
+
+\fwbeginmacro
+\fwfilename{wv06.out}{1}\fwequals \fwodef \fwcdef
+\fwbeginmacronotes
+\fwisafile{This macro is attached to an output file.}
+\fwendmacronotes
+\fwendmacro
+
+
+A paragraph in ordinary mode.
+
+33 con!text
+34 con"text
+35 con#text
+36 con$text
+37 con%text
+38 con&text
+39 con'text
+40 con(text
+41 con)text
+42 con*text
+43 con+text
+44 con,text
+45 con-text
+46 con.text
+47 con/text
+48-57 con0123456789text
+58 con:text
+59 con;text
+60 con<text
+61 con=text
+62 con>text
+63 con?text
+64 con@text
+65-90 conABCDEFGHIJKLMNOPQRSTUVWXYZtext
+91 con[text
+92 con\text
+93 con]text
+94 con^text
+95 con_text
+96 con`text
+97-122 conabcdefghijklmnopqrstuvwxyztext
+123 con{text
+124 con|text
+125 con}text
+126 con~text
+
+Now again, but this time inside protective braces.
+
+\fwlit{
+33 con!text
+34 con\char`\"text
+35 con\#text
+36 con\$text
+37 con\%text
+38 con\&text
+39 con'text
+40 con(text
+41 con)text
+42 con*text
+43 con+text
+44 con,text
+45 con-text
+46 con.text
+47 con/text
+48-57 con0123456789text
+58 con:text
+59 con;text
+60 con\char`\<text
+61 con=text
+62 con\char`\>text
+63 con?text
+64 con@text
+65-90 conABCDEFGHIJKLMNOPQRSTUVWXYZtext
+91 con[text
+92 con\char`\\text
+93 con]text
+94 con\char`\^text
+95 con\_text
+96 con`text
+97-122 conabcdefghijklmnopqrstuvwxyztext
+123 con\char`\{text
+124 con\char`\|text
+125 con\char`\}text
+126 con\char`\~text
+}
+\bye
+
+
+%*******************************************************************************
+%* END OF AUTOMATICALLY GENERATED TEX FILE *
+%*******************************************************************************
+