summaryrefslogtreecommitdiff
path: root/web/yacco2/diagrams
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/yacco2/diagrams
Initial commit
Diffstat (limited to 'web/yacco2/diagrams')
-rw-r--r--web/yacco2/diagrams/1test.txt33
-rw-r--r--web/yacco2/diagrams/TS_la1.mp60
-rw-r--r--web/yacco2/diagrams/TS_la2.mp60
-rw-r--r--web/yacco2/diagrams/TextFile1.txt690
-rw-r--r--web/yacco2/diagrams/Tsym.txt30
-rw-r--r--web/yacco2/diagrams/arbitrator.txt25
-rw-r--r--web/yacco2/diagrams/array_def.txt5
-rw-r--r--web/yacco2/diagrams/bug1.txt8
-rw-r--r--web/yacco2/diagrams/docgeneration.1193
-rw-r--r--web/yacco2/diagrams/docgeneration.mp57
-rw-r--r--web/yacco2/diagrams/eol.txt39
-rw-r--r--web/yacco2/diagrams/errsym.txt37
-rw-r--r--web/yacco2/diagrams/fsm.txt9
-rw-r--r--web/yacco2/diagrams/fsm_failed.txt39
-rw-r--r--web/yacco2/diagrams/fsmclass.txt45
-rw-r--r--web/yacco2/diagrams/intro1.txt1
-rw-r--r--web/yacco2/diagrams/intro2.txt7
-rw-r--r--web/yacco2/diagrams/intro3.txt30
-rw-r--r--web/yacco2/diagrams/intro4.txt21
-rw-r--r--web/yacco2/diagrams/linker.193
-rw-r--r--web/yacco2/diagrams/linker.2219
-rw-r--r--web/yacco2/diagrams/linker.311
-rw-r--r--web/yacco2/diagrams/linker.mp117
-rw-r--r--web/yacco2/diagrams/lrksym.txt41
-rw-r--r--web/yacco2/diagrams/mpxerr.tex35
-rw-r--r--web/yacco2/diagrams/o2_Toverview.1130
-rw-r--r--web/yacco2/diagrams/o2_Toverview.mp45
-rw-r--r--web/yacco2/diagrams/o2_overview.1368
-rw-r--r--web/yacco2/diagrams/o2_overview.mp105
-rw-r--r--web/yacco2/diagrams/o2_structures.180
-rw-r--r--web/yacco2/diagrams/o2_structures.2263
-rw-r--r--web/yacco2/diagrams/o2_structures.mp59
-rw-r--r--web/yacco2/diagrams/o2diag.mp506
-rw-r--r--web/yacco2/diagrams/o2linker_overview.1294
-rw-r--r--web/yacco2/diagrams/o2linker_overview.mp78
-rw-r--r--web/yacco2/diagrams/o2mac.tex390
-rw-r--r--web/yacco2/diagrams/o2run_example.txt9
-rw-r--r--web/yacco2/diagrams/parse_stk_env.1136
-rw-r--r--web/yacco2/diagrams/parse_stk_env.mp53
-rw-r--r--web/yacco2/diagrams/ppmntr.txt33
-rw-r--r--web/yacco2/diagrams/ppprsr.txt13
-rw-r--r--web/yacco2/diagrams/rcsym.txt46
-rw-r--r--web/yacco2/diagrams/ruledef.txt25
-rw-r--r--web/yacco2/diagrams/rulelhs.txt13
-rw-r--r--web/yacco2/diagrams/sampleoutput.txt197
-rw-r--r--web/yacco2/diagrams/sampleoutput2.txt28
-rw-r--r--web/yacco2/diagrams/subrdef.txt22
-rw-r--r--web/yacco2/diagrams/test.pdfbin0 -> 39053 bytes
-rw-r--r--web/yacco2/diagrams/test.tex109
-rw-r--r--web/yacco2/diagrams/testsuiteoutput.txt622
-rw-r--r--web/yacco2/diagrams/threading_defs.1203
-rw-r--r--web/yacco2/diagrams/threading_defs.mp49
-rw-r--r--web/yacco2/diagrams/threading_exs.1617
-rw-r--r--web/yacco2/diagrams/threading_exs.2492
-rw-r--r--web/yacco2/diagrams/threading_exs.3434
-rw-r--r--web/yacco2/diagrams/threading_exs.mp565
-rw-r--r--web/yacco2/diagrams/threadmanualcall.txt74
-rw-r--r--web/yacco2/diagrams/tokcanaccess.txt13
-rw-r--r--web/yacco2/diagrams/treemodify.txt9
-rw-r--r--web/yacco2/diagrams/yacco2_stbl.1289
-rw-r--r--web/yacco2/diagrams/yacco2_stbl.2444
-rw-r--r--web/yacco2/diagrams/yacco2_stbl.mp136
62 files changed, 8854 insertions, 0 deletions
diff --git a/web/yacco2/diagrams/1test.txt b/web/yacco2/diagrams/1test.txt
new file mode 100644
index 0000000000..6d57ae2378
--- /dev/null
+++ b/web/yacco2/diagrams/1test.txt
@@ -0,0 +1,33 @@
+/* FILE: 1test.lex
+ dates: 17 Apr 2001
+ Purpose: see why merge does not work
+*/
+fsm
+(fsm-id "test.lex",fsm-filename test,fsm-namespace NS_test
+,fsm-class Cpas_keyword
+,fsm-version "1.0",fsm-date "17 Apr 2001",fsm-debug "true"
+,fsm-comments "Merge proplempascal Keyword recognizer")
+parallel-parser
+(
+ parallel-thread-function
+ TH_test
+ ***
+ parallel-la-boundary
+ eolr
+ ***
+)
+@"/pascalxlator/pas_include_files.T"
+rules{
+Rtest AD AB(){
+ -> Rtest_indiv
+}
+
+Rtest_indiv AD AB(){
+ -> Ra Rc
+ -> Rr Ra Rm
+ -> RE Ra Rt
+}
+
+Ra AD AB(){-> "a" -> "A"} Rc AD AB(){-> "c" } Rr AD AB(){-> "r" }
+RE AD AB(){-> "e" } Rt AD AB(){-> "t" } Rm AD AB(){-> "m" }
+}// end of rules \ No newline at end of file
diff --git a/web/yacco2/diagrams/TS_la1.mp b/web/yacco2/diagrams/TS_la1.mp
new file mode 100644
index 0000000000..0b03dfa6fb
--- /dev/null
+++ b/web/yacco2/diagrams/TS_la1.mp
@@ -0,0 +1,60 @@
+% file: TS_la1.mp - grammar railroad diagrams for mpost program
+
+% date: Wed Nov 08 16:30:09 2006
+input "/yacco2/library/o2diag.mp"
+numeric no_of_rules,Box_solid,Box_dotted,Circle_solid,Circle_dotted;
+Box_solid:=1;Box_dotted:=2;Circle_solid:=3;Circle_dotted:=4;
+string rule_names[].literal;
+string rule_names[].vname;
+numeric rule_s_no_rhs[];
+string rhs_elems[][][].literal;
+string rhs_elems[][][].vname;
+numeric rhs_elems[][][].Drw_how;
+numeric rule_s_subrule_no_elems[][];
+no_of_rules := 2;
+rule_names[1].literal := "Reol";rule_names[1].vname := "Reol";
+rule_s_no_rhs[1] := 1;
+rule_s_subrule_no_elems[1][1]:= 1;
+rhs_elems[1][1][1].literal := "Rdelimiters";
+rhs_elems[1][1][1].Drw_how := Box_solid;
+rhs_elems[1][1][1].vname := "aaaaaa";
+rule_names[2].literal := "Rdelimiters";rule_names[2].vname := "Rdelimiters";
+rule_s_no_rhs[2] := 3;
+rule_s_subrule_no_elems[2][1]:= 1;
+rhs_elems[2][1][1].literal := "x0a";
+rhs_elems[2][1][1].Drw_how := Circle_solid;
+rhs_elems[2][1][1].vname := "abaaaa";
+rule_s_subrule_no_elems[2][2]:= 2;
+rhs_elems[2][2][1].literal := "x0d";
+rhs_elems[2][2][1].Drw_how := Circle_solid;
+rhs_elems[2][2][1].vname := "ababaa";
+rhs_elems[2][2][2].literal := "|.|";
+rhs_elems[2][2][2].Drw_how := Circle_solid;
+rhs_elems[2][2][2].vname := "ababab";
+rule_s_subrule_no_elems[2][3]:= 2;
+rhs_elems[2][3][1].literal := "x0d";
+rhs_elems[2][3][1].Drw_how := Circle_solid;
+rhs_elems[2][3][1].vname := "abacaa";
+rhs_elems[2][3][2].literal := "x0a";
+rhs_elems[2][3][2].Drw_how := Circle_solid;
+rhs_elems[2][3][2].vname := "abacab";
+init_variables;
+beginfig(1);
+ drw_rule(1);
+endfig;
+beginfig(2);
+ drw_rule_a_rhs(1,1);
+endfig;
+beginfig(3);
+ drw_rule(2);
+endfig;
+beginfig(4);
+ drw_rule_a_rhs(2,1);
+endfig;
+beginfig(5);
+ drw_rule_a_rhs(2,2);
+endfig;
+beginfig(6);
+ drw_rule_a_rhs(2,3);
+endfig;
+end;
diff --git a/web/yacco2/diagrams/TS_la2.mp b/web/yacco2/diagrams/TS_la2.mp
new file mode 100644
index 0000000000..a864b50af7
--- /dev/null
+++ b/web/yacco2/diagrams/TS_la2.mp
@@ -0,0 +1,60 @@
+% file: TS_la2.mp - grammar railroad diagrams for mpost program
+
+% date: Wed Nov 08 16:30:19 2006
+input "/yacco2/library/o2diag.mp"
+numeric no_of_rules,Box_solid,Box_dotted,Circle_solid,Circle_dotted;
+Box_solid:=1;Box_dotted:=2;Circle_solid:=3;Circle_dotted:=4;
+string rule_names[].literal;
+string rule_names[].vname;
+numeric rule_s_no_rhs[];
+string rhs_elems[][][].literal;
+string rhs_elems[][][].vname;
+numeric rhs_elems[][][].Drw_how;
+numeric rule_s_subrule_no_elems[][];
+no_of_rules := 2;
+rule_names[1].literal := "Reol";rule_names[1].vname := "Reol";
+rule_s_no_rhs[1] := 1;
+rule_s_subrule_no_elems[1][1]:= 1;
+rhs_elems[1][1][1].literal := "Rdelimiters";
+rhs_elems[1][1][1].Drw_how := Box_solid;
+rhs_elems[1][1][1].vname := "aaaaaa";
+rule_names[2].literal := "Rdelimiters";rule_names[2].vname := "Rdelimiters";
+rule_s_no_rhs[2] := 3;
+rule_s_subrule_no_elems[2][1]:= 1;
+rhs_elems[2][1][1].literal := "x0a";
+rhs_elems[2][1][1].Drw_how := Circle_solid;
+rhs_elems[2][1][1].vname := "abaaaa";
+rule_s_subrule_no_elems[2][2]:= 2;
+rhs_elems[2][2][1].literal := "x0d";
+rhs_elems[2][2][1].Drw_how := Circle_solid;
+rhs_elems[2][2][1].vname := "ababaa";
+rhs_elems[2][2][2].literal := "|.|";
+rhs_elems[2][2][2].Drw_how := Circle_solid;
+rhs_elems[2][2][2].vname := "ababab";
+rule_s_subrule_no_elems[2][3]:= 2;
+rhs_elems[2][3][1].literal := "x0d";
+rhs_elems[2][3][1].Drw_how := Circle_solid;
+rhs_elems[2][3][1].vname := "abacaa";
+rhs_elems[2][3][2].literal := "x0a";
+rhs_elems[2][3][2].Drw_how := Circle_solid;
+rhs_elems[2][3][2].vname := "abacab";
+init_variables;
+beginfig(1);
+ drw_rule(1);
+endfig;
+beginfig(2);
+ drw_rule_a_rhs(1,1);
+endfig;
+beginfig(3);
+ drw_rule(2);
+endfig;
+beginfig(4);
+ drw_rule_a_rhs(2,1);
+endfig;
+beginfig(5);
+ drw_rule_a_rhs(2,2);
+endfig;
+beginfig(6);
+ drw_rule_a_rhs(2,3);
+endfig;
+end;
diff --git a/web/yacco2/diagrams/TextFile1.txt b/web/yacco2/diagrams/TextFile1.txt
new file mode 100644
index 0000000000..d901745014
--- /dev/null
+++ b/web/yacco2/diagrams/TextFile1.txt
@@ -0,0 +1,690 @@
+C:\yacco2\compiler\grammars\eol.lex(18): ***
+C:\yacco2\compiler\grammars\eol.lex(21): ***
+C:\yacco2\compiler\grammars\eol.lex(36): ***
+C:\yacco2\compiler\grammars\yacco2_err_symbols.lex(30): ***
+C:\yacco2\compiler\grammars\yacco2_err_symbols.lex(36): ***
+C:\yacco2\compiler\grammars\yacco2_err_symbols.lex(50): ***
+C:\yacco2\compiler\grammars\yacco2_err_symbols.lex(56): ***
+C:\yacco2\compiler\grammars\yacco2_err_symbols.lex(76): ***
+C:\yacco2\compiler\grammars\yacco2_err_symbols.lex(79): ***
+C:\yacco2\compiler\grammars\yacco2_err_symbols.lex(86): ***
+C:\yacco2\compiler\grammars\yacco2_err_symbols.lex(96): ***
+C:\yacco2\compiler\grammars\yacco2_err_symbols.lex(103): ***
+C:\yacco2\compiler\grammars\yacco2_T_enumeration.lex(28): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(27): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(45): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(52): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(62): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(69): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(81): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(84): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(92): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(104): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(107): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(115): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(126): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(133): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(144): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(151): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(162): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(168): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(179): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(185): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(197): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(203): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(218): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(233): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(244): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(251): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(262): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(268): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(280): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(288): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(302): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(309): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(312): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(323): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(330): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(333): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(344): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(351): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(354): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(360):"#***" (sym-class T_eocode)
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(375): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(386): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(398): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(405): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(416): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(423): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(426): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(438): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(445): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(458): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(465): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(468): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(488): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(495): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(498): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(514): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(521): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(524): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(535): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(542): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(545): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(564): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(571): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(574): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(588): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(595): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(607): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(614): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(626): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(633): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(645): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(652): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(664): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(671): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(683): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(690): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(702): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(709): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(721): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(728): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(740): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(747): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(759): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(766): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(778): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(785): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(797): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(804): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(816): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(823): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(835): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(842): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(865): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(872): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(878): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(889): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(895): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(913): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(952): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(956): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(989): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1022): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1032): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1045): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1072): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1075): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1096): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1114): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1120): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1138): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1155): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1160): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1201): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1264): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1267): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1284): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1297): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1312): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1322): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1349): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1410): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1417): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1438): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1477): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1482): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1506): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1555): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1561): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1582): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1621): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1626): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1640): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1675): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1678): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1692): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1727): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1730): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1767): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1816): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1821): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1836): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1870): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1873): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1894): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1948): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1952): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1967): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1996): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(1999): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(2011): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(2021): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(2033): ***
+C:\yacco2\compiler\grammars\yacco2_terminals.lex(2043): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(23): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(27): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(34): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(38): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(45): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(49): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(55): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(59): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(66): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(70): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(77): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(81): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(88): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(92): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(99): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(103): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(110): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(114): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(121): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(125): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(132): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(136): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(143): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(147): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(154): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(158): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(165): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(169): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(176): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(180): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(187): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(191): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(198): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(202): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(209): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(213): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(220): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(224): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(231): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(235): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(242): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(246): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(253): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(257): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(264): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(268): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(275): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(279): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(286): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(290): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(297): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(301): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(308): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(312): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(319): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(323): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(330): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(334): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(341): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(345): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(352): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(356): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(363): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(367): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(374): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(378): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(385): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(389): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(396): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(400): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(407): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(411): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(418): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(422): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(429): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(433): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(440): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(444): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(451): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(455): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(462): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(466): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(473): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(477): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(484): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(488): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(495): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(499): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(506): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(510): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(517): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(521): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(528): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(532): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(539): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(543): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(550): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(554): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(561): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(565): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(572): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(576): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(583): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(587): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(594): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(598): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(605): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(609): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(616): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(620): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(627): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(631): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(638): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(642): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(649): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(653): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(660): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(664): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(671): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(675): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(682): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(686): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(693): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(697): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(704): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(708): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(715): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(719): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(726): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(730): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(738): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(742): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(749): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(753): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(760): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(764): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(771): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(775): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(782): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(786): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(793): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(797): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(804): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(808): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(815): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(819): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(826): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(830): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(837): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(841): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(848): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(852): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(859): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(863): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(870): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(874): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(881): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(885): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(892): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(896): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(903): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(907): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(914): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(918): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(925): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(929): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(936): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(940): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(947): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(951): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(958): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(962): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(969): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(973): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(980): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(984): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(991): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(995): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1002): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1006): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1013): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1017): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1024): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1028): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1035): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1039): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1046): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1050): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1057): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1061): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1068): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1072): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1079): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1083): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1091): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1095): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1102): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1106): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1113): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1117): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1124): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1128): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1135): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1139): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1146): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1150): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1157): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1161): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1168): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1172): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1179): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1183): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1190): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1194): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1201): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1205): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1212): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1216): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1223): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1227): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1234): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1238): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1245): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1249): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1256): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1260): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1267): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1271): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1278): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1282): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1289): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1293): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1300): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1304): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1311): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1315): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1322): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1326): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1333): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1337): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1344): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1348): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1355): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1359): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1366): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1370): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1377): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1381): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1388): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1392): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1399): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1403): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1410): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1414): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1421): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1425): ***
+C:\yacco2\library\grammars\yacco2_characters.lex(1435):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1439):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1446):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1450):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1457):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1461):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1468):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1472):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1479):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1483):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1490):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1494):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1501):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1505):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1512):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1516):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1523):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1527):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1534):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1538):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1545):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1549):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1556):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1560):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1567):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1571):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1578):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1582):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1589):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1593):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1600):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1604):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1611):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1615):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1622):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1626):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1633):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1637):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1644):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1648):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1655):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1659):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1666):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1670):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1677):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1681):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1688):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1692):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1699):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1703):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1710):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1714):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1721):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1725):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1732):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1736):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1743):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1747):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1754):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1758):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1765):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1769):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1776):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1780):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1787):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1791):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1798):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1802):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1809):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1813):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1820):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1824):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1831):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1835):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1842):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1846):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1853):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1857):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1864):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1868):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1875):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1879):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1886):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1890):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1897):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1901):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1908):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1912):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1919):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1923):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1930):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1934):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1941):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1945):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1952):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1956):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1963):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1967):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1974):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1978):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1985):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1989):***
+C:\yacco2\library\grammars\yacco2_characters.lex(1996):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2000):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2007):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2011):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2018):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2022):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2029):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2033):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2040):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2044):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2051):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2055):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2062):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2066):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2073):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2077):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2084):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2088):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2095):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2099):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2106):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2110):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2117):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2121):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2128):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2132):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2139):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2143):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2150):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2154):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2161):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2165):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2172):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2176):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2183):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2187):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2194):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2198):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2205):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2209):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2216):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2220):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2227):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2231):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2238):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2242):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2249):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2253):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2260):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2264):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2271):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2275):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2282):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2286):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2293):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2297):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2304):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2308):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2315):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2319):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2326):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2330):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2337):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2341):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2348):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2352):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2359):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2363):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2370):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2374):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2381):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2385):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2392):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2396):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2403):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2407):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2414):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2418):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2425):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2429):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2436):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2440):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2447):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2451):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2458):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2462):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2469):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2473):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2480):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2484):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2491):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2495):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2502):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2506):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2513):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2517):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2524):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2528):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2535):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2539):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2546):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2550):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2557):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2561):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2568):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2572):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2579):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2583):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2590):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2594):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2601):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2605):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2612):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2616):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2623):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2627):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2634):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2638):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2645):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2649):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2656):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2660):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2667):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2671):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2678):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2682):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2689):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2693):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2700):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2704):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2711):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2715):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2722):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2726):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2733):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2737):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2744):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2748):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2755):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2759):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2766):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2770):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2777):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2781):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2788):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2792):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2799):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2803):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2810):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2814):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2821):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2825):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2832):***
+C:\yacco2\library\grammars\yacco2_characters.lex(2836):***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(24): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(31): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(38): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(45): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(52): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(59): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(66): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(73): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(82): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(89): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(96): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(103): ***
+C:\yacco2\library\grammars\yacco2_k_symbols.lex(115):***
diff --git a/web/yacco2/diagrams/Tsym.txt b/web/yacco2/diagrams/Tsym.txt
new file mode 100644
index 0000000000..23bcb3ba3b
--- /dev/null
+++ b/web/yacco2/diagrams/Tsym.txt
@@ -0,0 +1,30 @@
+/*
+file: Tsym.txt
+Why: terminals symbols vocabulary to parse.
+Note: terminals is shown for clarity. It is the keyword trigger
+ that calls this grammar. Parsed is comments onwards.
+*/
+terminals
+// comments
+(file-name o2_terminals,name-space NS_o2_terminals){
+/@
+Makesure c++ forward references compile.
+@/
+ terminals-refs
+ using namespace std;
+ struct T_c_literal;
+ ....
+ struct refered_T;
+ ***
+"option-t" AD
+ /@
+ Command line option for \O2 indicating generate T vocabulary code.
+ Returned from |yacco2_lcl_option| thread.
+ @/
+ (sym-class T_option_t)
+ ....
+ "lint" (sym-class T_lint)
+ terminals-sufx
+ static int* NS_o2_terminals::example_(0);
+ ***
+} \ No newline at end of file
diff --git a/web/yacco2/diagrams/arbitrator.txt b/web/yacco2/diagrams/arbitrator.txt
new file mode 100644
index 0000000000..5a24b1fa9a
--- /dev/null
+++ b/web/yacco2/diagrams/arbitrator.txt
@@ -0,0 +1,25 @@
+,parallel-control-monitor{
+ arbitrator-code
+ // arbitration
+ // between
+ // x y winner
+ // identifier keyword keyword
+ // fp no integer fp no
+ //
+ using namespace NS_pas_T_enum;
+ {
+ for(i=1;i<=ie;++i){
+ if(To_judge->pp_accept_queue__[i].accept_token__->enumerated_id__
+ == NS_pas_T_enum::T_Enum::T_T_keyword_){
+ goto arbitrated_parameter;
+ }
+ }
+ for(i=1;i<=ie;++i){
+ if(To_judge->pp_accept_queue__[i].accept_token__->enumerated_id__
+ == NS_pas_T_enum::T_Enum::T_T_fp_pt_no_){
+ goto arbitrated_parameter;
+ }
+ }
+ }
+ ***
+ }
diff --git a/web/yacco2/diagrams/array_def.txt b/web/yacco2/diagrams/array_def.txt
new file mode 100644
index 0000000000..18b3ca07b4
--- /dev/null
+++ b/web/yacco2/diagrams/array_def.txt
@@ -0,0 +1,5 @@
+// array_def.txt solution to open-ended array definition
+struct Shift_tbl {
+ yacco2::USINT no_entries__;
+ yacco2::Shift_entry first_entry__[1];
+};
diff --git a/web/yacco2/diagrams/bug1.txt b/web/yacco2/diagrams/bug1.txt
new file mode 100644
index 0000000000..91dc7eb1ba
--- /dev/null
+++ b/web/yacco2/diagrams/bug1.txt
@@ -0,0 +1,8 @@
+std::set<state*> VISITED_MERGE_STATES_IN_LA_CALC;
+int main(int argc,char*argv[]){
+ VISITED_MERGE_STATES_IN_LA_CALC.clear();}
+ if(VISITED_MERGE_STATES_IN_LA_CALC.empty() == true){
+ cout << "===========its empty" << endl;
+ }
+ return 0;
+}
diff --git a/web/yacco2/diagrams/docgeneration.1 b/web/yacco2/diagrams/docgeneration.1
new file mode 100644
index 0000000000..ed767bd060
--- /dev/null
+++ b/web/yacco2/diagrams/docgeneration.1
@@ -0,0 +1,193 @@
+%!PS
+%%BoundingBox: -37 -114 307 11
+%%HiResBoundingBox: -36.5142 -113.62396 306.92596 10.16852
+%%Creator: MetaPost 0.993
+%%CreationDate: 2007.04.02:0933
+%%Pages: 1
+%*Font: cmr10 9.96265 9.96265 22:80080000000000217d36ee
+%*Font: cmex10 9.96265 9.96265 50:8
+%%BeginProlog
+%%EndProlog
+%%Page: 1 1
+ 0 0 0 setrgbcolor
+0 0 moveto
+(xxx.mp) cmr10 9.96265 fshow
+35.6996 0 moveto
+(for) cmr10 9.96265 fshow
+50.948 0 moveto
+(mp) cmr10 9.96265 fshow
+65.0618 0 moveto
+(ost) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 1 setlinejoin 10 setmiterlimit
+newpath -3 -4.9372 moveto
+80.8472 -4.9372 lineto
+80.8472 9.91852 lineto
+-3 9.91852 lineto
+ closepath stroke
+25.474 -26.85715 moveto
+(mp) cmr10 9.96265 fshow
+39.5878 -26.85715 moveto
+(ost) cmr10 9.96265 fshow
+newpath 22.474 -31.79436 moveto
+55.3732 -31.79436 lineto
+55.3732 -17.72932 lineto
+22.474 -17.72932 lineto
+ closepath stroke
+-33.2642 -47.58649 moveto
+(P) cmex10 9.96265 fshow
+-19.4272 -55.05849 moveto
+(railroad) cmr10 9.96265 fshow
+17.7114 -55.05849 moveto
+(diagrams) cmr10 9.96265 fshow
+60.41249 -55.05849 moveto
+(of) cmr10 9.96265 fshow
+71.7589 -55.05849 moveto
+(grammar) cmr10 9.96265 fshow
+newpath -36.2642 -60.5492 moveto
+114.1114 -60.5492 lineto
+114.1114 -44.58649 lineto
+-36.2642 -44.58649 lineto
+ closepath stroke
+160.59998 -0.9686 moveto
+(xxx.w) cmr10 9.96265 fshow
+189.65778 -0.9686 moveto
+(for) cmr10 9.96265 fshow
+204.90617 -0.9686 moveto
+(cw) cmr10 9.96265 fshow
+216.25247 -0.9686 moveto
+(ea) cmr10 9.96265 fshow
+225.38487 -0.9686 moveto
+(v) cmr10 9.96265 fshow
+230.36627 -0.9686 moveto
+(e) cmr10 9.96265 fshow
+newpath 157.59998 -4.9372 moveto
+237.7941 -4.9372 lineto
+237.7941 9.91852 lineto
+157.59998 9.91852 lineto
+ closepath stroke
+182.75308 -26.9066 moveto
+(cw) cmr10 9.96265 fshow
+194.09938 -26.9066 moveto
+(ea) cmr10 9.96265 fshow
+203.23189 -26.9066 moveto
+(v) cmr10 9.96265 fshow
+208.21318 -26.9066 moveto
+(e) cmr10 9.96265 fshow
+newpath 179.75308 -31.79436 moveto
+215.64099 -31.79436 lineto
+215.64099 -17.72932 lineto
+179.75308 -17.72932 lineto
+ closepath stroke
+181.64603 -53.7143 moveto
+(xxx.tex) cmr10 9.96265 fshow
+newpath 178.64603 -56.7143 moveto
+216.74805 -56.7143 lineto
+216.74805 -44.58649 lineto
+178.64603 -44.58649 lineto
+ closepath stroke
+258.12445 -53.14105 moveto
+(p) cmr10 9.96265 fshow
+263.93605 -53.14105 moveto
+(dftex) cmr10 9.96265 fshow
+newpath 255.12444 -58.07825 moveto
+289.07526 -58.07825 lineto
+289.07526 -43.22253 lineto
+255.12444 -43.22253 lineto
+ closepath stroke
+255.63374 -80.78891 moveto
+(xxx.p) cmr10 9.96265 fshow
+279.98694 -80.78891 moveto
+(df) cmr10 9.96265 fshow
+newpath 252.63374 -85.7261 moveto
+291.56596 -85.7261 lineto
+291.56596 -70.87038 lineto
+252.63374 -70.87038 lineto
+ closepath stroke
+240.52374 -108.43677 moveto
+(\\a) cmr10 9.96265 fshow
+253.80724 -108.43677 moveto
+(p) cmr10 9.96265 fshow
+259.61884 -108.43677 moveto
+(df) cmr10 9.96265 fshow
+271.51874 -108.43677 moveto
+(reader") cmr10 9.96265 fshow
+newpath 237.52374 -113.37396 moveto
+306.67596 -113.37396 lineto
+306.67596 -98.51823 lineto
+237.52374 -98.51823 lineto
+ closepath stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth 1 setlinecap
+newpath 38.9236 -4.9372 moveto
+38.9236 -17.72932 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 37.3928 -14.03375 moveto
+38.9236 -17.72932 lineto
+40.45439 -14.03375 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 38.9236 -31.79436 moveto
+38.9236 -44.58649 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 37.3928 -40.89091 moveto
+38.9236 -44.58649 lineto
+40.45439 -40.89091 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 197.69704 -4.9372 moveto
+197.69704 -17.72932 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 196.16624 -14.03375 moveto
+197.69704 -17.72932 lineto
+199.22783 -14.03375 lineto
+ closepath
+gsave fill grestore stroke
+ [0 5 ] 2.5 setdash
+newpath 114.1114 -52.56784 moveto
+127.31908 -52.56784 135.8557 -39.2965 135.8557 -25.03859 curveto stroke
+newpath 135.8557 -25.03859 moveto
+135.8557 -10.7807 144.39232 2.49066 157.59998 2.49066 curveto stroke
+ [] 0 setdash
+newpath 154.08553 0.58069 moveto
+155.15556 1.32169 156.32661 1.96321 157.59998 2.49066 curveto
+156.32661 3.01811 155.04494 3.39258 153.76436 3.62527 curveto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 197.69704 -31.79436 moveto
+197.69704 -44.58649 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 196.16624 -40.89091 moveto
+197.69704 -44.58649 lineto
+199.22783 -40.89091 lineto
+ closepath
+gsave fill grestore stroke
+newpath 216.74805 -50.65039 moveto
+255.12444 -50.65039 lineto stroke
+newpath 251.42886 -52.18118 moveto
+255.12444 -50.65039 lineto
+251.42886 -49.1196 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 272.09985 -58.07825 moveto
+272.09985 -70.87038 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 270.56906 -67.1748 moveto
+272.09985 -70.87038 lineto
+273.63065 -67.1748 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 272.09985 -85.7261 moveto
+272.09985 -98.51823 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 270.56906 -94.82266 moveto
+272.09985 -98.51823 lineto
+273.63065 -94.82266 lineto
+ closepath
+gsave fill grestore stroke
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/docgeneration.mp b/web/yacco2/diagrams/docgeneration.mp
new file mode 100644
index 0000000000..eb1eeabd43
--- /dev/null
+++ b/web/yacco2/diagrams/docgeneration.mp
@@ -0,0 +1,57 @@
+% file: docgeneration.mp
+% flow control of how grammar's documents are created
+input boxes
+u:=1cc;
+pair sep,fldsep;
+sep := (0,1u);
+fldsep := (3u,0);
+beginfig(1);
+boxit.docsmp(btex xxx.mp for mpost etex); % mpost doc
+boxit.docsw(btex xxx.w for cweave etex); % cweave doc
+boxit.mpraildocs(btex $\sum$ railroad diagrams of grammar etex); % mpost output
+boxit.mpost(btex mpost etex); % mpost
+boxit.cweave(btex cweave etex); % cweave
+boxit.texdoc(btex xxx.tex etex); % tex doc
+boxit.pdftex(btex pdftex etex); % pdftex
+boxit.pdfdoc(btex xxx.pdf etex); % pdf doc
+boxit.pdfrdr(btex ``a pdf reader'' etex); % pdf reader
+
+% place the boxes
+docsmp.s - sep = mpost.n;
+mpost.s - sep = mpraildocs.n;
+docsmp.e + 2fldsep = docsw.w;
+ypart mpost.n = ypart cweave.n;
+ypart mpost.s = ypart cweave.s;
+docsw.s - sep = cweave.n;
+
+
+cweave.s - sep = texdoc.n;
+texdoc.e + fldsep = pdftex.w;
+pdftex.s - sep = pdfdoc.n;
+pdfdoc.s - sep = pdfrdr.n;
+
+% form the boxes
+drawboxed(docsmp);
+drawboxed(mpost);
+drawboxed(mpraildocs);
+drawboxed(docsw);
+drawboxed(cweave);
+drawboxed(texdoc);
+drawboxed(pdftex);
+drawboxed(pdfdoc);
+drawboxed(pdfrdr);
+
+% draw lined arrows between the boxes
+drawarrow docsmp.s -- mpost.n;
+drawarrow mpost.s -- mpraildocs.n;
+drawarrow docsw.s -- cweave.n;
+pair xxx;
+xxx = .5[mpraildocs.e,docsw.w];
+draw mpraildocs.e {right} .. {up} xxx dashed withdots;
+drawarrow xxx {up} .. {right} docsw.w dashed withdots;
+drawarrow cweave.s -- texdoc.n;
+drawarrow texdoc.e -- pdftex.w;
+drawarrow pdftex.s -- pdfdoc.n;
+drawarrow pdfdoc.s -- pdfrdr.n;
+endfig;
+end; \ No newline at end of file
diff --git a/web/yacco2/diagrams/eol.txt b/web/yacco2/diagrams/eol.txt
new file mode 100644
index 0000000000..e885f29314
--- /dev/null
+++ b/web/yacco2/diagrams/eol.txt
@@ -0,0 +1,39 @@
+/*
+FILE: eol.lex
+Dates: 17 Juin 2003
+Purpose: end-of-line recognizer
+*/
+fsm
+(fsm-id "eol.lex",fsm-filename eol,fsm-namespace NS_eol
+,fsm-class Ceol
+,fsm-version "1.0",fsm-date "17 Juin 2003",fsm-debug "false"
+,fsm-comments "end of line recognizer")
+parallel-parser
+(
+ parallel-thread-function
+ TH_eol
+ ***
+ parallel-la-boundary
+ eolr // - "x0a" more efficient to use |.|
+ ***
+)
+@"c:/yacco2/compiler/grammars/yacco2_include_files.lex"
+
+rules{
+Reol AD AB(){
+ -> Rdelimiters {
+ rhs-op
+ CAbs_lr1_sym* sym = new T_eol;
+ sym->set_rc(*parser()->start_token(),*parser());
+ sym->set_line_no_and_pos_in_line(*parser()->start_token());
+ RSVP(sym)
+ ***
+ }
+}
+
+Rdelimiters AD AB(){
+ -> "x0a"
+ -> "x0d" |.|
+ -> "x0d" "x0a"
+}
+}// end of rules \ No newline at end of file
diff --git a/web/yacco2/diagrams/errsym.txt b/web/yacco2/diagrams/errsym.txt
new file mode 100644
index 0000000000..aaa4dc8c3a
--- /dev/null
+++ b/web/yacco2/diagrams/errsym.txt
@@ -0,0 +1,37 @@
+/*
+file: errsym.txt
+Why: error symbols vocabulary to parse.
+Note:
+error-symbols is shown for clarity.
+It is the keyword trigger that calls this grammar.
+Parsed is comments onwards.
+*/
+error-symbols
+// comments
+(file-name yacco2_err_symbols
+,name-space NS_yacco2_err_symbols)
+{
+"nested files exceeded"
+(sym-class Err_nested_files_excded {
+ user-declaration
+ public:
+ Err_nested_files_excded(yacco2::INT Nested_file_cnt,std::string& File_name);
+ yacco2::INT nested_cnt(){return nested_cnt_;};
+ std::string* file_exceeded(){return &file_exceeded_;};
+ private:
+ yacco2::INT nested_cnt_;
+ std::string file_exceeded_;
+ ***
+ user-implementation
+ Err_nested_files_excded::
+ Err_nested_files_excded(yacco2::INT Nested_cnt,std::string& File_name)
+ T_CTOR("nested files excded",T_Enum::T_Err_nested_files_excded_,0,false,false)
+ {nested_cnt_ = Nested_cnt;file_exceeded_ += File_name.c_str();}
+ ***
+ }
+)
+"no end-of-code" (sym-class Err_no_end_of_code)
+"no cmd-lne-data" (sym-class Err_no_cmd_lne_data)
+"no filename" (sym-class Err_no_filename)
+ ...
+}
diff --git a/web/yacco2/diagrams/fsm.txt b/web/yacco2/diagrams/fsm.txt
new file mode 100644
index 0000000000..34e0a5cd9b
--- /dev/null
+++ b/web/yacco2/diagrams/fsm.txt
@@ -0,0 +1,9 @@
+/*
+file: fsm.txt
+Why: example of a fsm construct to parse.
+*/
+fsm
+(fsm-id "eol.lex",fsm-filename eol,fsm-namespace NS_eol
+,fsm-class Ceol
+,fsm-version "1.0",fsm-date "17 Juin 2003",fsm-debug "false"
+,fsm-comments "end-of-line recognizer")
diff --git a/web/yacco2/diagrams/fsm_failed.txt b/web/yacco2/diagrams/fsm_failed.txt
new file mode 100644
index 0000000000..cdf6efaedf
--- /dev/null
+++ b/web/yacco2/diagrams/fsm_failed.txt
@@ -0,0 +1,39 @@
+fsm
+(fsm-id "reset_rewrite_opt.lex",fsm-filename reset_rewrite_opt
+,fsm-namespace NS_reset_rewrite_opt
+,fsm-class Creset_rewrite_opt {
+ user-prefix-declaration
+#include "integer_no.h"
+ ***
+/@
+Trap the failed option and return a bad option.
+This covers errors like the premature prefix -e where it should
+be -err. i could have been less specific to trap
+non first set options (-z) by defaulting to this
+facility but i'm teaching myself...
+As this thread is executed according to its first set ``-'',
+any failed attempt is a bad option.
+Please note the use of the |RSVP_FSM| macro.
+Its context is different than the normal Rule's
+use of |RSVP| macro.
+@/
+ failed
+ CAbs_lr1_sym* s = new LR1_err_bad_rsx_rms_opt;
+ s->set_rc(*parser()->current_token(),*parser()
+ ,"reset_rewrite_opt.lex",__LINE__);
+ RSVP_FSM(s);
+ return true;
+ ***
+}
+,fsm-version "1.1",fsm-date "18 Oct. 2003",fsm-debug "true"
+,fsm-comments "individual rsx/rms options")
+parallel-parser
+(
+ parallel-thread-function
+ TH_reset_rewrite_opt
+ ***
+ parallel-la-boundary
+ "/" + "'"
+ ***
+)
+
diff --git a/web/yacco2/diagrams/fsmclass.txt b/web/yacco2/diagrams/fsmclass.txt
new file mode 100644
index 0000000000..a96efee8a7
--- /dev/null
+++ b/web/yacco2/diagrams/fsmclass.txt
@@ -0,0 +1,45 @@
+/*
+file: fsmclass.txt
+Why: example of text to parse by fsm's class construct.
+*/
+fsm-class Crule_lhs_phrase{
+ user-prefix-declaration
+ using namespace NS_yacco2_terminals;
+#include "lint_balls.h"
+ ***
+ user-declaration
+ public:
+ void add_sdc_to_directive(yacco2::CAbs_lr1_sym* Dir,T_syntax_code* Sdc);
+ T_rule_lhs_phrase* rule_lhs_phrase_;
+ ***
+ user-implementation
+ void Crule_lhs_phrase::
+ add_sdc_to_directive(yacco2::CAbs_lr1_sym* Dir,T_syntax_code* Sdc){
+ using namespace NS_yacco2_T_enum;
+ using namespace NS_yacco2_terminals;
+ yacco2::INT eid = Dir->enumerated_id();
+ switch (eid){
+ case T_Enum::T_T_user_implementation_: {
+ T_user_implementation* k = (T_user_implementation*)Dir;
+ k->syntax_code(Sdc);
+ break;
+ }
+ default: {
+ CAbs_lr1_sym* sym = new LR1_err_improper_directive;
+ sym->set_rc(*Dir,*parser());
+ RSVP_FSM(sym);
+ parser()->set_stop_parse(true);
+ }
+ }
+ }
+ ***
+ op
+ rule_lhs_phrase_ = new T_rule_lhs_phrase;
+ rule_lhs_phrase_->set_rc(*parser()->start_token(),*parser());
+ AST* t = new AST(*rule_lhs_phrase_);
+ rule_lhs_phrase_->phrase_tree(t);
+ ***
+ constructor
+ rule_lhs_phrase_ = 0;
+ ***
+}
diff --git a/web/yacco2/diagrams/intro1.txt b/web/yacco2/diagrams/intro1.txt
new file mode 100644
index 0000000000..83d70535d4
--- /dev/null
+++ b/web/yacco2/diagrams/intro1.txt
@@ -0,0 +1 @@
+ T-enumeration (file-name yacco2_T_enumeration,name-space NS_yacco2_T_enum) {} \ No newline at end of file
diff --git a/web/yacco2/diagrams/intro2.txt b/web/yacco2/diagrams/intro2.txt
new file mode 100644
index 0000000000..14f3fdec19
--- /dev/null
+++ b/web/yacco2/diagrams/intro2.txt
@@ -0,0 +1,7 @@
+ T-alphabet
+ LR1_questionable_shift_operator
+ LR1_eog
+ LR1_eolr
+ ...
+ T_file_of_T_alphabet
+ end-T-alphabet
diff --git a/web/yacco2/diagrams/intro3.txt b/web/yacco2/diagrams/intro3.txt
new file mode 100644
index 0000000000..80bacdea1b
--- /dev/null
+++ b/web/yacco2/diagrams/intro3.txt
@@ -0,0 +1,30 @@
+/*
+ File: subrule_def.fsc
+ Date and Time: Fri Dec 7 16:28:47 2007
+*/
+transitive y
+grammar-name "subrule_def"
+name-space "NS_subrule_def"
+thread-name "TH_subrule_def"
+monolithic n
+file-name "subrule_def.fsc"
+no-of-T 567
+list-of-native-first-set-terminals 0
+end-list-of-native-first-set-terminals
+list-of-transitive-threads 1
+ NS_subrule_vector::TH_subrule_vector
+end-list-of-transitive-threads
+list-of-used-threads 10
+ NS_cweb_marker::TH_cweb_marker
+ NS_dbl_colon::TH_dbl_colon
+ NS_identifier::TH_identifier
+ NS_lint_balls::TH_lint_balls
+ NS_o2_sdc::TH_o2_sdc
+ NS_parallel_oper::TH_parallel_oper
+ NS_rhs_bnd::TH_rhs_bnd
+ NS_rhs_component::TH_rhs_component
+ NS_rtn_component::TH_rtn_component
+ NS_subrule_vector::TH_subrule_vector
+end-list-of-used-threads
+fsm-comments
+"Parse a subrule: into the valley of sin..."
diff --git a/web/yacco2/diagrams/intro4.txt b/web/yacco2/diagrams/intro4.txt
new file mode 100644
index 0000000000..161f39117a
--- /dev/null
+++ b/web/yacco2/diagrams/intro4.txt
@@ -0,0 +1,21 @@
+ file-of-T-alphabet "c:/yacco2/compiler/grammars/yacco2_T_enumeration.fsc"
+ emitfile "/yacco2/compiler/grammars/yacco2_fsc.cpp"
+ preamble
+ #include <yacco2.h>
+ #include <yacco2_T_enumeration.h>
+ #include <yacco2_err_symbols.h>
+ #include <yacco2_k_symbols.h>
+ #include <yacco2_terminals.h>
+ #include <yacco2_characters.h>
+ using namespace NS_yacco2_T_enum;
+ using namespace NS_yacco2_err_symbols;
+ using namespace NS_yacco2_k_symbols;
+ using namespace NS_yacco2_terminals;
+ using namespace NS_yacco2_characters;
+ end-preamble
+ "/yacco2/compiler/grammars/error_symbols_phrase.fsc"
+ "/yacco2/compiler/grammars/error_symbols_phrase_th.fsc"
+ "/yacco2/compiler/grammars/angled_string.fsc"
+ "/yacco2/compiler/grammars/bad_char_set.fsc"
+ "/yacco2/compiler/grammars/c_comments.fsc"
+ ...
diff --git a/web/yacco2/diagrams/linker.1 b/web/yacco2/diagrams/linker.1
new file mode 100644
index 0000000000..68c2a2c118
--- /dev/null
+++ b/web/yacco2/diagrams/linker.1
@@ -0,0 +1,93 @@
+%!PS
+%%BoundingBox: 0 -38 312 7
+%%HiResBoundingBox: 0 -37.50316 311.32541 6.9185
+%%Creator: MetaPost 0.993
+%%CreationDate: 2007.12.03:1258
+%%Pages: 1
+%*Font: cmr10 9.96265 9.96265 0c:800002002402012c800085d5fbe
+%%BeginProlog
+%%EndProlog
+%%Page: 1 1
+ 0 0 0 setrgbcolor
+0 0 moveto
+(In) cmr10 9.96265 fshow
+8.8557 0 moveto
+(teractiv) cmr10 9.96265 fshow
+42.0922 0 moveto
+(e:) cmr10 9.96265 fshow
+53.7153 0 moveto
+(\014le) cmr10 9.96265 fshow
+69.7663 0 moveto
+(name) cmr10 9.96265 fshow
+29.36221 -19.71066 moveto
+(Command) cmr10 9.96265 fshow
+77.5151 -19.71066 moveto
+(line) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 1 setlinecap 1 setlinejoin 10 setmiterlimit
+newpath 96.01251 -16.2514 moveto
+99.21054 -16.2514 lineto
+99.21054 3.45926 lineto
+96.01251 3.45926 lineto stroke
+newpath 99.21054 -6.39607 moveto
+112.00267 -6.39607 lineto stroke
+newpath 108.3071 -7.92686 moveto
+112.00267 -6.39607 lineto
+108.3071 -4.86528 lineto
+ closepath
+gsave fill grestore stroke
+115.00269 -8.88673 moveto
+(Holding) cmr10 9.96265 fshow
+152.36269 -8.88673 moveto
+(\014le) cmr10 9.96265 fshow
+103.50414 -23.74246 moveto
+(\\link) cmr10 9.96265 fshow
+124.53644 -23.74246 moveto
+(ercmd.tmp") cmr10 9.96265 fshow
+183.88495 -9.85533 moveto
+(Link) cmr10 9.96265 fshow
+203.39514 -9.85533 moveto
+(er) cmr10 9.96265 fshow
+newpath 180.88493 -12.85533 moveto
+214.72507 -12.85533 lineto
+214.72507 0.06319 lineto
+180.88493 0.06319 lineto
+ closepath stroke
+230.51721 -8.88673 moveto
+(\\First) cmr10 9.96265 fshow
+259.79631 -8.88673 moveto
+(set) cmr10 9.96265 fshow
+275.3491 -8.88673 moveto
+(\014le".cpp) cmr10 9.96265 fshow
+newpath 168.0928 -6.39607 moveto
+180.88493 -6.39607 lineto stroke
+newpath 177.18936 -7.92686 moveto
+180.88493 -6.39607 lineto
+177.18936 -4.86528 lineto
+ closepath
+gsave fill grestore stroke
+newpath 214.72507 -6.39607 moveto
+227.5172 -6.39607 lineto stroke
+newpath 223.82162 -7.92686 moveto
+227.5172 -6.39607 lineto
+223.82162 -4.86528 lineto
+ closepath
+gsave fill grestore stroke
+124.27505 -35.56596 moveto
+(Figure) cmr10 9.96265 fshow
+155.71275 -35.56596 moveto
+(1:) cmr10 9.96265 fshow
+167.88936 -35.56596 moveto
+(Link) cmr10 9.96265 fshow
+187.39955 -35.56596 moveto
+(er) cmr10 9.96265 fshow
+199.05035 -35.56596 moveto
+(run) cmr10 9.96265 fshow
+217.34285 -35.56596 moveto
+(en) cmr10 9.96265 fshow
+227.02875 -35.56596 moveto
+(vironmen) cmr10 9.96265 fshow
+267.46065 -35.56596 moveto
+(t) cmr10 9.96265 fshow
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/linker.2 b/web/yacco2/diagrams/linker.2
new file mode 100644
index 0000000000..5c48acd040
--- /dev/null
+++ b/web/yacco2/diagrams/linker.2
@@ -0,0 +1,219 @@
+%!PS
+%%BoundingBox: -56 -70 235 25
+%%HiResBoundingBox: -55.04314 -69.1019 234.30408 24.31938
+%%Creator: MetaPost 0.993
+%%CreationDate: 2007.12.03:1258
+%%Pages: 1
+%*Font: cmr10 9.96265 9.96265 20:8000f520000008004cc131
+%%BeginProlog
+%%EndProlog
+%%Page: 1 1
+ 0 0 0 setrgbcolor 0 0.5 dtransform truncate idtransform setlinewidth pop
+ [] 0 setdash 1 setlinejoin 10 setmiterlimit
+newpath 0 0 moveto
+230.41406 0 lineto
+232.52551 -0.33443 234.34871 1.48877 234.01428 3.60022 curveto
+233.73373 5.37152 232.03331 6.3754 230.41406 7.20044 curveto
+228.79482 8.02548 227.09439 9.02936 226.81384 10.80066 curveto
+226.47942 12.91211 228.30261 14.7353 230.41406 14.40088 curveto
+0 14.40088 lineto
+ closepath stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth 1 setlinecap
+newpath 7.20044 0 moveto
+7.20044 1.44006 lineto stroke
+newpath 14.40088 0 moveto
+14.40088 1.44006 lineto stroke
+newpath 21.60132 0 moveto
+21.60132 1.44006 lineto stroke
+newpath 28.80176 0 moveto
+28.80176 1.44006 lineto stroke
+newpath 36.0022 0 moveto
+36.0022 1.44006 lineto stroke
+newpath 43.20264 0 moveto
+43.20264 1.44006 lineto stroke
+newpath 50.40308 0 moveto
+50.40308 1.44006 lineto stroke
+newpath 57.60352 0 moveto
+57.60352 1.44006 lineto stroke
+newpath 64.80396 0 moveto
+64.80396 1.44006 lineto stroke
+newpath 72.0044 0 moveto
+72.0044 1.44006 lineto stroke
+newpath 79.20483 0 moveto
+79.20483 1.44006 lineto stroke
+newpath 86.40527 0 moveto
+86.40527 1.44006 lineto stroke
+newpath 93.60571 0 moveto
+93.60571 1.44006 lineto stroke
+newpath 100.80615 0 moveto
+100.80615 1.44006 lineto stroke
+newpath 108.00659 0 moveto
+108.00659 1.44006 lineto stroke
+newpath 115.20703 0 moveto
+115.20703 1.44006 lineto stroke
+newpath 122.40747 0 moveto
+122.40747 1.44006 lineto stroke
+newpath 129.60791 0 moveto
+129.60791 1.44006 lineto stroke
+newpath 136.80835 0 moveto
+136.80835 1.44006 lineto stroke
+newpath 144.00879 0 moveto
+144.00879 1.44006 lineto stroke
+newpath 151.20923 0 moveto
+151.20923 1.44006 lineto stroke
+newpath 158.40967 0 moveto
+158.40967 1.44006 lineto stroke
+newpath 165.6101 0 moveto
+165.6101 1.44006 lineto stroke
+newpath 172.81055 0 moveto
+172.81055 1.44006 lineto stroke
+newpath 180.01099 0 moveto
+180.01099 1.44006 lineto stroke
+newpath 187.21143 0 moveto
+187.21143 1.44006 lineto stroke
+newpath 194.41187 0 moveto
+194.41187 1.44006 lineto stroke
+newpath 201.6123 0 moveto
+201.6123 1.44006 lineto stroke
+newpath 208.81274 0 moveto
+208.81274 1.44006 lineto stroke
+newpath 216.01318 0 moveto
+216.01318 1.44006 lineto stroke
+newpath 223.21362 0 moveto
+223.21362 1.44006 lineto stroke
+1.10954 3.99025 moveto
+(1) cmr10 9.96265 fshow
+8.30998 3.99025 moveto
+(0) cmr10 9.96265 fshow
+15.51042 3.99025 moveto
+(0) cmr10 9.96265 fshow
+22.71086 3.99025 moveto
+(0) cmr10 9.96265 fshow
+29.9113 3.99025 moveto
+(0) cmr10 9.96265 fshow
+37.11174 3.99025 moveto
+(0) cmr10 9.96265 fshow
+44.31218 3.99025 moveto
+(0) cmr10 9.96265 fshow
+51.51262 3.99025 moveto
+(0) cmr10 9.96265 fshow
+58.71306 3.99025 moveto
+(1) cmr10 9.96265 fshow
+65.9135 3.99025 moveto
+(0) cmr10 9.96265 fshow
+73.11394 3.99025 moveto
+(0) cmr10 9.96265 fshow
+80.31438 3.99025 moveto
+(0) cmr10 9.96265 fshow
+87.51482 3.99025 moveto
+(0) cmr10 9.96265 fshow
+94.71526 3.99025 moveto
+(0) cmr10 9.96265 fshow
+101.9157 3.99025 moveto
+(0) cmr10 9.96265 fshow
+109.11613 3.99025 moveto
+(0) cmr10 9.96265 fshow
+116.31657 3.99025 moveto
+(1) cmr10 9.96265 fshow
+123.51701 3.99025 moveto
+(0) cmr10 9.96265 fshow
+130.71745 3.99025 moveto
+(0) cmr10 9.96265 fshow
+137.9179 3.99025 moveto
+(0) cmr10 9.96265 fshow
+145.11833 3.99025 moveto
+(0) cmr10 9.96265 fshow
+152.31877 3.99025 moveto
+(0) cmr10 9.96265 fshow
+159.51921 3.99025 moveto
+(0) cmr10 9.96265 fshow
+166.71965 3.99025 moveto
+(0) cmr10 9.96265 fshow
+173.92009 3.99025 moveto
+(1) cmr10 9.96265 fshow
+181.12053 3.99025 moveto
+(0) cmr10 9.96265 fshow
+188.32097 3.99025 moveto
+(0) cmr10 9.96265 fshow
+195.52141 3.99025 moveto
+(0) cmr10 9.96265 fshow
+202.72185 3.99025 moveto
+(0) cmr10 9.96265 fshow
+209.92229 3.99025 moveto
+(0) cmr10 9.96265 fshow
+217.12273 3.99025 moveto
+(0) cmr10 9.96265 fshow
+224.32317 3.99025 moveto
+(1) cmr10 9.96265 fshow
+-55.04314 -9.0185 moveto
+(Thread\040ids:) cmr10 9.96265 fshow
+-31.5629 -19.42038 moveto
+(31) cmr10 9.96265 fshow
+-31.5629 -31.84076 moveto
+(23) cmr10 9.96265 fshow
+-31.5629 -44.26114 moveto
+(15) cmr10 9.96265 fshow
+-29.07224 -56.68152 moveto
+(7) cmr10 9.96265 fshow
+-29.07224 -69.1019 moveto
+(0) cmr10 9.96265 fshow
+93.32547 17.40088 moveto
+(word\0400) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath -18.60022 -16.21019 moveto
+3.60022 -16.21019 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 3.60022 -16.21019 moveto
+3.60022 0 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 5.13103 -3.6956 moveto
+3.60022 0 lineto
+2.06941 -3.6956 lineto
+ closepath
+gsave fill grestore stroke
+newpath -18.60022 -28.63057 moveto
+61.20374 -28.63057 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 61.20374 -28.63057 moveto
+61.20374 0 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 62.73448 -3.69545 moveto
+61.20374 0 lineto
+59.67299 -3.69545 lineto
+ closepath
+gsave fill grestore stroke
+newpath -18.60022 -41.05095 moveto
+118.80725 -41.05095 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 118.80725 -41.05095 moveto
+118.80725 0 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 120.33806 -3.6956 moveto
+118.80725 0 lineto
+117.27644 -3.6956 lineto
+ closepath
+gsave fill grestore stroke
+newpath -18.60022 -53.47133 moveto
+176.41077 -53.47133 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 176.41077 -53.47133 moveto
+176.41077 0 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 177.94168 -3.69586 moveto
+176.41077 0 lineto
+174.87985 -3.69586 lineto
+ closepath
+gsave fill grestore stroke
+newpath -18.60022 -65.89171 moveto
+226.81384 -65.89171 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 226.81384 -65.89171 moveto
+226.81384 0 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 228.34444 -3.6951 moveto
+226.81384 0 lineto
+225.28325 -3.6951 lineto
+ closepath
+gsave fill grestore stroke
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/linker.3 b/web/yacco2/diagrams/linker.3
new file mode 100644
index 0000000000..22000c2369
--- /dev/null
+++ b/web/yacco2/diagrams/linker.3
@@ -0,0 +1,11 @@
+%!PS
+%%BoundingBox: 0 0 0 0
+%%HiResBoundingBox: 0 0 0 0
+%%Creator: MetaPost 0.993
+%%CreationDate: 2007.12.03:1258
+%%Pages: 1
+%%BeginProlog
+%%EndProlog
+%%Page: 1 1
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/linker.mp b/web/yacco2/diagrams/linker.mp
new file mode 100644
index 0000000000..96f52d47ce
--- /dev/null
+++ b/web/yacco2/diagrams/linker.mp
@@ -0,0 +1,117 @@
+% file: linker.mp
+input boxes
+%tracingall;
+
+numeric u;
+u=1cc;
+beginfig(1);
+boxjoin(a.se=b.ne);
+numeric ff;
+ff := defaultdy;
+defaultdy:=.5u;
+boxit.int(btex Interactive: file name etex);
+boxit.cmd(btex Command line etex);
+boxjoin(a.se=b.ne);
+drawunboxed(int,cmd);
+
+pair c,d,e,f;
+c:=cmd.e+(.25u,0);
+d:=int.e+(.25u,0);
+e:=.5[c,d];
+f:=e+(1u,0);
+draw cmd.e--c--d--int.e;
+drawarrow e..f;
+defaultdy:= ff;
+
+show f;
+boxjoin();
+
+boxjoin(tmp.nw=holdr.sw;tmp.ne=holdr.se);
+boxit.holdr(btex Holding file etex);
+boxit.tmp(btex ``linkercmd.tmp'' etex);
+boxit.linkr(btex Linker etex);
+boxit.fsc(btex ``First set file''.cpp etex);
+holdr.w=f;
+holdr.e = linkr.w-(1u,0);
+linkr.e = fsc.w-(1u,0);
+
+drawunboxed(holdr);
+drawunboxed(tmp);
+drawboxed(linkr);
+drawunboxed(fsc);
+drawarrow holdr.e--linkr.w;
+drawarrow linkr.e--fsc.w;
+
+
+label.bot(btex Figure 1: Linker run environment etex,linkr.s-(0,1u));
+endfig;
+
+% bit maps
+beginfig(2);
+u:=.1in;
+picture c;
+for i=1 upto 1:
+ x1:= (i-1)*32u;
+ x2:= i*32u;
+ draw (x1,0)--(x2,0)..(x2+.5u,.5u)..(x2,1u)..(x2-.5u,1.5u)..(x2,2u)--(x1,2u)--cycle;
+ for j=1 upto 31:
+ draw (x1+j*u,0)--(x1+j*u,.2u);
+ endfor
+endfor
+% fill in the map contents
+for i=1 upto 32:
+ if (
+ (i = 1) or (i = 9) or
+ (i = 17) or (i = 25) or
+ (i = 32)
+ ):
+ label("1",(x1+i*u-.5u,1u));
+ else:
+ label("0",(x1+i*u-.5u,1u));
+ fi
+endfor
+label.llft("Thread ids:",(x1-.5u,0));
+
+boxjoin(a.sw=b.nw;a.se=b.ne);
+boxit.aa("31");boxit.ba("23");boxit.ca("15");boxit.da("7");boxit.ea("0");
+aa.ne = (x1-.5u,0) -(15bp,10bp);
+drawunboxed(aa,ba,ca,da,ea);
+label.top("word 0",(x1+15*u,2u));
+numeric dlt;
+pair mp,bp;
+bp := (x1+.5u,0);
+dlt:= abs ((x1 + .5u) - xpart aa.e);
+mp:=aa.e+(dlt,0);
+draw aa.e -- mp;
+drawarrow mp--(x1+.5u,0);
+
+bp := (x1+.5u+8u,0);
+dlt:= abs ((x1+.5u+8u) - xpart ba.e);
+mp:=ba.e+(dlt,0);
+draw ba.e -- mp;
+drawarrow mp--bp;
+
+bp := (x1+.5u+16u,0);
+dlt:= abs ((x1+.5u+16u) - xpart ca.e);
+mp:=ca.e+(dlt,0);
+draw ca.e -- mp;
+drawarrow mp--bp;
+
+bp := (x1+.5u+24u,0);
+dlt:= abs ((x1+.5u+24u) - xpart da.e);
+mp:=da.e+(dlt,0);
+draw da.e -- mp;
+drawarrow mp--bp;
+
+bp := (x1+.5u+31u,0);
+dlt:= abs ((x1+.5u+31u) - xpart ea.e);
+mp:=ea.e+(dlt,0);
+draw ea.e -- mp;
+drawarrow mp--bp;
+
+endfig;
+
+% Tables
+beginfig(3);
+endfig;
+end;
diff --git a/web/yacco2/diagrams/lrksym.txt b/web/yacco2/diagrams/lrksym.txt
new file mode 100644
index 0000000000..3400881a98
--- /dev/null
+++ b/web/yacco2/diagrams/lrksym.txt
@@ -0,0 +1,41 @@
+/*
+file: lrksym.txt
+Why: LR k symbols vocabulary to parse.
+Note: lr1-constant-symbols is shown for clarity. It is the keyword trigger
+ that calls this grammar. Parsed is comments onwards.
+*/
+lr1-constant-symbols
+// comments
+(file-name yacco2_k_symbols
+,name-space NS_yacco2_k_symbols){
+ eog
+ /@
+ Used to indicate an end-of-grammar.
+ @/
+ (sym-class LR1_eog {
+ user-declaration
+ LR1_eog();
+ ***
+ user-implementation
+ LR1_eog::LR1_eog()
+ T_CTOR("eog",T_LR1_eog_,0,false,false){}
+ LR1_eog LR1_eog__;
+ yacco2::CAbs_lr1_sym* NS_yacco2_k_symbols::PTR_LR1_eog__ = &LR1_eog__;
+ ***
+ }
+ )
+ ....
+ "|t|" AD AB(sym-class LR1_fset_transience_operator)
+
+ /@
+ As they are constants, they are defined globally
+ to save space / overhead in the typical new create / delete
+ cycle of terminals. Thar's recycling going on in this green space.
+ @/
+ lrk-sufx
+ extern yacco2::CAbs_lr1_sym* PTR_LR1_parallel_operator__;
+ ....
+ extern yacco2::CAbs_lr1_sym* PTR_LR1_eolr__;
+ ***
+}
+
diff --git a/web/yacco2/diagrams/mpxerr.tex b/web/yacco2/diagrams/mpxerr.tex
new file mode 100644
index 0000000000..bccf03277a
--- /dev/null
+++ b/web/yacco2/diagrams/mpxerr.tex
@@ -0,0 +1,35 @@
+\gdef\mpxshipout{\shipout\hbox\bgroup
+ \setbox0=\hbox\bgroup}
+\gdef\stopmpxshipout{\egroup \dimen0=\ht0 \advance\dimen0\dp0
+ \dimen1=\ht0 \dimen2=\dp0
+ \setbox0=\hbox\bgroup
+ \box0
+ \ifnum\dimen0>0 \vrule width1sp height\dimen1 depth\dimen2
+ \else \vrule width1sp height1sp depth0sp\relax
+ \fi\egroup
+ \ht0=0pt \dp0=0pt \box0 \egroup}
+\mpxshipout% line 10 doc_generation.mp
+xxx.mp output from \strut$O_{2}$%
+\stopmpxshipout
+\mpxshipout% line 11 doc_generation.mp
+mpost%
+\stopmpxshipout
+\mpxshipout% line 12 doc_generation.mp
+$\sum$ xxx railroad diagrams%
+\stopmpxshipout
+\mpxshipout% line 13 doc_generation.mp
+\strut$O_{2}xxx.w%
+\stopmpxshipout
+\mpxshipout% line 14 doc_generation.mp
+cweave%
+\stopmpxshipout
+\mpxshipout% line 15 doc_generation.mp
+\strut$O_{2}$xxx.tex%
+\stopmpxshipout
+\mpxshipout% line 16 doc_generation.mp
+pdftex%
+\stopmpxshipout
+\mpxshipout% line 17 doc_generation.mp
+\strut$O_{2}$xxx.pdf file%
+\stopmpxshipout
+\end{document}
diff --git a/web/yacco2/diagrams/o2_Toverview.1 b/web/yacco2/diagrams/o2_Toverview.1
new file mode 100644
index 0000000000..ec019d82fb
--- /dev/null
+++ b/web/yacco2/diagrams/o2_Toverview.1
@@ -0,0 +1,130 @@
+%!PS
+%%BoundingBox: -4 -4 434 50
+%%HiResBoundingBox: -3.25 -3.25 433.17148 49.38104
+%%Creator: MetaPost 1.005
+%%CreationDate: 2009.11.10:0847
+%%Pages: 1
+%*Font: cmr10 9.96265 9.96265 2d:8000000001000e9be7e8
+%%BeginProlog
+%%EndProlog
+%%Page: 1 1
+ 0 0 0 setrgbcolor
+0 0 moveto
+(en) cmr10 9.96265 fshow
+9.6859 0 moveto
+(umeration) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 1 setlinejoin 10 setmiterlimit
+newpath -3 -3 moveto
+56.9921 -3 lineto
+56.9921 9.6536 lineto
+-3 9.6536 lineto
+ closepath stroke
+85.57635 -0.13246 moveto
+(lrk) cmr10 9.96265 fshow
+100.82475 -0.13246 moveto
+(meta-terminal) cmr10 9.96265 fshow
+165.60976 -0.13246 moveto
+(constan) cmr10 9.96265 fshow
+198.59715 -0.13246 moveto
+(ts) cmr10 9.96265 fshow
+newpath 82.57635 -3 moveto
+209.40128 -3 lineto
+209.40128 9.6536 lineto
+82.57635 9.6536 lineto
+ closepath stroke
+237.98553 -0.13246 moveto
+(ra) cmr10 9.96265 fshow
+246.59213 -0.13246 moveto
+(w) cmr10 9.96265 fshow
+257.10823 -0.13246 moveto
+(c) cmr10 9.96265 fshow
+261.25934 -0.13246 moveto
+(haracters) cmr10 9.96265 fshow
+newpath 234.98553 -3 moveto
+304.22073 -3 lineto
+304.22073 9.6536 lineto
+234.98553 9.6536 lineto
+ closepath stroke
+332.805 -0.13246 moveto
+(terminals) cmr10 9.96265 fshow
+newpath 329.805 -3 moveto
+376.2922 -3 lineto
+376.2922 9.6536 lineto
+329.805 9.6536 lineto
+ closepath stroke
+404.87646 1.18204 moveto
+(errors) cmr10 9.96265 fshow
+newpath 401.87646 -3 moveto
+432.92148 -3 lineto
+432.92148 9.6536 lineto
+401.87646 9.6536 lineto
+ closepath stroke
+184.43623 39.21252 moveto
+(T) cmr10 9.96265 fshow
+190.80124 39.21252 moveto
+(erminal) cmr10 9.96265 fshow
+226.80524 39.21252 moveto
+(v) cmr10 9.96265 fshow
+231.78653 39.21252 moveto
+(o) cmr10 9.96265 fshow
+237.04463 39.21252 moveto
+(cabulary) cmr10 9.96265 fshow
+newpath 181.43623 34.27533 moveto
+277.43233 34.27533 lineto
+277.43233 49.13104 lineto
+181.43623 49.13104 lineto
+ closepath stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth 1 setlinecap
+newpath 229.43428 34.27533 moveto
+229.43428 22.51498 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 26.99605 22.51498 moveto
+417.39897 22.51498 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 26.99605 22.51498 moveto
+26.99605 9.6536 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 25.46532 13.34903 moveto
+26.99605 9.6536 lineto
+28.52678 13.34903 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 145.98882 22.51498 moveto
+145.98882 9.6536 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 144.45808 13.34903 moveto
+145.98882 9.6536 lineto
+147.51955 13.34903 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 269.60313 22.51498 moveto
+269.60313 9.6536 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 268.0724 13.34903 moveto
+269.60313 9.6536 lineto
+271.13387 13.34903 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 353.0486 22.51498 moveto
+353.0486 9.6536 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 351.51787 13.34903 moveto
+353.0486 9.6536 lineto
+354.57933 13.34903 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 417.39897 22.51498 moveto
+417.39897 9.6536 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 415.86824 13.34903 moveto
+417.39897 9.6536 lineto
+418.9297 13.34903 lineto
+ closepath
+gsave fill grestore stroke
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/o2_Toverview.mp b/web/yacco2/diagrams/o2_Toverview.mp
new file mode 100644
index 0000000000..1cba6f6435
--- /dev/null
+++ b/web/yacco2/diagrams/o2_Toverview.mp
@@ -0,0 +1,45 @@
+% file: o2_Toverview.mp
+% enumeration and the 4 T classes
+input boxes
+u:=1cc;
+pair sep,fldsep;
+sep := (0,3u);
+fldsep := (2u,0);
+beginfig(1);
+boxit.tclass(btex Terminal vocabulary etex); % enumeration
+boxit.enum(btex enumeration etex); % enumeration
+boxit.lr(btex lrk meta-terminal constants etex); % lrk
+boxit.rc(btex raw characters etex); % raw characters
+boxit.err(btex errors etex); % error tokens
+boxit.t(btex terminals etex); % basic terminal tokens
+
+% place the boxes
+enum.e + fldsep = lr.w;
+lr.e + fldsep = rc.w;
+rc.e + fldsep = t.w;
+t.e + fldsep = err.w;
+ypart enum.n = ypart lr.n = ypart rc.n = ypart t.n = ypart err.n;
+
+
+
+
+drawboxed(enum);
+drawboxed(lr);
+drawboxed(rc);
+drawboxed(t);
+drawboxed(err);
+
+.5[tclass.e,tclass.w] - sep = .5[enum.e,err.w];
+drawboxed(tclass);
+numeric a;
+a := ypart tclass.c - ypart .5sep;
+
+draw tclass.s -- (xpart tclass.s, a);
+draw (xpart enum.n,a) -- (xpart err.n,a); % horozontal line
+drawarrow (xpart enum.n,a) -- enum.n;
+drawarrow (xpart lr.n,a) -- lr.n;
+drawarrow (xpart rc.n,a) -- rc.n;
+drawarrow (xpart t.n,a) -- t.n;
+drawarrow (xpart err.n,a) -- err.n;
+endfig;
+end; \ No newline at end of file
diff --git a/web/yacco2/diagrams/o2_overview.1 b/web/yacco2/diagrams/o2_overview.1
new file mode 100644
index 0000000000..0cc2e2270b
--- /dev/null
+++ b/web/yacco2/diagrams/o2_overview.1
@@ -0,0 +1,368 @@
+%!PS
+%%BoundingBox: -4 -245 426 10
+%%HiResBoundingBox: -3.25 -244.11285 425.9974 9.9036
+%%Creator: MetaPost 0.993
+%%CreationDate: 2008.05.07:1511
+%%Pages: 1
+%*Font: cmr10 9.96265 9.96265 0c:80000010e4000500008147fdfbfc
+%*Font: cmex10 9.96265 9.96265 50:8
+%*Font: cmmi10 9.96265 9.96265 4f:8
+%*Font: cmr7 6.97385 6.97385 32:8
+%%BeginProlog
+%%EndProlog
+%%Page: 1 1
+ 0 0 0 setrgbcolor
+0 0 moveto
+(options) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+ [0 5 ] 2.5 setdash 1 setlinecap 1 setlinejoin 10 setmiterlimit
+newpath -3 -4.9372 moveto
+34.60382 -4.9372 lineto
+34.60382 9.6536 lineto
+-3 9.6536 lineto
+-3 -4.9372 lineto stroke
+75.98022 7.33955 moveto
+(P) cmex10 9.96265 fshow
+89.81723 -0.13245 moveto
+(xxx.lex) cmr10 9.96265 fshow
+124.13312 -0.13245 moveto
+(grammars) cmr10 9.96265 fshow
+ [] 0 setdash
+newpath 72.98021 -4.9372 moveto
+170.41534 -4.9372 lineto
+170.41534 9.6536 lineto
+72.98021 9.6536 lineto
+ closepath stroke
+211.79175 -0.13246 moveto
+(T) cmr10 9.96265 fshow
+218.15675 -0.13246 moveto
+(erminal) cmr10 9.96265 fshow
+254.16075 -0.13246 moveto
+(v) cmr10 9.96265 fshow
+259.14204 -0.13246 moveto
+(o) cmr10 9.96265 fshow
+264.40015 -0.13246 moveto
+(cabulary) cmr10 9.96265 fshow
+newpath 208.79173 -4.9372 moveto
+304.78784 -4.9372 lineto
+304.78784 9.6536 lineto
+208.79173 9.6536 lineto
+ closepath stroke
+115.66348 -38.50885 moveto
+(O) cmmi10 9.96265 fshow
+123.26279 -40.00325 moveto
+(2) cmr7 6.97385 fshow
+newpath 112.66348 -44.99574 moveto
+130.73209 -44.99574 lineto
+130.73209 -27.04063 lineto
+112.66348 -27.04063 lineto
+ closepath stroke
+172.10849 -38.50885 moveto
+(xxx) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop 0 setlinecap
+newpath 188.48048 -38.30965 moveto
+191.46928 -38.30965 lineto stroke
+191.46928 -38.50885 moveto
+(errors.log) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 169.10847 -43.44604 moveto
+235.01181 -43.44604 lineto
+235.01181 -28.59033 lineto
+169.10847 -28.59033 lineto
+ closepath stroke
+2.02997 -38.50885 moveto
+(xxx) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop
+newpath 18.40196 -38.30965 moveto
+21.39076 -38.30965 lineto stroke
+21.39076 -38.50885 moveto
+(tracings.log) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath -0.97003 -43.44604 moveto
+74.2871 -43.44604 lineto
+74.2871 -28.59033 lineto
+-0.97003 -28.59033 lineto
+ closepath stroke
+4.75357 -76.88522 moveto
+(xxx[,sym,tbl].cpp) cmr10 9.96265 fshow
+82.84987 -76.88522 moveto
+(\014les) cmr10 9.96265 fshow
+newpath 1.75357 -82.37593 moveto
+102.50958 -82.37593 lineto
+102.50958 -66.41322 lineto
+1.75357 -66.41322 lineto
+ closepath stroke
+143.88599 -76.88524 moveto
+(T-Alphab) cmr10 9.96265 fshow
+186.50409 -76.88524 moveto
+(et) cmr10 9.96265 fshow
+198.12709 -76.88524 moveto
+(and) cmr10 9.96265 fshow
+217.499 -76.88524 moveto
+(xxx.fsc) cmr10 9.96265 fshow
+250.76318 -76.88524 moveto
+(\014les) cmr10 9.96265 fshow
+newpath 140.88597 -82.37593 moveto
+270.423 -82.37593 lineto
+270.423 -66.41322 lineto
+140.88597 -66.41322 lineto
+ closepath stroke
+311.79941 -76.88524 moveto
+(yyy) cmr10 9.96265 fshow
+326.74341 -76.88524 moveto
+(.fsc) cmr10 9.96265 fshow
+344.23341 -76.88524 moveto
+(O) cmmi10 9.96265 fshow
+351.8327 -78.37964 moveto
+(2) cmr7 6.97385 fshow
+356.302 -76.88524 moveto
+(link) cmr10 9.96265 fshow
+372.35301 -76.88524 moveto
+(er) cmr10 9.96265 fshow
+384.00381 -76.88524 moveto
+(mak) cmr10 9.96265 fshow
+402.2687 -76.88524 moveto
+(e) cmr10 9.96265 fshow
+410.01741 -76.88524 moveto
+(\014le) cmr10 9.96265 fshow
+newpath 308.7994 -82.37593 moveto
+425.7474 -82.37593 lineto
+425.7474 -66.41322 lineto
+308.7994 -66.41322 lineto
+ closepath stroke
+349.04866 -115.26163 moveto
+(O) cmmi10 9.96265 fshow
+356.64796 -116.75603 moveto
+(2) cmr7 6.97385 fshow
+361.11726 -115.26163 moveto
+(link) cmr10 9.96265 fshow
+377.16826 -115.26163 moveto
+(er) cmr10 9.96265 fshow
+newpath 346.04866 -121.74852 moveto
+388.49815 -121.74852 lineto
+388.49815 -103.79341 lineto
+346.04866 -103.79341 lineto
+ closepath stroke
+334.63051 -153.63802 moveto
+(O) cmmi10 9.96265 fshow
+342.22981 -155.13242 moveto
+(2) cmr7 6.97385 fshow
+346.69911 -153.63802 moveto
+(link) cmr10 9.96265 fshow
+362.7501 -153.63802 moveto
+(er) cmr10 9.96265 fshow
+374.40091 -153.63802 moveto
+(tables) cmr10 9.96265 fshow
+newpath 331.63051 -160.12491 moveto
+402.9163 -160.12491 lineto
+402.9163 -142.1698 lineto
+331.63051 -142.1698 lineto
+ closepath stroke
+107.36522 -192.92764 moveto
+(CC) cmr10 9.96265 fshow
+newpath 104.36522 -195.92764 moveto
+124.7557 -195.92764 lineto
+124.7557 -183.11984 lineto
+104.36522 -183.11984 lineto
+ closepath stroke
+23.0412 -230.90015 moveto
+(P) cmex10 9.96265 fshow
+36.8782 -238.37215 moveto
+(dispatc) cmr10 9.96265 fshow
+67.6518 -238.37215 moveto
+(h) cmr10 9.96265 fshow
+76.50749 -238.37215 moveto
+(threads) cmr10 9.96265 fshow
+112.0133 -238.37215 moveto
+(table,) cmr10 9.96265 fshow
+139.6873 -238.37215 moveto
+(grammars's) cmr10 9.96265 fshow
+192.9875 -238.37215 moveto
+(lr1) cmr10 9.96265 fshow
+207.9592 -238.37215 moveto
+(tables,) cmr10 9.96265 fshow
+239.563 -238.37215 moveto
+(eac) cmr10 9.96265 fshow
+253.1232 -238.37215 moveto
+(h) cmr10 9.96265 fshow
+261.9789 -238.37215 moveto
+(fsm) cmr10 9.96265 fshow
+280.5759 -238.37215 moveto
+(and) cmr10 9.96265 fshow
+299.9477 -238.37215 moveto
+(rhs) cmr10 9.96265 fshow
+316.6352 -238.37215 moveto
+(pro) cmr10 9.96265 fshow
+331.3301 -238.37215 moveto
+(cedure) cmr10 9.96265 fshow
+newpath 20.0412 -243.86285 moveto
+362.58528 -243.86285 lineto
+362.58528 -227.90013 lineto
+20.0412 -227.90013 lineto
+ closepath stroke
+107.77136 -107.78961 moveto
+(P) cmex10 9.96265 fshow
+121.60837 -115.26161 moveto
+(do) cmr10 9.96265 fshow
+132.40126 -115.26161 moveto
+(c.) cmr10 9.96265 fshow
+144.02437 -115.26161 moveto
+(\014les) cmr10 9.96265 fshow
+164.00507 -115.26161 moveto
+(of) cmr10 9.96265 fshow
+175.35136 -115.26161 moveto
+(xxx.[mp,w]) cmr10 9.96265 fshow
+226.54846 -115.26161 moveto
+(for) cmr10 9.96265 fshow
+241.79686 -115.26161 moveto
+(mp) cmr10 9.96265 fshow
+255.91066 -115.26161 moveto
+(ost,) cmr10 9.96265 fshow
+274.78436 -115.26161 moveto
+(cw) cmr10 9.96265 fshow
+286.13066 -115.26161 moveto
+(ea) cmr10 9.96265 fshow
+295.26306 -115.26161 moveto
+(v) cmr10 9.96265 fshow
+300.24446 -115.26161 moveto
+(e) cmr10 9.96265 fshow
+newpath 104.77136 -121.74852 moveto
+307.67227 -121.74852 lineto
+307.67227 -103.79341 lineto
+104.77136 -103.79341 lineto
+ closepath stroke
+ [0 5 ] 2.5 setdash 1 setlinecap
+newpath 34.60382 -4.9372 moveto
+112.66348 -27.04063 lineto stroke
+ [] 0 setdash
+newpath 108.69101 -27.50664 moveto
+112.66348 -27.04063 lineto
+109.52505 -24.56114 lineto
+ closepath
+gsave fill grestore stroke
+ [0 5 ] 2.5 setdash
+newpath 208.79173 2.3582 moveto
+170.41534 2.3582 lineto stroke
+ [] 0 setdash
+newpath 174.11092 3.88899 moveto
+170.41534 2.3582 lineto
+174.11092 0.82741 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 121.69778 -4.9372 moveto
+121.69778 -27.04063 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 120.167 -23.34511 moveto
+121.69778 -27.04063 lineto
+123.22856 -23.34511 lineto
+ closepath
+gsave fill grestore stroke
+ [0 10 ] 5 setdash
+newpath 130.73209 -36.01819 moveto
+169.10847 -36.01819 lineto stroke
+ [] 0 setdash
+newpath 165.4129 -37.54898 moveto
+169.10847 -36.01819 lineto
+165.4129 -34.4874 lineto
+ closepath
+gsave fill grestore stroke
+ [0 10 ] 5 setdash
+newpath 112.66348 -36.01819 moveto
+74.2871 -36.01819 lineto stroke
+ [] 0 setdash
+newpath 77.98267 -34.4874 moveto
+74.2871 -36.01819 lineto
+77.98267 -37.54898 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 121.69778 -44.99574 moveto
+121.69778 -55.20639 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 121.69778 -55.20639 moveto
+52.13158 -55.20639 lineto stroke
+newpath 121.69778 -55.20639 moveto
+205.6545 -55.20639 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 52.13158 -55.20639 moveto
+52.13158 -66.41322 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 50.60085 -62.71779 moveto
+52.13158 -66.41322 lineto
+53.66231 -62.71779 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 205.6545 -55.20639 moveto
+205.6545 -66.41322 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 204.12376 -62.71779 moveto
+205.6545 -66.41322 lineto
+207.18523 -62.71779 lineto
+ closepath
+gsave fill grestore stroke
+ [0 5 ] 2.5 setdash
+newpath 270.423 -74.39458 moveto
+308.7994 -74.39458 lineto stroke
+ [] 0 setdash
+newpath 305.10382 -75.92537 moveto
+308.7994 -74.39458 lineto
+305.10382 -72.86378 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 367.2734 -82.37593 moveto
+367.2734 -103.79341 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 365.74261 -100.09784 moveto
+367.2734 -103.79341 lineto
+368.8042 -100.09784 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 367.2734 -121.74852 moveto
+367.2734 -142.1698 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 365.74261 -138.47423 moveto
+367.2734 -142.1698 lineto
+368.8042 -138.47423 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 114.56047 -195.92764 moveto
+114.56047 -227.90013 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 113.02971 -224.20465 moveto
+114.56047 -227.90013 lineto
+116.09123 -224.20465 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 52.13158 -82.37593 moveto
+52.13158 -170.33554 lineto stroke
+newpath 367.2734 -160.12491 moveto
+367.2734 -170.33554 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 52.13158 -170.33554 moveto
+367.2734 -170.33554 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 114.56047 -170.33554 moveto
+114.56047 -183.11984 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 113.02971 -179.42436 moveto
+114.56047 -183.11984 lineto
+116.09123 -179.42436 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 121.69778 -44.99574 moveto
+121.69778 -103.79341 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 120.16718 -100.09827 moveto
+121.69778 -103.79341 lineto
+123.2284 -100.09827 lineto
+ closepath
+gsave fill grestore stroke
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/o2_overview.mp b/web/yacco2/diagrams/o2_overview.mp
new file mode 100644
index 0000000000..a3a7c7213f
--- /dev/null
+++ b/web/yacco2/diagrams/o2_overview.mp
@@ -0,0 +1,105 @@
+% file: o2_overview.mp
+% flow control of O2, O2linker, and c++
+input boxes
+u:=1cc;
+pair sep,fldsep;
+sep := (0,3u);
+fldsep := (3u,0);
+beginfig(1);
+
+boxit.ipoptions(btex options etex); % compile options
+boxit.ipgrammars(btex $\sum$ xxx.lex grammars etex); % input grammars
+boxit.docs(btex $\sum$ doc. files of xxx.[mp,w] for mpost, cweave etex); % doc grammars
+boxit.ipT(btex Terminal vocabulary etex); % T
+boxit.o(btex \strut$O_{2}$ etex); % yacco2 compiler / compiler
+boxit.err(btex xxx\_errors.log etex); % error log
+boxit.tr(btex xxx\_tracings.log etex); % trace log and o2 chatter
+boxit.occ(btex xxx[,sym,tbl].cpp files etex); % yacco2 xxx[,sym,tbl].cpp files
+boxit.fsc(btex T-Alphabet and xxx.fsc files etex); % yacco2 linker files
+boxit.ipfsc(btex yyy.fsc \strut$O_{2}$linker make file etex); % linker make file to build
+boxit.olinker(btex \strut$O_{2}$linker etex); % o2linker
+boxit.olinkerop(btex \strut$O_{2}$linker tables etex); % linker fsc + thd dispatch tble
+boxit.cpp(btex CC etex); % c++ compiler
+boxit.objs(btex $\sum$ dispatch threads table, grammars's lr1 tables, each fsm and rhs procedure etex);
+% place the boxes
+ipoptions.e + fldsep = ipgrammars.w;
+ipgrammars.e + fldsep = ipT.w;
+ypart ipgrammars.n = ypart ipT.n;
+ypart ipoptions.n = ypart ipgrammars.n;
+.5[ipgrammars.e,ipgrammars.w] - sep = .5[o.e,o.w];
+
+occ.e + fldsep = fsc.w;
+fsc.e + fldsep = ipfsc.w;
+.5[o.e,o.w] - sep = .5[occ.e,fsc.w];
+ypart occ.n = ypart fsc.n = ypart ipfsc.n;
+
+.5[ipfsc.e,ipfsc.w] - sep = .5[olinker.e,olinker.w];
+.5[olinker.e,olinker.w] - sep = .5[olinkerop.e,olinkerop.w];
+docs.e + fldsep = olinker.w;
+ypart docs.n = ypart olinker.n;
+tr.e + fldsep = o.w;
+o.e + fldsep = err.w;
+ypart olinkerop.c - ypart sep = ypart cpp.c;
+
+
+objs.n -2fldsep = .5[cpp.e,cpp.w] - sep ;
+
+xx = .5(xpart olinkerop.w - xpart occ.e);
+yy = ypart olinkerop.w;
+(xx,yy) - sep = .5[cpp.e,cpp.w];
+% form the boxes
+
+drawunboxed(ipoptions);
+draw ipoptions.sw -- ipoptions.se -- ipoptions.ne -- ipoptions.nw -- ipoptions.sw dashed withdots;
+%drawboxed(ipoptions);
+drawboxed(ipgrammars);
+drawboxed(ipT);
+drawboxed(o);
+drawboxed(err);
+drawboxed(tr);
+
+drawboxed(occ);
+drawboxed(fsc);
+drawboxed(ipfsc);
+
+drawboxed(olinker);
+drawboxed(olinkerop);
+drawboxed(cpp);
+drawboxed(objs);
+drawboxed(docs);
+% draw lined arrows between the boxes
+drawarrow ipoptions.se -- o.nw dashed withdots;
+drawarrow ipT.w -- ipgrammars.e dashed withdots;
+drawarrow ipgrammars.s -- o.n;
+pair mopt,ldeltaopt,rdeltaopt;
+mopt := .5[o.e,o.w] - .5(0,ypart sep);
+ldeltaopt := (xpart occ.n, ypart mopt);
+rdeltaopt := (xpart fsc.n, ypart mopt);
+drawarrow o.e -- err.w dashed withdots scaled 2;
+drawarrow o.w -- tr.e dashed withdots scaled 2;
+draw o.s -- mopt;
+draw mopt -- ldeltaopt;
+draw mopt -- rdeltaopt;
+drawarrow ldeltaopt -- occ.n;
+drawarrow rdeltaopt -- fsc.n;
+drawarrow fsc.e -- ipfsc.w dashed withdots;
+drawarrow ipfsc.s -- olinker.n;
+drawarrow olinker.s -- olinkerop.n;
+
+y = ypart objs.n - ypart cpp.s;
+drawarrow cpp.s -- cpp.s + (0,y);
+
+pair m,l,r;
+numeric yy;
+yy := ypart cpp.c + ypart .5sep;
+m := (xpart cpp.n,yy);
+l := (xpart occ.s, yy);
+r := (xpart olinkerop.s, yy);
+draw occ.s -- l;
+draw olinkerop.s -- r;
+draw l -- r;
+drawarrow m -- cpp.n;
+drawarrow o.s -- (xpart o.s, ypart docs.n);
+
+endfig;
+end; \ No newline at end of file
diff --git a/web/yacco2/diagrams/o2_structures.1 b/web/yacco2/diagrams/o2_structures.1
new file mode 100644
index 0000000000..974e035ff5
--- /dev/null
+++ b/web/yacco2/diagrams/o2_structures.1
@@ -0,0 +1,80 @@
+%!PS
+%%BoundingBox: -160 -43 201 11
+%%Creator: MetaPost
+%%CreationDate: 2006.11.23:1811
+%%Pages: 1
+%*Font: cmr10 9.96265 9.96265 0d:80000000000002c002400e89f728
+%%EndProlog
+%%Page: 1 1
+0 0 moveto
+(State) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 1 setlinejoin 10 setmiterlimit
+newpath -3 -3 moveto
+25.69272 -3 lineto
+25.69272 9.8078 lineto
+-3 9.8078 lineto
+ closepath stroke
+-156.13535 -37.40779 moveto
+(V) cmr10 9.96265 fshow
+-149.49355 -37.40779 moveto
+(ectors) cmr10 9.96265 fshow
+-120.62955 -37.40779 moveto
+(map) cmr10 9.96265 fshow
+newpath -159.13535 -42.34499 moveto
+-98.81125 -42.34499 lineto
+-98.81125 -27.59999 lineto
+-159.13535 -27.59999 lineto
+ closepath stroke
+-70.22699 -37.46315 moveto
+(F) cmr10 9.96265 fshow
+-64.55379 -37.46315 moveto
+(ollo) cmr10 9.96265 fshow
+-49.33308 -37.46315 moveto
+(w) cmr10 9.96265 fshow
+-38.81699 -37.46315 moveto
+(set) cmr10 9.96265 fshow
+-23.26419 -37.46315 moveto
+(map) cmr10 9.96265 fshow
+newpath -73.22699 -42.40034 moveto
+-1.44577 -42.40034 lineto
+-1.44577 -27.54463 lineto
+-73.22699 -27.54463 lineto
+ closepath stroke
+27.13852 -37.46315 moveto
+(En) cmr10 9.96265 fshow
+39.17671 -37.46315 moveto
+(try) cmr10 9.96265 fshow
+55.53212 -37.46315 moveto
+(sym) cmr10 9.96265 fshow
+72.74542 -37.46315 moveto
+(b) cmr10 9.96265 fshow
+78.55692 -37.46315 moveto
+(ol) cmr10 9.96265 fshow
+newpath 24.13849 -42.40034 moveto
+89.30573 -42.40034 lineto
+89.30573 -27.54463 lineto
+24.13849 -27.54463 lineto
+ closepath stroke
+117.88998 -38.43175 moveto
+(Con\015ict) cmr10 9.96265 fshow
+155.52669 -38.43175 moveto
+(states) cmr10 9.96265 fshow
+183.86488 -38.43175 moveto
+(list) cmr10 9.96265 fshow
+newpath 114.88998 -41.43175 moveto
+200.2038 -41.43175 lineto
+200.2038 -28.51323 lineto
+114.88998 -28.51323 lineto
+ closepath stroke
+ 1 setlinecap
+newpath -3 -3 moveto
+-98.81125 -27.59999 lineto stroke
+newpath 8.47691 -3 moveto
+-37.33638 -27.54463 lineto stroke
+newpath 17.08481 -3 moveto
+56.7221 -27.54463 lineto stroke
+newpath 25.69272 -3 moveto
+157.54689 -28.51323 lineto stroke
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/o2_structures.2 b/web/yacco2/diagrams/o2_structures.2
new file mode 100644
index 0000000000..770481d2b0
--- /dev/null
+++ b/web/yacco2/diagrams/o2_structures.2
@@ -0,0 +1,263 @@
+%!PS
+%%BoundingBox: 15 -4 344 146
+%%Creator: MetaPost
+%%CreationDate: 2006.11.23:1811
+%%Pages: 1
+%*Font: cmr10 9.96265 9.96265 27:8000102804040a3fa7dfe
+%*Font: cmsy10 9.96265 9.96265 00:800100002
+%%EndProlog
+%%Page: 1 1
+15.79213 138.22278 moveto
+(v) cmr10 9.96265 fshow
+20.77342 138.22278 moveto
+(ectors) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 0 setlinecap 1 setlinejoin 10 setmiterlimit
+newpath 46.91432 138.42198 moveto
+49.90312 138.42198 lineto stroke
+49.90312 138.22278 moveto
+(map[) cmr10 9.96265 fshow
+74.80983 138.22278 moveto
+(eno) cmr10 9.96265 fshow
+93.07463 138.22278 moveto
+(]:) cmr10 9.96265 fshow
+103.03732 138.22278 moveto
+(sym) cmr10 9.96265 fshow
+120.25063 138.22278 moveto
+(b) cmr10 9.96265 fshow
+126.06213 138.22278 moveto
+(ol's) cmr10 9.96265 fshow
+143.82893 138.22278 moveto
+(en) cmr10 9.96265 fshow
+153.51483 138.22278 moveto
+(umerate) cmr10 9.96265 fshow
+28.58426 124.46204 moveto
+(\017) cmsy10 9.96265 fshow
+36.88646 124.46204 moveto
+(state's) cmr10 9.96265 fshow
+67.99207 124.46204 moveto
+(elemen) cmr10 9.96265 fshow
+97.60326 124.46204 moveto
+(t) cmr10 9.96265 fshow
+104.79855 124.46204 moveto
+(list) cmr10 9.96265 fshow
+28.58426 112.6385 moveto
+(\017) cmsy10 9.96265 fshow
+36.88646 112.6385 moveto
+(state) cmr10 9.96265 fshow
+newpath 58.57185 112.8377 moveto
+61.56065 112.8377 lineto stroke
+61.56065 112.6385 moveto
+(elemen) cmr10 9.96265 fshow
+91.17186 112.6385 moveto
+(t) cmr10 9.96265 fshow
+98.36716 112.6385 moveto
+(") cmsy10 9.96265 fshow
+41.37639 99.84637 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 99.84637 moveto
+(grammar) cmr10 9.96265 fshow
+92.35199 99.84637 moveto
+(tree) cmr10 9.96265 fshow
+112.305 99.84637 moveto
+(no) cmr10 9.96265 fshow
+123.09789 99.84637 moveto
+(de) cmr10 9.96265 fshow
+136.3814 99.84637 moveto
+(") cmsy10 9.96265 fshow
+41.37639 87.05424 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 87.05424 moveto
+(closure) cmr10 9.96265 fshow
+82.97049 87.05424 moveto
+(state) cmr10 9.96265 fshow
+107.37898 87.05424 moveto
+(") cmsy10 9.96265 fshow
+41.37639 74.26212 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 74.26212 moveto
+(go) cmr10 9.96265 fshow
+newpath 60.23898 74.46132 moveto
+63.22778 74.46132 lineto stroke
+63.22778 74.26212 moveto
+(to) cmr10 9.96265 fshow
+75.40439 74.26212 moveto
+(state) cmr10 9.96265 fshow
+99.81288 74.26212 moveto
+(") cmsy10 9.96265 fshow
+41.37639 61.46999 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 61.46999 moveto
+(previous) cmr10 9.96265 fshow
+89.3355 61.46999 moveto
+(state) cmr10 9.96265 fshow
+113.74399 61.46999 moveto
+(") cmsy10 9.96265 fshow
+41.37639 48.67786 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 48.67786 moveto
+(reduced) cmr10 9.96265 fshow
+86.78949 48.67786 moveto
+(state) cmr10 9.96265 fshow
+111.19798 48.67786 moveto
+(") cmsy10 9.96265 fshow
+41.37639 35.88573 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 35.88573 moveto
+(previous) cmr10 9.96265 fshow
+89.3355 35.88573 moveto
+(state) cmr10 9.96265 fshow
+113.74399 35.88573 moveto
+(elemen) cmr10 9.96265 fshow
+143.3552 35.88573 moveto
+(t) cmr10 9.96265 fshow
+41.37639 22.125 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 22.125 moveto
+(next) cmr10 9.96265 fshow
+72.09459 22.125 moveto
+(state) cmr10 9.96265 fshow
+96.50308 22.125 moveto
+(elemen) cmr10 9.96265 fshow
+126.11429 22.125 moveto
+(t) cmr10 9.96265 fshow
+41.37639 10.30147 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 10.30147 moveto
+(LA) cmr10 9.96265 fshow
+66.69809 10.30147 moveto
+(set) cmr10 9.96265 fshow
+82.25089 10.30147 moveto
+(") cmsy10 9.96265 fshow
+41.37639 -3.45926 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 -3.45926 moveto
+(Common) cmr10 9.96265 fshow
+92.29669 -3.45926 moveto
+(LA) cmr10 9.96265 fshow
+109.3162 -3.45926 moveto
+(set) cmr10 9.96265 fshow
+124.86899 -3.45926 moveto
+(index) cmr10 9.96265 fshow
+169.29768 125.43065 moveto
+(follo) cmr10 9.96265 fshow
+187.56258 125.43065 moveto
+(w) cmr10 9.96265 fshow
+newpath 195.35559 125.62985 moveto
+198.34439 125.62985 lineto stroke
+198.34439 125.43065 moveto
+(set) cmr10 9.96265 fshow
+newpath 211.17398 125.62985 moveto
+214.16289 125.62985 lineto stroke
+214.16289 125.43065 moveto
+(map[) cmr10 9.96265 fshow
+239.06949 125.43065 moveto
+(eno) cmr10 9.96265 fshow
+257.33438 125.43065 moveto
+(]:) cmr10 9.96265 fshow
+267.29709 125.43065 moveto
+(rule's) cmr10 9.96265 fshow
+293.94708 125.43065 moveto
+(en) cmr10 9.96265 fshow
+303.63309 125.43065 moveto
+(umerate) cmr10 9.96265 fshow
+194.88194 112.6385 moveto
+(\017) cmsy10 9.96265 fshow
+203.18414 112.6385 moveto
+(follo) cmr10 9.96265 fshow
+221.44904 112.6385 moveto
+(w) cmr10 9.96265 fshow
+newpath 229.24205 112.8377 moveto
+232.23085 112.8377 lineto stroke
+232.23085 112.6385 moveto
+(set) cmr10 9.96265 fshow
+newpath 245.06055 112.8377 moveto
+248.04935 112.8377 lineto stroke
+248.04935 112.6385 moveto
+(elemen) cmr10 9.96265 fshow
+277.66054 112.6385 moveto
+(t) cmr10 9.96265 fshow
+284.85574 112.6385 moveto
+(") cmsy10 9.96265 fshow
+194.88194 99.84637 moveto
+(\017) cmsy10 9.96265 fshow
+203.18414 99.84637 moveto
+(rule) cmr10 9.96265 fshow
+223.13715 99.84637 moveto
+(no) cmr10 9.96265 fshow
+240.29504 99.84637 moveto
+(\017) cmsy10 9.96265 fshow
+251.91814 99.84637 moveto
+(rule) cmr10 9.96265 fshow
+271.87114 99.84637 moveto
+(def) cmr10 9.96265 fshow
+288.19875 99.84637 moveto
+(tree) cmr10 9.96265 fshow
+308.15175 99.84637 moveto
+(") cmsy10 9.96265 fshow
+194.88194 87.05424 moveto
+(\017) cmsy10 9.96265 fshow
+203.18414 87.05424 moveto
+(state) cmr10 9.96265 fshow
+227.59264 87.05424 moveto
+(elemen) cmr10 9.96265 fshow
+257.20384 87.05424 moveto
+(t) cmr10 9.96265 fshow
+264.39914 87.05424 moveto
+(") cmsy10 9.96265 fshow
+276.02225 87.05424 moveto
+(\017) cmsy10 9.96265 fshow
+287.64525 87.05424 moveto
+(it's) cmr10 9.96265 fshow
+304.30504 87.05424 moveto
+(state) cmr10 9.96265 fshow
+328.71355 87.05424 moveto
+(") cmsy10 9.96265 fshow
+194.88194 74.26212 moveto
+(\017) cmsy10 9.96265 fshow
+203.18414 74.26212 moveto
+(follo) cmr10 9.96265 fshow
+221.44904 74.26212 moveto
+(w) cmr10 9.96265 fshow
+231.96515 74.26212 moveto
+(set) cmr10 9.96265 fshow
+247.51794 74.26212 moveto
+(of) cmr10 9.96265 fshow
+258.86435 74.26212 moveto
+(T) cmr10 9.96265 fshow
+266.05954 74.26212 moveto
+(\000) cmsy10 9.96265 fshow
+273.80835 74.26212 moveto
+(in) cmr10 9.96265 fshow
+282.11055 74.26212 moveto
+(\000) cmsy10 9.96265 fshow
+289.85924 74.26212 moveto
+(stbl) cmr10 9.96265 fshow
+309.28644 74.26212 moveto
+(") cmsy10 9.96265 fshow
+194.88194 61.46999 moveto
+(\017) cmsy10 9.96265 fshow
+203.18414 61.46999 moveto
+(transitions:) cmr10 9.96265 fshow
+256.45674 61.46999 moveto
+(follo) cmr10 9.96265 fshow
+274.72165 61.46999 moveto
+(w) cmr10 9.96265 fshow
+newpath 282.51465 61.66919 moveto
+285.50345 61.66919 lineto stroke
+285.50345 61.46999 moveto
+(set) cmr10 9.96265 fshow
+newpath 298.33304 61.66919 moveto
+301.32184 61.66919 lineto stroke
+301.32184 61.46999 moveto
+(elemen) cmr10 9.96265 fshow
+330.93314 61.46999 moveto
+(t) cmr10 9.96265 fshow
+338.12834 61.46999 moveto
+(") cmsy10 9.96265 fshow
+194.88194 49.92322 moveto
+(\017) cmsy10 9.96265 fshow
+203.18414 49.92322 moveto
+(merges:) cmr10 9.96265 fshow
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/o2_structures.mp b/web/yacco2/diagrams/o2_structures.mp
new file mode 100644
index 0000000000..0ff0d10909
--- /dev/null
+++ b/web/yacco2/diagrams/o2_structures.mp
@@ -0,0 +1,59 @@
+% file: o2_structures.mp
+input boxes
+beginfig(1);
+u=1cc;
+% state anatomy
+boxit.state(btex State etex);
+boxit.svectors_map(btex Vectors map etex);
+boxit.follow_set_map(btex Follow set map etex);
+boxit.e_symbol(btex Entry symbol etex);
+boxit.conflict_states(btex Conflict states list etex);
+
+.5[state.e,state.w] - (0,3u) = .5[follow_set_map.e,e_symbol.w];
+svectors_map.e + (2u,0) = follow_set_map.w;
+follow_set_map.e + (2u,0) = e_symbol.w;
+e_symbol.e + (2u,0) = conflict_states.w;
+drawboxed(state);
+drawboxed(svectors_map,follow_set_map,e_symbol,conflict_states);
+draw state.sw -- svectors_map.ne;
+draw .6[state.se,state.sw] -- .5[follow_set_map.ne,follow_set_map.nw];
+draw .3[state.se,state.sw] -- .5[e_symbol.ne,e_symbol.nw];
+draw state.se -- .5[conflict_states.ne,conflict_states.nw];
+endfig;
+
+beginfig(2);
+% outline state's vectors-map
+label.rt(btex vectors$\_$map$[$ eno $]$: symbol's enumerate etex,(1u,11u));
+label.rt(btex $\bullet\ $state's element list etex,(2u,10u));
+label.rt(btex $\bullet\ $state$\_$element\ $\uparrow$ etex,(2u,9u));
+ label.rt(btex $\bullet\ $grammar tree node $\uparrow$ etex,(3u,8u));
+ label.rt(btex $\bullet\ $closure state $\uparrow$ etex,(3u,7u));
+ label.rt(btex $\bullet\ $go$\_$to state $\uparrow$ etex,(3u,6u));
+ label.rt(btex $\bullet\ $previous state $\uparrow$ etex,(3u,5u));
+ label.rt(btex $\bullet\ $reduced state $\uparrow$ etex,(3u,4u));
+ label.rt(btex $\bullet\ $previous state element etex,(3u,3u));
+ label.rt(btex $\bullet\ $next state element etex,(3u,2u));
+ label.rt(btex $\bullet\ $LA set $\uparrow$ etex,(3u,1u));
+ label.rt(btex $\bullet\ $Common LA set index etex,(3u,0u));
+
+
+% outline follow set
+label.rt(btex follow$\_$set$\_$map$[$ eno $]$: rule's enumerate etex,(13u,10u));
+label.rt(btex $\bullet\ $follow$\_$set$\_$element\ $\uparrow$ etex,(15u,9u));
+ label.rt(btex $\bullet\ $rule no \ $\bullet\ $ rule def tree $\uparrow$ etex,(15u,8u));
+ label.rt(btex $\bullet\ $state element $\uparrow$ \ $\bullet\ $ it's state $\uparrow$ etex,(15u,7u));
+ label.rt(btex $\bullet\ $follow set of T$-$in$-$stbl $\uparrow$ etex,(15u,6u));
+ label.rt(btex $\bullet\ $transitions: follow$\_$set$\_$element $\uparrow$ etex,(15u,5u));
+ label.rt(btex $\bullet\ $merges: etex,(15u,4u));
+
+%label.rt(btex follow$\_$set$\_$map$[$ eno $]$: rule's enumerate etex,(1u,-1u));
+%label.rt(btex $\bullet\ $follow$\_$set$\_$element\ $\uparrow$ etex,(2u,-2u));
+ %label.rt(btex $\bullet\ $rule no \ $\bullet\ $ rule def tree $\uparrow$ etex,(3u,-3u));
+ %label.rt(btex $\bullet\ $state element $\uparrow$ \ $\bullet\ $ it's state $\uparrow$ etex,(3u,-4u));
+ %label.rt(btex $\bullet\ $follow set of T$-$in$-$stbl $\uparrow$ etex,(3u,-5u));
+ %label.rt(btex $\bullet\ $transitions: follow$\_$set$\_$element $\uparrow$ etex,(3u,-6u));
+ %label.rt(btex $\bullet\ $merges: etex,(3u,-7u));
+
+endfig;
+
+end;
diff --git a/web/yacco2/diagrams/o2diag.mp b/web/yacco2/diagrams/o2diag.mp
new file mode 100644
index 0000000000..85f73f1b25
--- /dev/null
+++ b/web/yacco2/diagrams/o2diag.mp
@@ -0,0 +1,506 @@
+% file: o2diag.mp - attempt to produce grammar railroad diagrams
+input boxes
+%tracingall;
+%tracingmacros := 1;
+%tracingequations := 1;
+defaultfont := "cmtt8";
+
+
+pair sr_indent,sr_dy,sr_bet_elem,sr[],spillover_sr[],exit_bnd;
+numeric how_drw_obj;
+numeric dx_exit,dy_exit;
+numeric max_dx_bnd;
+numeric half_exit;
+numeric lft_recursion_ht;
+numeric above,below,gap;
+
+vardef is_epsilon_present(expr Str)=
+ boolean present;present:=false;
+ if(length Str = 1):
+ if (substring (0,1) of Str = " "):
+ present:=true;
+ fi;
+ fi;
+ present
+enddef;
+
+vardef is_underscore_present(expr Str)=
+ boolean present;present:=false;
+ for i=1 upto length Str:
+ if substring (i-1,i) of Str = "_":
+ present:=true;
+ fi;
+ endfor
+ present
+enddef;
+
+vardef bld_cmd_to_exec(expr Object,Name,Prefix)=
+ string cmd;cmd := Prefix&Object&"( btex ";
+ string nnm;nnm := "";
+ for i=1 upto length Name:
+ if substring (i-1,i) of Name = "_":
+ nnm := nnm & "\";
+ nnm := nnm & substring (i-1,i) of Name;
+ else:
+ nnm := nnm & substring (i-1,i) of Name;
+ fi;
+ endfor
+ cmd := cmd & nnm;
+ cmd := cmd & " etex);";
+ cmd
+enddef;
+
+def exec_cmd(text Cmd)=
+ scantokens Cmd;
+enddef;
+
+def init_variables =
+ sr_indent :=(.3in,0);
+ sr_dy :=(0,.4in);
+ sr_bet_elem :=(.15in,0);
+ sr[0]:= sr_indent - (0,.2in);
+ lft_recursion_ht:=.15in;
+ dx_exit:=0;
+ dy_exit:=0;
+ above=below=.1in;
+ gap=.025in;
+ max_dx_bnd := 4.5in;
+enddef;
+
+vardef cuta(suffix a,b) expr p =
+drawarrow p cutbefore bpath.a cutafter bpath.b;
+point .5*length p of p
+enddef;
+vardef self@# expr p =
+cuta(@#,@#) @#.c{curl10}..@#.c+p..{curl10}@#.c
+enddef;
+
+def crt_rule_box(expr ruleno) =
+ string vnm; vnm := "rule_" & rule_names[ruleno].vname;
+ string lnm; lnm := rule_names[ruleno].literal;
+ string Cmd;Cmd := "";
+ boolean underscore_present;
+ underscore_present := is_underscore_present(lnm);
+ if(underscore_present = false):
+ forsuffixes i = scantokens vnm :
+ boxit.i(substring (0,infinity) of lnm);
+ endfor
+ else:
+ %Cmd := bld_cmd_to_exec(vnm,lnm,"boxit.");
+ %exec_cmd(Cmd);
+ forsuffixes i = scantokens vnm :
+ boxit.i(substring (0,infinity) of lnm);
+ endfor
+ fi
+enddef;
+
+def drw_rule_box(expr ruleno) =
+ string vnm; vnm := "rule_" & rule_names[ruleno].vname;
+ string lnm; lnm := rule_names[ruleno].literal;
+ forsuffixes i = scantokens vnm :
+ drawunboxed(i);
+ endfor
+enddef;
+
+def crt_rule(expr ruleno,subruleno,elemno) =
+ string vnm; vnm := rhs_elems[ruleno][subruleno][elemno].vname;
+ string nm; nm := rhs_elems[ruleno][subruleno][elemno].literal;
+ forsuffixes i = scantokens vnm :
+ boxit.i(substring (0,infinity) of nm);
+ endfor
+enddef;
+
+def crt_terminal(expr ruleno,subruleno,elemno) =
+ string vnm; vnm := rhs_elems[ruleno][subruleno][elemno].vname;
+ string nm; nm := rhs_elems[ruleno][subruleno][elemno].literal;
+ forsuffixes i = scantokens vnm :
+ circleit.i(substring (0,infinity) of nm);
+ i.dx=i.dy;%make oval
+ endfor
+enddef;
+
+def align_sr_start expr sr_no =
+ if(sr_no = 1):
+ sr[sr_no] := sr[0];
+ else:
+ if(ypart spillover_sr[sr_no - 1] <> 0):
+ sr[sr_no] := spillover_sr[sr_no - 1] - sr_dy;
+ else:
+ sr[sr_no] := sr[sr_no - 1] - sr_dy;
+ fi
+ fi
+enddef;
+
+def align_spec_sr_start expr sr_no =
+ sr[sr_no] := sr[0];
+enddef;
+
+vardef has_spillover_occured(suffix frm,too)=
+ boolean spillover;spillover:=false;
+ pair rt_obj_pos;
+ %%% this makes mpost crazy when bpath the new element
+ %%%rt_obj_pos := urcorner bpath.too - ulcorner bpath.too;
+ %%%numeric rt_obj_size;rt_obj_size := xpart rt_obj_pos;
+
+ %%%numeric sxsxsxsx; sxsxsxsx := xpart urcorner too.w;
+ %%%rt_obj_pos := urcorner bpath.too - ulcorner bpath.too;
+ %%%numeric rt_obj_size;rt_obj_size := xpart rt_obj_pos;
+
+
+ pair cur_pos;cur_pos := urcorner bpath.frm;
+ numeric new_rt_pos;
+ new_rt_pos := xpart sr_bet_elem;
+ new_rt_pos := new_rt_pos + xpart cur_pos;
+ %%%new_rt_pos := new_rt_pos + rt_obj_size;
+ if(new_rt_pos > max_dx_bnd):%shift down into start pt
+ spillover := true;
+ fi
+ spillover
+enddef;
+
+def hz_align_rhs(expr rule_no,subrule_no) =
+ spillover_sr[subrule_no] := sr_indent;
+ for k=1 step 1 until rule_s_subrule_no_elems[rule_no][subrule_no]: % rhs's elems
+ string vnm; vnm := rhs_elems[rule_no][subrule_no][k].vname;
+ forsuffixes i=scantokens vnm:
+ if(k=1):
+ i.w = sr[subrule_no] + sr_bet_elem;
+ else:
+ % fetch previous elem
+ numeric j; j := k-1;
+ string pvnm; pvnm := rhs_elems[rule_no][subrule_no][j].vname;
+ forsuffixes pi=scantokens pvnm:
+ if(has_spillover_occured(pi,i)=true):%shift down into start pt
+ if(ypart spillover_sr[subrule_no] = 0):
+ spillover_sr[subrule_no] := sr[subrule_no];
+ fi
+ spillover_sr[subrule_no] := spillover_sr[subrule_no] - sr_dy;
+ i.w = spillover_sr[subrule_no] + sr_bet_elem;
+ else:
+ i.w = pi.e + sr_bet_elem;
+ fi
+ endfor
+ fi;
+ endfor
+ endfor
+enddef;
+
+def det_exit_bnd(expr rule_no) =
+ dx_exit := 0;
+ dy_exit := 0;
+ for no_sr=1 step 1 until rule_s_no_rhs[rule_no]:
+ for k=1 step 1 until rule_s_subrule_no_elems[rule_no][no_sr]: % rhs's elems
+ string vnm; vnm := rhs_elems[rule_no][no_sr][k].vname;
+ forsuffixes i=scantokens vnm:
+ if(xpart urcorner bpath.i > dx_exit):
+ dx_exit := xpart urcorner bpath.i;
+ fi;
+ endfor
+ endfor
+ endfor
+enddef;
+
+def det_spec_sr_exit_bnd(expr rule_no,subruleno) =
+ dx_exit := 0;
+ dy_exit := 0;
+ for no_sr=subruleno step 1 until subruleno:
+ for k=1 step 1 until rule_s_subrule_no_elems[rule_no][no_sr]: % rhs's elems
+ string vnm; vnm := rhs_elems[rule_no][no_sr][k].vname;
+ forsuffixes i=scantokens vnm:
+ if(xpart urcorner bpath.i > dx_exit):
+ dx_exit := xpart urcorner bpath.i;
+ fi;
+ endfor
+ endfor
+ endfor
+enddef;
+
+def crt_rhs_elems(expr rule_no,subrule_no) =
+ for k=1 step 1 until rule_s_subrule_no_elems[rule_no][subrule_no]: % rhs's elems
+ how_drw_obj := rhs_elems[rule_no][subrule_no][k].Drw_how;
+ if ((how_drw_obj = Box_solid) or (how_drw_obj = Box_dotted)):
+ crt_rule(rule_no,subrule_no,k);
+ else:
+ crt_terminal(rule_no,subrule_no,k);
+ fi;
+ endfor
+enddef;
+
+def drw_spec_vt_exit_line(expr sr_no) =
+ numeric ybot;
+ if(ypart spillover_sr[sr_no] = 0):
+ ybot := ypart sr[sr_no];
+ else:
+ ybot := ypart spillover_sr[sr_no];
+ fi
+ draw (dx_exit,ypart sr[sr_no]+above) .. (dx_exit,ybot-below);
+ draw (dx_exit+gap,ypart sr[sr_no]+above) .. (dx_exit+gap,ybot-below);
+enddef;
+
+def drw_spec_vt_start_line(expr sr_no) =
+ numeric ybot;
+ if(ypart spillover_sr[sr_no] = 0):
+ ybot := ypart sr[sr_no];
+ else:
+ ybot := ypart spillover_sr[sr_no];
+ fi
+ draw (xpart sr_indent,ypart sr[sr_no]+above) .. (xpart sr_indent,ybot-below);
+ for i=sr_no step 1 until sr_no:
+ draw(sr[i]..sr[i]+(xpart sr_bet_elem,0));%start arrow
+ endfor
+enddef;
+
+def drw_vt_exit_line(expr to) =
+ numeric ybot;
+ if(ypart spillover_sr[to] = 0):
+ ybot := ypart sr[to];
+ else:
+ ybot := ypart spillover_sr[to];
+ fi
+ draw (dx_exit,ypart sr[1]+above) .. (dx_exit,ybot-below);
+ draw (dx_exit+gap,ypart sr[1]+above) .. (dx_exit+gap,ybot-below);
+enddef;
+
+def drw_vt_start_line(expr to) =
+ numeric ybot;
+ if(ypart spillover_sr[to] = 0):
+ ybot := ypart sr[to];
+ else:
+ ybot := ypart spillover_sr[to];
+ fi
+ draw (xpart sr_indent,ypart sr[1]+above) .. (xpart sr_indent,ybot-below);
+ for i=1 step 1 until to:
+ draw(sr[i]..sr[i]+(xpart sr_bet_elem,0));%start arrow
+ endfor
+enddef;
+
+def drw_snake(suffix frm,too)=
+ pair jjj; jjj := (xpart frm.e+.1in,ypart frm.e);
+ draw frm.e--jjj;
+ pair dxdy; dxdy := .5[frm.s,too.n];
+ dxdy := (xpart jjj,ypart dxdy);
+ draw jjj--dxdy;
+ pair topof_too;topof_too := (xpart too.n,ypart dxdy);
+ draw dxdy--topof_too;
+
+ drawarrow(topof_too..too.n);
+enddef;
+
+def drw_rhs(expr ruleno,subruleno) =
+ numeric lst_elem;
+ lst_elem := rule_s_subrule_no_elems[ruleno][subruleno];
+ for e=1 step 1 until lst_elem:
+ string vnm; vnm := rhs_elems[ruleno][subruleno][e].vname;
+ string lnm; lnm := rhs_elems[ruleno][subruleno][e].literal;
+ boolean how_dotted;% true dotted , false solid
+ how_drw_obj := rhs_elems[ruleno][subruleno][e].Drw_how;
+ if(is_epsilon_present(lnm) = false):
+ forsuffixes i = scantokens vnm :
+ if((how_drw_obj = Box_solid) or ((how_drw_obj = Circle_solid))):
+ drawboxed(i);
+ else:
+ fixsize(i);
+ fixpos(i);
+ draw pic_mac_.i;% contents
+ if(how_drw_obj = Circle_dotted):
+ draw bpath.i dashed withdots;%dashed dots
+ else:
+ draw bpath.i dashed evenly;%dashed line
+ fi
+ fi
+ endfor
+ else:
+ forsuffixes i = scantokens vnm :
+ fixsize(i);
+ fixpos(i);
+ endfor
+ fi
+ endfor
+ % link by arrows
+ for e=1 step 1 until lst_elem:
+ string vnm; vnm := rhs_elems[ruleno][subruleno][e].vname;
+ forsuffixes i = scantokens vnm :
+ if(e < lst_elem ):
+ string nvnm; nvnm := rhs_elems[ruleno][subruleno][e+1].vname;
+ how_drw_obj := rhs_elems[ruleno][subruleno][e+1].Drw_how;
+ forsuffixes j = scantokens nvnm :
+ if(ypart i.c = ypart j.c):% are px + px+1 on same line?
+ if(how_drw_obj = Box_dotted):%called thread y then reverse arrow
+ drawarrow(cuta(j,i) j.c..i.c);%link elements with arrows
+ else:
+ drawarrow(cuta(i,j) i.c..j.c);%link elements with arrows
+ fi
+ else:%snake your way
+ drw_snake(i,j);
+ fi
+ endfor
+ fi
+ endfor
+ endfor
+enddef;
+
+def drw_spec_rhs(expr ruleno,subruleno) =
+ numeric lst_elem;
+ lst_elem := rule_s_subrule_no_elems[ruleno][subruleno];
+ for e=1 step 1 until lst_elem:
+ string vnm; vnm := rhs_elems[ruleno][subruleno][e].vname;
+ string lnm; lnm := rhs_elems[ruleno][subruleno][e].literal;
+ boolean how_dotted;% true dotted , false solid
+ how_drw_obj := rhs_elems[ruleno][subruleno][e].Drw_how;
+ if(is_epsilon_present(lnm) = false):
+ forsuffixes i = scantokens vnm :
+ if((how_drw_obj = Box_solid) or ((how_drw_obj = Circle_solid))):
+ drawboxed(i);
+ else:
+ fixsize(i);
+ fixpos(i);
+ draw pic_mac_.i;% contents
+ if(how_drw_obj = Circle_dotted):
+ draw bpath.i dashed withdots;%dashed dots
+ else:
+ draw bpath.i dashed evenly;%dashed line
+ fi
+ fi
+ endfor
+ else:
+ forsuffixes i = scantokens vnm :
+ fixsize(i);
+ fixpos(i);
+ endfor
+ fi
+ endfor
+ % link by arrows
+ for e=1 step 1 until lst_elem:
+ string vnm; vnm := rhs_elems[ruleno][subruleno][e].vname;
+ forsuffixes i = scantokens vnm :
+ if(e < lst_elem ):
+ string nvnm; nvnm := rhs_elems[ruleno][subruleno][e+1].vname;
+ how_drw_obj := rhs_elems[ruleno][subruleno][e+1].Drw_how;
+ forsuffixes j = scantokens nvnm :
+ if(ypart i.c = ypart j.c):% are px + px+1 on same line?
+ if(how_drw_obj = Box_dotted):%called thread y then reverse arrow
+ drawarrow(cuta(j,i) j.c..i.c);%link elements with arrows
+ else:
+ drawarrow(cuta(i,j) i.c..j.c);%link elements with arrows
+ fi
+ else:%snake your way
+ drw_snake(i,j);
+ fi
+ endfor
+ fi
+ endfor
+ endfor
+enddef;
+
+def drw_rule_s_rhs(expr ruleno) =
+ for sr=1 step 1 until rule_s_no_rhs[ruleno]:
+ drw_rhs(ruleno,sr);
+ endfor
+ drw_rule_s_bnd_lines(ruleno);
+enddef;
+
+def drw_rule_s_spec_rhs(expr ruleno,subruleno) =
+ for sr=subruleno step 1 until subruleno:
+ drw_spec_rhs(ruleno,sr);
+ endfor
+ drw_rule_s_spec_subrule_bnd_lines(ruleno,subruleno);
+ drw_rule_s_spec_subrule_parms(ruleno,subruleno);
+enddef;
+
+def drw_left_recursion_line(expr ruleno,subruleno,exitbnd) =
+ string lrnm; lrnm := rule_names[ruleno].literal;
+ string lenm; lenm := rhs_elems[ruleno][subruleno][1].literal;
+ if(rule_s_subrule_no_elems[ruleno][subruleno] > 1): % lft recur reqs 2 or elems
+ if(lrnm = lenm):
+ string vnm; vnm := rhs_elems[ruleno][subruleno][2].vname;
+ half_exit := xpart exitbnd - xpart sr_bet_elem;
+ forsuffixes $=scantokens vnm:
+ draw (half_exit,ypart exitbnd)--
+ (half_exit,ypart $.c + lft_recursion_ht)
+ -- $.c + (0,lft_recursion_ht) -- $.n dashed withdots;
+ endfor
+ fi
+ fi
+enddef;
+
+def drw_rule_s_spec_subrule_parms(expr ruleno,subruleno) =
+ numeric lst_elem;
+ lst_elem := rule_s_subrule_no_elems[ruleno][subruleno];
+ for e=1 step 1 until lst_elem:
+ string vnm; vnm := rhs_elems[ruleno][subruleno][e].vname;
+ forsuffixes i = scantokens vnm :
+ string rst;
+ rst := decimal e;
+ label.bot(rst,i.s);
+ endfor
+ endfor
+enddef;
+
+def drw_rule_s_spec_subrule_bnd_lines(expr ruleno,subruleno) =
+ det_spec_sr_exit_bnd(ruleno,subruleno);% determine exit line bnds of rule
+ dx_exit := dx_exit + 2* (xpart sr_bet_elem);
+ numeric sr_lst_elem;
+ for srno=subruleno step 1 until subruleno:
+ sr_lst_elem := rule_s_subrule_no_elems[ruleno][srno];
+ string vnm; vnm := rhs_elems[ruleno][srno][sr_lst_elem].vname;
+ string lnm; lnm := rhs_elems[ruleno][srno][sr_lst_elem].literal;
+ forsuffixes i = scantokens vnm :
+ dy_exit := ypart i.e;
+ exit_bnd := (dx_exit,dy_exit);
+ if(is_epsilon_present(lnm) = true):
+ draw(i.w..exit_bnd);% draw ht exit line
+ else:
+ draw(i.e..exit_bnd);% draw ht exit line
+ drw_left_recursion_line(ruleno,srno,exit_bnd);
+ fi
+ endfor
+ endfor
+ drw_spec_vt_exit_line(subruleno);
+ drw_spec_vt_start_line(subruleno);
+enddef;
+
+def drw_rule_s_bnd_lines(expr ruleno) =
+ det_exit_bnd(ruleno);% determine exit line bnds of rule
+ dx_exit := dx_exit + 2* (xpart sr_bet_elem);
+ numeric sr_lst_elem;
+ for srno=1 step 1 until rule_s_no_rhs[ruleno]:
+ sr_lst_elem := rule_s_subrule_no_elems[ruleno][srno];
+ string vnm; vnm := rhs_elems[ruleno][srno][sr_lst_elem].vname;
+ string lnm; lnm := rhs_elems[ruleno][srno][sr_lst_elem].literal;
+ forsuffixes i = scantokens vnm :
+ dy_exit := ypart i.e;
+ exit_bnd := (dx_exit,dy_exit);
+ if(is_epsilon_present(lnm) = true):
+ draw(i.w..exit_bnd);% draw ht exit line
+ else:
+ draw(i.e..exit_bnd);% draw ht exit line
+ drw_left_recursion_line(ruleno,srno,exit_bnd);
+ fi
+ endfor
+ endfor
+ numeric no_subrules;no_subrules := rule_s_no_rhs[ruleno];
+ drw_vt_exit_line(no_subrules);
+ drw_vt_start_line(no_subrules);
+enddef;
+
+def drw_rule(expr ruleno) =
+ crt_rule_box(ruleno);
+ for j=1 step 1 until rule_s_no_rhs[ruleno]: % rhs
+ align_sr_start(j);
+ crt_rhs_elems(ruleno,j);% establish rhs variables
+ hz_align_rhs(ruleno,j);
+ endfor
+
+ drw_rule_box(ruleno);
+ drw_rule_s_rhs(ruleno);
+enddef;
+
+def drw_rule_a_rhs(expr ruleno,subruleno) =
+ for j=subruleno step subruleno until subruleno: % rhs
+ align_spec_sr_start(j);
+ crt_rhs_elems(ruleno,j);% establish rhs variables
+ hz_align_rhs(ruleno,j);
+ endfor
+
+ drw_rule_s_spec_rhs(ruleno,subruleno);
+enddef;
diff --git a/web/yacco2/diagrams/o2linker_overview.1 b/web/yacco2/diagrams/o2linker_overview.1
new file mode 100644
index 0000000000..3d6c8074f9
--- /dev/null
+++ b/web/yacco2/diagrams/o2linker_overview.1
@@ -0,0 +1,294 @@
+%!PS
+%%BoundingBox: -121 -164 276 11
+%%HiResBoundingBox: -120.55173 -163.65445 275.09767 10.16852
+%%Creator: MetaPost 0.993
+%%CreationDate: 2008.05.05:1312
+%%Pages: 1
+%*Font: cmr10 9.96265 9.96265 0c:8000001020000100000007fffbbc
+%*Font: cmmi10 9.96265 9.96265 4f:8
+%*Font: cmr7 6.97385 6.97385 32:8
+%%BeginProlog
+%%EndProlog
+%%Page: 1 1
+ 0 0 0 setrgbcolor
+0 0 moveto
+(yyy) cmr10 9.96265 fshow
+14.944 0 moveto
+(.fsc) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 1 setlinejoin 10 setmiterlimit
+newpath -3 -4.9372 moveto
+32.1131 -4.9372 lineto
+32.1131 9.91852 lineto
+-3 9.91852 lineto
+ closepath stroke
+-3.6682 -38.37639 moveto
+(O) cmmi10 9.96265 fshow
+3.9311 -39.87079 moveto
+(2) cmr7 6.97385 fshow
+8.4004 -38.37639 moveto
+(link) cmr10 9.96265 fshow
+24.4514 -38.37639 moveto
+(er) cmr10 9.96265 fshow
+newpath -6.6682 -44.86328 moveto
+35.7813 -44.86328 lineto
+35.7813 -26.90817 lineto
+-6.6682 -26.90817 lineto
+ closepath stroke
+77.15771 -38.37639 moveto
+(yyy) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop 0 setlinecap
+newpath 93.52971 -38.17719 moveto
+96.51851 -38.17719 lineto stroke
+96.51851 -38.37639 moveto
+(errors.log) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 74.15768 -43.31358 moveto
+140.06104 -43.31358 lineto
+140.06104 -28.45787 lineto
+74.15768 -28.45787 lineto
+ closepath stroke
+-117.30173 -38.37639 moveto
+(yyy) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop
+newpath -100.92973 -38.17719 moveto
+-97.94093 -38.17719 lineto stroke
+-97.94093 -38.37639 moveto
+(tracings.log) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath -120.30173 -43.31358 moveto
+-45.04459 -43.31358 lineto
+-45.04459 -28.45787 lineto
+-120.30173 -28.45787 lineto
+ closepath stroke
+-82.30408 -85.73033 moveto
+(yyy) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop
+newpath -65.93208 -85.53113 moveto
+-62.94328 -85.53113 lineto stroke
+-62.94328 -85.73033 moveto
+(fsc.cpp) cmr10 9.96265 fshow
+-29.95578 -85.73033 moveto
+(\014le) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath -85.30408 -90.66753 moveto
+-14.22575 -90.66753 lineto
+-14.22575 -75.81181 lineto
+-85.30408 -75.81181 lineto
+ closepath stroke
+46.33884 -85.73033 moveto
+(O) cmmi10 9.96265 fshow
+53.93814 -87.22473 moveto
+(2) cmr7 6.97385 fshow
+58.40744 -85.73033 moveto
+(link) cmr10 9.96265 fshow
+74.45844 -85.73033 moveto
+(er) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop
+newpath 83.38603 -85.53113 moveto
+86.37483 -85.53113 lineto stroke
+86.37483 -85.73033 moveto
+(do) cmr10 9.96265 fshow
+97.16774 -85.73033 moveto
+(c.w) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 43.33884 -92.21722 moveto
+114.55826 -92.21722 lineto
+114.55826 -74.26212 lineto
+43.33884 -74.26212 lineto
+ closepath stroke
+136.74646 -85.38443 moveto
+(cw) cmr10 9.96265 fshow
+148.09276 -85.38443 moveto
+(ea) cmr10 9.96265 fshow
+157.22527 -85.38443 moveto
+(v) cmr10 9.96265 fshow
+162.20656 -85.38443 moveto
+(e) cmr10 9.96265 fshow
+newpath 133.74646 -88.38443 moveto
+169.63437 -88.38443 lineto
+169.63437 -78.09491 lineto
+133.74646 -78.09491 lineto
+ closepath stroke
+191.82257 -85.73033 moveto
+(O) cmmi10 9.96265 fshow
+199.42188 -87.22473 moveto
+(2) cmr7 6.97385 fshow
+203.89117 -85.73033 moveto
+(link) cmr10 9.96265 fshow
+219.94217 -85.73033 moveto
+(er) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop
+newpath 228.86977 -85.53113 moveto
+231.85857 -85.53113 lineto stroke
+231.85857 -85.73033 moveto
+(do) cmr10 9.96265 fshow
+242.65147 -85.73033 moveto
+(c.tex) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 188.82257 -92.21722 moveto
+266.40707 -92.21722 lineto
+266.40707 -74.26212 lineto
+188.82257 -74.26212 lineto
+ closepath stroke
+213.63942 -121.32394 moveto
+(p) cmr10 9.96265 fshow
+219.45102 -121.32394 moveto
+(dftex) cmr10 9.96265 fshow
+newpath 210.63942 -126.26114 moveto
+244.59023 -126.26114 lineto
+244.59023 -111.40543 lineto
+210.63942 -111.40543 lineto
+ closepath stroke
+183.38197 -156.91756 moveto
+(O) cmmi10 9.96265 fshow
+190.98128 -158.41196 moveto
+(2) cmr7 6.97385 fshow
+195.45058 -156.91756 moveto
+(link) cmr10 9.96265 fshow
+211.50157 -156.91756 moveto
+(er) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop
+newpath 220.42917 -156.71835 moveto
+223.41797 -156.71835 lineto stroke
+223.41797 -156.91756 moveto
+(do) cmr10 9.96265 fshow
+234.21088 -156.91756 moveto
+(c.p) cmr10 9.96265 fshow
+247.21777 -156.91756 moveto
+(df) cmr10 9.96265 fshow
+259.11757 -156.91756 moveto
+(\014le) cmr10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 180.38197 -163.40445 moveto
+274.84767 -163.40445 lineto
+274.84767 -145.44934 lineto
+180.38197 -145.44934 lineto
+ closepath stroke
+-56.96017 -119.66351 moveto
+(CC) cmr10 9.96265 fshow
+newpath -59.96017 -122.66351 moveto
+-39.56967 -122.66351 lineto
+-39.56967 -109.85573 lineto
+-59.96017 -109.85573 lineto
+ closepath stroke
+-105.07153 -151.77023 moveto
+(threads's) cmr10 9.96265 fshow
+-62.86864 -151.77023 moveto
+(bit) cmr10 9.96265 fshow
+-47.37114 -151.77023 moveto
+(maps) cmr10 9.96265 fshow
+-21.30223 -151.77023 moveto
+(ob) cmr10 9.96265 fshow
+-10.23253 -151.77023 moveto
+(ject) cmr10 9.96265 fshow
+newpath -108.07153 -156.70743 moveto
+8.54169 -156.70743 lineto
+8.54169 -141.85172 lineto
+-108.07153 -141.85172 lineto
+ closepath stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth 1 setlinecap
+newpath 14.55655 -4.9372 moveto
+14.55655 -26.90817 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 13.02583 -23.21277 moveto
+14.55655 -26.90817 lineto
+16.08727 -23.21277 lineto
+ closepath
+gsave fill grestore stroke
+ [0 10 ] 5 setdash
+newpath 35.7813 -35.88573 moveto
+74.15768 -35.88573 lineto stroke
+ [] 0 setdash
+newpath 70.46211 -37.41652 moveto
+74.15768 -35.88573 lineto
+70.46211 -34.35493 lineto
+ closepath
+gsave fill grestore stroke
+ [0 10 ] 5 setdash
+newpath -6.6682 -35.88573 moveto
+-45.04459 -35.88573 lineto stroke
+ [] 0 setdash
+newpath -41.34901 -34.35493 moveto
+-45.04459 -35.88573 lineto
+-41.34901 -37.41652 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 14.55655 -44.86328 moveto
+14.55655 -55.07393 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 14.55655 -55.07393 moveto
+-49.76492 -55.07393 lineto stroke
+newpath 14.55655 -55.07393 moveto
+78.94855 -55.07393 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath -49.76492 -55.07393 moveto
+-49.76492 -75.81181 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath -51.29572 -72.11624 moveto
+-49.76492 -75.81181 lineto
+-48.23413 -72.11624 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 78.94855 -55.07393 moveto
+78.94855 -74.26212 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 77.41776 -70.56654 moveto
+78.94855 -74.26212 lineto
+80.47934 -70.56654 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath -49.76492 -90.66753 moveto
+-49.76492 -109.85573 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath -51.29572 -106.16016 moveto
+-49.76492 -109.85573 lineto
+-48.23413 -106.16016 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath -49.76492 -122.66351 moveto
+-49.76492 -141.85172 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath -51.29572 -138.15614 moveto
+-49.76492 -141.85172 lineto
+-48.23413 -138.15614 lineto
+ closepath
+gsave fill grestore stroke
+newpath 114.55826 -83.23967 moveto
+133.74646 -83.23967 lineto stroke
+newpath 130.05089 -84.77046 moveto
+133.74646 -83.23967 lineto
+130.05089 -81.70888 lineto
+ closepath
+gsave fill grestore stroke
+newpath 169.63437 -83.23967 moveto
+188.82257 -83.23967 lineto stroke
+newpath 185.127 -84.77046 moveto
+188.82257 -83.23967 lineto
+185.127 -81.70888 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 227.61482 -92.21722 moveto
+227.61482 -111.40543 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 226.08403 -107.70985 moveto
+227.61482 -111.40543 lineto
+229.14561 -107.70985 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 227.61482 -126.26114 moveto
+227.61482 -145.44934 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 226.08403 -141.75377 moveto
+227.61482 -145.44934 lineto
+229.14561 -141.75377 lineto
+ closepath
+gsave fill grestore stroke
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/o2linker_overview.mp b/web/yacco2/diagrams/o2linker_overview.mp
new file mode 100644
index 0000000000..f07b8dbe10
--- /dev/null
+++ b/web/yacco2/diagrams/o2linker_overview.mp
@@ -0,0 +1,78 @@
+% file: o2linker_overview.mp
+% flow control of O2, O2linker, and c++
+input boxes
+u:=1cc;
+pair sep,fldsep;
+sep := (0,3u);
+fldsep := (3u,0);
+beginfig(1);
+
+boxit.fsc(btex yyy.fsc etex); % input control file
+boxit.o(btex \strut$O_{2}$linker etex); % linker prg
+boxit.err(btex yyy\_errors.log etex); % error log
+boxit.tr(btex yyy\_tracings.log etex); % trace log and o2linker chatter
+
+boxit.occ(btex yyy\_fsc.cpp file etex); % linker c++ tble
+boxit.docs(btex \strut$O_{2}$linker\_doc.w etex); % linker doc
+boxit.cpp(btex CC etex); % c++ compiler
+boxit.objs(btex threads's bit maps object etex);
+boxit.cweave(btex cweave etex);
+boxit.tex(btex \strut$O_{2}$linker\_doc.tex etex);
+boxit.pdftex(btex pdftex etex);
+boxit.xpdf(btex \strut$O_{2}$linker\_doc.pdf file etex);
+%% place the boxes
+
+.5[fsc.e,fsc.w] - sep = .5[o.e,o.w];
+tr.e + fldsep = o.w;
+o.e + fldsep = err.w;
+occ.e + 1.5fldsep = docs.w;
+docs.e + .5fldsep = cweave.w;
+cweave.e + .5fldsep = tex.w;
+tex.s - .5sep = pdftex.n;
+pdftex.s - .5sep = xpdf.n;
+
+o.s - sep = .5[occ.e,docs.w];
+
+occ.s -.5sep = cpp.n;
+cpp.s -.5sep = objs.n;
+
+%% form the boxes
+drawboxed(fsc);
+drawboxed(o);
+drawboxed(err);
+drawboxed(tr);
+
+drawboxed(occ);
+drawboxed(docs);
+
+drawboxed(cweave);
+drawboxed(tex);
+drawboxed(pdftex);
+drawboxed(xpdf);
+
+drawboxed(cpp);
+drawboxed(objs);
+
+%% draw lined arrows between the boxes
+drawarrow fsc.s -- o.n;
+pair mopt,ldeltaopt,rdeltaopt;
+mopt := .5[o.e,o.w] - .5(0,ypart sep);
+ldeltaopt := (xpart occ.n, ypart mopt);
+rdeltaopt := (xpart docs.n, ypart mopt);
+drawarrow o.e -- err.w dashed withdots;
+drawarrow o.w -- tr.e dashed withdots;
+draw o.s -- mopt;
+draw mopt -- ldeltaopt;
+draw mopt -- rdeltaopt;
+drawarrow ldeltaopt -- occ.n;
+drawarrow rdeltaopt -- docs.n;
+
+%y = ypart objs.n - ypart cpp.s;
+drawarrow occ.s -- cpp.n;
+drawarrow cpp.s -- objs.n;
+drawarrow docs.e -- cweave.w;
+drawarrow cweave.e -- tex.w;
+drawarrow tex.s -- pdftex.n;
+drawarrow pdftex.s -- xpdf.n;
+endfig;
+end; \ No newline at end of file
diff --git a/web/yacco2/diagrams/o2mac.tex b/web/yacco2/diagrams/o2mac.tex
new file mode 100644
index 0000000000..f4b040f89c
--- /dev/null
+++ b/web/yacco2/diagrams/o2mac.tex
@@ -0,0 +1,390 @@
+% /yacco2/library/o2mac.tex --- defines common macros for TeX
+\tolerance=10000
+\hbadness=10000
+%\tracingall
+\def\Tex{\TeX}
+\def\cweb{\Cweb}
+\def\Cweb{{\prgstyle Cweb}}
+\def\prgstyle{\tt \sl }
+
+
+\def\Whereyacco2{/usr/local/yacco2}
+
+\def\printlistinglineno{\hskip .7 in \llap{\the\lineno:\quad}}
+\def\ptindent#1{\line{\hskip.5in{#1}\hfill}}
+\def\threeasteric{$***$}
+\def\Yacco2{Ya$c_2o_2$}
+\def\yacco2{\Yacco2}
+\def\O2{$O_2$}
+\def\o2{\O2}
+\def\Cpp{C\kern-.25em \raise.25ex\hbox{\tt $+\kern-0.2ex+$}}
+\def\Olinker{$O_{2}^{linker}$}
+\def\olinker{$O_{2}^{linker}$}
+\def\TILDE{\catcode`\~=11{}~}
+\def\INDENT#1#2{\line{\hskip#1{#2}\hfill}}
+\def\fbreak{\hfill\break}
+\def\emptyrule{
+\ifmmode
+ \epsilon
+\else
+$\epsilon$
+\fi
+}
+
+\def\fnp{\vfill\eject}
+\def\Alpha{$\alpha$}
+\def\Beta{$\beta$}
+\def\o2{\O2}
+\def\prtobrace{$\{$}
+\def\prtcbrace{$\}$}
+\def\prtstartsr{$-$$>$}
+\def\]{\leavevmode\hbox{\tt\char`\ }}
+\def\derives{$\Rightarrow$}
+\def\subrule{$\rightarrow$}
+\def\braceo{\char`\{}
+\def\BRACEOPEN{\tt \char`\{}
+\def\bracec{\char`\}}
+\def\BRACECLOSE{\tt \char`\}}
+\newbox\ALLshiftbox %|+|
+\setbox\ALLshiftbox=\hbox{$|$\kern.5pt\raise1pt\hbox{\kern-2pt\sevenrm+}\kern-2pt$|$}
+\def\ALLshift{\.{|+|}}
+\def\INVshift{\.{|.|}}
+\def\PARshift{\.{|||}}
+\def\REDshift{\.{|r|}}
+\def\PROCshift{\.{|t|}}
+\def\TRAshift{\.{|t|}}
+\def\QUEshift{\.{|?|}}
+
+\def\Verticalbar{\tt \char`|}
+\def\allshift{\ALLshift}
+\def\invisibleshift{\INVshift}
+\def\paralleloperator{\PARshift}
+\def\procedurecalloperator{\PROCshift}
+\def\transienceoperator{\TRAshift}
+\def\questionableoperator{\QUEshift}
+\def\reduceoperator{\REDshift}
+\def\rrrr{\REDshift}
+\def\ATsign{\char`@}
+%\def\NOsign{
+%\ifmmode
+% \char`\#
+%\else
+%$\char`\#$
+%\fi
+%}
+\def\NOsign{
+{\tt \char`\#}
+}
+\def\LTsign{
+\ifmmode
+ <
+\else
+$<$
+\fi
+}
+\def\GTsign{
+\ifmmode
+ >
+\else
+$>$
+\fi
+}
+\def\PLUSsign{$+$}
+\def\MINUSsign{$-$}
+\def\AMPERsign{\char`&}
+\def\ASTERICsign{\char`*}
+\def\PERCENTsign{\char`\%}
+\def\DOLLARsign{\char`$}
+\def\DBLQUOTEsign{\char`\"}
+\def\LFTQUOTEsign{\char`\`}
+\def\RTQUOTEsign{\char`\'}
+
+%\def\BKSLASHsign{
+%\ifmmode \char`\\\else $\backslash$ \fi
+%}
+\def\BKSLASHsign{
+{\tt \char`\\}
+}
+
+\def\UPARROWsign{\char`^}
+\def\UNDERSCOREsign{\char`_}
+\def\Shiftonly{$^s$}
+\def\Reduceonly{$^r$}
+\def\ShiftReduce{$^{s/r}$}
+\def\MultipleReduces{$^{r{^2}}$}
+\def\ShiftandMultipleReduces{$^{s/r{^2}}$}
+\def\Derivedstatessym{$\triangleright$}
+\def\Mergedsym{$^\nearrow$}
+\def\Mergedstate#1{$^\nearrow{^{#1}}$}
+\def\Subrulestartsymstrindent#1{\item{#1}}
+\def\Subrulederivedstatesindent{\item\item{\Derivedstatessym\ }}
+\def\Reducedstatelist{\item\item{$\subset$\ }}
+\def\Linkeridxentry#1{{\par\parindent=2pc{\narrower#1}\smallskip}}
+\def\Linkeridxentryk#1{{\par\parindent=3pc{\item\item{#1}\smallskip}}}
+\def\Linkercalledthreads#1#2{{\par\parindent=#2pc{\narrower#1}\smallskip}}
+\def\Linkercalledthreadstitle{{\par\parindent=0pc{\narrower %
+First set of called threads list.}\smallskip}}
+
+\def\IDXdoctitle#1#2{% p1 banner p2 file name
+ \global\def\title{#1}
+ \global\def\topofcontents{\null\vfill
+ \centerline{\ttitlefont #1}
+ \vskip 15pt
+ \hbox{\ttitlefont Date: \today \ at \hours \hfil}
+ \vskip 15pt
+ \hbox{\ttitlefont File: #2 \hfil}
+ \vfill
+ }
+}
+\def\IDXlinkerdoctitle#1#2#3{% p1 banner p2 file name p3 fsc source file
+ \global\def\title{#1}
+ \global\def\topofcontents{\null\vfill
+ \centerline{\ttitlefont #1}
+ \vskip 15pt
+ \hbox{\ttitlefont Date: \today \ at \hours \hfil}
+ \vskip 15pt
+ \hbox{\ttitlefont File: #2 \hfil}
+ \vskip 15pt
+ \hbox{\ttitlefont Fsc\ : #3 \hfil}
+ \vfill
+ }
+}
+\def\DOCtitle#1#2#3#4{% 1 banner, 2 file name, 3 NS, 4 # T
+ \global\def\title{#1}
+ \global\def\topofcontents{\null\vfill
+ \centerline{\ttitlefont #1}
+ \vskip 15pt
+ \centerline{\ttitlefont Date: \today \ at \hours }
+ \vskip 15pt
+ \centerline{\ttitlefont File: #2 \hfil Namespace: #3}
+ \vskip 15pt
+ \centerline{\ttitlefont Number of terminals: #4}
+ \vfill
+ }
+}
+
+\def\GRAMMARtitle#1#2#3#4#5#6{% p1 fn noext, p2 filename.ext, p3 NS, p4 version
+ \global\def\title{#1 Grammar} %p5 debug, p6 comments
+ \global\def\topofcontents{\null\vfill
+ \centerline{\ttitlefont #1 Grammar}
+ \vskip 15pt
+ \centerline{\ttitlefont Date: \today \ at \hours \hfil}
+ \vskip 15pt
+ \centerline{\ttitlefont File: #2}
+ \vskip 15pt
+ \centerline{\ttitlefont Ns: #3}
+ \vskip 15pt
+ \centerline{Version: #4 \hfil Debug: #5}
+ \vskip 15pt
+ \centerline{Grammar Comments: \hfil Type: Monolithic}
+ \vskip 15pt
+ \centerline{#6}
+ \vfill
+ }
+}
+
+\def\THREADtitle#1#2#3#4#5#6#7#8{% 1 filename noext, 2 file name.lex, 3 NS
+ \global\def\title{#1 Grammar} % 4 vers 5 debug, 6 comments, 7 # T in la, 8 la expr
+ \global\def\topofcontents{\null\vfill
+ \centerline{\ttitlefont #1 Grammar}
+ \vskip 15pt
+ \centerline{\ttitlefont Date: \today \ at \hours \hfil}
+ \vskip 15pt
+ \centerline{\ttitlefont File: #2 \hfil Ns: #3}
+ \vskip 15pt
+ \centerline{Version: #4 \hfil Debug: #5}
+ \vskip 15pt
+ \centerline{Grammar Comments: \hfil Type: Thread}
+ \vskip 15pt
+ \centerline{#6}
+ \vskip 15pt
+ \centerline{\ttitlefont #7 element(s) in Lookahead Expression below}
+ \vskip 10pt
+ \centerline{#8}
+ \vfill
+ }
+}
+
+
+%
+% state no macros to generate the lr1 state report
+%
+\def \statecolumnspace{
+\tabskip=.5em plus1em minus.25em
+}
+
+\def\stateno#1#2#3{%1-state no, 2-vectored into literal symbol, 3-confict state
+\fbreak\noindent
+\hbox{\hbox to 8cm{$\Rightarrow^{\eightrm #2}$ \hfil} State: #1 state type: {#3} \hfil}
+}
+
+\def\statetemplate{
+##&
+\eightrm##\hfil&
+##&
+##&
+##&
+\sevenrm##\hfil&
+##&
+##&
+##&
+##\cr %LA set no template
+}
+
+\def\statetitle{
+{\ }&
+\statetitlerule&
+\statetitlerulecoordinates&
+\statetitlesubrule&
+\statetitlesubrulebirth\cr
+}
+
+\def\statetitleintro{
+\fbreak
+\hbox to .5cm{}
+}
+\def\statetitlerule{
+\hbox to 3.5cm{\tt{$\leftarrow$}\hfil rule \hfil{$\rightarrow$}}
+}
+\def\statetitlerulecoordinates{
+{\tt R\#\ }&{\tt sr\#}&{\tt Po}
+}
+\def\statetitlesubrule{
+\hbox to 7.5cm{\tt{$\leftarrow$}\hfil subrule element\hfil{$\rightarrow$}}
+}
+\def\statetitlesubrulebirth{
+{\tt Brn}&{\tt Gto}&{\tt Red}&{\tt LA}
+}
+
+\def\LRstatenetwork{
+List of productions with their derived LR state lists.
+Their subrule number and symbol string indicates the specific
+production being derived.
+The ``\Derivedstatessym'' symbol indicates the production's list of
+derived states from its closured state.
+Multiple lists within a production indicate 1 of 2 things:\fbreak
+\ptindent{1) derived string that could not be merged due to a lr(1) conflict}
+\ptindent{2) partially derived string merged into another derived lr states}
+A partially derived string is indicated by the ``merged into'' symbol \Mergedsym
+used as a superscript along with the merged into state number.\fbreak
+}
+\def\Listofreducingstates{
+The following legend indicates the type of reducing state.\fbreak
+Points 2--4 are states that must meet the lr(1) condition:\fbreak
+\ptindent{1) r --- only 1 production reducing}
+\ptindent{2) r$^2$ --- 2 or more reducing productions}
+\ptindent{3) s$/$r --- shift and 1 reducing production}
+\ptindent{4) s$/r^2$ --- shift and multiple reducing productions}
+\fbreak
+}
+
+%
+% Follow set info per state and possible reducing subrules lookahead set
+%
+\def\FollSetnotesintro{
+Notes on Follow set expressions:\fbreak
+1) The ``follow set'' for rule uses its literal name
+and tags its grammar rule rank number as a superscript.
+Due to space limitations, part of the follow set information
+uses the rule's literal name
+while the follow set expressions refers to the rule's rank number.
+This \LTsign{}rule name, rule rank number\GTsign tupple allows
+you the reader to decifer the expressions.
+Transitions are represented by S{$_{x}$}R{$_{z}$} whereby
+ S is the LR1 state identified by its ``x'' subscript where
+other transient calculations occur within the LR1 state network.
+R indicates the follow set rule with the subscript ``z'' as its grammar rank number
+that contributes to the follow set.
+\fbreak
+\fbreak
+The \Mergedstate{x} symbol indicates that a merge into state ``x'' has taken place.
+That is, the reduced subrule that depends on this follow set
+finds its follow set in 2 places:
+its birthing state that generated the sequence up to the merged into state,
+and the birthing state that generated the ``merged into'' state.
+So the rule's ``follow set'' calculation must also continue
+its calculation within the birth state generating
+the ``x merged into'' state.
+\fbreak
+\raggedright
+}
+
+\def\FollSettemplate{
+##\hfil& %rule name
+##\hfil\cr % list of contributors template
+}
+
+\def\FollSettitle{
+\FollSettitlerule&
+\FollSettitlecontributors\cr
+}
+
+\def\FollSettitlerule{
+\hbox to 4cm{\tt{$\leftarrow$}\hfil Follow set Rule \hfil{$\rightarrow$}}
+}
+
+\def\FollSettitlecontributors{
+\hbox to 11cm{\tt{$\leftarrow$}\hfil follow set symbols contributors\hfil{$\rightarrow$}}
+}
+
+\def\FollSetlocalyield{
+\hbox{Local follow set yield: $\sum$ first-set(follow symbols)}
+\item{}
+\raggedright
+}
+
+\def\FollSetstateno#1{%1-state no
+\fbreak\noindent
+\hbox{\hbox to 11cm{State: #1 \hfil Follow Set contributors, merges, and transitions \hfil}}
+}
+\def\rulenameno#1{{\sevenrm$^{#1}$}}
+\def\FollSetcreators#1#2#3{R$_{#1}._{#2}._{#3}$}
+\def\FollSetmerges#1{\Mergedstate{#1}}
+\def\FollSettransition#1#2{S$_{#1}R_{#2}$}
+
+\def\FollSetreducinglocalyield{
+\hbox{Local follow set yield: }
+\item{}
+\raggedright
+}
+
+%
+% Reducing subrule's look ahead set
+%
+\def\FollSetreducingsrs{
+\fbreak
+\hbox{Reducing Subrule:}
+}
+
+\def\FollSetreducingsrtemplate{
+##& %R#
+##& %SR
+##\hfil& % list of contributors template
+\quad##\cr % lookahead set index no
+}
+\def\FollSetreducingsubruletitle{
+\FollSetreducingsrtitle&
+\FollSetreducingsrcontributorstitle&
+\FollSetreducingsrlasettitle\cr
+}
+\def\FollSetreducingsrtitle{
+{\tt R\#\ }&{\tt sr\#}
+}
+\def\FollSetreducingsrcontributorstitle{
+\hbox to 13.75cm{\tt{$\leftarrow$}\hfil subrule's reducing symbol position and any right bounded transitions\hfil{$\rightarrow$}}
+}
+\def\FollSetreducingsrlasettitle{
+\hbox {\tt LA\#}
+}
+\def\FollSetreducingsrtotalyield{
+\hbox{Total follow set yield:}
+\item{}
+\raggedright
+}
+\def\LASettotalyield#1{
+\hbox{Lookahead set #1 yield:}
+\item{}
+\raggedright
+}
+
+
diff --git a/web/yacco2/diagrams/o2run_example.txt b/web/yacco2/diagrams/o2run_example.txt
new file mode 100644
index 0000000000..fd987a559f
--- /dev/null
+++ b/web/yacco2/diagrams/o2run_example.txt
@@ -0,0 +1,9 @@
+rem file: o2.bat
+rem compile O2 grammars
+cd \yacco2\compiler\h2o\release
+@echo ON
+
+o2 -p -t -err /yacco2/compiler/grammars/enumerate_grammar.lex
+mpost enumerate_grammar.mp
+cweave enumerate_grammar.w
+pdftex enumerate_grammar
diff --git a/web/yacco2/diagrams/parse_stk_env.1 b/web/yacco2/diagrams/parse_stk_env.1
new file mode 100644
index 0000000000..82bda8a2a9
--- /dev/null
+++ b/web/yacco2/diagrams/parse_stk_env.1
@@ -0,0 +1,136 @@
+%!PS
+%%BoundingBox: 21 -13 306 82
+%%HiResBoundingBox: 21.68697 -12.9627 305.22595 81.18062
+%%Creator: MetaPost 0.993
+%%CreationDate: 2007.07.01:1657
+%%Pages: 1
+%*Font: cmr10 5.97765 9.96265 20:8000e000000000004454188
+%*Font: cmsy10 9.96265 9.96265 0f:80001
+%*Font: cmr10 9.96265 9.96265 2e:8008000008051f07ef92
+%%BeginProlog
+%%EndProlog
+%%Page: 1 1
+ 0 0 0 setrgbcolor 0 0.5 dtransform truncate idtransform setlinewidth pop
+ [] 0 setdash 1 setlinejoin 10 setmiterlimit
+newpath 63.96065 0 moveto
+76.75278 0 lineto
+76.75278 51.16852 lineto
+63.96065 51.16852 lineto
+ closepath stroke
+ 1 setlinecap
+newpath 63.96065 12.79213 moveto
+76.75278 12.79213 lineto stroke
+newpath 63.96065 25.58426 moveto
+76.75278 25.58426 lineto stroke
+newpath 63.96065 38.37639 moveto
+65.72687 40.14261 68.5905 40.14261 70.35672 38.37639 curveto
+72.12294 36.61017 74.98656 36.61017 76.75278 38.37639 curveto stroke
+79.75278 -1.92613 moveto
+(0) cmr10 5.97765 fshow
+79.75278 10.866 moveto
+(1) cmr10 5.97765 fshow
+79.75278 23.65813 moveto
+(2) cmr10 5.97765 fshow
+79.75278 36.30081 moveto
+(max\040stk\040items) cmr10 5.97765 fshow
+21.68697 -10.472 moveto
+(parse) cmr10 9.96265 fshow
+47.78357 -10.472 moveto
+(stac) cmr10 9.96265 fshow
+64.72006 -10.472 moveto
+(k[].parse) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop 0 setlinecap
+newpath 101.65387 -10.2728 moveto
+104.64267 -10.2728 lineto stroke
+104.64267 -10.472 moveto
+(record) cmr10 9.96265 fshow
+118.12917 74.26212 moveto
+(parse) cmr10 9.96265 fshow
+newpath 141.50267 74.46132 moveto
+144.49147 74.46132 lineto stroke
+144.49147 74.26212 moveto
+(record:) cmr10 9.96265 fshow
+130.9213 61.46999 moveto
+(\017) cmsy10 9.96265 fshow
+139.2235 61.46999 moveto
+(sym) cmr10 9.96265 fshow
+156.4368 61.46999 moveto
+(b) cmr10 9.96265 fshow
+162.24829 61.46999 moveto
+(ol) cmr10 9.96265 fshow
+169.9971 61.46999 moveto
+(") cmsy10 9.96265 fshow
+130.9213 48.67786 moveto
+(\017) cmsy10 9.96265 fshow
+139.2235 48.67786 moveto
+(state) cmr10 9.96265 fshow
+160.3111 48.67786 moveto
+(") cmsy10 9.96265 fshow
+130.9213 34.91713 moveto
+(\017) cmsy10 9.96265 fshow
+139.2235 34.91713 moveto
+(ab) cmr10 9.96265 fshow
+150.01639 34.91713 moveto
+(orted) cmr10 9.96265 fshow
+176.0577 34.91713 moveto
+(b) cmr10 9.96265 fshow
+181.8693 34.91713 moveto
+(o) cmr10 9.96265 fshow
+187.12729 34.91713 moveto
+(olean) cmr10 9.96265 fshow
+213.1409 34.91713 moveto
+(v) cmr10 9.96265 fshow
+217.84549 34.91713 moveto
+(alued) cmr10 9.96265 fshow
+130.9213 23.0936 moveto
+(\017) cmsy10 9.96265 fshow
+139.2235 23.0936 moveto
+(Rule) cmr10 9.96265 fshow
+newpath 159.88489 23.2928 moveto
+162.87369 23.2928 lineto stroke
+162.87369 23.0936 moveto
+(s) cmr10 9.96265 fshow
+newpath 167.4012 23.2928 moveto
+170.39 23.2928 lineto stroke
+170.39 23.0936 moveto
+(reuse) cmr10 9.96265 fshow
+newpath 193.20999 23.2928 moveto
+196.19879 23.2928 lineto stroke
+196.19879 23.0936 moveto
+(en) cmr10 9.96265 fshow
+205.88469 23.0936 moveto
+(try) cmr10 9.96265 fshow
+218.91919 23.0936 moveto
+(") cmsy10 9.96265 fshow
+156.50555 10.30147 moveto
+(\017) cmsy10 9.96265 fshow
+164.80775 10.30147 moveto
+(recycled) cmr10 9.96265 fshow
+203.30235 10.30147 moveto
+(rule) cmr10 9.96265 fshow
+219.93445 10.30147 moveto
+(") cmsy10 9.96265 fshow
+156.50555 -3.45926 moveto
+(\017) cmsy10 9.96265 fshow
+164.80775 -3.45926 moveto
+(used) cmr10 9.96265 fshow
+187.55585 -3.45926 moveto
+(on) cmr10 9.96265 fshow
+201.39285 -3.45926 moveto
+(stac) cmr10 9.96265 fshow
+218.32936 -3.45926 moveto
+(k) cmr10 9.96265 fshow
+226.90836 -3.45926 moveto
+(|) cmr10 9.96265 fshow
+240.19185 -3.45926 moveto
+(b) cmr10 9.96265 fshow
+246.00336 -3.45926 moveto
+(o) cmr10 9.96265 fshow
+251.26146 -3.45926 moveto
+(olean) cmr10 9.96265 fshow
+277.27505 -3.45926 moveto
+(v) cmr10 9.96265 fshow
+281.97966 -3.45926 moveto
+(alued) cmr10 9.96265 fshow
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/parse_stk_env.mp b/web/yacco2/diagrams/parse_stk_env.mp
new file mode 100644
index 0000000000..8f41b2bed8
--- /dev/null
+++ b/web/yacco2/diagrams/parse_stk_env.mp
@@ -0,0 +1,53 @@
+% file: yacco2_stbl.mp
+input boxes
+beginfig(1);
+u=1cc;
+
+% parse stack
+pair sw,se,ne,nw;
+pair zx,zy;
+
+sw:=(5u,0);
+se:=(6u,0);
+ne:=(6u,4u);
+nw:=(5u,4u);
+draw sw--se--ne--nw--cycle;
+%outline the bytes
+for i=1 upto 3:
+ zx:=(5u,i*u);zy:=(6u,i*u);
+ if i = 3:
+ draw zx{dir 45} .. .5[zx,zy] {dir -45} .. zy;
+ else:
+ draw zx--zy;
+ fi
+endfor
+
+% label subscripts
+defaultscale:=.6;
+for i=0 upto 3:
+ zy:=(6u,i*u);
+ string a;
+ if i=3:
+ a := "max stk items";
+ label.rt(a,zy);
+ else:
+ a:=decimal (i);
+ label.rt(substring(0,1)of a,zy);
+ fi
+endfor
+label.bot(btex parse stack[].parse$\_$record etex,(6u,0u));
+
+defaultscale:=1;
+
+
+%outline parse record
+label.rt(btex parse$\_$record: etex,(9u,6u));
+label.rt(btex $\bullet\ $symbol$\uparrow$ etex,(10u,5u));
+label.rt(btex $\bullet\ $state$\uparrow$ etex,(10u,4u));
+label.rt(btex $\bullet\ $aborted\ boolean valued etex,(10u,3u));
+label.rt(btex $\bullet\ $Rule$\_$s$\_$reuse$\_$entry$\uparrow$ etex,(10u,2u));
+label.rt(btex $\bullet\ $recycled rule$\uparrow$ etex,(12u,1u));
+label.rt(btex $\bullet\ $used on stack --- boolean valued etex,(12u,0u));
+endfig;
+
+end;
diff --git a/web/yacco2/diagrams/ppmntr.txt b/web/yacco2/diagrams/ppmntr.txt
new file mode 100644
index 0000000000..9a29288815
--- /dev/null
+++ b/web/yacco2/diagrams/ppmntr.txt
@@ -0,0 +1,33 @@
+/*
+file: ppmntr.txt
+Why: text example parallel monitor construct.
+*/
+
+parallel-control-monitor {
+ /@
+ unquoted-string supersets identifier
+ and also includes other T like $-$$>$ and cweb comments ie cweb-marker.
+ Code only gets tried when \# parms in accept queue $>$ 1.
+ Single entry is one of identifier or cweb.
+ @/
+arbitrator-code
+ using namespace NS_yacco2_T_enum;
+ {
+ parallel_accept_queue_iterator_type z;
+ z = To_judge->accept_queue__.find(NS_yacco2_T_enum::T_Enum::T_T_cweb_marker_);
+ if(z != ie){// cweb marker fnd
+ i = z;
+ accept_parse_parm = (*z).second;
+ (*z).second = 0;
+ goto arbitrated_parameter;
+ }
+ // negative: throw out the superset: unquoted-string
+ // cuz identifier or one of its derivatives should be accepted
+ i = To_judge->accept_queue__.find(NS_yacco2_T_enum::T_Enum::T_T_unquoted_string_);
+ delete (*i).second;
+ To_judge->accept_queue__.erase(i);
+ i = To_judge->accept_queue__.begin();
+ accept_parse_parm = (*i).second;
+ }
+ ***
+} \ No newline at end of file
diff --git a/web/yacco2/diagrams/ppprsr.txt b/web/yacco2/diagrams/ppprsr.txt
new file mode 100644
index 0000000000..c5cf7ed6f2
--- /dev/null
+++ b/web/yacco2/diagrams/ppprsr.txt
@@ -0,0 +1,13 @@
+/*
+file: ppprsr.txt
+Why: text example parallel parser construct.
+*/
+parallel-parser
+(
+ parallel-thread-function
+ TH_angled_string
+ ***
+ parallel-la-boundary
+ eolr - ||| - |+| - ">"
+ ***
+)
diff --git a/web/yacco2/diagrams/rcsym.txt b/web/yacco2/diagrams/rcsym.txt
new file mode 100644
index 0000000000..22c8339561
--- /dev/null
+++ b/web/yacco2/diagrams/rcsym.txt
@@ -0,0 +1,46 @@
+/*
+file: rcsym.txt
+Why: raw character symbols vocabulary to parse.
+Note: raw-characters is shown for clarity. It is the keyword trigger
+ that calls this grammar. Parsed is comments onwards.
+*/
+raw-characters
+// comments
+(file-name o2_chars,name-space NS_o2_chars) {
+// 7 bit char set
+"x00" (sym-class raw_nul{
+ user-declaration
+ public:
+ raw_nul(INT Ext_file,size_t Pos);
+ ***
+ user-implementation
+ raw_nul::raw_nul(INT Ext_file,size_t Pos){
+ T_CTOR_RW("x00",T_raw_nul_,false,false,Ext_file,Pos)}
+ ***
+ }
+)
+ ....
+"!" (sym-class raw_exclam{
+ user-declaration
+ public:
+ raw_exclam(INT Ext_file,size_t Pos);
+ ***
+ user-implementation
+ raw_exclam::raw_exclam(INT Ext_file,size_t Pos){
+ T_CTOR_RW("!",T_raw_exclam_,false,false,Ext_file,Pos)}
+ ***
+ }
+)
+ ....
+// 8 bit char set
+"xff" (sym-class raw_xff{
+ user-declaration
+ public:
+ raw_xff(INT Ext_file,size_t Pos);
+ ***
+ user-implementation
+ raw_xff::raw_xff(INT Ext_file,size_t Pos){
+ T_CTOR_RW("xff",T_raw_xff_,false,false,Ext_file,Pos)}
+ ***
+ }
+} \ No newline at end of file
diff --git a/web/yacco2/diagrams/ruledef.txt b/web/yacco2/diagrams/ruledef.txt
new file mode 100644
index 0000000000..63285269b9
--- /dev/null
+++ b/web/yacco2/diagrams/ruledef.txt
@@ -0,0 +1,25 @@
+/*
+file: ruledef.txt
+Why: example of text to parse by rule_def_phrase grammar.
+*/
+Rrule_def_phrase AD AB(
+lhs
+,parallel-control-monitor{
+ arbitrator-code
+ ***
+ }
+){
+ -> |.|
+ -> ||| "cweb-marker" NS_cweb_marker::TH_cweb_marker {
+ rhs-op
+ Crule_def_phrase* fsm = (Crule_def_phrase*)parser()->fsm_tbl();
+ fsm->rule_def_->add_cweb_marker(sf->p2__->ast());
+ ***
+ }
+ -> ||| |+| NULL {
+ rhs-op
+ RSVP(sf->p2__);
+ parser()->set_stop_parse(true);
+ ***
+ }
+}
diff --git a/web/yacco2/diagrams/rulelhs.txt b/web/yacco2/diagrams/rulelhs.txt
new file mode 100644
index 0000000000..623043ab46
--- /dev/null
+++ b/web/yacco2/diagrams/rulelhs.txt
@@ -0,0 +1,13 @@
+/*
+file: rulelhs.txt
+Why: example of text to parse by rule_lhs_phrase grammar.
+*/
+lhs {
+ user-declaration
+ AST* cweb_t_;
+ ***
+ constructor
+ cweb_t_ = 0;
+ ***
+}
+
diff --git a/web/yacco2/diagrams/sampleoutput.txt b/web/yacco2/diagrams/sampleoutput.txt
new file mode 100644
index 0000000000..cda3cf5fc8
--- /dev/null
+++ b/web/yacco2/diagrams/sampleoutput.txt
@@ -0,0 +1,197 @@
+//
+// File: c:/yacco2/compiler/grammars/yacco2_fsc.cpp
+// Generated by linker.exe
+// Date and Time: Fri May 06 16:30:11 2005
+//
+
+// Preamble code
+#include <yacco2.h>
+#include <yacco2_T_enumeration.h>
+#include <yacco2_err_symbols.h>
+#include <yacco2_k_symbols.h>
+#include <yacco2_terminals.h>
+#include <yacco2_characters.h>
+using namespace NS_yacco2_T_enum;
+using namespace NS_yacco2_err_symbols;
+using namespace NS_yacco2_k_symbols;
+using namespace NS_yacco2_terminals;
+using namespace NS_yacco2_characters;
+// thread include and namespace
+#include <T_enum_phrase_th.h>
+using namespace NS_T_enum_phrase_th;
+#include <angled_string.h>
+using namespace NS_angled_string;
+#include <bad_char_set.h>
+using namespace NS_bad_char_set;
+#include <c_comments.h>
+using namespace NS_c_comments;
+#include <c_literal.h>
+using namespace NS_c_literal;
+ ...
+#include <yacco2_code_end.h>
+using namespace NS_yacco2_code_end;
+#include <yacco2_lcl_option.h>
+using namespace NS_yacco2_lcl_option;
+#include <yacco2_linker_keywords.h>
+using namespace NS_yacco2_linker_keywords;
+#include <yacco2_syntax_code.h>
+using namespace NS_yacco2_syntax_code;
+
+// BIT MAPS
+#define TOTAL_NO_BIT_WORDS 2*1024*50
+int yacco2::TOTAL_NO_BIT_WORDS__(TOTAL_NO_BIT_WORDS);
+yacco2::ULINT bit_maps[TOTAL_NO_BIT_WORDS];
+void* yacco2::BIT_MAPS_FOR_SALE__ = (void*)&bit_maps;
+int yacco2::BIT_MAP_IDX__(0);
+// THREAD STABLE
+yacco2::Thread_entry ITH_T_enum_phrase_th =
+ {"TH_T_enum_phrase_th",NS_T_enum_phrase_th::TH_T_enum_phrase_th,0
+ ,NS_T_enum_phrase_th::PROC_TH_T_enum_phrase_th};
+yacco2::Thread_entry ITH_angled_string =
+ {"TH_angled_string",NS_angled_string::PROC_TH_angled_string,1
+ ,NS_angled_string::TH_angled_string};
+ ...
+yacco2::Thread_entry ITH_yacco2_syntax_code =
+ {"TH_yacco2_syntax_code",NS_yacco2_syntax_code::TH_yacco2_syntax_code
+ ,52,NS_yacco2_syntax_code::PROC_TH_yacco2_syntax_code};
+struct thd_array_type {
+ yacco2::USINT no_entries__;
+ yacco2::Thread_entry* first_entry__[53];
+};
+thd_array_type thd_array = {
+ 53
+ ,
+ {
+ &ITH_T_enum_phrase_th
+ ,&ITH_angled_string
+ ,&ITH_bad_char_set
+ ,&ITH_c_comments
+ ...
+ ,&ITH_yacco2_code_end
+ ,&ITH_yacco2_lcl_option
+ ,&ITH_yacco2_linker_keywords
+ ,&ITH_yacco2_syntax_code
+ }
+};
+void* yacco2::THDS_STABLE__ = (void*)&thd_array;
+// Terminal thread sets
+struct T_0_type{
+ yacco2::ULINT first_entry__[2];
+};
+T_0_type T_0 = {// for T: LR1_eof
+//20: TH_linker_preamble_code
+//31: TH_rhs_bnd
+//32: TH_rhs_component
+//47: TH_unquoted_string
+//52: TH_yacco2_syntax_code
+ {2148532224
+ ,1081345
+ }
+};
+struct T_1_type{
+ yacco2::ULINT first_entry__[2];
+};
+T_1_type T_1 = {// for T: LR1_eog
+//20: TH_linker_preamble_code
+//31: TH_rhs_bnd
+//32: TH_rhs_component
+//47: TH_unquoted_string
+//52: TH_yacco2_syntax_code
+ {2148532224
+ ,1081345
+ }
+};
+struct T_6_type{
+ yacco2::ULINT first_entry__[2];
+};
+T_6_type T_6 = {// for T: LR1_all_shift_operator
+//20: TH_linker_preamble_code
+//32: TH_rhs_component
+//47: TH_unquoted_string
+//52: TH_yacco2_syntax_code
+ {1048576
+ ,1081345
+ }
+};
+struct T_7_type{
+ yacco2::ULINT first_entry__[2];
+};
+T_7_type T_7 = {// for T: LR1_fset_transience_operator
+//0: TH_T_enum_phrase_th
+//9: TH_error_symbols_phrase_th
+//14: TH_fsm_class_phrase_th
+//15: TH_fsm_phrase_th
+//21: TH_lr1_k_phrase_th
+//24: TH_parallel_control
+//28: TH_parallel_parser_phrase_th
+//29: TH_prefile_include
+//30: TH_rc_phrase_th
+//33: TH_rule_def_phrase
+//35: TH_rules_phrase_th
+//39: TH_subrules_phrase
+//42: TH_terminal_def_phrase
+//44: TH_terminals_phrase_th
+ {1897972225
+ ,5258
+ }
+};
+ ...
+struct T_510_type{
+ yacco2::ULINT first_entry__[2];
+};
+T_510_type T_510 = {// for T: thread_attributes
+//20: TH_linker_preamble_code
+//32: TH_rhs_component
+//47: TH_unquoted_string
+//52: TH_yacco2_syntax_code
+ {1048576
+ ,1081345
+ }
+};
+struct T_511_type{
+ yacco2::ULINT first_entry__[2];
+};
+T_511_type T_511 = {// for T: th_in_stbl
+//20: TH_linker_preamble_code
+//32: TH_rhs_component
+//47: TH_unquoted_string
+//52: TH_yacco2_syntax_code
+ {1048576
+ ,1081345
+ }
+};
+struct T_512_type{
+ yacco2::ULINT first_entry__[2];
+};
+T_512_type T_512 = {// for T: kw_in_stbl
+//20: TH_linker_preamble_code
+//32: TH_rhs_component
+//47: TH_unquoted_string
+//52: TH_yacco2_syntax_code
+ {1048576
+ ,1081345
+ }
+};
+struct t_array_type {
+ yacco2::USINT no_entries__;
+ yacco2::thd_ids_having_T* first_entry__[513];
+};
+t_array_type t_array = {
+ 513
+ ,{(yacco2::thd_ids_having_T*)&T_0 // LR1_eof
+ ,(yacco2::thd_ids_having_T*)&T_1 // LR1_eog
+ ,0// LR1_eolr
+ ,0// LR1_parallel_operator
+ ,0// LR1_parallel_procedure_call_operator
+ ,0// LR1_invisible_shift_operator
+ ,(yacco2::thd_ids_having_T*)&T_6 // LR1_all_shift_operator
+ ,(yacco2::thd_ids_having_T*)&T_7 // LR1_fset_transience_operator
+ ,(yacco2::thd_ids_having_T*)&T_8 // raw_nul
+ ...
+ ,(yacco2::thd_ids_having_T*)&T_509 // T_attributes
+ ,(yacco2::thd_ids_having_T*)&T_510 // thread_attributes
+ ,(yacco2::thd_ids_having_T*)&T_511 // th_in_stbl
+ ,(yacco2::thd_ids_having_T*)&T_512 // kw_in_stbl
+ }
+};
+void* yacco2::T_ARRAY_HAVING_THD_IDS__ = (void*)&t_array;
diff --git a/web/yacco2/diagrams/sampleoutput2.txt b/web/yacco2/diagrams/sampleoutput2.txt
new file mode 100644
index 0000000000..2ebb718ff1
--- /dev/null
+++ b/web/yacco2/diagrams/sampleoutput2.txt
@@ -0,0 +1,28 @@
+//
+// File: c:/yacco2/linker/ts_0_fsc.cpp
+// Generated by linker.exe
+// Date and Time: Wed May 11 16:06:43 2005
+//
+
+// Preamble code
+#include <yacco2.h>
+#include <yacco2_T_enumeration.h>
+#include <yacco2_err_symbols.h>
+#include <yacco2_k_symbols.h>
+#include <yacco2_terminals.h>
+#include <yacco2_characters.h>
+using namespace NS_yacco2_T_enum;
+using namespace NS_yacco2_err_symbols;
+using namespace NS_yacco2_k_symbols;
+using namespace NS_yacco2_terminals;
+using namespace NS_yacco2_characters;
+// thread include and namespace
+// BIT MAPS
+#define TOTAL_NO_BIT_WORDS 2*1024*50
+int yacco2::TOTAL_NO_BIT_WORDS__(TOTAL_NO_BIT_WORDS);
+yacco2::ULINT bit_maps[TOTAL_NO_BIT_WORDS];
+void* yacco2::BIT_MAPS_FOR_SALE__ = (void*)&bit_maps;
+int yacco2::BIT_MAP_IDX__(0);
+// There are NO THREADS emitted
+void* yacco2::THDS_STABLE__ = 0;
+void* yacco2::T_ARRAY_HAVING_THD_IDS__ = 0;
diff --git a/web/yacco2/diagrams/subrdef.txt b/web/yacco2/diagrams/subrdef.txt
new file mode 100644
index 0000000000..7929a12174
--- /dev/null
+++ b/web/yacco2/diagrams/subrdef.txt
@@ -0,0 +1,22 @@
+/*
+file: subrdef.txt
+Why: some text examples of sub rule construct.
+*/
+
+ -> ||| "#NULL" NS_identifier::TH_identifier {
+ op
+ Csubrule_def* fsm = (Csubrule_def*)parser()->fsm_tbl();
+ fsm->subrule_def_->add_elem_to_subrule_vector(sf->p2__);
+ ***
+ }
+ -> |?| {
+ op
+ CAbs_lr1_sym* sym = new LR1_err_no_open_brace;
+ sym->set_rc(*parser()->current_token(),*parser());
+ RSVP(sym);
+ parser()->set_stop_parse(true);
+ ***
+ }
+ -> "{"
+ -> Rvector Rlint Rrhs_expr
+
diff --git a/web/yacco2/diagrams/test.pdf b/web/yacco2/diagrams/test.pdf
new file mode 100644
index 0000000000..03895c75d4
--- /dev/null
+++ b/web/yacco2/diagrams/test.pdf
Binary files differ
diff --git a/web/yacco2/diagrams/test.tex b/web/yacco2/diagrams/test.tex
new file mode 100644
index 0000000000..8492984740
--- /dev/null
+++ b/web/yacco2/diagrams/test.tex
@@ -0,0 +1,109 @@
+% test.tex
+\input cwebmac
+\input "supp-pdf"
+\input "/yacco2/diagrams+etc/o2mac.tex"
+%\IDXlinkerdoctitle{o2linker\_doc.w}{o2linker%
+%\_doc.w}{/yacco2/compiler/grammars/yacco2.fsc}
+%\tracingall=1
+\tabskip=.5em plus1em minus.25em
+
+\stateno1 { } {0} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{c}&{Rtest}&{1\hss}&{1\hss}&{1\hss}&{Rtest\_indiv}&{1\hss}&{17\hss}&{0017\hss}\cr
+{c}&{Rtest\_indiv}&{233\hss}&{1\hss}&{1\hss}&{Ra}&{1\hss}&{6\hss}&{8\hss}\cr
+{c}&{Rtest\_indiv}&{2\hss}&{2\hss}&{1\hss}&{Rr}&{1\hss}&{9\hss}&{12\hss}\cr
+{c}&{Rtest\_indiv}&{2\hss}&{3\hss}&{1\hss}&{RE}&{1\hss}&{13\hss}&{16\hss}\cr
+{c}&{Ra}&{3\hss}&{1\hss}&{1\hss}&{a}&{1\hss}&{2\hss}&{2\hss}\cr
+{c}&{Ra}&{3\hss}&{2\hss}&{1\hss}&{A}&{1\hss}&{3\hss}&{3\hss}\cr
+{c}&{Rr}&{5\hss}&{1\hss}&{1\hss}&{r}&{1\hss}&{4\hss}&{4\hss}\cr
+{c}&{RE}&{7\hss}&{1\hss}&{1\hss}&{e}&{1\hss}&{5\hss}&{5\hss}\cr
+{c}&{REMMMMMMMMMMMzzzzhh...}&{7\hss}&{1\hss}&{1\hss}&{e}&{1\hss}&{5\hss}&{5\hss}\cr
+}
+\stateno2 {a} {15} {no}
+\halign{
+\span\statetemplate%
+\statetitle
+{t}&{Ra}&{003}&{001}&{002}&{eosr}&{0001}&{0000}&{0002}\cr
+}
+\stateno3 {A} {17} {no}
+\halign{
+\span\statetemplate%
+\statetitle
+{t}&{Ra}&{003}&{002}&{002}&{eosr}&{0001}&{0000}&{0002}\cr
+}
+\stateno4 {r} {21} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{Rr}&{005}&{001}&{002}&{eosr}&{0001}&{0000}&{0004}\cr
+}
+\stateno5 {e} {23} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{RE}&{007}&{001}&{002}&{eosr}&{0001}&{0000}&{0005}\cr
+}
+\stateno6 {Ra} {4} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{Rtest\_indiv}&{002}&{001}&{002}&{Rc}&{0001}&{0008}&{0008}\cr
+{C}&{Rc}&{004}&{001}&{004}&{c}&{0006}&{0007}&{0007}\cr
+}
+\stateno7 {c} {19} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{Rc}&{004}&{001}&{002}&{eosr}&{0006}&{0000}&{0007}\cr
+}
+\stateno8 {Rc} {5} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{Rtest\_indiv}&{002}&{001}&{003}&{eosr}&{0001}&{0000}&{0008}\cr
+}
+\stateno9 {Rr} {7} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{Rtest\_indiv}&{0002}&{002}&{002}&{Ra}&{0001}&{0010}&{0012}\cr
+{C}&{Ra}&{003}&{001}&{001}&{a}&{0009}&{0002}&{0002}\cr
+{C}&{Ra}&{003}&{001}&{002}&{eosr}&{0009}&{0003}&{0003}\cr
+}
+\stateno{10} {Ra} {8} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{Rtest\_indiv}&{0002}&{002}&{003}&{Rm}&{0001}&{0012}&{0012}\cr
+{C}&{Rm}&{006}&{001}&{001}&{m}&{0010}&{0011}&{0011}\cr
+}
+\stateno{11} {m} {27} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{Rm}&{006}&{001}&{002}&{eosr}&{0010}&{0000}&{0011}\cr
+}
+\stateno{12} {Rm} {9} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{Rtest\_indiv}&{002}&{002}&{004}&{eosr}&{0001}&{0000}&{0012}\cr
+}
+\stateno{13} {RE} {11} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{Rtest\_indiv}&{002}&{003}&{002}&{Ra}&{0001}&{0014}&{0016}\cr
+{C}&{Ra}&{003}&{001}&{001}&{a}&{0013}&{0002}&{0002}\cr
+{C}&{Ra}&{003}&{002}&{001}&{A}&{0013}&{0003}&{0003}\cr
+}
+\stateno{17} {Rtest\_indiv} {2} {no}
+\halign{
+\span\statetemplate
+\statetitle
+{t}&{Rtest}&{001}&{001}&{002}&{eosr}&{0001}&{0000}&{0017}\cr
+}
+
+\end
diff --git a/web/yacco2/diagrams/testsuiteoutput.txt b/web/yacco2/diagrams/testsuiteoutput.txt
new file mode 100644
index 0000000000..0eb9f3637c
--- /dev/null
+++ b/web/yacco2/diagrams/testsuiteoutput.txt
@@ -0,0 +1,622 @@
+C:\yacco2\linker>rem file: testsuite.bat
+C:\yacco2\linker>rem test suite for Linker
+C:\yacco2\linker>cd "c:\yacco2\linker\release\"
+######## Command line edits #######
+######## perfect score: compile linker and yacco2 first set
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/compiler/grammars/yacco2.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Sort thread dictionary
+Emit file name: c:/yacco2/compiler/grammars/yacco2_fsc.cpp
+
+######## Command line error: bad file name inputted
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/compiler/grammars/yacco2.fscc"
+Load linker's keywords
+Get command line and parse it
+Error in file#: 1 "linkercmd.tmp"
+c:/yacco2/compiler/grammars/yacco2.fscc
+^
+ fpos: 0 line#: 1 cpos: 1
+ bad-filename filename: "c:/yacco2/compiler/grammars/yacco2.fscc" does not exist
+
+######## File control file error: no preamble construct
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_1.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Error in file#: 2 "c:/yacco2/linker/TS_1.fsc"
+emitfile "TS_1_fsc.tmp"
+ ^
+ fpos: 121 line#: 7 cpos: 25
+ preamble keyword not present
+
+######## File control file error: no end-preamble present
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_2.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Error in file#: 2 "c:/yacco2/linker/TS_2.fsc"
+#include <yacco2.h>
+ ^
+ fpos: 151 line#: 9 cpos: 20
+ end-preamble keyword not present
+
+######## File control file error: no preamble code present
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_3.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Error in file#: 2 "c:/yacco2/linker/TS_3.fsc"
+preamble
+ ^
+ fpos: 131 line#: 8 cpos: 9
+ preamble source code not present
+
+######## File control file error: no file-of-T-alphabet keyword present
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_4.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Error in file#: 2 "c:/yacco2/linker/TS_4.fsc"
+file-of-T-alphabe "c:/yacco2/linker/TS_4.fsc"
+^
+ fpos: 57 line#: 6 cpos: 1
+ file-of-T-alphabet keyword not present
+
+######## File control file error: no file-of-T-alphabet file present
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_5.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Error in file#: 2 "c:/yacco2/linker/TS_5.fsc"
+emitfile "TS_5_fsc.tmp"
+^
+ fpos: 82 line#: 7 cpos: 1
+ T-alphabet file not present
+
+######## File control file error: no emitfile keyword present
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_6.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Error in file#: 2 "c:/yacco2/linker/TS_6.fsc"
+emitfilee "TS_6_fsc.tmp"
+^
+ fpos: 102 line#: 7 cpos: 1
+ emitfile keyword not present
+
+######## File control file error: no emitfile file present
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_7.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Error in file#: 2 "c:/yacco2/linker/TS_7.fsc"
+preamble
+^
+ fpos: 108 line#: 8 cpos: 1
+ emitfile file not present
+
+######## File control file error: no fsc file present
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_8.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Error in file#: 2 "c:/yacco2/linker/TS_8.fsc"
+end-preamble
+ ^
+ fpos: 175 line#: 10 cpos: 13
+ fsc control file not present
+
+######## File control file error: bad fsc filename
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_9.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Error in file#: 2 "c:/yacco2/linker/TS_9.fsc"
+"c:/yacco2/linker/TS_9xx.fsc"
+^
+ fpos: 174 line#: 11 cpos: 1
+ fsc control file does not exist
+
+######## T-alphabet edits #######
+######## T-alphabet: no T-alphabet keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_10.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Error in file#: 3 "c:/yacco2/linker/TS_10t1.fsc"
+T-alphabett
+^
+ fpos: 75 line#: 5 cpos: 1
+ T-alphabet keyword not present
+
+######## T-alphabet: no end-T-alphabet keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_11.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Error in file#: 3 "c:/yacco2/linker/TS_11t1.fsc"
+end-T-alphabett
+ ^
+ fpos: 125 line#: 10 cpos: 3
+ end-T-alphabet keyword not present
+
+######## T-alphabet: duplicate t definition
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_12.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Error in file#: 3 "c:/yacco2/linker/TS_12t1.fsc"
+LR1_eof
+^
+ fpos: 122 line#: 10 cpos: 1
+ dup-entry-in-sym-table
+
+######## T-alphabet: no t definition
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_13.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Error in file#: 3 "c:/yacco2/linker/TS_13t1.fsc"
+end-T-alphabet
+^
+ fpos: 68 line#: 6 cpos: 1
+ no terminals in T-alphabet list
+
+######## T-alphabet: comment overrun
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_14.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Error in file#: 2 "c:/yacco2/linker/TS_14.fsc"
+/*
+^
+ fpos: 0 line#: 1 cpos: 1
+ comment-overrun
+
+######## fsc control files #######
+######## fsc control files: not defined terminal used in fsc control file
+
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_15.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/compiler/grammars/error_symbols_phrase.FSC"
+no-of-T 513
+ ^
+ fpos: 195 line#: 7 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 4 "c:/yacco2/compiler/grammars/error_symbols_phrase.FSC"
+ LR1_fset_transience_operator
+ ^
+ fpos: 239 line#: 9 cpos: 4
+ bad terminal in list, not defined in T-alphabet
+
+######## fsc control files: thread used but not defined in fsc control file
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_16.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_16t1.fsc"
+ NS_bad_char_set::TH_bad_char_set
+ ^
+ fpos: 378 line#: 18 cpos: 3
+ bad thread in transitive list, not defined by fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_16t1.fsc"
+ NS_c_comments::TH_c_comments
+ ^
+ fpos: 413 line#: 19 cpos: 3
+ bad thread in transitive list, not defined by fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_16t1.fsc"
+ NS_c_literal::TH_c_literal
+ ^
+ fpos: 444 line#: 20 cpos: 3
+ bad thread in transitive list, not defined by fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_16t1.fsc"
+ NS_c_string::TH_c_string
+ ^
+ fpos: 473 line#: 21 cpos: 3
+ bad thread in transitive list, not defined by fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_16t1.fsc"
+ NS_eol::TH_eol
+ ^
+ fpos: 500 line#: 22 cpos: 3
+ bad thread in transitive list, not defined by fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_16t1.fsc"
+ NS_identifier::TH_identifier
+ ^
+ fpos: 517 line#: 23 cpos: 3
+ bad thread in transitive list, not defined by fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_16t1.fsc"
+ NS_ws::TH_ws
+ ^
+ fpos: 548 line#: 24 cpos: 3
+ bad thread in transitive list, not defined by fsc files
+
+######## fsc control files: bad native first set number
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_17.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_17t1.fsc"
+no-of-T 502
+ ^
+ fpos: 205 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 4 "c:/yacco2/linker/TS_17t1.fsc"
+list-of-native-first-set-terminals -3
+ ^
+ fpos: 244 line#: 12 cpos: 36
+ list-of-native-terminals... number not present
+
+######## fsc control files: native first set number mismatch to no in list
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_18.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_18t1.fsc"
+no-of-T 502
+ ^
+ fpos: 229 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 4 "c:/yacco2/linker/TS_18t1.fsc"
+list-of-native-first-set-terminals 2
+ ^
+ fpos: 268 line#: 12 cpos: 36
+ no terminals in list not equal, chk items in list
+
+######## fsc control files: thread list number mismatch to no in list
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_19.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_19t1.fsc"
+no-of-T 502
+ ^
+ fpos: 224 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 4 "c:/yacco2/linker/TS_19t1.fsc"
+list-of-transitive-threads 2
+ ^
+ fpos: 383 line#: 17 cpos: 28
+ no threads in list not equal, chk items in list
+
+######## fsc control files: bad thread list number
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_20.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_20t1.fsc"
+no-of-T 502
+ ^
+ fpos: 205 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 4 "c:/yacco2/linker/TS_20t1.fsc"
+list-of-transitive-threads -7
+ ^
+ fpos: 364 line#: 17 cpos: 28
+ list-of-transitive-threads... number not present
+
+######## fsc control files: no thread list number present
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_21.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_21t1.fsc"
+no-of-T 502
+ ^
+ fpos: 212 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 4 "c:/yacco2/linker/TS_21t1.fsc"
+ NS_bad_char_set::TH_bad_char_set
+ ^
+ fpos: 374 line#: 18 cpos: 3
+ list-of-transitive-threads... number not present
+
+######## fsc control files: no native first set number present
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_22.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_22t1.fsc"
+no-of-T 502
+ ^
+ fpos: 222 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 3 "c:/yacco2/compiler/grammars/yacco2_T_enumeration.fsc"
+raw_at_sign
+^
+ fpos: 746 line#: 74 cpos: 1
+ list-of-native-terminals... number not present
+
+######## fsc control files: no-of-T # not matched against T-alphabet
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_23.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_23t1.fsc"
+no-of-T 1502
+ ^
+ fpos: 223 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+
+######## fsc control files: no transitive keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_24.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_24t1.fsc"
+transitivee y
+^
+ fpos: 69 line#: 5 cpos: 1
+ transitive keyword not present
+
+######## fsc control files: bad transitive value
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_25.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_25t1.fsc"
+transitive x
+ ^
+ fpos: 81 line#: 5 cpos: 14
+ linker's transitive value not n or y
+
+######## fsc control files: bad grammar-name keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_26.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_26t1.fsc"
+grammar-namee "pass3"
+^
+ fpos: 87 line#: 6 cpos: 1
+ grammar-name keyword not present
+
+######## fsc control files: bad grammar-name value
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_27.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_27t1.fsc"
+grammar-name pass3
+ ^
+ fpos: 98 line#: 6 cpos: 14
+ grammar-name value not present or quoted value
+
+######## fsc control files: bad name-space keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_28.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_28t1.fsc"
+name-spacee "NS_pass3"
+^
+ fpos: 106 line#: 7 cpos: 1
+ name-space keyword not present
+
+######## fsc control files: bad name-space value
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_29.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_29t1.fsc"
+name-space NS_pass3
+ ^
+ fpos: 117 line#: 7 cpos: 14
+ name-space value not present or quoted value
+
+######## fsc control files: bad thread-name keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_30.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_30t1.fsc"
+thread-namee "Cpass3"
+^
+ fpos: 131 line#: 8 cpos: 1
+ thread-name keyword not present
+
+######## fsc control files: bad thread-name value
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_31.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_31t1.fsc"
+thread-name Cpass3
+ ^
+ fpos: 142 line#: 8 cpos: 14
+ thread-name value not present or quoted value
+
+######## fsc control files: bad monolithic keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_32.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_32t1.fsc"
+monolithicc y
+^
+ fpos: 152 line#: 9 cpos: 1
+ monolithic keyword not present
+
+######## fsc control files: bad monolithic value
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_33.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_33t1.fsc"
+monolithic Y
+ ^
+ fpos: 163 line#: 9 cpos: 14
+ linker's monolithic value not n or y
+
+######## fsc control files: bad file-name keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_34.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_34t1.fsc"
+file-namee "pass3.fsc"
+^
+ fpos: 166 line#: 10 cpos: 1
+ file-name keyword not present
+
+######## fsc control files: bad file-name value
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_35.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_35t1.fsc"
+file-name monolithic.fsc
+ ^
+ fpos: 177 line#: 10 cpos: 14
+ file-name value not present or quoted value
+
+######## fsc control files: bad no-of-T keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_36.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_36t1.fsc"
+no-of-Tt 504
+^
+ fpos: 189 line#: 11 cpos: 1
+ no-of-T keyword not present
+
+######## fsc control files: bad no-of-T value
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_37.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_37t1.fsc"
+no-of-T +504
+ ^
+ fpos: 200 line#: 11 cpos: 14
+ no-of-T value not present
+
+######## fsc control files: bad list-of-native-first-set-terminals keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_38.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_38t1.fsc"
+no-of-T 504
+ ^
+ fpos: 229 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 4 "c:/yacco2/linker/TS_38t1.fsc"
+transitive 3
+^
+ fpos: 233 line#: 12 cpos: 1
+ list-of-native-terminals keyword not present
+
+######## fsc control files: bad end-list-of-native-first-set-terminals keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_39.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_39t1.fsc"
+no-of-T 504
+ ^
+ fpos: 233 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 4 "c:/yacco2/linker/TS_39t1.fsc"
+end-list-of-native-first-set-terminalss
+^
+ fpos: 326 line#: 16 cpos: 1
+ bad terminal in list, not defined in T-alphabet
+
+######## fsc control files: bad list-of-transitive-threads keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_40.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_40t1.fsc"
+no-of-T 504
+ ^
+ fpos: 221 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 4 "c:/yacco2/linker/TS_40t1.fsc"
+list-of-transitive-threadss 0
+^
+ fpos: 353 line#: 17 cpos: 1
+ list-of-transitive-threads keyword not present
+
+######## fsc control files: bad end-list-of-transitive-threads keyword
+C:\yacco2\linker\Release>lnk.exe "c:/yacco2/linker/TS_41.fsc"
+Load linker's keywords
+Get command line and parse it
+Parse linker control file
+Parse alphabet
+Parse fsc files
+Error in file#: 4 "c:/yacco2/linker/TS_41t1.fsc"
+no-of-T 504
+ ^
+ fpos: 225 line#: 11 cpos: 14
+ T-alphabet list vs no. of T not eq. re-compile grammar
+Error in file#: 4 "c:/yacco2/linker/TS_41t1.fsc"
+end-list-of-transitive-threadss
+ ^
+ fpos: 387 line#: 18 cpos: 3
+ end-list-of-transitive-threads keyword not present
+
+C:\yacco2\linker\Release>del c:\yacco2\linker\ts*.tmp
diff --git a/web/yacco2/diagrams/threading_defs.1 b/web/yacco2/diagrams/threading_defs.1
new file mode 100644
index 0000000000..c7382817da
--- /dev/null
+++ b/web/yacco2/diagrams/threading_defs.1
@@ -0,0 +1,203 @@
+%!PS
+%%BoundingBox: -74 -13 344 81
+%%Creator: MetaPost
+%%CreationDate: 2006.05.23:0810
+%%Pages: 1
+%*Font: cmr10 5.97765 9.96265 20:8004e000000000004cc338
+%*Font: cmmi10 9.96265 9.96265 3a:a800020001b320e
+%*Font: cmsy10 9.96265 9.96265 0f:80001
+%*Font: cmr10 9.96265 9.96265 23:80400100000000a3eefdee4
+%%EndProlog
+%%Page: 1 1
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 1 setlinejoin 10 setmiterlimit
+newpath 12.79213 0 moveto
+25.58426 0 lineto
+25.58426 51.16852 lineto
+12.79213 51.16852 lineto
+ closepath stroke
+ 1 setlinecap
+newpath 12.79213 12.79213 moveto
+25.58426 12.79213 lineto stroke
+newpath 12.79213 25.58426 moveto
+25.58426 25.58426 lineto stroke
+newpath 12.79213 38.37639 moveto
+14.55835 40.14261 17.42198 40.14261 19.1882 38.37639 curveto
+20.95442 36.61017 23.81804 36.61017 25.58426 38.37639 curveto stroke
+28.58426 -1.92613 moveto
+(0) cmr10 5.97765 fshow
+28.58426 10.866 moveto
+(1) cmr10 5.97765 fshow
+28.58426 23.65813 moveto
+(2) cmr10 5.97765 fshow
+28.58426 36.30081 moveto
+(no threads ids-1) cmr10 5.97765 fshow
+-73.87308 -10.472 moveto
+(P) cmmi10 9.96265 fshow
+-66.09317 -10.472 moveto
+(ar) cmmi10 9.96265 fshow
+-56.05557 -10.472 moveto
+(al) cmmi10 9.96265 fshow
+-47.62077 -10.472 moveto
+(l) cmmi10 9.96265 fshow
+-44.45207 -10.472 moveto
+(el) cmmi10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop 0 setlinecap
+newpath -36.04678 -10.2728 moveto
+-33.05798 -10.2728 lineto stroke
+-33.05798 -10.472 moveto
+(thr) cmmi10 9.96265 fshow
+-18.94878 -10.472 moveto
+(ead) cmmi10 9.96265 fshow
+newpath -3.26068 -10.2728 moveto
+-0.27177 -10.2728 lineto stroke
+-0.27177 -10.472 moveto
+(tabl) cmmi10 9.96265 fshow
+16.03622 -10.472 moveto
+(e) cmmi10 9.96265 fshow
+20.67513 -10.472 moveto
+([) cmr10 9.96265 fshow
+23.44252 -10.472 moveto
+(thd) cmmi10 9.96265 fshow
+37.96562 -10.472 moveto
+(#]) cmr10 9.96265 fshow
+49.03522 -10.472 moveto
+(:thr) cmmi10 9.96265 fshow
+65.91182 -10.472 moveto
+(ead) cmmi10 9.96265 fshow
+newpath 81.60002 -10.2728 moveto
+84.58882 -10.2728 lineto stroke
+84.58882 -10.472 moveto
+(l) cmmi10 9.96265 fshow
+87.75752 -10.472 moveto
+(ist) cmmi10 9.96265 fshow
+66.96065 73.29352 moveto
+(thr) cmmi10 9.96265 fshow
+81.06985 73.29352 moveto
+(ead) cmmi10 9.96265 fshow
+newpath 96.75795 73.49272 moveto
+99.74675 73.49272 lineto stroke
+99.74675 73.29352 moveto
+(l) cmmi10 9.96265 fshow
+102.91545 73.29352 moveto
+(ist) cmmi10 9.96265 fshow
+117.38264 73.29352 moveto
+(:) cmr10 9.96265 fshow
+79.75278 61.46999 moveto
+(\017) cmsy10 9.96265 fshow
+88.05498 61.46999 moveto
+(list) cmr10 9.96265 fshow
+101.39388 61.46999 moveto
+(<) cmmi10 9.96265 fshow
+109.14258 61.46999 moveto
+(w) cmr10 9.96265 fshow
+116.06108 61.46999 moveto
+(ork) cmr10 9.96265 fshow
+129.92587 61.46999 moveto
+(er) cmr10 9.96265 fshow
+newpath 138.85347 61.66919 moveto
+141.84227 61.66919 lineto stroke
+141.84227 61.46999 moveto
+(thread) cmr10 9.96265 fshow
+newpath 170.69518 61.66919 moveto
+173.68408 61.66919 lineto stroke
+173.68408 61.46999 moveto
+(blk) cmr10 9.96265 fshow
+187.24437 61.46999 moveto
+(") cmsy10 9.96265 fshow
+192.22568 61.46999 moveto
+(>) cmmi10 9.96265 fshow
+105.33704 48.67786 moveto
+(\017) cmsy10 9.96265 fshow
+113.63924 48.67786 moveto
+(parser) cmr10 9.96265 fshow
+143.63794 48.67786 moveto
+(") cmsy10 9.96265 fshow
+151.94014 48.67786 moveto
+(|) cmr10 9.96265 fshow
+165.22363 48.67786 moveto
+(grammar) cmr10 9.96265 fshow
+207.89703 48.67786 moveto
+(con) cmr10 9.96265 fshow
+222.56433 48.67786 moveto
+(taining) cmr10 9.96265 fshow
+256.32663 48.67786 moveto
+(w) cmr10 9.96265 fshow
+263.24513 48.67786 moveto
+(ork) cmr10 9.96265 fshow
+277.10983 48.67786 moveto
+(er) cmr10 9.96265 fshow
+newpath 286.03743 48.87706 moveto
+289.02634 48.87706 lineto stroke
+289.02634 48.67786 moveto
+(thread) cmr10 9.96265 fshow
+newpath 317.87924 48.87706 moveto
+320.86804 48.87706 lineto stroke
+320.86804 48.67786 moveto
+(blk) cmr10 9.96265 fshow
+105.33704 35.88573 moveto
+(\017) cmsy10 9.96265 fshow
+113.63924 35.88573 moveto
+(status) cmr10 9.96265 fshow
+143.08444 35.88573 moveto
+(|) cmr10 9.96265 fshow
+156.36794 35.88573 moveto
+(idle,) cmr10 9.96265 fshow
+177.95374 35.88573 moveto
+(w) cmr10 9.96265 fshow
+184.87224 35.88573 moveto
+(orking,) cmr10 9.96265 fshow
+218.38553 35.88573 moveto
+(or) cmr10 9.96265 fshow
+230.58974 35.88573 moveto
+(exiting) cmr10 9.96265 fshow
+105.33704 23.0936 moveto
+(\017) cmsy10 9.96265 fshow
+113.63924 23.0936 moveto
+(run) cmr10 9.96265 fshow
+131.93184 23.0936 moveto
+(cn) cmr10 9.96265 fshow
+141.61774 23.0936 moveto
+(t) cmr10 9.96265 fshow
+148.81294 23.0936 moveto
+(|) cmr10 9.96265 fshow
+162.09644 23.0936 moveto
+(stats) cmr10 9.96265 fshow
+186.00684 23.0936 moveto
+(on) cmr10 9.96265 fshow
+199.84384 23.0936 moveto
+(ho) cmr10 9.96265 fshow
+210.08324 23.0936 moveto
+(w) cmr10 9.96265 fshow
+220.59944 23.0936 moveto
+(man) cmr10 9.96265 fshow
+239.14104 23.0936 moveto
+(y) cmr10 9.96265 fshow
+247.71994 23.0936 moveto
+(times) cmr10 9.96265 fshow
+274.34244 23.0936 moveto
+(thread) cmr10 9.96265 fshow
+305.91853 23.0936 moveto
+(executed) cmr10 9.96265 fshow
+105.33704 9.33287 moveto
+(\017) cmsy10 9.96265 fshow
+113.63924 9.33287 moveto
+(thd) cmr10 9.96265 fshow
+131.90413 9.33287 moveto
+(id) cmr10 9.96265 fshow
+143.52724 9.33287 moveto
+(|) cmr10 9.96265 fshow
+156.81073 9.33287 moveto
+(thread) cmr10 9.96265 fshow
+188.38684 9.33287 moveto
+(id) cmr10 9.96265 fshow
+200.00993 9.33287 moveto
+(n) cmr10 9.96265 fshow
+205.26804 9.33287 moveto
+(um) cmr10 9.96265 fshow
+218.82834 9.33287 moveto
+(b) cmr10 9.96265 fshow
+224.63983 9.33287 moveto
+(er) cmr10 9.96265 fshow
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/threading_defs.mp b/web/yacco2/diagrams/threading_defs.mp
new file mode 100644
index 0000000000..6fef81e9fa
--- /dev/null
+++ b/web/yacco2/diagrams/threading_defs.mp
@@ -0,0 +1,49 @@
+% file: threading_defs.mp
+input boxes
+pair sw,se,ne,nw;
+pair zx,zy;
+beginfig(1);
+u=1cc;
+% stbl
+sw:=(1u,0);
+se:=(2u,0);
+ne:=(2u,4u);
+nw:=(1u,4u);
+draw sw--se--ne--nw--cycle;
+%outline the tab;e
+for i=1 upto 3:
+ zx:=(1u,i*u);
+ zy:=(2u,i*u);
+ if i = 3:
+ draw zx{dir 45} .. .5[zx,zy] {dir -45} .. zy;
+ else:
+ draw zx--zy;
+ fi
+endfor
+
+% label subscripts
+defaultscale:=.6;
+for i=0 upto 3:
+ zy:=(2u,i*u);
+ string a;
+ if i=3:
+ a := "no threads ids-1";
+ label.rt(a,zy);
+ else:
+ a:=decimal(i);
+ label.rt(a,zy);
+ fi
+endfor
+defaultscale:=1;
+label.bot(btex $Parallel\_thread\_table[thd $\#$].thread\_list$ etex,(1u,0u));
+
+
+%outline table_entry
+label.rt(btex $thread\_list:$ etex,(5u,6u));
+ label.rt(btex $\bullet\ $list$<$worker$\_$thread$\_$blk$\uparrow >$ etex,(6u,5u));
+ label.rt(btex $\bullet\ $parser\ $\uparrow$ --- grammar containing worker$\_$thread$\_$blk etex,(8u,4u));
+ label.rt(btex $\bullet\ $status\ --- idle, working, or exiting etex,(8u,3u));
+ label.rt(btex $\bullet\ $run cnt\ --- stats on how many times thread executed etex,(8u,2u));
+ label.rt(btex $\bullet\ $thd id\ --- thread id number etex,(8u,1u));
+endfig;
+end;
diff --git a/web/yacco2/diagrams/threading_exs.1 b/web/yacco2/diagrams/threading_exs.1
new file mode 100644
index 0000000000..494d9b673c
--- /dev/null
+++ b/web/yacco2/diagrams/threading_exs.1
@@ -0,0 +1,617 @@
+%!PS
+%%BoundingBox: -75 -1 379 287
+%%Creator: MetaPost
+%%CreationDate: 2006.05.29:1634
+%%Pages: 1
+%*Font: cmtt8 4.78212 7.97011 30:ffc
+%*Font: cmr10 9.96265 9.96265 41:82002000a801001
+%*Font: cmtt8 7.97011 7.97011 20:80040020595cb9005fdfff8
+%%EndProlog
+%%Page: 1 1
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 1 setlinejoin 10 setmiterlimit
+newpath 0 0 moveto
+286.54248 0 lineto
+286.54248 286.54248 lineto
+0 286.54248 lineto
+ closepath stroke
+newpath 17.9089 17.9089 moveto
+268.63358 17.9089 lineto
+268.63358 268.63358 lineto
+17.9089 268.63358 lineto
+ closepath stroke
+newpath 26.86336 26.86336 moveto
+259.67912 26.86336 lineto
+259.67912 259.67912 lineto
+26.86336 259.67912 lineto
+ closepath stroke
+ 1 setlinecap
+newpath 0 0 moveto
+17.9089 17.9089 lineto stroke
+newpath 286.54248 0 moveto
+268.63358 17.9089 lineto stroke
+newpath 286.54248 286.54248 moveto
+268.63358 268.63358 lineto stroke
+newpath 0 286.54248 moveto
+17.9089 268.63358 lineto stroke
+newpath 17.9089 17.9089 moveto
+17.9089 26.86336 lineto
+26.86336 26.86336 lineto
+26.86336 17.9089 lineto stroke
+newpath 17.9089 268.63358 moveto
+26.86336 268.63358 lineto
+26.86336 259.67912 lineto
+17.9089 259.67912 lineto stroke
+newpath 268.63358 268.63358 moveto
+268.63358 259.67912 lineto
+259.67912 259.67912 lineto
+259.67912 268.63358 lineto stroke
+newpath 268.63358 17.9089 moveto
+259.67912 17.9089 lineto
+259.67912 26.86336 lineto
+268.63358 26.86336 lineto stroke
+30.07033 20.9089 moveto
+(0) cmtt8 4.78212 fshow
+30.07033 262.67912 moveto
+(0) cmtt8 4.78212 fshow
+21.11588 253.72467 moveto
+(0) cmtt8 4.78212 fshow
+262.8861 253.72467 moveto
+(0) cmtt8 4.78212 fshow
+39.02478 20.9089 moveto
+(1) cmtt8 4.78212 fshow
+39.02478 262.67912 moveto
+(1) cmtt8 4.78212 fshow
+21.11588 244.77022 moveto
+(1) cmtt8 4.78212 fshow
+262.8861 244.77022 moveto
+(1) cmtt8 4.78212 fshow
+47.97923 20.9089 moveto
+(2) cmtt8 4.78212 fshow
+47.97923 262.67912 moveto
+(2) cmtt8 4.78212 fshow
+21.11588 235.81577 moveto
+(2) cmtt8 4.78212 fshow
+262.8861 235.81577 moveto
+(2) cmtt8 4.78212 fshow
+56.93369 20.9089 moveto
+(3) cmtt8 4.78212 fshow
+56.93369 262.67912 moveto
+(3) cmtt8 4.78212 fshow
+21.11588 226.86131 moveto
+(3) cmtt8 4.78212 fshow
+262.8861 226.86131 moveto
+(3) cmtt8 4.78212 fshow
+65.88814 20.9089 moveto
+(4) cmtt8 4.78212 fshow
+65.88814 262.67912 moveto
+(4) cmtt8 4.78212 fshow
+21.11588 217.90686 moveto
+(4) cmtt8 4.78212 fshow
+262.8861 217.90686 moveto
+(4) cmtt8 4.78212 fshow
+74.84259 20.9089 moveto
+(5) cmtt8 4.78212 fshow
+74.84259 262.67912 moveto
+(5) cmtt8 4.78212 fshow
+21.11588 208.95241 moveto
+(5) cmtt8 4.78212 fshow
+262.8861 208.95241 moveto
+(5) cmtt8 4.78212 fshow
+83.79704 20.9089 moveto
+(6) cmtt8 4.78212 fshow
+83.79704 262.67912 moveto
+(6) cmtt8 4.78212 fshow
+21.11588 199.99796 moveto
+(6) cmtt8 4.78212 fshow
+262.8861 199.99796 moveto
+(6) cmtt8 4.78212 fshow
+92.7515 20.9089 moveto
+(7) cmtt8 4.78212 fshow
+92.7515 262.67912 moveto
+(7) cmtt8 4.78212 fshow
+21.11588 191.0435 moveto
+(7) cmtt8 4.78212 fshow
+262.8861 191.0435 moveto
+(7) cmtt8 4.78212 fshow
+101.70595 20.9089 moveto
+(8) cmtt8 4.78212 fshow
+101.70595 262.67912 moveto
+(8) cmtt8 4.78212 fshow
+21.11588 182.08905 moveto
+(8) cmtt8 4.78212 fshow
+262.8861 182.08905 moveto
+(8) cmtt8 4.78212 fshow
+110.6604 20.9089 moveto
+(9) cmtt8 4.78212 fshow
+110.6604 262.67912 moveto
+(9) cmtt8 4.78212 fshow
+21.11588 173.1346 moveto
+(9) cmtt8 4.78212 fshow
+262.8861 173.1346 moveto
+(9) cmtt8 4.78212 fshow
+118.34457 20.9089 moveto
+(10) cmtt8 4.78212 fshow
+118.34457 262.67912 moveto
+(10) cmtt8 4.78212 fshow
+19.8456 164.18015 moveto
+(10) cmtt8 4.78212 fshow
+261.61581 164.18015 moveto
+(10) cmtt8 4.78212 fshow
+127.29903 20.9089 moveto
+(11) cmtt8 4.78212 fshow
+127.29903 262.67912 moveto
+(11) cmtt8 4.78212 fshow
+19.8456 155.2257 moveto
+(11) cmtt8 4.78212 fshow
+261.61581 155.2257 moveto
+(11) cmtt8 4.78212 fshow
+136.25348 20.9089 moveto
+(12) cmtt8 4.78212 fshow
+136.25348 262.67912 moveto
+(12) cmtt8 4.78212 fshow
+19.8456 146.27124 moveto
+(12) cmtt8 4.78212 fshow
+261.61581 146.27124 moveto
+(12) cmtt8 4.78212 fshow
+145.20793 20.9089 moveto
+(13) cmtt8 4.78212 fshow
+145.20793 262.67912 moveto
+(13) cmtt8 4.78212 fshow
+19.8456 137.31679 moveto
+(13) cmtt8 4.78212 fshow
+261.61581 137.31679 moveto
+(13) cmtt8 4.78212 fshow
+154.16238 20.9089 moveto
+(14) cmtt8 4.78212 fshow
+154.16238 262.67912 moveto
+(14) cmtt8 4.78212 fshow
+19.8456 128.36234 moveto
+(14) cmtt8 4.78212 fshow
+261.61581 128.36234 moveto
+(14) cmtt8 4.78212 fshow
+163.11684 20.9089 moveto
+(15) cmtt8 4.78212 fshow
+163.11684 262.67912 moveto
+(15) cmtt8 4.78212 fshow
+19.8456 119.40788 moveto
+(15) cmtt8 4.78212 fshow
+261.61581 119.40788 moveto
+(15) cmtt8 4.78212 fshow
+172.07129 20.9089 moveto
+(16) cmtt8 4.78212 fshow
+172.07129 262.67912 moveto
+(16) cmtt8 4.78212 fshow
+19.8456 110.45343 moveto
+(16) cmtt8 4.78212 fshow
+261.61581 110.45343 moveto
+(16) cmtt8 4.78212 fshow
+181.02574 20.9089 moveto
+(17) cmtt8 4.78212 fshow
+181.02574 262.67912 moveto
+(17) cmtt8 4.78212 fshow
+19.8456 101.49898 moveto
+(17) cmtt8 4.78212 fshow
+261.61581 101.49898 moveto
+(17) cmtt8 4.78212 fshow
+189.9802 20.9089 moveto
+(18) cmtt8 4.78212 fshow
+189.9802 262.67912 moveto
+(18) cmtt8 4.78212 fshow
+19.8456 92.54453 moveto
+(18) cmtt8 4.78212 fshow
+261.61581 92.54453 moveto
+(18) cmtt8 4.78212 fshow
+198.93465 20.9089 moveto
+(19) cmtt8 4.78212 fshow
+198.93465 262.67912 moveto
+(19) cmtt8 4.78212 fshow
+19.8456 83.59007 moveto
+(19) cmtt8 4.78212 fshow
+261.61581 83.59007 moveto
+(19) cmtt8 4.78212 fshow
+207.8891 20.9089 moveto
+(20) cmtt8 4.78212 fshow
+207.8891 262.67912 moveto
+(20) cmtt8 4.78212 fshow
+19.8456 74.63562 moveto
+(20) cmtt8 4.78212 fshow
+261.61581 74.63562 moveto
+(20) cmtt8 4.78212 fshow
+216.84355 20.9089 moveto
+(21) cmtt8 4.78212 fshow
+216.84355 262.67912 moveto
+(21) cmtt8 4.78212 fshow
+19.8456 65.68117 moveto
+(21) cmtt8 4.78212 fshow
+261.61581 65.68117 moveto
+(21) cmtt8 4.78212 fshow
+225.798 20.9089 moveto
+(22) cmtt8 4.78212 fshow
+225.798 262.67912 moveto
+(22) cmtt8 4.78212 fshow
+19.8456 56.72672 moveto
+(22) cmtt8 4.78212 fshow
+261.61581 56.72672 moveto
+(22) cmtt8 4.78212 fshow
+234.75246 20.9089 moveto
+(23) cmtt8 4.78212 fshow
+234.75246 262.67912 moveto
+(23) cmtt8 4.78212 fshow
+19.8456 47.77226 moveto
+(23) cmtt8 4.78212 fshow
+261.61581 47.77226 moveto
+(23) cmtt8 4.78212 fshow
+243.70691 20.9089 moveto
+(24) cmtt8 4.78212 fshow
+243.70691 262.67912 moveto
+(24) cmtt8 4.78212 fshow
+19.8456 38.81781 moveto
+(24) cmtt8 4.78212 fshow
+261.61581 38.81781 moveto
+(24) cmtt8 4.78212 fshow
+252.66136 20.9089 moveto
+(25) cmtt8 4.78212 fshow
+252.66136 262.67912 moveto
+(25) cmtt8 4.78212 fshow
+19.8456 29.86336 moveto
+(25) cmtt8 4.78212 fshow
+261.61581 29.86336 moveto
+(25) cmtt8 4.78212 fshow
+newpath 286.54248 246.24745 moveto
+268.63358 246.24745 lineto stroke
+newpath 272.32918 247.77826 moveto
+268.63358 246.24745 lineto
+272.32918 244.71664 lineto
+ closepath
+gsave fill grestore stroke
+newpath 282.84688 244.71664 moveto
+286.54248 246.24745 lineto
+282.84688 247.77826 lineto
+ closepath
+gsave fill grestore stroke
+289.54248 244.69771 moveto
+(Acquire g) cmtt8 7.97011 fshow
+289.54248 235.30046 moveto
+(Launch threads) cmtt8 7.97011 fshow
+newpath 286.54248 228.33855 moveto
+268.63358 228.33855 lineto stroke
+newpath 272.32918 229.86935 moveto
+268.63358 228.33855 lineto
+272.32918 226.80774 lineto
+ closepath
+gsave fill grestore stroke
+newpath 282.84688 226.80774 moveto
+286.54248 228.33855 lineto
+282.84688 229.86935 lineto
+ closepath
+gsave fill grestore stroke
+289.54248 226.7888 moveto
+(Acquire x) cmtt8 7.97011 fshow
+newpath 286.54248 219.3841 moveto
+268.63358 219.3841 lineto stroke
+newpath 272.32918 220.9149 moveto
+268.63358 219.3841 lineto
+272.32918 217.85329 lineto
+ closepath
+gsave fill grestore stroke
+289.54248 217.39156 moveto
+(Create A) cmtt8 7.97011 fshow
+newpath 17.9089 210.42964 moveto
+0 210.42964 lineto stroke
+newpath 3.6956 211.96045 moveto
+0 210.42964 lineto
+3.6956 208.89883 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 207.99432 moveto
+(Activated) cmtt8 7.97011 fshow
+newpath 17.9089 201.47519 moveto
+0 201.47519 lineto stroke
+newpath 3.6956 203.006 moveto
+0 201.47519 lineto
+3.6956 199.94438 lineto
+ closepath
+gsave fill grestore stroke
+newpath 14.2133 199.94438 moveto
+17.9089 201.47519 lineto
+14.2133 203.006 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 199.92543 moveto
+(Acquire a) cmtt8 7.97011 fshow
+newpath 0 192.52074 moveto
+17.9089 192.52074 lineto stroke
+newpath 14.2133 190.98993 moveto
+17.9089 192.52074 lineto
+14.2133 194.05154 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 190.97098 moveto
+(Acquire x) cmtt8 7.97011 fshow
+newpath 268.63358 183.56628 moveto
+286.54248 183.56628 lineto stroke
+newpath 282.84688 182.03548 moveto
+286.54248 183.56628 lineto
+282.84688 185.09709 lineto
+ closepath
+gsave fill grestore stroke
+289.54248 181.13097 moveto
+(Re-activated) cmtt8 7.97011 fshow
+289.54248 173.06209 moveto
+(Setup: thread results) cmtt8 7.97011 fshow
+newpath 286.54248 165.65738 moveto
+268.63358 165.65738 lineto stroke
+newpath 272.32918 167.18819 moveto
+268.63358 165.65738 lineto
+272.32918 164.12657 lineto
+ closepath
+gsave fill grestore stroke
+289.54248 163.66484 moveto
+(Release x) cmtt8 7.97011 fshow
+newpath 17.9089 156.70293 moveto
+0 156.70293 lineto stroke
+newpath 3.6956 158.23373 moveto
+0 156.70293 lineto
+3.6956 155.17212 lineto
+ closepath
+gsave fill grestore stroke
+-58.0443 155.15317 moveto
+(Wokeup with x) cmtt8 7.97011 fshow
+-41.10759 145.75594 moveto
+(Make idle) cmtt8 7.97011 fshow
+newpath 0 138.79402 moveto
+17.9089 138.79402 lineto stroke
+newpath 14.2133 137.26321 moveto
+17.9089 138.79402 lineto
+14.2133 140.32483 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 136.80148 moveto
+(Release x) cmtt8 7.97011 fshow
+newpath 268.63358 129.83957 moveto
+286.54248 129.83957 lineto stroke
+newpath 282.84688 128.30876 moveto
+286.54248 129.83957 lineto
+282.84688 131.37038 lineto
+ closepath
+gsave fill grestore stroke
+289.54248 127.40425 moveto
+(Re-activated) cmtt8 7.97011 fshow
+newpath 286.54248 120.88512 moveto
+268.63358 120.88512 lineto stroke
+newpath 272.32918 122.41592 moveto
+268.63358 120.88512 lineto
+272.32918 119.35431 lineto
+ closepath
+gsave fill grestore stroke
+289.54248 118.89258 moveto
+(Wait on event) cmtt8 7.97011 fshow
+289.54248 110.38092 moveto
+(release g) cmtt8 7.97011 fshow
+newpath 17.9089 111.93066 moveto
+0 111.93066 lineto stroke
+newpath 3.6956 113.46147 moveto
+0 111.93066 lineto
+3.6956 110.39986 lineto
+ closepath
+gsave fill grestore stroke
+-53.81012 109.49535 moveto
+(Re-activated) cmtt8 7.97011 fshow
+newpath 17.9089 102.97621 moveto
+0 102.97621 lineto stroke
+newpath 3.6956 104.50702 moveto
+0 102.97621 lineto
+3.6956 101.4454 lineto
+ closepath
+gsave fill grestore stroke
+newpath 14.2133 101.4454 moveto
+17.9089 102.97621 lineto
+14.2133 104.50702 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 101.42645 moveto
+(Acquire g) cmtt8 7.97011 fshow
+-74.981 92.472 moveto
+(Deposit data in G) cmtt8 7.97011 fshow
+newpath 17.9089 85.0673 moveto
+0 85.0673 lineto stroke
+newpath 3.6956 86.59811 moveto
+0 85.0673 lineto
+3.6956 83.5365 lineto
+ closepath
+gsave fill grestore stroke
+newpath 14.2133 83.5365 moveto
+17.9089 85.0673 lineto
+14.2133 86.59811 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 83.51755 moveto
+(Release g) cmtt8 7.97011 fshow
+newpath 17.9089 76.11285 moveto
+0 76.11285 lineto stroke
+newpath 3.6956 77.64366 moveto
+0 76.11285 lineto
+3.6956 74.58205 lineto
+ closepath
+gsave fill grestore stroke
+newpath 14.2133 74.58205 moveto
+17.9089 76.11285 lineto
+14.2133 77.64366 lineto
+ closepath
+gsave fill grestore stroke
+-36.87341 74.5631 moveto
+(Signal G) cmtt8 7.97011 fshow
+newpath 0 67.1584 moveto
+17.9089 67.1584 lineto stroke
+newpath 14.2133 65.6276 moveto
+17.9089 67.1584 lineto
+14.2133 68.68921 lineto
+ closepath
+gsave fill grestore stroke
+-58.0443 65.16586 moveto
+(Wait on event) cmtt8 7.97011 fshow
+-41.10759 56.21141 moveto
+(release a) cmtt8 7.97011 fshow
+newpath 268.63358 58.20395 moveto
+286.54248 58.20395 lineto stroke
+newpath 282.84688 56.67314 moveto
+286.54248 58.20395 lineto
+282.84688 59.73476 lineto
+ closepath
+gsave fill grestore stroke
+289.54248 56.6542 moveto
+(Wokeup from event) cmtt8 7.97011 fshow
+289.54248 47.25696 moveto
+(Process data from A) cmtt8 7.97011 fshow
+289.54248 38.7453 moveto
+(Keep running until) cmtt8 7.97011 fshow
+289.54248 29.34805 moveto
+(launch of threads) cmtt8 7.97011 fshow
+74.63562 182.01654 moveto
+(Inner Space: Thread Manager) cmtt8 7.97011 fshow
+29.86336 253.65216 moveto
+(Running queue:) cmtt8 7.97011 fshow
+29.86336 243.81213 moveto
+(G) cmtt8 7.97011 fshow
+29.86336 234.85768 moveto
+(A) cmtt8 7.97011 fshow
+29.86336 208.8799 moveto
+(To Run queue:) cmtt8 7.97011 fshow
+29.86336 199.03987 moveto
+(G) cmtt8 7.97011 fshow
+29.86336 190.08542 moveto
+(A) cmtt8 7.97011 fshow
+29.86336 163.22206 moveto
+(Resources) cmtt8 7.97011 fshow
+29.86336 155.87271 moveto
+(g) cmtt8 7.97011 fshow
+29.86336 146.03268 moveto
+(x) cmtt8 7.97011 fshow
+29.86336 137.07823 moveto
+(a) cmtt8 7.97011 fshow
+newpath 35.81781 246.24745 moveto
+71.63562 246.24745 lineto stroke
+newpath 71.63562 237.293 moveto
+98.49898 237.293 lineto stroke
+newpath 98.49898 246.24745 moveto
+125.36234 246.24745 lineto stroke
+newpath 125.36234 237.293 moveto
+152.2257 237.293 lineto stroke
+newpath 152.2257 246.24745 moveto
+170.1346 246.24745 lineto stroke
+newpath 170.1346 237.293 moveto
+223.86131 237.293 lineto stroke
+newpath 223.86131 246.24745 moveto
+259.67912 246.24745 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+ [3 3 ] 0 setdash
+newpath 71.63562 246.24745 moveto
+71.63562 237.293 lineto stroke
+newpath 98.49898 237.293 moveto
+98.49898 246.24745 lineto stroke
+newpath 125.36234 246.24745 moveto
+125.36234 237.293 lineto stroke
+newpath 152.2257 237.293 moveto
+152.2257 246.24745 lineto stroke
+newpath 170.1346 246.24745 moveto
+170.1346 237.293 lineto stroke
+newpath 223.86131 237.293 moveto
+223.86131 246.24745 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+newpath 53.72672 201.47519 moveto
+89.54453 201.47519 lineto stroke
+newpath 107.45343 201.47519 moveto
+152.2257 201.47519 lineto stroke
+newpath 89.54453 192.52074 moveto
+134.31679 192.52074 lineto stroke
+newpath 35.81781 156.70293 moveto
+170.1346 156.70293 lineto stroke
+newpath 179.08905 156.70293 moveto
+205.95241 156.70293 lineto stroke
+newpath 223.86131 156.70293 moveto
+259.67912 156.70293 lineto stroke
+newpath 53.72672 147.74847 moveto
+125.36234 147.74847 lineto stroke
+newpath 125.36234 147.74847 moveto
+152.2257 147.74847 lineto stroke
+newpath 80.59007 138.79402 moveto
+223.86131 138.79402 lineto stroke
+96.38188 159.70293 moveto
+(G) cmtt8 7.97011 fshow
+194.88086 159.70293 moveto
+(A) cmtt8 7.97011 fshow
+239.65312 159.70293 moveto
+(G) cmtt8 7.97011 fshow
+105.33633 150.74847 moveto
+(G) cmtt8 7.97011 fshow
+150.1086 141.79402 moveto
+(A) cmtt8 7.97011 fshow
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+ [0 5 ] 2.5 setdash
+newpath 94.02176 26.86336 moveto
+94.02176 147.74847 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+newpath 95.55284 144.05219 moveto
+94.02176 147.74847 lineto
+92.49068 144.05219 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+ [3 3 ] 0 setdash
+newpath 129.83957 147.74847 moveto
+129.83957 26.86336 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+newpath 128.30849 30.55965 moveto
+129.83957 26.86336 lineto
+131.37065 30.55965 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+ [0 5 ] 2.5 setdash
+newpath 165.65738 26.86336 moveto
+165.65738 156.70293 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+newpath 167.18816 153.0074 moveto
+165.65738 156.70293 lineto
+164.1266 153.0074 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+ [3 3 ] 0 setdash
+newpath 228.33855 156.70293 moveto
+228.33855 26.86336 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+newpath 226.80777 30.55888 moveto
+228.33855 26.86336 lineto
+229.86932 30.55888 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+ [0 5 ] 2.5 setdash
+newpath 219.3841 26.86336 moveto
+219.3841 138.79402 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+newpath 220.91486 135.09854 moveto
+219.3841 138.79402 lineto
+217.85333 135.09854 lineto
+ closepath
+gsave fill grestore stroke
+-65.2666 257.24382 moveto
+(|) cmr10 9.96265 fshow
+-51.98311 257.24382 moveto
+(A) cmr10 9.96265 fshow
+-41.1902 257.24382 moveto
+(Space) cmr10 9.96265 fshow
+-12.9627 257.24382 moveto
+(|) cmr10 9.96265 fshow
+298.49693 257.24382 moveto
+(|) cmr10 9.96265 fshow
+311.78043 257.24382 moveto
+(G) cmr10 9.96265 fshow
+322.91924 257.24382 moveto
+(Space) cmr10 9.96265 fshow
+351.14673 257.24382 moveto
+(|) cmr10 9.96265 fshow
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/threading_exs.2 b/web/yacco2/diagrams/threading_exs.2
new file mode 100644
index 0000000000..b9f8406535
--- /dev/null
+++ b/web/yacco2/diagrams/threading_exs.2
@@ -0,0 +1,492 @@
+%!PS
+%%BoundingBox: -56 -51 391 295
+%%Creator: MetaPost
+%%CreationDate: 2006.05.29:1634
+%%Pages: 1
+%*Font: cmtt8 4.78212 7.97011 30:ffc
+%*Font: cmr10 9.9628 9.96265 41:c2002000f881dc3
+%*Font: cmtt8 7.97011 7.97011 20:800e0020794439007ddbfe8
+%%EndProlog
+%%Page: 1 1
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 1 setlinejoin 10 setmiterlimit
+newpath 0 0 moveto
+294.21898 0 lineto
+294.21898 294.21898 lineto
+0 294.21898 lineto
+ closepath stroke
+newpath 25.58426 25.58426 moveto
+268.63472 25.58426 lineto
+268.63472 268.63472 lineto
+25.58426 268.63472 lineto
+ closepath stroke
+newpath 38.37639 38.37639 moveto
+255.84259 38.37639 lineto
+255.84259 255.84259 lineto
+38.37639 255.84259 lineto
+ closepath stroke
+ 1 setlinecap
+newpath 0 0 moveto
+25.58426 25.58426 lineto stroke
+newpath 294.21898 0 moveto
+268.63472 25.58426 lineto stroke
+newpath 294.21898 294.21898 moveto
+268.63472 268.63472 lineto stroke
+newpath 0 294.21898 moveto
+25.58426 268.63472 lineto stroke
+newpath 25.58426 25.58426 moveto
+25.58426 38.37639 lineto
+38.37639 38.37639 lineto
+38.37639 25.58426 lineto stroke
+newpath 25.58426 268.63472 moveto
+38.37639 268.63472 lineto
+38.37639 255.84259 lineto
+25.58426 255.84259 lineto stroke
+newpath 268.63472 268.63472 moveto
+268.63472 255.84259 lineto
+255.84259 255.84259 lineto
+255.84259 268.63472 lineto stroke
+newpath 268.63472 25.58426 moveto
+255.84259 25.58426 lineto
+255.84259 38.37639 lineto
+268.63472 38.37639 lineto stroke
+43.5022 28.58426 moveto
+(0) cmtt8 4.78212 fshow
+43.5022 258.84259 moveto
+(0) cmtt8 4.78212 fshow
+30.71007 246.05046 moveto
+(0) cmtt8 4.78212 fshow
+260.9684 246.05046 moveto
+(0) cmtt8 4.78212 fshow
+56.29433 28.58426 moveto
+(1) cmtt8 4.78212 fshow
+56.29433 258.84259 moveto
+(1) cmtt8 4.78212 fshow
+30.71007 233.25833 moveto
+(1) cmtt8 4.78212 fshow
+260.9684 233.25833 moveto
+(1) cmtt8 4.78212 fshow
+69.08646 28.58426 moveto
+(2) cmtt8 4.78212 fshow
+69.08646 258.84259 moveto
+(2) cmtt8 4.78212 fshow
+30.71007 220.4662 moveto
+(2) cmtt8 4.78212 fshow
+260.9684 220.4662 moveto
+(2) cmtt8 4.78212 fshow
+81.87859 28.58426 moveto
+(3) cmtt8 4.78212 fshow
+81.87859 258.84259 moveto
+(3) cmtt8 4.78212 fshow
+30.71007 207.67407 moveto
+(3) cmtt8 4.78212 fshow
+260.9684 207.67407 moveto
+(3) cmtt8 4.78212 fshow
+94.67072 28.58426 moveto
+(4) cmtt8 4.78212 fshow
+94.67072 258.84259 moveto
+(4) cmtt8 4.78212 fshow
+30.71007 194.88194 moveto
+(4) cmtt8 4.78212 fshow
+260.9684 194.88194 moveto
+(4) cmtt8 4.78212 fshow
+107.46284 28.58426 moveto
+(5) cmtt8 4.78212 fshow
+107.46284 258.84259 moveto
+(5) cmtt8 4.78212 fshow
+30.71007 182.08981 moveto
+(5) cmtt8 4.78212 fshow
+260.9684 182.08981 moveto
+(5) cmtt8 4.78212 fshow
+120.25497 28.58426 moveto
+(6) cmtt8 4.78212 fshow
+120.25497 258.84259 moveto
+(6) cmtt8 4.78212 fshow
+30.71007 169.29768 moveto
+(6) cmtt8 4.78212 fshow
+260.9684 169.29768 moveto
+(6) cmtt8 4.78212 fshow
+133.0471 28.58426 moveto
+(7) cmtt8 4.78212 fshow
+133.0471 258.84259 moveto
+(7) cmtt8 4.78212 fshow
+30.71007 156.50555 moveto
+(7) cmtt8 4.78212 fshow
+260.9684 156.50555 moveto
+(7) cmtt8 4.78212 fshow
+145.83923 28.58426 moveto
+(8) cmtt8 4.78212 fshow
+145.83923 258.84259 moveto
+(8) cmtt8 4.78212 fshow
+30.71007 143.71342 moveto
+(8) cmtt8 4.78212 fshow
+260.9684 143.71342 moveto
+(8) cmtt8 4.78212 fshow
+158.63136 28.58426 moveto
+(9) cmtt8 4.78212 fshow
+158.63136 258.84259 moveto
+(9) cmtt8 4.78212 fshow
+30.71007 130.9213 moveto
+(9) cmtt8 4.78212 fshow
+260.9684 130.9213 moveto
+(9) cmtt8 4.78212 fshow
+170.15321 28.58426 moveto
+(10) cmtt8 4.78212 fshow
+170.15321 258.84259 moveto
+(10) cmtt8 4.78212 fshow
+29.43979 118.12917 moveto
+(10) cmtt8 4.78212 fshow
+259.69812 118.12917 moveto
+(10) cmtt8 4.78212 fshow
+182.94534 28.58426 moveto
+(11) cmtt8 4.78212 fshow
+182.94534 258.84259 moveto
+(11) cmtt8 4.78212 fshow
+29.43979 105.33704 moveto
+(11) cmtt8 4.78212 fshow
+259.69812 105.33704 moveto
+(11) cmtt8 4.78212 fshow
+195.73747 28.58426 moveto
+(12) cmtt8 4.78212 fshow
+195.73747 258.84259 moveto
+(12) cmtt8 4.78212 fshow
+29.43979 92.5449 moveto
+(12) cmtt8 4.78212 fshow
+259.69812 92.5449 moveto
+(12) cmtt8 4.78212 fshow
+208.5296 28.58426 moveto
+(13) cmtt8 4.78212 fshow
+208.5296 258.84259 moveto
+(13) cmtt8 4.78212 fshow
+29.43979 79.75278 moveto
+(13) cmtt8 4.78212 fshow
+259.69812 79.75278 moveto
+(13) cmtt8 4.78212 fshow
+221.32173 28.58426 moveto
+(14) cmtt8 4.78212 fshow
+221.32173 258.84259 moveto
+(14) cmtt8 4.78212 fshow
+29.43979 66.96065 moveto
+(14) cmtt8 4.78212 fshow
+259.69812 66.96065 moveto
+(14) cmtt8 4.78212 fshow
+234.11386 28.58426 moveto
+(15) cmtt8 4.78212 fshow
+234.11386 258.84259 moveto
+(15) cmtt8 4.78212 fshow
+29.43979 54.16852 moveto
+(15) cmtt8 4.78212 fshow
+259.69812 54.16852 moveto
+(15) cmtt8 4.78212 fshow
+246.90599 28.58426 moveto
+(16) cmtt8 4.78212 fshow
+246.90599 258.84259 moveto
+(16) cmtt8 4.78212 fshow
+29.43979 41.37639 moveto
+(16) cmtt8 4.78212 fshow
+259.69812 41.37639 moveto
+(16) cmtt8 4.78212 fshow
+newpath 25.58426 211.07014 moveto
+0 211.07014 lineto stroke
+newpath 3.6954 212.60086 moveto
+0 211.07014 lineto
+3.6954 209.53943 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 208.63483 moveto
+(Activated) cmtt8 7.97011 fshow
+newpath 25.58426 198.27802 moveto
+0 198.27802 lineto stroke
+newpath 3.6954 199.80873 moveto
+0 198.27802 lineto
+3.6954 196.7473 lineto
+ closepath
+gsave fill grestore stroke
+newpath 21.88885 196.7473 moveto
+25.58426 198.27802 lineto
+21.88885 199.80873 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 196.72826 moveto
+(Acquire a) cmtt8 7.97011 fshow
+newpath 25.58426 185.48589 moveto
+0 185.48589 lineto stroke
+newpath 3.6954 187.0166 moveto
+0 185.48589 lineto
+3.6954 183.95517 lineto
+ closepath
+gsave fill grestore stroke
+newpath 21.88885 183.95517 moveto
+25.58426 185.48589 lineto
+21.88885 187.0166 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 183.93613 moveto
+(Acquire x) cmtt8 7.97011 fshow
+newpath 0 172.69376 moveto
+25.58426 172.69376 lineto stroke
+newpath 21.88885 171.16304 moveto
+25.58426 172.69376 lineto
+21.88885 174.22447 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 170.70122 moveto
+(Release x) cmtt8 7.97011 fshow
+newpath 25.58426 95.94098 moveto
+0 95.94098 lineto stroke
+newpath 3.6954 97.4717 moveto
+0 95.94098 lineto
+3.6954 94.41026 lineto
+ closepath
+gsave fill grestore stroke
+-53.81012 93.50566 moveto
+(Re-activated) cmtt8 7.97011 fshow
+newpath 0 83.14885 moveto
+25.58426 83.14885 lineto stroke
+newpath 21.88885 81.61813 moveto
+25.58426 83.14885 lineto
+21.88885 84.67957 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 81.59909 moveto
+(Acquire b) cmtt8 7.97011 fshow
+newpath 294.21898 236.6544 moveto
+268.63472 236.6544 lineto stroke
+newpath 272.33012 238.18512 moveto
+268.63472 236.6544 lineto
+272.33012 235.12369 lineto
+ closepath
+gsave fill grestore stroke
+newpath 290.52357 235.12369 moveto
+294.21898 236.6544 lineto
+290.52357 238.18512 lineto
+ closepath
+gsave fill grestore stroke
+297.21898 235.10466 moveto
+(Acquire g) cmtt8 7.97011 fshow
+newpath 294.21898 223.86227 moveto
+268.63472 223.86227 lineto stroke
+newpath 272.33012 225.39299 moveto
+268.63472 223.86227 lineto
+272.33012 222.33156 lineto
+ closepath
+gsave fill grestore stroke
+297.21898 221.86974 moveto
+(Create A) cmtt8 7.97011 fshow
+newpath 268.63472 159.90163 moveto
+294.21898 159.90163 lineto stroke
+newpath 290.52357 158.37091 moveto
+294.21898 159.90163 lineto
+290.52357 161.43234 lineto
+ closepath
+gsave fill grestore stroke
+297.21898 157.46631 moveto
+(Re-activated) cmtt8 7.97011 fshow
+newpath 294.21898 147.1095 moveto
+268.63472 147.1095 lineto stroke
+newpath 272.33012 148.64021 moveto
+268.63472 147.1095 lineto
+272.33012 145.57878 lineto
+ closepath
+gsave fill grestore stroke
+297.21898 145.11696 moveto
+(Create B) cmtt8 7.97011 fshow
+newpath 268.63472 70.35672 moveto
+294.21898 70.35672 lineto stroke
+newpath 290.52357 68.826 moveto
+294.21898 70.35672 lineto
+290.52357 71.88744 lineto
+ closepath
+gsave fill grestore stroke
+297.21898 67.9214 moveto
+(Re-activated) cmtt8 7.97011 fshow
+newpath 294.21898 57.56459 moveto
+268.63472 57.56459 lineto stroke
+newpath 272.33012 59.0953 moveto
+268.63472 57.56459 lineto
+272.33012 56.03387 lineto
+ closepath
+gsave fill grestore stroke
+297.21898 56.01485 moveto
+(Wait on signal, rel. g) cmtt8 7.97011 fshow
+297.21898 42.33714 moveto
+(Deadlock) cmtt8 7.97011 fshow
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 159.90163 25.58426 moveto
+159.90163 0 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 158.37091 3.6954 moveto
+159.90163 0 lineto
+161.43234 3.6954 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 172.69376 25.58426 moveto
+172.69376 0 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 171.16304 3.6954 moveto
+172.69376 0 lineto
+174.22447 3.6954 lineto
+ closepath
+gsave fill grestore stroke
+newpath 174.22447 21.88885 moveto
+172.69376 25.58426 lineto
+171.16304 21.88885 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+newpath 185.48589 0 moveto
+185.48589 25.58426 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 187.0166 21.88885 moveto
+185.48589 25.58426 lineto
+183.95517 21.88885 lineto
+ closepath
+gsave fill grestore stroke
+gsave [0.86601 0.5 -0.5 0.86601 129.02559 -25.68143 ] concat 0 0 moveto
+(activ) cmr10 9.9628 fshow grestore
+gsave [0.86601 0.5 -0.5 0.86601 147.00052 -15.30362 ] concat 0 0 moveto
+(ated) cmr10 9.9628 fshow grestore
+gsave [0.86601 0.5 -0.5 0.86601 140.34587 -24.98787 ] concat 0 0 moveto
+(acquire) cmr10 9.9628 fshow grestore
+gsave [0.86601 0.5 -0.5 0.86601 170.32793 -7.67776 ] concat 0 0 moveto
+(b) cmr10 9.9628 fshow grestore
+gsave [0.86601 0.5 -0.5 0.86601 153.61726 -24.7348 ] concat 0 0 moveto
+(acquire) cmr10 9.9628 fshow grestore
+gsave [0.86601 0.5 -0.5 0.86601 183.59932 -7.4247 ] concat 0 0 moveto
+(a) cmr10 9.9628 fshow grestore
+105.33704 132.76762 moveto
+(Inner Space: Thread Manager) cmtt8 7.97011 fshow
+41.37639 247.89679 moveto
+(Running queue:) cmtt8 7.97011 fshow
+41.37639 234.21909 moveto
+(G) cmtt8 7.97011 fshow
+41.37639 221.42696 moveto
+(A) cmtt8 7.97011 fshow
+41.37639 208.63483 moveto
+(B) cmtt8 7.97011 fshow
+41.37639 183.93614 moveto
+(To Run queue:) cmtt8 7.97011 fshow
+41.37639 170.25844 moveto
+(G) cmtt8 7.97011 fshow
+41.37639 157.46631 moveto
+(A) cmtt8 7.97011 fshow
+41.37639 144.67418 moveto
+(B) cmtt8 7.97011 fshow
+41.37639 119.08992 moveto
+(Resources) cmtt8 7.97011 fshow
+41.37639 107.9029 moveto
+(g) cmtt8 7.97011 fshow
+41.37639 94.22519 moveto
+(x) cmtt8 7.97011 fshow
+41.37639 81.43306 moveto
+(a) cmtt8 7.97011 fshow
+41.37639 67.9214 moveto
+(b) cmtt8 7.97011 fshow
+newpath 51.16852 236.6544 moveto
+76.75278 236.6544 lineto stroke
+newpath 127.9213 236.6544 moveto
+153.50555 236.6544 lineto stroke
+newpath 217.4662 236.6544 moveto
+243.05046 236.6544 lineto stroke
+newpath 76.75278 223.86227 moveto
+127.9213 223.86227 lineto stroke
+newpath 191.88194 223.86227 moveto
+217.4662 223.86227 lineto stroke
+newpath 153.50555 211.07014 moveto
+191.88194 211.07014 lineto stroke
+newpath 76.75278 172.69376 moveto
+127.9213 172.69376 lineto stroke
+newpath 153.50555 172.69376 moveto
+217.4662 172.69376 lineto stroke
+newpath 127.9213 159.90163 moveto
+191.88194 159.90163 lineto stroke
+newpath 51.16852 108.73311 moveto
+243.05046 108.73311 lineto stroke
+newpath 102.33704 95.94098 moveto
+127.9213 95.94098 lineto stroke
+newpath 89.5449 83.14885 moveto
+255.84259 83.14885 lineto stroke
+newpath 166.29768 70.35672 moveto
+255.84259 70.35672 lineto stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+ [0 5 ] 2.5 setdash
+newpath 185.48589 38.37639 moveto
+185.48589 83.14885 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+newpath 187.01665 79.45337 moveto
+185.48589 83.14885 lineto
+183.95512 79.45337 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+ [0 5 ] 2.5 setdash
+newpath 211.07014 38.37639 moveto
+211.07014 70.35672 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+newpath 212.6009 66.66124 moveto
+211.07014 70.35672 lineto
+209.53938 66.66124 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+ [0 5 ] 2.5 setdash
+newpath 236.6544 38.37639 moveto
+236.6544 108.73311 lineto stroke
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+newpath 238.1852 105.03754 moveto
+236.6544 108.73311 lineto
+235.12361 105.03754 lineto
+ closepath
+gsave fill grestore stroke
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
+ [3 3 ] 0 setdash
+newpath 76.75278 236.6544 moveto
+76.75278 223.86227 lineto stroke
+newpath 127.9213 223.86227 moveto
+127.9213 236.6544 lineto stroke
+newpath 153.50555 236.6544 moveto
+153.50555 211.07014 lineto stroke
+newpath 191.88194 211.07014 moveto
+191.88194 223.86227 lineto stroke
+newpath 217.4662 223.86227 moveto
+217.4662 236.6544 lineto stroke
+138.59633 111.73311 moveto
+(G) cmtt8 7.97011 fshow
+113.01207 98.94098 moveto
+(A) cmtt8 7.97011 fshow
+151.38846 86.14885 moveto
+(A) cmtt8 7.97011 fshow
+215.3491 73.35672 moveto
+(B) cmtt8 7.97011 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+newpath 243.05046 38.37639 moveto
+255.84259 51.16852 lineto stroke
+newpath 243.05046 51.16852 moveto
+255.84259 38.37639 lineto stroke
+gsave [0.99998 0 0 0.99998 82.05154 -48.18419 ] concat 0 0 moveto
+(||{) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 110.27904 -48.18419 ] concat 0 0 moveto
+(B) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 120.65685 -48.18419 ] concat 0 0 moveto
+(Space) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 148.88434 -48.18419 ] concat 0 0 moveto
+(||{) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 -55.3039 278.99155 ] concat 0 0 moveto
+({) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 -47.0017 278.99155 ] concat 0 0 moveto
+(A) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 -36.2088 278.99155 ] concat 0 0 moveto
+(Space) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 -7.9813 278.99155 ] concat 0 0 moveto
+({) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 297.21898 278.99155 ] concat 0 0 moveto
+({) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 305.52118 278.99155 ] concat 0 0 moveto
+(G) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 316.65997 278.99155 ] concat 0 0 moveto
+(Space) cmr10 9.9628 fshow grestore
+gsave [0.99998 0 0 0.99998 344.88748 278.99155 ] concat 0 0 moveto
+({) cmr10 9.9628 fshow grestore
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/threading_exs.3 b/web/yacco2/diagrams/threading_exs.3
new file mode 100644
index 0000000000..0b70f38128
--- /dev/null
+++ b/web/yacco2/diagrams/threading_exs.3
@@ -0,0 +1,434 @@
+%!PS
+%%BoundingBox: -101 -1 370 269
+%%Creator: MetaPost
+%%CreationDate: 2006.05.29:1510
+%%Pages: 1
+%*Font: cmtt8 4.78212 7.97011 30:ffc
+%*Font: cmtt8 7.97011 7.97011 20:801000005540b1005fdfff8
+%%EndProlog
+%%Page: 1 1
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 1 setlinejoin 10 setmiterlimit
+newpath 0 0 moveto
+268.63358 0 lineto
+268.63358 268.63358 lineto
+0 268.63358 lineto
+ closepath stroke
+newpath 17.9089 17.9089 moveto
+250.72467 17.9089 lineto
+250.72467 250.72467 lineto
+17.9089 250.72467 lineto
+ closepath stroke
+newpath 26.86336 26.86336 moveto
+241.77022 26.86336 lineto
+241.77022 241.77022 lineto
+26.86336 241.77022 lineto
+ closepath stroke
+ 1 setlinecap
+newpath 0 0 moveto
+17.9089 17.9089 lineto stroke
+newpath 268.63358 0 moveto
+250.72467 17.9089 lineto stroke
+newpath 268.63358 268.63358 moveto
+250.72467 250.72467 lineto stroke
+newpath 0 268.63358 moveto
+17.9089 250.72467 lineto stroke
+newpath 17.9089 17.9089 moveto
+17.9089 26.86336 lineto
+26.86336 26.86336 lineto
+26.86336 17.9089 lineto stroke
+newpath 17.9089 250.72467 moveto
+26.86336 250.72467 lineto
+26.86336 241.77022 lineto
+17.9089 241.77022 lineto stroke
+newpath 250.72467 250.72467 moveto
+250.72467 241.77022 lineto
+241.77022 241.77022 lineto
+241.77022 250.72467 lineto stroke
+newpath 250.72467 17.9089 moveto
+241.77022 17.9089 lineto
+241.77022 26.86336 lineto
+250.72467 26.86336 lineto stroke
+30.07033 20.9089 moveto
+(0) cmtt8 4.78212 fshow
+30.07033 244.77022 moveto
+(0) cmtt8 4.78212 fshow
+21.11588 235.81577 moveto
+(0) cmtt8 4.78212 fshow
+244.97719 235.81577 moveto
+(0) cmtt8 4.78212 fshow
+39.02478 20.9089 moveto
+(1) cmtt8 4.78212 fshow
+39.02478 244.77022 moveto
+(1) cmtt8 4.78212 fshow
+21.11588 226.86131 moveto
+(1) cmtt8 4.78212 fshow
+244.97719 226.86131 moveto
+(1) cmtt8 4.78212 fshow
+47.97923 20.9089 moveto
+(2) cmtt8 4.78212 fshow
+47.97923 244.77022 moveto
+(2) cmtt8 4.78212 fshow
+21.11588 217.90686 moveto
+(2) cmtt8 4.78212 fshow
+244.97719 217.90686 moveto
+(2) cmtt8 4.78212 fshow
+56.93369 20.9089 moveto
+(3) cmtt8 4.78212 fshow
+56.93369 244.77022 moveto
+(3) cmtt8 4.78212 fshow
+21.11588 208.95241 moveto
+(3) cmtt8 4.78212 fshow
+244.97719 208.95241 moveto
+(3) cmtt8 4.78212 fshow
+65.88814 20.9089 moveto
+(4) cmtt8 4.78212 fshow
+65.88814 244.77022 moveto
+(4) cmtt8 4.78212 fshow
+21.11588 199.99796 moveto
+(4) cmtt8 4.78212 fshow
+244.97719 199.99796 moveto
+(4) cmtt8 4.78212 fshow
+74.84259 20.9089 moveto
+(5) cmtt8 4.78212 fshow
+74.84259 244.77022 moveto
+(5) cmtt8 4.78212 fshow
+21.11588 191.0435 moveto
+(5) cmtt8 4.78212 fshow
+244.97719 191.0435 moveto
+(5) cmtt8 4.78212 fshow
+83.79704 20.9089 moveto
+(6) cmtt8 4.78212 fshow
+83.79704 244.77022 moveto
+(6) cmtt8 4.78212 fshow
+21.11588 182.08905 moveto
+(6) cmtt8 4.78212 fshow
+244.97719 182.08905 moveto
+(6) cmtt8 4.78212 fshow
+92.7515 20.9089 moveto
+(7) cmtt8 4.78212 fshow
+92.7515 244.77022 moveto
+(7) cmtt8 4.78212 fshow
+21.11588 173.1346 moveto
+(7) cmtt8 4.78212 fshow
+244.97719 173.1346 moveto
+(7) cmtt8 4.78212 fshow
+101.70595 20.9089 moveto
+(8) cmtt8 4.78212 fshow
+101.70595 244.77022 moveto
+(8) cmtt8 4.78212 fshow
+21.11588 164.18015 moveto
+(8) cmtt8 4.78212 fshow
+244.97719 164.18015 moveto
+(8) cmtt8 4.78212 fshow
+110.6604 20.9089 moveto
+(9) cmtt8 4.78212 fshow
+110.6604 244.77022 moveto
+(9) cmtt8 4.78212 fshow
+21.11588 155.2257 moveto
+(9) cmtt8 4.78212 fshow
+244.97719 155.2257 moveto
+(9) cmtt8 4.78212 fshow
+118.34457 20.9089 moveto
+(10) cmtt8 4.78212 fshow
+118.34457 244.77022 moveto
+(10) cmtt8 4.78212 fshow
+19.8456 146.27124 moveto
+(10) cmtt8 4.78212 fshow
+243.70691 146.27124 moveto
+(10) cmtt8 4.78212 fshow
+127.29903 20.9089 moveto
+(11) cmtt8 4.78212 fshow
+127.29903 244.77022 moveto
+(11) cmtt8 4.78212 fshow
+19.8456 137.31679 moveto
+(11) cmtt8 4.78212 fshow
+243.70691 137.31679 moveto
+(11) cmtt8 4.78212 fshow
+136.25348 20.9089 moveto
+(12) cmtt8 4.78212 fshow
+136.25348 244.77022 moveto
+(12) cmtt8 4.78212 fshow
+19.8456 128.36234 moveto
+(12) cmtt8 4.78212 fshow
+243.70691 128.36234 moveto
+(12) cmtt8 4.78212 fshow
+145.20793 20.9089 moveto
+(13) cmtt8 4.78212 fshow
+145.20793 244.77022 moveto
+(13) cmtt8 4.78212 fshow
+19.8456 119.40788 moveto
+(13) cmtt8 4.78212 fshow
+243.70691 119.40788 moveto
+(13) cmtt8 4.78212 fshow
+154.16238 20.9089 moveto
+(14) cmtt8 4.78212 fshow
+154.16238 244.77022 moveto
+(14) cmtt8 4.78212 fshow
+19.8456 110.45343 moveto
+(14) cmtt8 4.78212 fshow
+243.70691 110.45343 moveto
+(14) cmtt8 4.78212 fshow
+163.11684 20.9089 moveto
+(15) cmtt8 4.78212 fshow
+163.11684 244.77022 moveto
+(15) cmtt8 4.78212 fshow
+19.8456 101.49898 moveto
+(15) cmtt8 4.78212 fshow
+243.70691 101.49898 moveto
+(15) cmtt8 4.78212 fshow
+172.07129 20.9089 moveto
+(16) cmtt8 4.78212 fshow
+172.07129 244.77022 moveto
+(16) cmtt8 4.78212 fshow
+19.8456 92.54453 moveto
+(16) cmtt8 4.78212 fshow
+243.70691 92.54453 moveto
+(16) cmtt8 4.78212 fshow
+181.02574 20.9089 moveto
+(17) cmtt8 4.78212 fshow
+181.02574 244.77022 moveto
+(17) cmtt8 4.78212 fshow
+19.8456 83.59007 moveto
+(17) cmtt8 4.78212 fshow
+243.70691 83.59007 moveto
+(17) cmtt8 4.78212 fshow
+189.9802 20.9089 moveto
+(18) cmtt8 4.78212 fshow
+189.9802 244.77022 moveto
+(18) cmtt8 4.78212 fshow
+19.8456 74.63562 moveto
+(18) cmtt8 4.78212 fshow
+243.70691 74.63562 moveto
+(18) cmtt8 4.78212 fshow
+198.93465 20.9089 moveto
+(19) cmtt8 4.78212 fshow
+198.93465 244.77022 moveto
+(19) cmtt8 4.78212 fshow
+19.8456 65.68117 moveto
+(19) cmtt8 4.78212 fshow
+243.70691 65.68117 moveto
+(19) cmtt8 4.78212 fshow
+207.8891 20.9089 moveto
+(20) cmtt8 4.78212 fshow
+207.8891 244.77022 moveto
+(20) cmtt8 4.78212 fshow
+19.8456 56.72672 moveto
+(20) cmtt8 4.78212 fshow
+243.70691 56.72672 moveto
+(20) cmtt8 4.78212 fshow
+216.84355 20.9089 moveto
+(21) cmtt8 4.78212 fshow
+216.84355 244.77022 moveto
+(21) cmtt8 4.78212 fshow
+19.8456 47.77226 moveto
+(21) cmtt8 4.78212 fshow
+243.70691 47.77226 moveto
+(21) cmtt8 4.78212 fshow
+225.798 20.9089 moveto
+(22) cmtt8 4.78212 fshow
+225.798 244.77022 moveto
+(22) cmtt8 4.78212 fshow
+19.8456 38.81781 moveto
+(22) cmtt8 4.78212 fshow
+243.70691 38.81781 moveto
+(22) cmtt8 4.78212 fshow
+234.75246 20.9089 moveto
+(23) cmtt8 4.78212 fshow
+234.75246 244.77022 moveto
+(23) cmtt8 4.78212 fshow
+19.8456 29.86336 moveto
+(23) cmtt8 4.78212 fshow
+243.70691 29.86336 moveto
+(23) cmtt8 4.78212 fshow
+newpath 268.63358 228.33855 moveto
+250.72467 228.33855 lineto stroke
+newpath 254.42027 229.86935 moveto
+250.72467 228.33855 lineto
+254.42027 226.80774 lineto
+ closepath
+gsave fill grestore stroke
+newpath 264.93797 226.80774 moveto
+268.63358 228.33855 lineto
+264.93797 229.86935 lineto
+ closepath
+gsave fill grestore stroke
+271.63358 226.7888 moveto
+(Acquire g) cmtt8 7.97011 fshow
+271.63358 217.39156 moveto
+(launch threads) cmtt8 7.97011 fshow
+newpath 268.63358 210.42964 moveto
+250.72467 210.42964 lineto stroke
+newpath 254.42027 211.96045 moveto
+250.72467 210.42964 lineto
+254.42027 208.89883 lineto
+ closepath
+gsave fill grestore stroke
+newpath 264.93797 208.89883 moveto
+268.63358 210.42964 lineto
+264.93797 211.96045 lineto
+ closepath
+gsave fill grestore stroke
+271.63358 208.8799 moveto
+(Acquire x) cmtt8 7.97011 fshow
+newpath 268.63358 201.47519 moveto
+250.72467 201.47519 lineto stroke
+newpath 254.42027 203.006 moveto
+250.72467 201.47519 lineto
+254.42027 199.94438 lineto
+ closepath
+gsave fill grestore stroke
+271.63358 199.48265 moveto
+(Create A) cmtt8 7.97011 fshow
+newpath 17.9089 192.52074 moveto
+0 192.52074 lineto stroke
+newpath 3.6956 194.05154 moveto
+0 192.52074 lineto
+3.6956 190.98993 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 190.08542 moveto
+(Activated) cmtt8 7.97011 fshow
+newpath 17.9089 183.56628 moveto
+0 183.56628 lineto stroke
+newpath 3.6956 185.09709 moveto
+0 183.56628 lineto
+3.6956 182.03548 lineto
+ closepath
+gsave fill grestore stroke
+newpath 14.2133 182.03548 moveto
+17.9089 183.56628 lineto
+14.2133 185.09709 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 182.01653 moveto
+(Acquire a) cmtt8 7.97011 fshow
+newpath 0 174.61183 moveto
+17.9089 174.61183 lineto stroke
+newpath 14.2133 173.08102 moveto
+17.9089 174.61183 lineto
+14.2133 176.14264 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 173.06207 moveto
+(Acquire x) cmtt8 7.97011 fshow
+newpath 250.72467 165.65738 moveto
+268.63358 165.65738 lineto stroke
+newpath 264.93797 164.12657 moveto
+268.63358 165.65738 lineto
+264.93797 167.18819 lineto
+ closepath
+gsave fill grestore stroke
+271.63358 164.10764 moveto
+(Wokeup) cmtt8 7.97011 fshow
+newpath 268.63358 156.70293 moveto
+250.72467 156.70293 lineto stroke
+newpath 254.42027 158.23373 moveto
+250.72467 156.70293 lineto
+254.42027 155.17212 lineto
+ closepath
+gsave fill grestore stroke
+271.63358 154.71039 moveto
+(Release x) cmtt8 7.97011 fshow
+newpath 17.9089 147.74847 moveto
+0 147.74847 lineto stroke
+newpath 3.6956 149.27928 moveto
+0 147.74847 lineto
+3.6956 146.21767 lineto
+ closepath
+gsave fill grestore stroke
+-58.0443 146.19872 moveto
+(Wokeup with x) cmtt8 7.97011 fshow
+newpath 17.9089 138.79402 moveto
+0 138.79402 lineto stroke
+newpath 3.6956 140.32483 moveto
+0 138.79402 lineto
+3.6956 137.26321 lineto
+ closepath
+gsave fill grestore stroke
+-87.68353 136.80148 moveto
+(Set idle work status) cmtt8 7.97011 fshow
+newpath 0 129.83957 moveto
+17.9089 129.83957 lineto stroke
+newpath 14.2133 128.30876 moveto
+17.9089 129.83957 lineto
+14.2133 131.37038 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 127.84703 moveto
+(Release x) cmtt8 7.97011 fshow
+newpath 250.72467 120.88512 moveto
+268.63358 120.88512 lineto stroke
+newpath 264.93797 119.35431 moveto
+268.63358 120.88512 lineto
+264.93797 122.41592 lineto
+ closepath
+gsave fill grestore stroke
+271.63358 119.33537 moveto
+(Wokeup) cmtt8 7.97011 fshow
+newpath 268.63358 111.93066 moveto
+250.72467 111.93066 lineto stroke
+newpath 254.42027 113.46147 moveto
+250.72467 111.93066 lineto
+254.42027 110.39986 lineto
+ closepath
+gsave fill grestore stroke
+271.63358 110.38092 moveto
+(Wait on event+release g) cmtt8 7.97011 fshow
+newpath 17.9089 102.97621 moveto
+0 102.97621 lineto stroke
+newpath 3.6956 104.50702 moveto
+0 102.97621 lineto
+3.6956 101.4454 lineto
+ closepath
+gsave fill grestore stroke
+-58.0443 101.42645 moveto
+(Wokeup with g) cmtt8 7.97011 fshow
+-49.57594 92.02922 moveto
+(Set thd cnt) cmtt8 7.97011 fshow
+newpath 17.9089 85.0673 moveto
+0 85.0673 lineto stroke
+newpath 3.6956 86.59811 moveto
+0 85.0673 lineto
+3.6956 83.5365 lineto
+ closepath
+gsave fill grestore stroke
+newpath 14.2133 83.5365 moveto
+17.9089 85.0673 lineto
+14.2133 86.59811 lineto
+ closepath
+gsave fill grestore stroke
+-87.68353 83.51755 moveto
+(Send G wakeup signal) cmtt8 7.97011 fshow
+newpath 0 76.11285 moveto
+17.9089 76.11285 lineto stroke
+newpath 14.2133 74.58205 moveto
+17.9089 76.11285 lineto
+14.2133 77.64366 lineto
+ closepath
+gsave fill grestore stroke
+-41.10759 74.5631 moveto
+(Release g) cmtt8 7.97011 fshow
+newpath 250.72467 67.1584 moveto
+268.63358 67.1584 lineto stroke
+newpath 264.93797 65.6276 moveto
+268.63358 67.1584 lineto
+264.93797 68.68921 lineto
+ closepath
+gsave fill grestore stroke
+271.63358 65.60866 moveto
+(Wokeup from signal) cmtt8 7.97011 fshow
+-96.15189 65.60864 moveto
+(Wait for wakeup signal) cmtt8 7.97011 fshow
+271.63358 56.21141 moveto
+(Process returned data) cmtt8 7.97011 fshow
+271.63358 47.25696 moveto
+(Run until a call) cmtt8 7.97011 fshow
+271.63358 38.3025 moveto
+(to Inner) cmtt8 7.97011 fshow
+-70.74683 38.74529 moveto
+(Eventual wake up) cmtt8 7.97011 fshow
+-100.38606 29.34805 moveto
+(Wait on event+release a) cmtt8 7.97011 fshow
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/threading_exs.mp b/web/yacco2/diagrams/threading_exs.mp
new file mode 100644
index 0000000000..a9cf0d55d1
--- /dev/null
+++ b/web/yacco2/diagrams/threading_exs.mp
@@ -0,0 +1,565 @@
+% file: threading_exs.mp
+% thread examples deadlock, and critcal resource
+input boxes
+%tracingall;
+%tracingmacros := 1;
+%tracingequations := 1;
+defaultfont := "cmtt8";
+
+numeric u;u:=1cc;
+numeric Half_tunit;
+numeric Time_unit_size,No_time_units;
+numeric lt_hd,rt_hd,both_hd,no_hd,up_hd,dwn_hd,below,above;
+lt_hd:=0;rt_hd:=1;both_hd:=2;no_hd:=3;up_hd:=4;dwn_hd:=5;
+above:=6;below:=7;
+
+%How - l,r,b,n left head rt head both head no heads 0..3
+numeric Outer_side_size,Time_side_size,Inner_side_size;
+numeric Outer_to_time_side_size,Time_to_inner_side_size;
+pair Sw_inner,Sw_time,Sw_outer;
+pair Mid_tunit;
+pair Time_lft_tpos,Inner_tpos,Time_rt_tpos,Bot_side_tpos,Top_side_tpos;
+pair Outer_lft_tpos,Outer_rt_tpos,obot_side_tpos,otop_side_tpos;
+
+
+def drw_obelisk(expr Time_units,Size_time_unit)=
+ Time_unit_size := Size_time_unit;
+ Half_tunit:=.5*Time_unit_size;
+ No_time_units := Time_units;
+ Outer_to_time_side_size:=2*Time_unit_size;
+ Time_to_inner_side_size:=Time_unit_size;
+ Inner_side_size:=No_time_units*Time_unit_size;
+ Time_side_size:=Time_to_inner_side_size+Inner_side_size+Time_to_inner_side_size;
+ Outer_side_size:=Outer_to_time_side_size+Time_side_size+Outer_to_time_side_size;
+ Sw_outer:=(0,0);
+ Sw_time:= Sw_outer shifted (Outer_to_time_side_size,Outer_to_time_side_size);
+ Sw_inner:= Sw_time shifted (Time_to_inner_side_size,Time_to_inner_side_size);
+ drw_box(Sw_outer,Outer_side_size,Outer_side_size);
+ drw_box(Sw_time,Time_side_size,Time_side_size);
+ drw_box(Sw_inner,Inner_side_size,Inner_side_size);
+ drw_outer_mitre(Sw_outer,Outer_side_size,Outer_to_time_side_size);
+ drw_mark_time(Sw_time);
+enddef;
+
+def drw_mark_time(expr Sw)=
+ draw Sw
+ -- Sw +(0,Time_to_inner_side_size)
+ -- Sw +(Time_to_inner_side_size,Time_to_inner_side_size)
+ -- Sw +(Time_to_inner_side_size,0);
+ draw Sw shifted (0,Time_side_size)
+ --Sw +(0,Time_to_inner_side_size) rotated -90 shifted (0,Time_side_size)
+ -- Sw +(Time_to_inner_side_size,Time_to_inner_side_size) rotated -90 shifted (0,Time_side_size)
+ -- Sw +(Time_to_inner_side_size,0) rotated -90 shifted (0,Time_side_size);
+ draw Sw shifted (Time_side_size,Time_side_size)
+ -- Sw +(0,Time_to_inner_side_size) rotated -180 shifted (Time_side_size,Time_side_size)
+ -- Sw +(Time_to_inner_side_size,Time_to_inner_side_size) rotated -180 shifted (Time_side_size,Time_side_size)
+ -- Sw +(Time_to_inner_side_size,0) rotated -180 shifted (Time_side_size,Time_side_size);
+ draw Sw shifted (Time_side_size,0)
+ -- Sw +(0,Time_to_inner_side_size) rotated -270 shifted (Time_side_size,0)
+ -- Sw +(Time_to_inner_side_size,Time_to_inner_side_size) rotated -270 shifted (Time_side_size,0)
+ -- Sw +(Time_to_inner_side_size,0) rotated -270 shifted (Time_side_size,0);
+ % draw marks of twain
+ defaultscale:=.6;
+ string a;
+ Time_lft_tpos := Sw shifted (0,Time_side_size-2*Time_to_inner_side_size);
+ Inner_tpos := Time_lft_tpos shifted (Time_unit_size,0);
+ Outer_lft_tpos := Time_lft_tpos shifted (-Outer_to_time_side_size,0);
+ Time_rt_tpos := Time_lft_tpos shifted (Time_side_size,0);
+ Outer_rt_tpos := Time_rt_tpos shifted (Outer_to_time_side_size,0);
+ Bot_side_tpos := Sw shifted (Time_to_inner_side_size,0);
+ Top_side_tpos := Bot_side_tpos shifted (0,Time_side_size - Time_to_inner_side_size);
+ Mid_tunit := .5[(0,0),(Time_to_inner_side_size,0)];
+ numeric tunit;
+ for i=0 upto No_time_units - 1:
+ a:=decimal i;
+ tunit := i*Time_to_inner_side_size;
+ label.top(a,Mid_tunit shifted Bot_side_tpos + (tunit,0));%bottom time line
+ label.top(a,Mid_tunit shifted Top_side_tpos + (tunit,0));%top time line
+ label.top(a,Mid_tunit shifted Time_lft_tpos + (0,-tunit));%left side time line
+ label.top(a,Mid_tunit shifted Time_rt_tpos + (-Time_to_inner_side_size,-tunit));%rt side time line
+ endfor
+ defaultscale:=1;
+enddef;
+
+def drw_outer_mitre(expr Pos,Side,Mitre_size)=
+ draw Pos--Pos+(Mitre_size,Mitre_size);
+ draw Pos shifted (Side,0)-- Pos+(Mitre_size,Mitre_size) rotated 90 shifted (Side,0);
+ draw Pos shifted (Side,Side)-- Pos+(Mitre_size,Mitre_size) rotated 180 shifted (Side,Side);
+ draw Pos shifted (0,Side)-- Pos+(Mitre_size,Mitre_size) rotated -90 shifted (0,Side);
+enddef;
+
+def drw_box(expr Pos,Side,Ht)=
+ pair nw,ne,sw,se;
+ sw:=Pos;
+ se:=sw+(Side,0);
+ nw:=sw+(0,Ht);
+ ne:=nw+(Ht,0);
+ draw sw--se--ne--nw--cycle;
+enddef;
+
+%
+% Lft_time_side_tpos inner point of 0 unit
+%
+def drw_lft_side_hz_vector(expr Tunit,How)=
+ pair zr,zl;
+ zr := Time_lft_tpos;% from anchor pt
+ numeric row;
+ row:= Time_unit_size*Tunit;%bot of time unit
+ zr := zr shifted (0,-row);%row
+ zr := zr shifted (0,Half_tunit);%put in middle of box
+ zl := zr shifted (-Outer_to_time_side_size,0);% to anchor pt
+ if(How = rt_hd):
+ drawarrow zl .. zr ;
+ else:
+ if (How = lt_hd):
+ drawarrow zr .. zl ;
+ else:
+ if (How = both_hd):
+ drawdblarrow zr .. zl ;
+ else:
+ if (How = no_hd):
+ draw zr -- zl;
+ fi
+ fi
+ fi
+ fi
+enddef;
+
+%
+% rt_side_tpos inner point of 0 unit
+%
+def drw_rt_side_hz_vector(expr Tunit,How)=
+ pair zr,zl;
+ zl := Time_rt_tpos;% from anchor pt
+ numeric row;
+ row:= Time_unit_size*Tunit;%bot of time unit
+ zl := zl shifted (0,-row);%row
+ zl := zl shifted (0,Half_tunit);%put in middle of box
+ zr := zl shifted (Outer_to_time_side_size,0);% to anchor pt
+ if(How = rt_hd):
+ drawarrow zl .. zr ;
+ else:
+ if (How = lt_hd):
+ drawarrow zr .. zl ;
+ else:
+ if (How = both_hd):
+ drawdblarrow zr .. zl ;
+ else:
+ if (How = no_hd):
+ draw zr -- zl;
+ fi
+ fi
+ fi
+ fi
+enddef;
+
+% Lft_time_side_tpos used
+% row the time unit to mark against
+% time unit start, stop
+%How - l,r,b,n left head rt head both head no heads 0..3
+def drw_hz_inner_vector(expr Tunit_row,From_Tunit,To_Tunit,How)=
+ pair f,t;
+ f := Inner_tpos;% resource 0 time row
+ numeric row;
+ row:= Time_unit_size*Tunit_row;
+ f:= f shifted (0,-row) + (0,Half_tunit);
+ t := f;
+ f:= f shifted (Time_unit_size*From_Tunit,0);% from col
+ t:= t shifted (Time_unit_size*To_Tunit,0);% to col
+ t:= t shifted (Time_unit_size,0);%rt boundary of time slot
+ if(How = rt_hd):
+ drawarrow f shifted ..t ;
+ else:
+ if (How = lt_hd):
+ drawarrow t ..f ;
+ else:
+ if (How = both_hd):
+ drawdblarrow f ..t ;
+ else:
+ if (How = no_hd):
+ draw f -- t ;
+ fi
+ fi
+ fi
+ fi
+enddef;
+
+def drw_hz_inner_ownership(expr Tunit,Tunit_x,What)=
+ numeric row;
+ row:= Time_unit_size*Tunit;%bot of time unit
+ pair f;
+ f := Inner_tpos shifted (0,-row)+(0,Half_tunit);% from anchor pt
+ f:= f shifted (Time_unit_size*Tunit_x,0);
+ label.top(What,f);
+enddef;
+
+%How - l,r,b,n left head rt head both head no heads 0..3
+def drw_vt_vector(expr Bot_line,Col,How)=
+ pair base_line;
+ numeric row,tu;
+ row := Time_unit_size*Bot_line;
+ tu := Time_to_inner_side_size;
+ base_line := Inner_tpos shifted (0,-row)+(0,-tu);
+ numeric dcol,dht;
+ dcol:= Time_unit_size*Col;
+ dht:= Outer_to_time_side_size;
+ base_line := base_line shifted (dcol,0) + (Half_tunit,0);
+ pair f,t;
+ f := base_line;% from anchor pt
+ t := base_line shifted (0,-dht);% from anchor pt
+ if(How = up_hd):
+ drawarrow t..f;
+ else:
+ if (How = dwn_hd):
+ drawarrow f..t;
+ else:
+ drawdblarrow f..t;
+ fi
+ fi
+enddef;
+
+% Opos top outer corner lt or rt
+% Tunit the time unit 0..16
+%Delta --- sixe of vector track + if lt, - if rt side
+%How - l,r,b,n left head rt head both head no heads 0..3
+def drw_vt_dotted_vector(expr Bot_Tline,Tunit_x,Tunit_y,How)=
+ pair base_line,t;
+ base_line := Inner_tpos shifted (0,-Bot_Tline*Time_unit_size);%base part of line
+ numeric xcol,y_ht;
+ xcol := Time_unit_size*Tunit_x;%bot of time unit
+ y_ht := Time_unit_size*Tunit_y;
+ base_line := base_line shifted (xcol,0)+(Half_tunit,0);
+ t:= Inner_tpos shifted (xcol,-y_ht)+(Half_tunit,Half_tunit);
+ if(How = up_hd):
+ drawarrow base_line..t dashed withdots;
+ else:
+ drawarrow t..base_line dashed evenly;
+ fi
+enddef;
+
+def drw_x_deadlock(expr Tunit_x,Tunit_y)=
+ pair base_line;
+ base_line := Inner_tpos shifted (0,-Tunit_x*Time_unit_size);%base part of line
+ numeric col;
+ col:= Time_unit_size*Tunit_y;
+ base_line := base_line shifted (col,0);
+ draw base_line -- base_line shifted (Time_unit_size,Time_unit_size);
+ draw base_line shifted (0,Time_unit_size)
+ -- base_line shifted (Time_unit_size,0);
+enddef;
+
+def drw_lft_outer_hz_note(expr Tunit,Note)=
+ pair f;
+ f := Outer_lft_tpos shifted (0,Half_tunit);% from anchor pt
+ numeric row;
+ row:= Time_unit_size*Tunit;
+ f := f shifted (0,-row);
+ label.lft(Note,f);
+enddef;
+
+def drw_rt_outer_hz_note(expr Tunit,Note)=
+ pair f;
+ f := Outer_rt_tpos shifted (0,Half_tunit);% from anchor pt
+ numeric row;
+ row:= Time_unit_size*Tunit;
+ f := f shifted (0,-row);
+ label.rt(Note,f);
+enddef;
+
+
+def drw_hz_xy_inner_note(expr Tunit_x,Tunit_y,Note)=
+ numeric row,col;
+ row:= Time_unit_size*Tunit_x;%bot of time unit
+ col:= Time_unit_size*Tunit_y;%interior of time unit
+ pair f;
+ f := Inner_tpos shifted (0,-row)+(col,0)+(0,Half_tunit);
+ label.rt(Note,f);
+enddef;
+
+% Opos top outer corner lt or rt
+% Tunit the time unit 0..16
+%Delta --- size of vector track + if lt, - if rt side
+def drw_vt_note(expr Opos,Tunit,Note)=
+ pair zz;
+ zz := Opos;% from anchor pt
+ numeric time_delta;
+ time_delta:= 1u*Tunit;%bot of time unit
+ pair f,t;
+ f:=zz+(time_delta,0)+(.5u,0);
+ %f:=f + (0,1u);% align closer to outer box line
+ numeric str_len;
+ str_len := length(Note);
+ t:=f;
+ pair accum_letter_ht,letter_ht;letter_ht:=(0,0);accum_letter_ht:=(0,0);
+
+ for i=0 upto str_len-1:
+ t:=f - (0,ypart accum_letter_ht);
+ string d; d:=substring(i,i+1) of Note;
+ label.bot(d,t);
+ picture letter;
+ letter := d infont defaultfont scaled defaultscale;
+ letter_ht := ulcorner letter - llcorner letter;
+ accum_letter_ht:= accum_letter_ht + letter_ht+(0,bboxmargin);
+ endfor
+enddef;
+
+def drw_vt_dashed_vector(expr Tunit_f,Tunit_t,Tunity)=
+ numeric rowf,rowy;
+ rowf:= Time_unit_size*Tunit_f;%bot of time unit
+ rowy:= Time_unit_size*Tunit_t;%bot of time unit
+ pair f,t;
+ f:=Inner_tpos shifted (0,-rowf)+(Tunity*Time_unit_size,0)+(Time_unit_size,0);
+ t:=Inner_tpos shifted (0,-rowy)+(Tunity*Time_unit_size,0)+(Time_unit_size,0);
+ draw f shifted (0,Half_tunit)..t shifted (0,Half_tunit) dashed evenly;
+enddef;
+
+%
+% Yacco2 example
+%
+beginfig(1);
+drw_obelisk(26,.7u);
+% G space
+drw_rt_side_hz_vector(1,both_hd);
+ drw_rt_outer_hz_note(1,"Acquire g");
+
+ drw_rt_outer_hz_note(2,"Launch threads");
+drw_rt_side_hz_vector(3,both_hd);
+ drw_rt_outer_hz_note(3,"Acquire x");
+drw_rt_side_hz_vector(4,lt_hd);
+ drw_rt_outer_hz_note(4,"Create A");
+
+drw_lft_side_hz_vector(5,lt_hd);
+ drw_lft_outer_hz_note(5,"Activated");
+drw_lft_side_hz_vector(6,both_hd);
+ drw_lft_outer_hz_note(6,"Acquire a");
+drw_lft_side_hz_vector(7,rt_hd);
+ drw_lft_outer_hz_note(7,"Acquire x");
+
+drw_rt_side_hz_vector(8,rt_hd);
+ drw_rt_outer_hz_note(8,"Re-activated");
+
+ drw_rt_outer_hz_note(9,"Setup: thread results");
+drw_rt_side_hz_vector(10,lt_hd);
+ drw_rt_outer_hz_note(10,"Release x");
+
+drw_lft_side_hz_vector(11,lt_hd);
+ drw_lft_outer_hz_note(11,"Wokeup with x");
+ drw_lft_outer_hz_note(12,"Make idle");
+drw_lft_side_hz_vector(13,rt_hd);
+ drw_lft_outer_hz_note(13,"Release x");
+
+drw_rt_side_hz_vector(14,rt_hd);
+ drw_rt_outer_hz_note(14,"Re-activated");
+drw_rt_side_hz_vector(15,lt_hd);
+ drw_rt_outer_hz_note(15,"Wait on event");
+ drw_rt_outer_hz_note(16,"release g");
+
+drw_lft_side_hz_vector(16,lt_hd);
+ drw_lft_outer_hz_note(16,"Re-activated");
+drw_lft_side_hz_vector(17,both_hd);
+ drw_lft_outer_hz_note(17,"Acquire g");
+ drw_lft_outer_hz_note(18,"Deposit data in G");
+drw_lft_side_hz_vector(19,both_hd);
+ drw_lft_outer_hz_note(19,"Release g");
+drw_lft_side_hz_vector(20,both_hd);
+ drw_lft_outer_hz_note(20,"Signal G");
+drw_lft_side_hz_vector(21,rt_hd);
+ drw_lft_outer_hz_note(21,"Wait on event");
+ drw_lft_outer_hz_note(22,"release a");
+
+drw_rt_side_hz_vector(22,rt_hd);
+ drw_rt_outer_hz_note(22,"Wokeup from event");
+ drw_rt_outer_hz_note(23,"Process data from A");
+ drw_rt_outer_hz_note(24,"Keep running until");
+ drw_rt_outer_hz_note(25,"launch of threads");
+
+
+% inner space
+drw_hz_xy_inner_note(8,5,"Inner Space: Thread Manager");
+drw_hz_xy_inner_note(0,0,"Running queue:");
+drw_hz_xy_inner_note(1,0,"G");
+drw_hz_xy_inner_note(2,0,"A");
+
+drw_hz_xy_inner_note(5,0,"To Run queue:");
+drw_hz_xy_inner_note(6,0,"G");
+drw_hz_xy_inner_note(7,0,"A");
+
+drw_hz_xy_inner_note(10,0,"Resources");
+drw_hz_xy_inner_note(11,0,"g");
+drw_hz_xy_inner_note(12,0,"x");
+drw_hz_xy_inner_note(13,0,"a");
+
+% G running
+ drw_hz_inner_vector(1,1,4,no_hd);
+ drw_hz_inner_vector(2,5,7,no_hd);
+ drw_hz_inner_vector(1,8,10,no_hd);
+ drw_hz_inner_vector(2,11,13,no_hd);
+ drw_hz_inner_vector(1,14,15,no_hd);
+ drw_hz_inner_vector(2,16,21,no_hd);
+ drw_hz_inner_vector(1,22,25,no_hd);
+% draw continuity
+drw_vt_dashed_vector(1,2,4);
+drw_vt_dashed_vector(2,1,7);
+drw_vt_dashed_vector(1,2,10);
+drw_vt_dashed_vector(2,1,13);
+drw_vt_dashed_vector(1,2,15);
+drw_vt_dashed_vector(2,1,21);
+
+
+% G to run
+ drw_hz_inner_vector(6,3,6,no_hd);
+ drw_hz_inner_vector(6,9,13,no_hd);
+% A running
+ drw_hz_inner_vector(7,7,11,no_hd);
+
+% resources
+% g
+ drw_hz_inner_vector(11,1,15,no_hd);
+ drw_hz_inner_vector(11,17,19,no_hd);
+ drw_hz_inner_vector(11,22,25,no_hd);
+% x
+ drw_hz_inner_vector(12,3,10,no_hd);
+ drw_hz_inner_vector(12,11,13,no_hd);
+% a
+ drw_hz_inner_vector(13,6,21,no_hd);
+
+% waiting on resource
+% label ownership
+drw_hz_inner_ownership(11,8,"G");
+drw_hz_inner_ownership(11,19,"A");
+drw_hz_inner_ownership(11,24,"G");
+drw_hz_inner_ownership(12,9,"G");
+drw_hz_inner_ownership(13,14,"A");
+
+drw_vt_dotted_vector(25,7,12,up_hd);
+drw_vt_dotted_vector(25,11,12,dwn_hd);
+drw_vt_dotted_vector(25,15,11,up_hd);
+drw_vt_dotted_vector(25,22,11,dwn_hd);
+drw_vt_dotted_vector(25,21,13,up_hd);
+%space labels
+
+defaultscale:=1.5;
+label.lft(btex --- A Space --- etex,Sw_outer+(0,29*Time_unit_size));
+label.rt(btex --- G Space --- etex,Sw_outer+(33*Time_unit_size,29*Time_unit_size));
+endfig;
+
+%
+% Deadlock example
+%
+beginfig(2);
+drw_obelisk(17,1u);
+% A space
+drw_lft_side_hz_vector(3,lt_hd);
+ drw_lft_outer_hz_note(3,"Activated");
+drw_lft_side_hz_vector(4,both_hd);
+ drw_lft_outer_hz_note(4,"Acquire a");
+drw_lft_side_hz_vector(5,both_hd);
+ drw_lft_outer_hz_note(5,"Acquire x");
+drw_lft_side_hz_vector(6,rt_hd);
+ drw_lft_outer_hz_note(6,"Release x");
+drw_lft_side_hz_vector(12,lt_hd);
+ drw_lft_outer_hz_note(12,"Re-activated");
+drw_lft_side_hz_vector(13,rt_hd);
+ drw_lft_outer_hz_note(13,"Acquire b");
+
+% G space
+drw_rt_side_hz_vector(1,both_hd);
+ drw_rt_outer_hz_note(1,"Acquire g");
+drw_rt_side_hz_vector(2,lt_hd);
+ drw_rt_outer_hz_note(2,"Create A");
+drw_rt_side_hz_vector(7,rt_hd);
+ drw_rt_outer_hz_note(7,"Re-activated");
+drw_rt_side_hz_vector(8,lt_hd);
+ drw_rt_outer_hz_note(8,"Create B");
+drw_rt_side_hz_vector(14,rt_hd);
+ drw_rt_outer_hz_note(14,"Re-activated");
+drw_rt_side_hz_vector(15,lt_hd);
+ drw_rt_outer_hz_note(15,"Wait on signal, rel. g");
+ drw_rt_outer_hz_note(16,"Deadlock");
+
+% B space
+
+drw_vt_vector(16,9,dwn_hd);
+%%%% %drw_vt_note(bot_lt,9,"Activated");
+drw_vt_vector(16,10,both_hd);
+%%%% %drw_vt_note(bot_lt,10,"Acquire b");
+drw_vt_vector(16,11,up_hd);
+%%%% %drw_vt_note(bot_lt,11,"Acquire a");
+pair odisp;
+odisp := (0,0)
+ + (Time_unit_size*Outer_to_time_side_size,0)
+ + (Time_unit_size*Time_to_inner_side_size,0);
+
+%label.lft(btex activated etex rotated 30,odisp shifted (10*Time_unit_size,-Time_unit_size));
+label.lft(btex activated etex rotated 30,(0,0) + (13u,-u));
+%label.lft(btex acquire b etex rotated 30,odisp shifted (11*Time_unit_size,-Time_unit_size));
+label.lft(btex acquire b etex rotated 30,(0,0) + (14*Time_unit_size,-Time_unit_size));
+%label.lft(btex acquire a etex rotated 30,odisp shifted (12*Time_unit_size,-Time_unit_size));
+label.lft(btex acquire a etex rotated 30,(0,0) shifted (15*Time_unit_size,-Time_unit_size));
+
+% inner space
+drw_hz_xy_inner_note(9,5,"Inner Space: Thread Manager");
+drw_hz_xy_inner_note(0,0,"Running queue:");
+drw_hz_xy_inner_note(1,0,"G");
+drw_hz_xy_inner_note(2,0,"A");
+drw_hz_xy_inner_note(3,0,"B");
+drw_hz_xy_inner_note(5,0,"To Run queue:");
+drw_hz_xy_inner_note(6,0,"G");
+drw_hz_xy_inner_note(7,0,"A");
+drw_hz_xy_inner_note(8,0,"B");
+drw_hz_xy_inner_note(10,0,"Resources");
+drw_hz_xy_inner_note(11,0,"g");
+drw_hz_xy_inner_note(12,0,"x");
+drw_hz_xy_inner_note(13,0,"a");
+drw_hz_xy_inner_note(14,0,"b");
+% G running
+ drw_hz_inner_vector(1,1,2,no_hd);
+ drw_hz_inner_vector(1,7,8,no_hd);
+ drw_hz_inner_vector(1,14,15,no_hd);
+% A running
+ drw_hz_inner_vector(2,3,6,no_hd);
+ drw_hz_inner_vector(2,12,13,no_hd);
+% B running
+ drw_hz_inner_vector(3,9,11,no_hd);
+
+% G to run
+ drw_hz_inner_vector(6,3,6,no_hd);
+ drw_hz_inner_vector(6,9,13,no_hd);
+% A running
+ drw_hz_inner_vector(7,7,11,no_hd);
+
+% resources
+% g
+ drw_hz_inner_vector(11,1,15,no_hd);
+% x
+ drw_hz_inner_vector(12,5,6,no_hd);
+% a
+ drw_hz_inner_vector(13,4,16,no_hd);
+% b
+ drw_hz_inner_vector(14,10,16,no_hd);
+% waiting on resource
+drw_vt_dotted_vector(16,11,13,up_hd);
+drw_vt_dotted_vector(16,13,14,up_hd);
+drw_vt_dotted_vector(16,15,11,up_hd);
+% draw continuity
+drw_vt_dashed_vector(1,2,2);
+drw_vt_dashed_vector(2,1,6);
+drw_vt_dashed_vector(1,3,8);
+drw_vt_dashed_vector(3,2,11);
+drw_vt_dashed_vector(2,1,13);
+% label ownership
+drw_hz_inner_ownership(11,8,"G");
+drw_hz_inner_ownership(12,6,"A");
+drw_hz_inner_ownership(13,9,"A");
+drw_hz_inner_ownership(14,14,"B");
+
+% X where deadlock occurs
+%drw_vt_dotted_vector(16,11,13,hd_hd);
+drw_x_deadlock(16,16);
+%space labels
+defaultscale:=1.5;
+label.bot(btex -------- B Space -------- etex,Sw_outer+(10*Time_unit_size,-3*Time_unit_size));
+label.lft(btex -- A Space -- etex,Sw_outer+(0,22*Time_unit_size));
+label.rt(btex -- G Space -- etex,Sw_outer+(23*Time_unit_size,22*Time_unit_size));
+endfig;
+end;
diff --git a/web/yacco2/diagrams/threadmanualcall.txt b/web/yacco2/diagrams/threadmanualcall.txt
new file mode 100644
index 0000000000..ec1c574d43
--- /dev/null
+++ b/web/yacco2/diagrams/threadmanualcall.txt
@@ -0,0 +1,74 @@
+/*
+ file: /yacco2/diagrams+etc/threadmanualcall.txt
+ Example of a subrule calling a thread manually.
+ Taken from grammar pass3.lex before explicit procedure call of threads
+ construct invented.
+ The start_manually_parallel_parsing function uses the
+ thread's id generated from O2linker as its key to find the thread to launch.
+*/
+ -> "@"
+ /@
+ \Yacco2's pre-processor include directive.\fbreak
+ \fbreak
+ This demonstrates a nested environment
+ where the grammar uses recursion by
+ calling a function which contains the |pass3| grammar sequence.
+ In this example, grammar |pass3|
+ manually calls a thread via
+ |start_manually_parallel_parsing|
+ to get its file name to process.
+ With the returned ``file-inclusion'' terminal,
+ |PROCESS_INCLUDE_FILE| is called to parse
+ the include file: a bom-de-bom-bom bump-and-grind sequence.
+ The |use_cnt_| is a global variable that protects
+ against the file include recursion of calling self
+ until a stack overflow occurs.
+ @/
+ {
+ op
+ using namespace NS_prefile_include;
+ using namespace NS_yacco2_T_enum;
+
+ Parser::parse_result result =
+ rule_info__.parser__->
+ start_manually_parallel_parsing(ITH_prefile_include.thd_id__);
+ if(result == Parser::erred){
+ // in this case, it will not happen: here for education
+ rule_info__.parser__->set_abort_parse(true);
+ return;
+ }
+ // process returned token
+ Caccept_parse& accept_parm =
+ *rule_info__.parser__->arbitrated_token__;
+ CAbs_lr1_sym* rtn_tok = accept_parm.accept_token__;
+ int id = rtn_tok->enumerated_id__;
+ accept_parm.accept_token__ = 0;
+ if(id == T_Enum::T_T_file_inclusion_) {
+ T_file_inclusion* finc = (T_file_inclusion*)(rtn_tok);
+ CAbs_lr1_sym* err = finc->error_sym();
+ if(err != 0) {
+ rule_info__.parser__->set_abort_parse(true);
+ ADD_TOKEN_TO_ERROR_QUEUE(*finc);
+ ADD_TOKEN_TO_ERROR_QUEUE(*finc->error_sym());
+ finc->error_sym(0);
+ return;
+ }
+ rule_info__.parser__->
+ override_current_token(*accept_parm.la_token__
+ ,accept_parm.la_token_pos__);
+ bool result =
+ PROCESS_INCLUDE_FILE
+ (*rule_info__.parser__
+ ,*finc,*rule_info__.parser__->token_producer__);
+ if(result == false){ // exceeded nested file limit
+ rule_info__.parser__->set_abort_parse(true);
+ return;
+ }
+ ADD_TOKEN_TO_RECYCLE_BIN(*finc);//file name inside
+ return;
+ }
+ // catch all errors
+ rule_info__.parser__->set_abort_parse(true);
+ ***
+ }
+
diff --git a/web/yacco2/diagrams/tokcanaccess.txt b/web/yacco2/diagrams/tokcanaccess.txt
new file mode 100644
index 0000000000..1098356f6f
--- /dev/null
+++ b/web/yacco2/diagrams/tokcanaccess.txt
@@ -0,0 +1,13 @@
+// file: /yacco2/diagrams+etc/tokcanaccess.txt
+ using namespace NS_yacco2_T_enum;
+ using namespace NS_yacco2_terminals;
+ using namespace yacco2;
+ INT_SET_type filter;
+ filter.insert(T_Enum::T_T_cweb_comment_);
+ tok_can_ast_functor walk_functr;
+ ast_prefix_1forest rule_walk(*tree_ptr,&walk_functr,&filter,ACCEPT_FILTER);
+ tok_can<AST*> comments_can(rule_walk);// container
+ for(int x(0);comments_can[x] != yacco2::PTR_LR1_eog__;++x){
+ T_cweb_comment* k = (T_cweb_comment*)comments_can[x];
+ (*Wfile) << k->comment_data()->c_str() << endl;
+ }
diff --git a/web/yacco2/diagrams/treemodify.txt b/web/yacco2/diagrams/treemodify.txt
new file mode 100644
index 0000000000..5839658355
--- /dev/null
+++ b/web/yacco2/diagrams/treemodify.txt
@@ -0,0 +1,9 @@
+/*
+file: /yacco2/diagrams+etc/treemodify.txt
+Example of re-aligning the parser's LA T when dynamically modifying the tree
+*/
+tok_can<yacco2::AST*>* ct
+ = (tok_can<yacco2::AST*>*)parser()->token_supplier();
+ct->remove();//drop the la T as i could have morphed this into a comment
+parser()->override_current_token_pos(parser()->current_token_pos()-1);
+parser()->get_next_token();
diff --git a/web/yacco2/diagrams/yacco2_stbl.1 b/web/yacco2/diagrams/yacco2_stbl.1
new file mode 100644
index 0000000000..0dd975da01
--- /dev/null
+++ b/web/yacco2/diagrams/yacco2_stbl.1
@@ -0,0 +1,289 @@
+%!PS
+%%BoundingBox: -31 -13 433 82
+%%Creator: MetaPost
+%%CreationDate: 2006.05.15:1236
+%%Pages: 1
+%*Font: cmr10 9.96265 9.96265 0c:8000000080020000028147ddfbf48
+%*Font: cmmi10 9.96265 9.96265 3a:8000000001d26ee1
+%*Font: cmsy10 9.96265 9.96265 0f:800010001
+%*Font: cmr10 5.97765 9.96265 2d:9f8000000000008894
+%%EndProlog
+%%Page: 1 1
+ 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 1 setlinejoin 10 setmiterlimit
+newpath 0 0 moveto
+12.79213 0 lineto
+12.79213 76.75278 lineto
+0 76.75278 lineto
+ closepath stroke
+ 1 setlinecap
+newpath 0 12.79213 moveto
+12.79213 12.79213 lineto stroke
+2.72926 3 moveto
+(R) cmr10 9.96265 fshow
+-5.98883 -1.92613 moveto
+(0) cmr10 5.97765 fshow
+newpath 0 25.58426 moveto
+12.79213 25.58426 lineto stroke
+3.62866 15.79213 moveto
+(b) cmr10 9.96265 fshow
+-5.98883 10.866 moveto
+(1) cmr10 5.97765 fshow
+newpath 0 38.37639 moveto
+12.79213 38.37639 lineto stroke
+4.18214 28.58426 moveto
+(e) cmr10 9.96265 fshow
+-5.98883 23.65813 moveto
+(2) cmr10 5.97765 fshow
+newpath 0 51.16852 moveto
+12.79213 51.16852 lineto stroke
+3.9054 43.31358 moveto
+(g) cmr10 9.96265 fshow
+-5.98883 36.45026 moveto
+(3) cmr10 5.97765 fshow
+newpath 0 63.96065 moveto
+12.79213 63.96065 lineto stroke
+newpath 0 63.96065 moveto
+12.79213 76.75278 lineto stroke
+newpath 6.39607 63.96065 moveto
+12.79213 70.35672 lineto stroke
+newpath 0 70.35672 moveto
+6.39607 76.75278 lineto stroke
+3.62866 54.16852 moveto
+(n) cmr10 9.96265 fshow
+-5.98883 49.24239 moveto
+(4) cmr10 5.97765 fshow
+-5.98883 62.03452 moveto
+(5) cmr10 5.97765 fshow
+-20.7575 -9.9185 moveto
+(char) cmmi10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop 0 setlinecap
+newpath -0.07071 -9.7193 moveto
+2.91809 -9.7193 lineto stroke
+2.91809 -9.9185 moveto
+(pool) cmmi10 9.96265 fshow
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
+newpath 63.96065 0 moveto
+76.75278 0 lineto
+76.75278 51.16852 lineto
+63.96065 51.16852 lineto
+ closepath stroke
+ 1 setlinecap
+newpath 63.96065 12.79213 moveto
+76.75278 12.79213 lineto stroke
+newpath 63.96065 25.58426 moveto
+76.75278 25.58426 lineto stroke
+newpath 63.96065 38.37639 moveto
+65.72687 40.14261 68.5905 40.14261 70.35672 38.37639 curveto
+72.12294 36.61017 74.98656 36.61017 76.75278 38.37639 curveto stroke
+newpath 70.35672 6.39607 moveto
+12.79213 6.39607 lineto stroke
+newpath 16.4877 7.92686 moveto
+12.79213 6.39607 lineto
+16.4877 4.86528 lineto
+ closepath
+gsave fill grestore stroke
+-30.18266 68.26138 moveto
+(top) cmr10 9.96265 fshow
+newpath -12.79213 70.35672 moveto
+0 70.35672 lineto stroke
+newpath -3.69557 68.82593 moveto
+0 70.35672 lineto
+-3.69557 71.88751 lineto
+ closepath
+gsave fill grestore stroke
+40.36403 -10.472 moveto
+(stbl) cmmi10 9.96265 fshow
+56.07593 -10.472 moveto
+([]) cmr10 9.96265 fshow
+61.61073 -10.472 moveto
+(:tabl) cmmi10 9.96265 fshow
+80.68623 -10.472 moveto
+(e) cmmi10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop 0 setlinecap
+newpath 85.92284 -10.2728 moveto
+88.91173 -10.2728 lineto stroke
+88.91173 -10.472 moveto
+(entr) cmmi10 9.96265 fshow
+107.89954 -10.472 moveto
+(y) cmmi10 9.96265 fshow
+30.00957 11.33327 moveto
+(k) cmmi10 9.96265 fshow
+35.50977 11.33327 moveto
+(ey) cmmi10 9.96265 fshow
+48.15797 11.33327 moveto
+(") cmsy10 9.96265 fshow
+79.75278 -1.92613 moveto
+(0) cmr10 5.97765 fshow
+79.75278 10.866 moveto
+(1) cmr10 5.97765 fshow
+79.75278 23.65813 moveto
+(2) cmr10 5.97765 fshow
+79.75278 36.96144 moveto
+(prime-1) cmr10 5.97765 fshow
+118.12917 74.26212 moveto
+(table) cmr10 9.96265 fshow
+newpath 140.31267 74.46132 moveto
+143.30147 74.46132 lineto stroke
+143.30147 74.26212 moveto
+(en) cmr10 9.96265 fshow
+152.98737 74.26212 moveto
+(try:) cmr10 9.96265 fshow
+130.9213 61.46999 moveto
+(\017) cmsy10 9.96265 fshow
+139.2235 61.46999 moveto
+(k) cmr10 9.96265 fshow
+144.20479 61.46999 moveto
+(ey) cmr10 9.96265 fshow
+153.8908 61.46999 moveto
+(") cmsy10 9.96265 fshow
+168.8347 61.46999 moveto
+(\017) cmsy10 9.96265 fshow
+177.1369 61.46999 moveto
+(k) cmr10 9.96265 fshow
+182.1183 61.46999 moveto
+(ey) cmr10 9.96265 fshow
+195.12509 61.46999 moveto
+(len) cmr10 9.96265 fshow
+214.4969 61.46999 moveto
+(\017) cmsy10 9.96265 fshow
+222.7991 61.46999 moveto
+(stbl) cmr10 9.96265 fshow
+242.22629 61.46999 moveto
+(p) cmr10 9.96265 fshow
+248.0378 61.46999 moveto
+(os) cmr10 9.96265 fshow
+130.9213 47.70926 moveto
+(\017) cmsy10 9.96265 fshow
+139.2235 47.70926 moveto
+(v) cmr10 9.96265 fshow
+143.9281 47.70926 moveto
+(acan) cmr10 9.96265 fshow
+163.57669 47.70926 moveto
+(t) cmr10 9.96265 fshow
+170.7719 47.70926 moveto
+(|) cmr10 9.96265 fshow
+184.0555 47.70926 moveto
+(b) cmr10 9.96265 fshow
+189.86699 47.70926 moveto
+(o) cmr10 9.96265 fshow
+195.12509 47.70926 moveto
+(olean) cmr10 9.96265 fshow
+221.1387 47.70926 moveto
+(v) cmr10 9.96265 fshow
+225.84329 47.70926 moveto
+(alued) cmr10 9.96265 fshow
+130.9213 34.91713 moveto
+(\017) cmsy10 9.96265 fshow
+139.2235 34.91713 moveto
+(de\014ned) cmr10 9.96265 fshow
+176.8602 34.91713 moveto
+(\017) cmsy10 9.96265 fshow
+185.1624 34.91713 moveto
+(used) cmr10 9.96265 fshow
+207.91049 34.91713 moveto
+(|) cmr10 9.96265 fshow
+221.194 34.91713 moveto
+(b) cmr10 9.96265 fshow
+227.0056 34.91713 moveto
+(oth) cmr10 9.96265 fshow
+244.717 34.91713 moveto
+(b) cmr10 9.96265 fshow
+250.52849 34.91713 moveto
+(o) cmr10 9.96265 fshow
+255.78659 34.91713 moveto
+(olean) cmr10 9.96265 fshow
+281.8002 34.91713 moveto
+(v) cmr10 9.96265 fshow
+286.50479 34.91713 moveto
+(alued) cmr10 9.96265 fshow
+130.9213 23.0936 moveto
+(\017) cmsy10 9.96265 fshow
+139.2235 23.0936 moveto
+(t) cmr10 9.96265 fshow
+142.82109 23.0936 moveto
+(yp) cmr10 9.96265 fshow
+153.8908 23.0936 moveto
+(e) cmr10 9.96265 fshow
+161.6395 23.0936 moveto
+(2) cmsy10 9.96265 fshow
+174.92299 23.0936 moveto
+(rule,) cmr10 9.96265 fshow
+197.6434 23.0936 moveto
+(terminal,) cmr10 9.96265 fshow
+240.2891 23.0936 moveto
+(k) cmr10 9.96265 fshow
+245.2705 23.0936 moveto
+(eyw) cmr10 9.96265 fshow
+261.8749 23.0936 moveto
+(ord,) cmr10 9.96265 fshow
+282.3814 23.0936 moveto
+(thread,) cmr10 9.96265 fshow
+316.7249 23.0936 moveto
+(unkno) cmr10 9.96265 fshow
+343.29199 23.0936 moveto
+(wn) cmr10 9.96265 fshow
+130.9213 10.30147 moveto
+(\017) cmsy10 9.96265 fshow
+139.2235 10.30147 moveto
+(sym) cmr10 9.96265 fshow
+156.4368 10.30147 moveto
+(b) cmr10 9.96265 fshow
+162.24829 10.30147 moveto
+(ol) cmr10 9.96265 fshow
+173.318 10.30147 moveto
+(") cmsy10 9.96265 fshow
+181.6202 10.30147 moveto
+(2) cmsy10 9.96265 fshow
+191.5828 10.30147 moveto
+(rule) cmr10 9.96265 fshow
+newpath 208.8127 10.50067 moveto
+211.8015 10.50067 lineto stroke
+211.8015 10.30147 moveto
+(in) cmr10 9.96265 fshow
+newpath 220.7014 10.50067 moveto
+223.69029 10.50067 lineto stroke
+223.69029 10.30147 moveto
+(stbl,) cmr10 9.96265 fshow
+245.88489 10.30147 moveto
+(T) cmr10 9.96265 fshow
+newpath 253.6778 10.50067 moveto
+256.6667 10.50067 lineto stroke
+256.6667 10.30147 moveto
+(in) cmr10 9.96265 fshow
+newpath 265.56659 10.50067 moveto
+268.55539 10.50067 lineto stroke
+268.55539 10.30147 moveto
+(stbl,) cmr10 9.96265 fshow
+290.75 10.30147 moveto
+(kw) cmr10 9.96265 fshow
+newpath 303.8011 10.50067 moveto
+306.7899 10.50067 lineto stroke
+306.7899 10.30147 moveto
+(in) cmr10 9.96265 fshow
+newpath 315.6899 10.50067 moveto
+318.6787 10.50067 lineto stroke
+318.6787 10.30147 moveto
+(stbl,) cmr10 9.96265 fshow
+340.87329 10.30147 moveto
+(th) cmr10 9.96265 fshow
+newpath 350.88019 10.50067 moveto
+353.86899 10.50067 lineto stroke
+353.86899 10.30147 moveto
+(in) cmr10 9.96265 fshow
+newpath 362.769 10.50067 moveto
+365.7578 10.50067 lineto stroke
+365.7578 10.30147 moveto
+(stbl,) cmr10 9.96265 fshow
+387.9524 10.30147 moveto
+(tth) cmr10 9.96265 fshow
+newpath 401.8337 10.50067 moveto
+404.8225 10.50067 lineto stroke
+404.8225 10.30147 moveto
+(in) cmr10 9.96265 fshow
+newpath 413.72249 10.50067 moveto
+416.71129 10.50067 lineto stroke
+416.71129 10.30147 moveto
+(stbl) cmr10 9.96265 fshow
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/yacco2_stbl.2 b/web/yacco2/diagrams/yacco2_stbl.2
new file mode 100644
index 0000000000..2d1a25a726
--- /dev/null
+++ b/web/yacco2/diagrams/yacco2_stbl.2
@@ -0,0 +1,444 @@
+%!PS
+%%BoundingBox: 15 -146 472 132
+%%Creator: MetaPost
+%%CreationDate: 2006.05.15:1236
+%%Pages: 1
+%*Font: cmr10 9.96265 9.96265 0c:8000000084020500808007fdfffc8
+%*Font: cmmi10 9.96265 9.96265 3c:a
+%*Font: cmsy10 9.96265 9.96265 0f:80001
+%%EndProlog
+%%Page: 1 1
+15.79213 124.46204 moveto
+(rule) cmr10 9.96265 fshow
+ 0 0.3985 dtransform truncate idtransform setlinewidth pop [] 0 setdash
+ 0 setlinecap 1 setlinejoin 10 setmiterlimit
+newpath 33.02193 124.66124 moveto
+36.01083 124.66124 lineto stroke
+36.01083 124.46204 moveto
+(in) cmr10 9.96265 fshow
+newpath 44.91074 124.66124 moveto
+47.89954 124.66124 lineto stroke
+47.89954 124.46204 moveto
+(stbl:) cmr10 9.96265 fshow
+28.58426 111.6699 moveto
+(\017) cmsy10 9.96265 fshow
+36.88646 111.6699 moveto
+(stbl) cmr10 9.96265 fshow
+56.31366 111.6699 moveto
+(index) cmr10 9.96265 fshow
+28.58426 99.84637 moveto
+(\017) cmsy10 9.96265 fshow
+36.88646 99.84637 moveto
+(rule) cmr10 9.96265 fshow
+newpath 54.11626 100.04558 moveto
+57.10516 100.04558 lineto stroke
+57.10516 99.84637 moveto
+(def) cmr10 9.96265 fshow
+73.43286 99.84637 moveto
+(") cmsy10 9.96265 fshow
+41.37639 86.08565 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 86.08565 moveto
+(auto) cmr10 9.96265 fshow
+72.37129 86.08565 moveto
+(delete) cmr10 9.96265 fshow
+101.15228 86.08565 moveto
+(\017) cmsy10 9.96265 fshow
+112.77539 86.08565 moveto
+(auto) cmr10 9.96265 fshow
+135.46819 86.08565 moveto
+(ab) cmr10 9.96265 fshow
+146.2611 86.08565 moveto
+(ort) cmr10 9.96265 fshow
+41.37639 74.26212 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 74.26212 moveto
+(con) cmr10 9.96265 fshow
+64.34589 74.26212 moveto
+(tains) cmr10 9.96265 fshow
+88.7544 74.26212 moveto
+(an) cmr10 9.96265 fshow
+102.59138 74.26212 moveto
+(epsilon) cmr10 9.96265 fshow
+135.85559 74.26212 moveto
+(subrule) cmr10 9.96265 fshow
+41.37639 60.50139 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 60.50139 moveto
+(rule) cmr10 9.96265 fshow
+69.63159 60.50139 moveto
+(name) cmr10 9.96265 fshow
+41.37639 48.67786 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 48.67786 moveto
+(parallel) cmr10 9.96265 fshow
+newpath 82.40588 48.87706 moveto
+85.39479 48.87706 lineto stroke
+85.39479 48.67786 moveto
+(monitor) cmr10 9.96265 fshow
+newpath 120.33598 48.87706 moveto
+123.32478 48.87706 lineto stroke
+123.32478 48.67786 moveto
+(phrase) cmr10 9.96265 fshow
+151.63539 48.67786 moveto
+(") cmsy10 9.96265 fshow
+41.37639 35.88573 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 35.88573 moveto
+(subrules) cmr10 9.96265 fshow
+newpath 85.8375 36.08493 moveto
+88.8263 36.08493 lineto stroke
+88.8263 35.88573 moveto
+(phrase) cmr10 9.96265 fshow
+117.13689 35.88573 moveto
+(") cmsy10 9.96265 fshow
+41.37639 23.0936 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 23.0936 moveto
+(rule) cmr10 9.96265 fshow
+newpath 66.90839 23.2928 moveto
+69.8973 23.2928 lineto stroke
+69.8973 23.0936 moveto
+(lhs) cmr10 9.96265 fshow
+newpath 82.72688 23.2928 moveto
+85.71579 23.2928 lineto stroke
+85.71579 23.0936 moveto
+(phrase) cmr10 9.96265 fshow
+114.02629 23.0936 moveto
+(") cmsy10 9.96265 fshow
+41.37639 10.30147 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 10.30147 moveto
+(lhs) cmr10 9.96265 fshow
+65.23138 10.30147 moveto
+(directiv) cmr10 9.96265 fshow
+97.91449 10.30147 moveto
+(es) cmr10 9.96265 fshow
+109.5929 10.30147 moveto
+(map) cmr10 9.96265 fshow
+131.73209 10.30147 moveto
+(|) cmr10 9.96265 fshow
+145.01569 10.30147 moveto
+(<) cmmi10 9.96265 fshow
+152.76439 10.30147 moveto
+(string,) cmr10 9.96265 fshow
+183.84239 10.30147 moveto
+(CAbs) cmr10 9.96265 fshow
+newpath 208.57188 10.50067 moveto
+211.56068 10.50067 lineto stroke
+211.56068 10.30147 moveto
+(lr1) cmr10 9.96265 fshow
+newpath 223.80919 10.50067 moveto
+226.79799 10.50067 lineto stroke
+226.79799 10.30147 moveto
+(sym) cmr10 9.96265 fshow
+244.28809 10.30147 moveto
+(") cmsy10 9.96265 fshow
+249.2694 10.30147 moveto
+(>) cmmi10 9.96265 fshow
+28.58426 -2.49066 moveto
+(\017) cmsy10 9.96265 fshow
+36.88646 -2.49066 moveto
+(list) cmr10 9.96265 fshow
+53.54626 -2.49066 moveto
+(of) cmr10 9.96265 fshow
+64.89256 -2.49066 moveto
+(refered) cmr10 9.96265 fshow
+newpath 95.15686 -2.29146 moveto
+98.14575 -2.29146 lineto stroke
+98.14575 -2.49066 moveto
+(rule) cmr10 9.96265 fshow
+118.09866 -2.49066 moveto
+(") cmsy10 9.96265 fshow
+41.37639 -15.28279 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 -15.28279 moveto
+(referenced) cmr10 9.96265 fshow
+97.05649 -15.28279 moveto
+(rule) cmr10 9.96265 fshow
+120.33038 -15.28279 moveto
+(|) cmr10 9.96265 fshow
+133.61389 -15.28279 moveto
+(rule) cmr10 9.96265 fshow
+newpath 150.8438 -15.08359 moveto
+153.8326 -15.08359 lineto stroke
+153.8326 -15.28279 moveto
+(in) cmr10 9.96265 fshow
+newpath 162.73248 -15.08359 moveto
+165.72139 -15.08359 lineto stroke
+165.72139 -15.28279 moveto
+(stbl) cmr10 9.96265 fshow
+181.82768 -15.28279 moveto
+(") cmsy10 9.96265 fshow
+246.05046 124.46204 moveto
+(T) cmr10 9.96265 fshow
+newpath 253.84346 124.66124 moveto
+256.83226 124.66124 lineto stroke
+256.83226 124.46204 moveto
+(in) cmr10 9.96265 fshow
+newpath 265.73225 124.66124 moveto
+268.72105 124.66124 lineto stroke
+268.72105 124.46204 moveto
+(stbl:) cmr10 9.96265 fshow
+258.84259 111.6699 moveto
+(\017) cmsy10 9.96265 fshow
+267.14479 111.6699 moveto
+(stbl) cmr10 9.96265 fshow
+286.57199 111.6699 moveto
+(index) cmr10 9.96265 fshow
+258.84259 99.84637 moveto
+(\017) cmsy10 9.96265 fshow
+267.14479 99.84637 moveto
+(terminal) cmr10 9.96265 fshow
+newpath 304.29999 100.04558 moveto
+307.28879 100.04558 lineto stroke
+307.28879 99.84637 moveto
+(def) cmr10 9.96265 fshow
+323.61649 99.84637 moveto
+(") cmsy10 9.96265 fshow
+271.63472 86.08565 moveto
+(\017) cmsy10 9.96265 fshow
+279.93692 86.08565 moveto
+(auto) cmr10 9.96265 fshow
+302.62962 86.08565 moveto
+(delete) cmr10 9.96265 fshow
+331.41061 86.08565 moveto
+(\017) cmsy10 9.96265 fshow
+343.03372 86.08565 moveto
+(auto) cmr10 9.96265 fshow
+365.72652 86.08565 moveto
+(ab) cmr10 9.96265 fshow
+376.51942 86.08565 moveto
+(ort) cmr10 9.96265 fshow
+271.63472 73.29352 moveto
+(\017) cmsy10 9.96265 fshow
+279.93692 73.29352 moveto
+(terminal) cmr10 9.96265 fshow
+319.81522 73.29352 moveto
+(name) cmr10 9.96265 fshow
+271.63472 60.50139 moveto
+(\017) cmsy10 9.96265 fshow
+279.93692 60.50139 moveto
+(class) cmr10 9.96265 fshow
+303.29382 60.50139 moveto
+(name) cmr10 9.96265 fshow
+271.63472 48.67786 moveto
+(\017) cmsy10 9.96265 fshow
+279.93692 48.67786 moveto
+(directiv) cmr10 9.96265 fshow
+312.62003 48.67786 moveto
+(es) cmr10 9.96265 fshow
+324.29842 48.67786 moveto
+(map) cmr10 9.96265 fshow
+346.43762 48.67786 moveto
+(|) cmr10 9.96265 fshow
+359.72122 48.67786 moveto
+(<) cmmi10 9.96265 fshow
+367.46992 48.67786 moveto
+(string,) cmr10 9.96265 fshow
+398.54791 48.67786 moveto
+(CAbs) cmr10 9.96265 fshow
+newpath 423.27742 48.87706 moveto
+426.26622 48.87706 lineto stroke
+426.26622 48.67786 moveto
+(lr1) cmr10 9.96265 fshow
+newpath 438.51472 48.87706 moveto
+441.50352 48.87706 lineto stroke
+441.50352 48.67786 moveto
+(sym) cmr10 9.96265 fshow
+458.99362 48.67786 moveto
+(") cmsy10 9.96265 fshow
+463.97491 48.67786 moveto
+(>) cmmi10 9.96265 fshow
+258.84259 35.88573 moveto
+(\017) cmsy10 9.96265 fshow
+267.14479 35.88573 moveto
+(list) cmr10 9.96265 fshow
+283.8046 35.88573 moveto
+(of) cmr10 9.96265 fshow
+295.1509 35.88573 moveto
+(refered) cmr10 9.96265 fshow
+newpath 325.41519 36.08493 moveto
+328.40408 36.08493 lineto stroke
+328.40408 35.88573 moveto
+(T) cmr10 9.96265 fshow
+338.9202 35.88573 moveto
+(") cmsy10 9.96265 fshow
+271.63472 23.0936 moveto
+(\017) cmsy10 9.96265 fshow
+279.93692 23.0936 moveto
+(referenced) cmr10 9.96265 fshow
+327.31482 23.0936 moveto
+(terminal) cmr10 9.96265 fshow
+370.51402 23.0936 moveto
+(|) cmr10 9.96265 fshow
+383.79762 23.0936 moveto
+(T) cmr10 9.96265 fshow
+newpath 391.59062 23.2928 moveto
+394.57942 23.2928 lineto stroke
+394.57942 23.0936 moveto
+(in) cmr10 9.96265 fshow
+newpath 403.47932 23.2928 moveto
+406.46822 23.2928 lineto stroke
+406.46822 23.0936 moveto
+(stbl) cmr10 9.96265 fshow
+422.57452 23.0936 moveto
+(") cmsy10 9.96265 fshow
+15.79213 -40.86705 moveto
+(th) cmr10 9.96265 fshow
+newpath 25.79903 -40.66785 moveto
+28.78783 -40.66785 lineto stroke
+28.78783 -40.86705 moveto
+(in) cmr10 9.96265 fshow
+newpath 37.68784 -40.66785 moveto
+40.67664 -40.66785 lineto stroke
+40.67664 -40.86705 moveto
+(stbl:) cmr10 9.96265 fshow
+63.97823 -40.86705 moveto
+(Link) cmr10 9.96265 fshow
+83.48843 -40.86705 moveto
+(er) cmr10 9.96265 fshow
+95.13924 -40.86705 moveto
+(only) cmr10 9.96265 fshow
+28.58426 -54.62778 moveto
+(\017) cmsy10 9.96265 fshow
+36.88646 -54.62778 moveto
+(stbl) cmr10 9.96265 fshow
+56.31366 -54.62778 moveto
+(index) cmr10 9.96265 fshow
+28.58426 -66.45131 moveto
+(\017) cmsy10 9.96265 fshow
+36.88646 -66.45131 moveto
+(thread) cmr10 9.96265 fshow
+newpath 65.73946 -66.2521 moveto
+68.72826 -66.2521 lineto stroke
+68.72826 -66.45131 moveto
+(attributes) cmr10 9.96265 fshow
+114.75015 -66.45131 moveto
+(") cmsy10 9.96265 fshow
+41.37639 -80.21204 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 -80.21204 moveto
+(transitiv) cmr10 9.96265 fshow
+86.29138 -80.21204 moveto
+(e) cmr10 9.96265 fshow
+94.04008 -80.21204 moveto
+(\017) cmsy10 9.96265 fshow
+105.6632 -80.21204 moveto
+(monolithic) cmr10 9.96265 fshow
+41.37639 -90.7902 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 -90.7902 moveto
+(grammar) cmr10 9.96265 fshow
+92.35199 -90.7902 moveto
+(name) cmr10 9.96265 fshow
+41.37639 -103.58234 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 -103.58234 moveto
+(namespace) cmr10 9.96265 fshow
+99.5472 -103.58234 moveto
+(name) cmr10 9.96265 fshow
+41.37639 -118.58842 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 -118.58842 moveto
+(thread) cmr10 9.96265 fshow
+81.25468 -118.58842 moveto
+(name) cmr10 9.96265 fshow
+41.37639 -131.38055 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 -131.38055 moveto
+(\014le) cmr10 9.96265 fshow
+65.72949 -131.38055 moveto
+(name) cmr10 9.96265 fshow
+41.37639 -144.17268 moveto
+(\017) cmsy10 9.96265 fshow
+49.67859 -144.17268 moveto
+(en) cmr10 9.96265 fshow
+59.36449 -144.17268 moveto
+(umeration) cmr10 9.96265 fshow
+106.9916 -144.17268 moveto
+(v) cmr10 9.96265 fshow
+111.69618 -144.17268 moveto
+(alue) cmr10 9.96265 fshow
+246.05046 -40.86705 moveto
+(tth) cmr10 9.96265 fshow
+newpath 259.93176 -40.66785 moveto
+262.92056 -40.66785 lineto stroke
+262.92056 -40.86705 moveto
+(in) cmr10 9.96265 fshow
+newpath 271.82056 -40.66785 moveto
+274.80936 -40.66785 lineto stroke
+274.80936 -40.86705 moveto
+(stbl:) cmr10 9.96265 fshow
+298.11086 -40.86705 moveto
+(Link) cmr10 9.96265 fshow
+317.62115 -40.86705 moveto
+(er) cmr10 9.96265 fshow
+329.27187 -40.86705 moveto
+(only) cmr10 9.96265 fshow
+258.84259 -54.62778 moveto
+(\017) cmsy10 9.96265 fshow
+267.14479 -54.62778 moveto
+(stbl) cmr10 9.96265 fshow
+286.57199 -54.62778 moveto
+(index) cmr10 9.96265 fshow
+258.84259 -66.45131 moveto
+(\017) cmsy10 9.96265 fshow
+267.14479 -66.45131 moveto
+(T) cmr10 9.96265 fshow
+newpath 274.93779 -66.2521 moveto
+277.92659 -66.2521 lineto stroke
+277.92659 -66.45131 moveto
+(attributes) cmr10 9.96265 fshow
+323.9486 -66.45131 moveto
+(") cmsy10 9.96265 fshow
+271.63472 -79.24344 moveto
+(\017) cmsy10 9.96265 fshow
+279.93692 -79.24344 moveto
+(fully) cmr10 9.96265 fshow
+302.62971 -79.24344 moveto
+(quali\014ed) cmr10 9.96265 fshow
+342.75702 -79.24344 moveto
+(name) cmr10 9.96265 fshow
+271.63472 -93.00417 moveto
+(\017) cmsy10 9.96265 fshow
+279.93692 -93.00417 moveto
+(en) cmr10 9.96265 fshow
+289.62282 -93.00417 moveto
+(umeration) cmr10 9.96265 fshow
+337.24992 -93.00417 moveto
+(v) cmr10 9.96265 fshow
+341.95451 -93.00417 moveto
+(alue) cmr10 9.96265 fshow
+246.05046 -118.58842 moveto
+(kw) cmr10 9.96265 fshow
+newpath 259.10156 -118.38922 moveto
+262.09036 -118.38922 lineto stroke
+262.09036 -118.58842 moveto
+(in) cmr10 9.96265 fshow
+newpath 270.99026 -118.38922 moveto
+273.97916 -118.38922 lineto stroke
+273.97916 -118.58842 moveto
+(stbl:) cmr10 9.96265 fshow
+258.84259 -131.38055 moveto
+(\017) cmsy10 9.96265 fshow
+267.14479 -131.38055 moveto
+(stbl) cmr10 9.96265 fshow
+286.57199 -131.38055 moveto
+(index) cmr10 9.96265 fshow
+258.84259 -143.20409 moveto
+(\017) cmsy10 9.96265 fshow
+267.14479 -143.20409 moveto
+(CAbs) cmr10 9.96265 fshow
+newpath 291.87428 -143.00488 moveto
+294.86308 -143.00488 lineto stroke
+294.86308 -143.20409 moveto
+(lr1) cmr10 9.96265 fshow
+newpath 307.11159 -143.00488 moveto
+310.1005 -143.00488 lineto stroke
+310.1005 -143.20409 moveto
+(sym) cmr10 9.96265 fshow
+330.91139 -143.20409 moveto
+(") cmsy10 9.96265 fshow
+showpage
+%%EOF
diff --git a/web/yacco2/diagrams/yacco2_stbl.mp b/web/yacco2/diagrams/yacco2_stbl.mp
new file mode 100644
index 0000000000..23454a4345
--- /dev/null
+++ b/web/yacco2/diagrams/yacco2_stbl.mp
@@ -0,0 +1,136 @@
+% file: yacco2_stbl.mp
+input boxes
+beginfig(1);
+u=1cc;
+% char_pool
+pair sw,se,ne,nw;
+sw:=(0,0);
+se:=(1u,0);
+ne:=(1u,6u);
+nw:=(0,6u);
+draw sw--se--ne--nw--cycle;
+%outline the bytes
+pair zx,zy;
+for i=1 upto 5:
+ zx:=(0,i*u);zy:=(1u,i*u);
+ draw zx--zy;
+ if i=5:
+ pair ze,zw;
+ ze:=(1u,6u);zw:=(0,6u);
+ draw zx--ze;
+ draw .5[zx,zy]--.5[zy,ze];
+ draw .5[zx,zw]--.5[zw,ze];
+ fi
+ string d; d:=substring(i-1,i) of "Rbegn";
+ label.top(d,.5[zx-(0,1u),zy-(0,1u)]);
+ string a;a:=decimal (i-1);
+ defaultscale:=.6;
+ label.lft(substring(0,1)of a,zx-(0,1u));
+ defaultscale:=1;
+endfor
+ defaultscale:=.6;
+ label.lft("5",(0,5u));
+ defaultscale:=1;
+ label.bot(btex $char\_pool$ etex,(0,0u));
+
+% stbl
+sw:=(5u,0);
+se:=(6u,0);
+ne:=(6u,4u);
+nw:=(5u,4u);
+draw sw--se--ne--nw--cycle;
+%outline the bytes
+for i=1 upto 3:
+ zx:=(5u,i*u);zy:=(6u,i*u);
+ if i = 3:
+ draw zx{dir 45} .. .5[zx,zy] {dir -45} .. zy;
+ else:
+ draw zx--zy;
+ fi
+endfor
+% draw arrows
+drawarrow .5[(5u,0u),(6u,1u)]{left}.. .5[(1u,0),(1u,1u)];
+ label.lft("top",(-1u,5.5u));
+ drawarrow (-1u,5.5u)..(0,5.5u);
+label.bot(btex $stbl[].table\_entry$ etex,(6u,0u));
+label.top(btex $key\uparrow$ etex,.5[.5[(5u,0u),(6u,1u)],.5[(1u,0),(1u,1u)]]);
+
+% label subscripts
+defaultscale:=.6;
+for i=0 upto 3:
+ zy:=(6u,i*u);
+ string a;
+ if i=3:
+ a := "prime-1";
+ label.rt(a,zy);
+ else:
+ a:=decimal (i);
+ label.rt(substring(0,1)of a,zy);
+ fi
+endfor
+defaultscale:=1;
+
+
+%outline table_entry
+label.rt(btex table$\_$entry: etex,(9u,6u));
+label.rt(btex $\bullet\ $key$\uparrow$ \ \ $\bullet\ $key\ len\ \ $\bullet\ $stbl\ pos etex,(10u,5u));
+label.rt(btex $\bullet\ $vacant --- boolean valued etex,(10u,4u));
+label.rt(btex $\bullet\ $defined\ \ $\bullet\ $used --- both boolean valued etex,(10u,3u));
+label.rt(btex $\bullet\ $type\ $\in\ $\ rule, terminal, keyword, thread, unknown etex,(10u,2u));
+label.rt(btex $\bullet\ $symbol\ $\uparrow\ \in\ $rule$\_$in$\_$stbl, T$\_$in$\_$stbl, kw$\_$in$\_$stbl, th$\_$in$\_$stbl, tth$\_$in$\_$stbl etex,(10u,1u));
+endfig;
+
+beginfig(2);
+% outline rule-in-stbl
+label.rt(btex rule$\_$in$\_$stbl: etex,(1u,10u));
+label.rt(btex $\bullet\ $stbl index etex,(2u,9u));
+label.rt(btex $\bullet\ $rule$\_$def\ $\uparrow$ etex,(2u,8u));
+ label.rt(btex $\bullet\ $auto delete\ $\bullet\ $ auto abort etex,(3u,7u));
+ label.rt(btex $\bullet\ $contains an epsilon subrule etex,(3u,6u));
+ label.rt(btex $\bullet\ $rule name etex,(3u,5u));
+ label.rt(btex $\bullet\ $parallel$\_$monitor$\_$phrase$\uparrow$ etex,(3u,4u));
+ label.rt(btex $\bullet\ $subrules$\_$phrase$\uparrow$ etex,(3u,3u));
+ label.rt(btex $\bullet\ $rule$\_$lhs$\_$phrase$\uparrow$ etex,(3u,2u));
+ label.rt(btex $\bullet\ $lhs directives map\ --- $<$string, CAbs$\_$lr1$\_$sym$\uparrow > $ etex,(3u,1u));
+
+label.rt(btex $\bullet\ $list of refered$\_$rule $\uparrow$ etex,(2u,0u));
+ label.rt(btex $\bullet\ $referenced rule \ --- rule$\_$in$\_$stbl$\uparrow$ etex,(3u,-1u));
+
+
+% outline T-in-stbl
+label.rt(btex T$\_$in$\_$stbl: etex,(19u,10u));
+label.rt(btex $\bullet\ $stbl index etex,(20u,9u));
+label.rt(btex $\bullet\ $terminal$\_$def\ $\uparrow$ etex,(20u,8u));
+ label.rt(btex $\bullet\ $auto delete\ $\bullet\ $ auto abort etex,(21u,7u));
+ label.rt(btex $\bullet\ $terminal name etex,(21u,6u));
+ label.rt(btex $\bullet\ $class name etex,(21u,5u));
+ label.rt(btex $\bullet\ $directives map\ --- $<$string, CAbs$\_$lr1$\_$sym$\uparrow > $ etex,(21u,4u));
+
+label.rt(btex $\bullet\ $list of refered$\_$T $\uparrow$ etex,(20u,3u));
+ label.rt(btex $\bullet\ $referenced terminal \ --- T$\_$in$\_$stbl$\uparrow$ etex,(21u,2u));
+
+% outline th-in-stbl
+label.rt(btex th$\_$in$\_$stbl: Linker only etex,(1u,-3u));
+label.rt(btex $\bullet\ $stbl index etex,(2u,-4u));
+label.rt(btex $\bullet\ $thread$\_$attributes\ $\uparrow$ etex,(2u,-5u));
+ label.rt(btex $\bullet\ $transitive\ $\bullet\ $ monolithic etex,(3u,-6u));
+ label.rt(btex $\bullet\ $grammar name etex,(3u,-7u));
+ label.rt(btex $\bullet\ $namespace name etex,(3u,-8u));
+ label.rt(btex $\bullet\ $thread name etex,(3u,-9u));
+ label.rt(btex $\bullet\ $file name etex,(3u,-10u));
+ label.rt(btex $\bullet\ $enumeration value etex,(3u,-11u));
+
+
+% outline tth-in-stbl - linker's terminals
+label.rt(btex tth$\_$in$\_$stbl: Linker only etex,(19u,-3u));
+label.rt(btex $\bullet\ $stbl index etex,(20u,-4u));
+label.rt(btex $\bullet\ $T$\_$attributes\ $\uparrow$ etex,(20u,-5u));
+ label.rt(btex $\bullet\ $fully qualified name etex,(21u,-6u));
+ label.rt(btex $\bullet\ $enumeration value etex,(21u,-7u));
+
+% outline kw-in-stbl
+label.rt(btex kw$\_$in$\_$stbl: etex,(19u,-9u));
+label.rt(btex $\bullet\ $stbl index etex,(20u,-10u));
+label.rt(btex $\bullet\ $CAbs$\_$lr1$\_$sym\ $\uparrow$ etex,(20u,-11u));
+endfig;
+end;