File Coverage

blib/lib/Anarres/Mud/Driver/Compiler/Node.pm
Criterion Covered Total %
statement 2516 2662 94.5
branch 1 2 50.0
condition 1 3 33.3
subroutine 839 981 85.5
pod 0 10 0.0
total 3357 3658 91.7


line stmt bran cond sub pod time code
1             package Anarres::Mud::Driver::Compiler::Node;
2              
3             # A lot of things throw code into this package's namespace.
4              
5 3     3   899 use strict;
  3         40  
  3         105  
6 3     3   14 use vars qw(@ISA @EXPORT_OK %EXPORT_TAGS @NODETYPES);
  3         3  
  3         180  
7 3     3   12 use Exporter;
  3         5  
  3         185  
8 3     3   18 use Carp qw(confess);
  3         6  
  3         685  
9              
10             BEGIN { # Does this still have to be a BEGIN?
11 3     3   44 @ISA = qw(Exporter);
12 3         12 @EXPORT_OK = qw(@NODETYPES);
13 3         9 %EXPORT_TAGS = (
14             all => \@EXPORT_OK,
15             );
16              
17             # Vivify the relevant packages
18              
19             # It might be useful to have a "Coerce" node which does a runtime
20             # type coercion/promotion, rather than an Assert node which just
21             # does a runtime type check.
22              
23             # We can't read these out of at BEGIN-time.
24              
25 3         83 @NODETYPES = qw(
26             StmtNull
27              
28             ExpComma
29              
30             IntAssert StrAssert ArrAssert MapAssert ClsAssert ObjAssert
31             ToString
32              
33             Nil String Integer Array Mapping Closure
34             Variable Parameter Funcall CallOther
35              
36             VarStatic VarGlobal VarLocal
37              
38             Index Range Member New
39              
40             Postinc Postdec Preinc Predec Unot Tilde Plus Minus
41              
42              
43             Eq Ne Lt Gt Le Ge
44             Lsh Rsh Add Sub Mul Div Mod
45             Or And Xor
46             LogOr LogAnd
47              
48             AddEq SubEq DivEq MulEq ModEq
49             AndEq OrEq XorEq
50             LshEq RshEq
51             LogOrEq LogAndEq
52              
53              
54             IntEq IntNe IntLt IntGt IntLe IntGe
55             IntAdd IntSub IntMul IntDiv IntMod IntLsh IntRsh
56             IntOr IntAnd IntXor
57              
58             IntAndEq IntOrEq IntXorEq
59             IntAddEq IntSubEq IntMulEq IntDivEq IntModEq
60             IntLshEq IntRshEq
61              
62              
63             StrAdd StrMul
64             StrIndex StrRange
65             StrEq StrNe StrLt StrGt StrLe StrGe
66              
67             StrAddEq StrMulEq
68              
69             ArrEq ArrNe
70             ArrAdd ArrSub
71             ArrOr ArrAnd
72             ArrIndex ArrRange
73              
74             MapEq MapNe
75             MapAdd
76             MapIndex
77              
78             ObjEq ObjNe
79              
80             Catch Sscanf
81              
82             ExpCond Assign Block StmtExp
83             StmtDo StmtWhile StmtFor
84             StmtForeach StmtForeachArr StmtForeachMap
85             StmtRlimits StmtTry StmtCatch
86             StmtIf StmtSwitch StmtCase StmtDefault
87             StmtBreak StmtContinue StmtReturn
88             );
89              
90 3         12 my $PACKAGE = __PACKAGE__;
91 3         6 foreach (@NODETYPES) {
92 414         809 my $visit = "v_" . lc $_;
93 414     3   30036 eval qq{
  3     3   15  
  3     3   4  
  3     3   94  
  3     3   13  
  3     3   3  
  3     3   106  
  3     3   12  
  3     3   5  
  3     3   454  
  3     3   15  
  3     3   4  
  3     3   248  
  3     3   14  
  3     3   4  
  3     3   314  
  3     3   539  
  3     3   4  
  3     3   1037  
  3     3   15  
  3     3   5  
  3     3   90  
  3     3   12  
  3     3   5  
  3     3   101  
  3     3   17  
  3     3   4  
  3     3   318  
  3     3   12  
  3     3   5  
  3     3   118  
  3     3   13  
  3     3   4  
  3     3   236  
  3     3   14  
  3     3   4  
  3     3   848  
  3     3   13  
  3     3   3  
  3     3   81  
  3     3   17  
  3     3   3  
  3     3   109  
  3     3   10  
  3     3   7  
  3     3   278  
  3     3   12  
  3     3   10  
  3     3   111  
  3     3   17  
  3     3   9  
  3     3   229  
  3     3   13  
  3     3   5  
  3     3   859  
  3     3   12  
  3     3   4  
  3     3   77  
  3     3   12  
  3     3   4  
  3     3   103  
  3     3   11  
  3     3   5  
  3     3   288  
  3     3   12  
  3     3   6  
  3     3   142  
  3     3   15  
  3     3   4  
  3     3   296  
  3     3   15  
  3     3   4  
  3     3   885  
  3     3   16  
  3     3   4  
  3     3   86  
  3     3   13  
  3     3   4  
  3     3   146  
  3     3   14  
  3     3   4  
  3     3   373  
  3     3   44  
  3     3   6  
  3     3   148  
  3     3   15  
  3     3   6  
  3     3   260  
  3     3   13  
  3     3   5  
  3     3   938  
  3     3   14  
  3     3   4  
  3     3   86  
  3     3   12  
  3     3   4  
  3     3   127  
  3     3   13  
  3     3   5  
  3     3   319  
  3     3   15  
  3     3   5  
  3     3   128  
  3     3   69  
  3     3   5  
  3     3   263  
  3     3   14  
  3     3   3  
  3     3   902  
  3     3   18  
  3     3   5  
  3     3   89  
  3     3   18  
  3     3   6  
  3     3   119  
  3     3   13  
  3     3   5  
  3     3   291  
  3     3   44  
  3     3   5  
  3     3   121  
  3     3   13  
  3     3   9  
  3     3   240  
  3     3   14  
  3     3   5  
  3     3   945  
  3     3   16  
  3     3   5  
  3     3   107  
  3     3   12  
  3     3   6  
  3     3   108  
  3     3   12  
  3     3   4  
  3     3   306  
  3     3   12  
  3     3   4  
  3     3   112  
  3     3   14  
  3     3   10  
  3     3   283  
  3     3   15  
  3     3   5  
  3     3   856  
  3     3   14  
  3     3   4  
  3     3   78  
  3     3   12  
  3     3   5  
  3     3   101  
  3     3   13  
  3     3   5  
  3     3   285  
  3     3   11  
  3     3   4  
  3     3   114  
  3     3   12  
  3     3   4  
  3     3   231  
  3     3   14  
  3     3   3  
  3     3   947  
  3     3   18  
  3     3   7  
  3     3   94  
  3     3   14  
  3     3   4  
  3     3   133  
  3     3   12  
  3     3   4  
  3     3   321  
  3     3   16  
  3     3   8  
  3     3   125  
  3     3   16  
  3     3   5  
  3     3   279  
  3     3   21  
  3     3   6  
  3     3   933  
  3     3   14  
  3     3   8  
  3     3   88  
  3     3   13  
  3     3   11  
  3     3   117  
  3     3   14  
  3     3   5  
  3     3   315  
  3     3   14  
  3     3   3  
  3     3   154  
  3     3   14  
  3     3   11  
  3     3   316  
  3     3   15  
  3     3   5  
  3     3   952  
  3     3   13  
  3     3   6  
  3     3   79  
  3     3   14  
  3     3   5  
  3     3   126  
  3     3   14  
  3     3   4  
  3     3   284  
  3     3   14  
  3     3   11  
  3     3   152  
  3     3   23  
  3     3   4  
  3     3   262  
  3     3   15  
  3     3   4  
  3     3   872  
  3     3   14  
  3     3   5  
  3     3   83  
  3     3   12  
  3     3   5  
  3     3   95  
  3     3   12  
  3     3   4  
  3     3   376  
  3     3   14  
  3     3   5  
  3     3   116  
  3     3   12  
  3     3   5  
  3     3   227  
  3     3   16  
  3     3   4  
  3     3   938  
  3     3   15  
  3     3   6  
  3     3   92  
  3     3   12  
  3     3   5  
  3     3   107  
  3     3   20  
  3     3   3  
  3     3   306  
  3     3   14  
  3     3   5  
  3     3   126  
  3     3   31  
  3     3   4  
  3     3   289  
  3     3   20  
  3     3   4  
  3     3   824  
  3     3   14  
  3     3   4  
  3     3   81  
  3     3   12  
  3     3   4  
  3     3   104  
  3     3   12  
  3     3   3  
  3     3   284  
  3     3   14  
  3     3   3  
  3     3   128  
  3     3   15  
  3     3   4  
  3     3   264  
  3     3   14  
  3     3   5  
  3     3   853  
  3     3   20  
  3     3   6  
  3     3   79  
  3     3   12  
  3     3   3  
  3     3   108  
  3     3   11  
  3     3   5  
  3     3   300  
  3     3   12  
  3     3   14  
  3     3   124  
  3     3   13  
  3     3   6  
  3     3   273  
  3     3   14  
  3     3   5  
  3     3   848  
  3     3   13  
  3     3   5  
  3     3   79  
  3     3   12  
  3     3   6  
  3     3   110  
  3     3   10  
  3     3   5  
  3     3   281  
  3     3   13  
  3     3   5  
  3     3   178  
  3     3   14  
  3     3   4  
  3     3   242  
  3     3   13  
  3     3   7  
  3     3   806  
  3     3   14  
  3     3   6  
  3     3   84  
  3     3   19  
  3     3   5  
  3     3   105  
  3     3   19  
  3     3   10  
  3     3   307  
  3     3   13  
  3     3   6  
  3     3   123  
  3     3   13  
  3     3   5  
  3     3   289  
  3     3   15  
  3     3   12  
  3     3   857  
  3     3   14  
  3     3   6  
  3     3   92  
  3     3   15  
  3     3   6  
  3     3   117  
  3     3   17  
  3     3   4  
  3     3   328  
  3     3   13  
  3     3   3  
  3     3   125  
  3     3   13  
  3     3   5  
  3     3   235  
  3     3   14  
  3     3   6  
  3     3   950  
  3     3   22  
  3     3   5  
  3     3   159  
  3     3   12  
  3     3   6  
  3     3   108  
  3     3   11  
  3     3   5  
  3     3   319  
  3     3   14  
  3     3   5  
  3     3   130  
  3     3   14  
  3     3   5  
  3     3   264  
  3     3   15  
  3     3   4  
  3     3   859  
  3     3   14  
  3     3   6  
  3     3   87  
  3     3   16  
  3     3   5  
  3     3   129  
  3     3   13  
  3     3   5  
  3     3   308  
  3     3   15  
  3     3   10  
  3     3   151  
  3     3   13  
  3     3   5  
  3     3   247  
  3     3   14  
  3     3   9  
  3     3   919  
  3     3   15  
  3     3   4  
  3     3   83  
  3     3   12  
  3     3   10  
  3     3   700  
  3     3   21  
  3     3   18  
  3     3   347  
  3     3   16  
  3     3   5  
  3     3   160  
  3     3   14  
  3     3   5  
  3     3   301  
  3     3   16  
  3     3   5  
  3     3   999  
  3     3   16  
  3     3   4  
  3     3   105  
  3     3   14  
  3     3   5  
  3     3   110  
  3     3   13  
  3     3   4  
  3     3   338  
  3     3   15  
  3     3   16  
  3     3   149  
  3     3   18  
  3     3   10  
  3     3   282  
  3     3   15  
  3     3   5  
  3     3   891  
  3     3   15  
  3     3   15  
  3     3   99  
  3     3   13  
  3     3   6  
  3     3   122  
  3     3   14  
  3     3   4  
  3     3   371  
  3     3   16  
  3     3   4  
  3     3   123  
  3     3   25  
  3     3   5  
  3     3   246  
  3     3   13  
  3     3   5  
  3     3   870  
  3     3   15  
  3     3   5  
  3     3   76  
  3     3   11  
  3     3   5  
  3     3   101  
  3     3   12  
  3     3   11  
  3     3   311  
  3     3   13  
  3     3   10  
  3     3   138  
  3     3   16  
  3     3   3  
  3     3   248  
  3     3   12  
  3     3   5  
  3     3   968  
  3     3   15  
  3     3   5  
  3     3   177  
  3     3   14  
  3     3   6  
  3     3   122  
  3     3   11  
  3     3   5  
  3     3   348  
  3     3   14  
  3     3   10  
  3     3   121  
  3     3   18  
  3     3   5  
  3     3   406  
  3     3   15  
  3     3   4  
  3     3   856  
  3     3   16  
  3     3   6  
  3     3   98  
  3     3   14  
  3     3   12  
  3     3   117  
  3     3   13  
  3     3   5  
  3     3   303  
  3     3   13  
  3     3   5  
  3     3   121  
  3     3   14  
  3     3   12  
  3     3   257  
  3     3   16  
  3     3   4  
  3     3   872  
  3     3   14  
  3     3   6  
  3     3   88  
  3     3   13  
  3     3   5  
  3     3   102  
  3     3   12  
  3     3   5  
  3     3   284  
  3     3   11  
  3     3   9  
  3     3   120  
  3     3   13  
  3     3   5  
  3     3   248  
  3     3   14  
  3     3   7  
  3     3   843  
  3     3   15  
  3     3   4  
  3     3   94  
  3     3   13  
  3     3   4  
  3     3   112  
  3     3   13  
  3     3   4  
  3     3   305  
  3     3   16  
  3     3   3  
  3     3   122  
  3     3   14  
  3     3   3  
  3     3   241  
  3     3   12  
  3     3   12  
  3     3   894  
  3     3   13  
  3     3   5  
  3     3   83  
  3     3   15  
  3     3   3  
  3     3   111  
  3     3   14  
  3     3   4  
  3     3   334  
  3     3   15  
  3     3   4  
  3     3   127  
  3     3   12  
  3     3   5  
  3     3   258  
  3     3   15  
  3     3   4  
  3     3   879  
  3     3   14  
  3     3   4  
  3     3   110  
  3     3   13  
  3     3   10  
  3     3   115  
  3     3   19  
  3     3   4  
  3     3   314  
  3     3   13  
  3     3   6  
  3     3   131  
  3     3   14  
  3     3   5  
  3     3   291  
  3     3   14  
  3     3   6  
  3     3   988  
  3     3   18  
  3     3   4  
  3     3   106  
  3     3   15  
  3     3   6  
  3     3   118  
  3     3   13  
  3     3   5  
  3     3   314  
  3     3   15  
  3     3   4  
  3     3   134  
  3     3   15  
  3     3   4  
  3     3   251  
  3     3   15  
  3     3   5  
  3     3   917  
  3     3   15  
  3     3   4  
  3     3   83  
  3     3   12  
  3     3   5  
  3     3   102  
  3     3   11  
  3     3   6  
  3     3   338  
  3     3   13  
  3     3   5  
  3     3   151  
  3     3   14  
  3     3   9  
  3     3   236  
  3     3   14  
  3     3   4  
  3     3   827  
  3     3   16  
  3     3   5  
  3     3   82  
  3     3   13  
  3     3   5  
  3     3   117  
  3     3   12  
  3     3   6  
  3     3   362  
  3     3   16  
  3     3   3  
  3     3   144  
  3     3   17  
  3     3   5  
  3     3   251  
  3     3   15  
  3     3   18  
  3     3   1025  
  3     3   14  
  3     3   6  
  3     3   94  
  3     3   14  
  3     3   5  
  3     3   140  
  3     3   15  
  3     3   5  
  3     3   347  
  3     3   15  
  3     3   6  
  3     3   131  
  3     3   17  
  3     3   6  
  3     3   284  
  3     3   16  
  3     3   6  
  3     3   965  
  3     3   20  
  3     3   6  
  3     3   101  
  3     3   16  
  3     3   6  
  3     3   128  
  3     3   13  
  3     3   5  
  3     3   342  
  3     3   14  
  3     3   5  
  3     3   129  
  3     3   14  
  3     3   6  
  3     3   280  
  3     3   17  
  3     3   4  
  3     3   1006  
  3     3   15  
  3     3   7  
  3     3   85  
  3     3   13  
  3     3   5  
  3     3   129  
  3     3   13  
  3     3   10  
  3     3   315  
  3     3   14  
  3     3   4  
  3     3   109  
  3     3   13  
  3     3   5  
  3     3   238  
  3     3   16  
  3     3   6  
  3     3   875  
  3     3   15  
  3     3   5  
  3     3   96  
  3     3   12  
  3     3   5  
  3     3   114  
  3     3   13  
  3     3   17  
  3     3   300  
  3     3   16  
  3     3   6  
  3     3   129  
  3     3   13  
  3     3   6  
  3     3   242  
  3     3   13  
  3     3   11  
  3     3   835  
  3     3   15  
  3     3   5  
  3     3   79  
  3     3   12  
  3     3   3  
  3     3   107  
  3     3   12  
  3     3   4  
  3     3   274  
  3     3   13  
  3     3   5  
  3     3   119  
  3     3   14  
  3     3   4  
  3     3   334  
  3     3   14  
  3     3   4  
  3     3   868  
  3     3   14  
  3     3   11  
  3     3   94  
  3     3   12  
  3     3   5  
  3     3   98  
  3     3   13  
  3     3   183  
  3     3   308  
  3     3   16  
  3     3   4  
  3     3   125  
  3     3   17  
  3     3   12  
  3     3   254  
  3     3   12  
  3     3   6  
  3     3   824  
  3     3   14  
  3     3   5  
  3     3   80  
  3     3   12  
  3     3   5  
  3     3   118  
  3     3   13  
  3     3   5  
  3     3   325  
  3     3   13  
  3     3   6  
  3     3   118  
  3     3   39  
  3     3   5  
  3     3   320  
  3     3   14  
  3     3   5  
  3     3   825  
  3     3   15  
  3     3   5  
  3     3   112  
  3     3   13  
  3     3   4  
  3     3   112  
  3     3   13  
  3     3   9  
  3     3   315  
  3     3   12  
  3     3   6  
  3     3   125  
  3     3   15  
  3     3   5  
  3     3   301  
  3     3   15  
  3     3   6  
  3     3   925  
  3     3   16  
  3     3   5  
  3     3   89  
  3     3   14  
  3     3   5  
  3     3   108  
  3     3   13  
  3     3   5  
  3     3   305  
  3     3   13  
  3     3   6  
  3     3   122  
  3     3   20  
  3     3   5  
  3     3   262  
  3     3   14  
  3     3   5  
  3     3   836  
  3     3   14  
  3     3   10  
  3     3   97  
  3     3   12  
  3     3   5  
  3     3   97  
  3     3   10  
  3     3   5  
  3     3   281  
  3     3   14  
  3     3   5  
  3     3   137  
  3     3   13  
  3     3   5  
  3     3   253  
  3     3   13  
  3     3   6  
  3     3   856  
  3     3   14  
  3     3   8  
  3     3   84  
  3     3   13  
  3     3   5  
  3     3   102  
  3     3   11  
  3     3   4  
  3     3   316  
  3     3   15  
  3     3   4  
  3     3   135  
  3     3   16  
  3     3   6  
  3     3   245  
  3     3   15  
  3     3   5  
  3     3   839  
  3     3   16  
  3     3   4  
  3     3   104  
  3     3   12  
  3     3   7  
  3     3   108  
  3     3   12  
  3     3   4  
  3     3   287  
  3     3   13  
  3     3   4  
  3     3   114  
  3     3   14  
  3     3   6  
  3     3   271  
  3     3   14  
  3     3   5  
  3     0   877  
  3     0   16  
  3     0   156  
  3     0   85  
  3     0   15  
  3     0   5  
  3     0   99  
  3     0   14  
  3     0   3  
  3     0   285  
  3     0   13  
  3     0   4  
  3     0   117  
  3     0   16  
  3     0   5  
  3     0   258  
  3     0   16  
  3     0   7  
  3     0   1107  
  3     0   14  
  3     0   6  
  3     0   87  
  3     0   13  
  3     0   4  
  3     0   103  
  3     0   12  
  3     0   5  
  3     0   303  
  3     0   13  
  3     0   6  
  3     0   137  
  3     0   14  
  3     0   11  
  3     0   300  
  3     0   16  
  3     0   3  
  3     0   898  
  3     0   15  
  3     0   5  
  3     0   92  
  3     0   13  
  3     0   4  
  3     0   107  
  3     0   12  
  3     0   4  
  3     0   313  
  3     0   14  
  3     0   4  
  3     0   134  
  3     0   15  
  3     0   4  
  3     0   246  
  3     0   14  
  3     0   5  
  3     0   811  
  3     0   16  
  3     0   8  
  3     0   98  
  3     0   15  
  3     0   6  
  3     0   115  
  3     0   15  
  3     0   5  
  3     0   343  
  3     0   13  
  3     0   7  
  3     0   123  
  3     0   14  
  3     0   3  
  3     0   277  
  3     0   16  
  3     0   6  
  3     0   948  
  3     0   16  
  3     0   5  
  3     0   87  
  3     0   13  
  3     0   4  
  3     0   117  
  3     0   12  
  3     0   4  
  3     0   335  
  3     0   14  
  3     0   4  
  3     0   116  
  3     0   15  
  3     0   4  
  3     0   253  
  3     0   17  
  3     0   5  
  3     0   919  
  3     0   14  
  3     0   6  
  3     0   91  
  3     0   14  
  3     0   5  
  3     0   112  
  3     0   15  
  3     0   5  
  3     0   335  
  3     0   16  
  3     0   4  
  3     0   145  
  3     0   13  
  3     0   5  
  3     0   257  
  3     0   14  
  3     0   5  
  3     0   887  
  3     0   13  
  3     0   5  
  3     0   82  
  3     0   11  
  3     0   5  
  3     0   100  
  3     0   11  
  3     0   9  
  3     0   313  
  3     0   14  
  3     0   4  
  3     0   122  
  3     0   14  
  3     0   4  
  3     0   236  
  3     0   15  
  3     0   4  
  3     0   884  
  3     0   15  
  3     0   3  
  3     0   85  
  3     0   12  
  3     0   4  
  3     0   102  
  3     0   14  
  3     0   4  
  3     0   317  
  3     0   13  
  3     0   5  
  3         130  
  3         15  
  3         4  
  3         318  
  3         14  
  3         4  
  3         875  
  3         16  
  3         5  
  3         87  
  3         12  
  3         4  
  3         107  
  3         18  
  3         4  
  3         294  
  3         15  
  3         6  
  3         115  
  3         14  
  3         5  
  3         240  
  3         12  
  3         6  
  3         843  
  3         13  
  3         3  
  3         88  
  3         13  
  3         3  
  3         114  
  3         12  
  3         5  
  3         341  
  3         13  
  3         5  
  3         119  
  3         14  
  3         4  
  3         280  
  3         14  
  3         5  
  3         841  
  3         14  
  3         4  
  3         86  
  3         12  
  3         5  
  3         106  
  3         12  
  3         3  
  3         275  
  3         20  
  3         6  
  3         115  
  3         14  
  3         5  
  3         239  
  3         15  
  3         4  
  3         876  
  3         15  
  3         4  
  3         81  
  3         11  
  3         5  
  3         114  
  3         14  
  3         4  
  3         290  
  3         14  
  3         5  
  3         116  
  3         12  
  3         6  
  3         284  
  3         15  
  3         4  
  3         865  
  3         18  
  3         4  
  3         90  
  3         12  
  3         4  
  3         109  
  3         13  
  3         4  
  3         296  
  3         13  
  3         4  
  3         118  
  3         14  
  3         5  
  3         261  
  3         40  
  3         4  
  3         927  
  3         15  
  3         5  
  3         87  
  3         12  
  3         5  
  3         111  
  3         14  
  3         4  
  3         308  
  3         13  
  3         6  
  3         118  
  3         13  
  3         4  
  3         277  
  3         15  
  3         6  
  3         913  
  3         16  
  3         5  
  3         81  
  3         14  
  3         5  
  3         117  
  3         14  
  3         4  
  3         286  
  3         12  
  3         5  
  3         115  
  3         14  
  3         5  
  3         233  
  3         13  
  3         6  
  3         933  
  3         16  
  3         6  
  3         82  
  3         12  
  3         6  
  3         106  
  3         14  
  3         12  
  3         303  
  3         14  
  3         5  
  3         128  
  3         13  
  3         6  
  3         253  
  3         16  
  3         4  
  3         899  
  3         19  
  3         7  
  3         99  
  3         16  
  3         3  
  3         112  
  3         12  
  3         4  
  3         319  
  3         13  
  3         6  
  3         129  
  3         15  
  3         5  
  3         290  
  3         17  
  3         5  
  3         1020  
  3         19  
  3         6  
  3         106  
  3         16  
  3         12  
  3         123  
  3         14  
  3         7  
  3         324  
  3         15  
  3         5  
  3         149  
  3         15  
  3         17  
  3         294  
  3         17  
  3         5  
  3         962  
  3         18  
  3         6  
  3         98  
  3         14  
  3         6  
  3         127  
  3         14  
  3         6  
  3         440  
  3         15  
  3         6  
  3         132  
  3         15  
  3         5  
  3         281  
  3         16  
  3         6  
  3         953  
  3         16  
  3         6  
  3         93  
  3         13  
  3         8  
  3         117  
  3         14  
  3         4  
  3         319  
  3         15  
  3         10  
  3         118  
  3         14  
  3         5  
  3         267  
  3         14  
  3         5  
  3         964  
  3         14  
  3         5  
  3         79  
  3         15  
  3         5  
  3         121  
  3         14  
  3         5  
  3         419  
  3         16  
  3         7  
  3         158  
  3         22  
  3         5  
  3         263  
  3         15  
  3         5  
  3         832  
  3         15  
  3         7  
  3         94  
  3         13  
  3         6  
  3         105  
  3         14  
  3         5  
  3         303  
  3         14  
  3         5  
  3         128  
  3         20  
  3         3  
  3         246  
  3         14  
  3         5  
  3         892  
  3         15  
  3         5  
  3         81  
  3         13  
  3         4  
  3         96  
  3         10  
  3         5  
  3         281  
  3         14  
  3         5  
  3         110  
  3         13  
  3         6  
  3         335  
  3         17  
  3         5  
  3         928  
  3         16  
  3         5  
  3         79  
  3         13  
  3         6  
  3         102  
  3         12  
  3         5  
  3         300  
  3         14  
  3         6  
  3         121  
  3         14  
  3         5  
  3         261  
  3         17  
  3         6  
  3         877  
  3         16  
  3         5  
  3         88  
  3         13  
  3         5  
  3         123  
  3         13  
  3         5  
  3         332  
  3         15  
  3         7  
  3         139  
  3         20  
  3         5  
  3         275  
  3         14  
  3         13  
  3         969  
  3         16  
  3         6  
  3         100  
  3         19  
  3         5  
  3         126  
  3         15  
  3         9  
  3         296  
  3         15  
  3         6  
  3         130  
  3         15  
  3         4  
  3         260  
  3         15  
  3         5  
  3         832  
  3         14  
  3         6  
  3         85  
  3         13  
  3         7  
  3         90  
  3         14  
  3         3  
  3         301  
  3         19  
  3         5  
  3         122  
  3         15  
  3         5  
  3         260  
  3         15  
  3         7  
  3         863  
  3         16  
  3         5  
  3         102  
  3         18  
  3         4  
  3         278  
  3         11  
  3         7  
  3         300  
  3         16  
  3         5  
  3         133  
  3         19  
  3         4  
  3         266  
  3         20  
  3         6  
  3         930  
  3         16  
  3         4  
  3         83  
  3         13  
  3         4  
  3         111  
  3         19  
  3         4  
  3         283  
  3         12  
  3         6  
  3         120  
  3         16  
  3         4  
  3         260  
  3         16  
  3         6  
  3         866  
  3         16  
  3         7  
  3         92  
  3         15  
  3         5  
  3         169  
  3         17  
  3         4  
  3         288  
  3         15  
  3         4  
  3         128  
  3         20  
  3         4  
  3         236  
  3         15  
  3         4  
  3         931  
  3         14  
  3         6  
  3         86  
  3         13  
  3         5  
  3         122  
  3         12  
  3         10  
  3         345  
  3         20  
  3         5  
  3         139  
  3         16  
  3         4  
  3         267  
  3         15  
  3         8  
  3         835  
  3         17  
  3         5  
  3         94  
  3         12  
  3         5  
  3         101  
  3         11  
  3         6  
  3         280  
  3         12  
  3         6  
  3         115  
  3         20  
  3         5  
  3         231  
  3         14  
  3         4  
  3         849  
  3         14  
  3         4  
  3         82  
  3         14  
  3         5  
  3         112  
  3         21  
  3         4  
  3         279  
  3         12  
  3         5  
  3         117  
  3         11  
  3         7  
  3         257  
  3         20  
  3         4  
  3         828  
  3         15  
  3         5  
  3         81  
  3         12  
  3         5  
  3         118  
  3         13  
  3         5  
  3         280  
  3         16  
  3         5  
  3         125  
  3         13  
  3         6  
  3         243  
  3         14  
  3         6  
  3         864  
  3         15  
  3         5  
  3         84  
  3         14  
  3         6  
  3         100  
  3         13  
  3         5  
  3         277  
  3         13  
  3         10  
  3         168  
  3         14  
  3         7  
  3         232  
  3         14  
  3         6  
  3         850  
  3         14  
  3         6  
  3         97  
  3         14  
  3         5  
  3         133  
  3         13  
  3         4  
  3         358  
  3         14  
  3         4  
  3         113  
  3         15  
  3         5  
  3         261  
  3         15  
  3         5  
  3         829  
  3         15  
  3         4  
  3         106  
  3         14  
  3         6  
  3         123  
  3         18  
  3         8  
  3         291  
  3         15  
  3         5  
  3         137  
  3         14  
  3         6  
  3         276  
  3         15  
  3         4  
  3         872  
  3         16  
  3         5  
  3         103  
  3         14  
  3         5  
  3         121  
  3         14  
  3         5  
  3         332  
  3         15  
  3         7  
  3         121  
  3         19  
  3         7  
  3         256  
  3         14  
  3         7  
  3         887  
  3         20  
  3         6  
  3         83  
  3         12  
  3         7  
  3         103  
  3         12  
  3         6  
  3         363  
  3         14  
  3         5  
  3         120  
  3         15  
  3         5  
  3         241  
  3         14  
  3         5  
  3         808  
  3         15  
  3         4  
  3         78  
  3         13  
  3         5  
  3         100  
  3         13  
  3         6  
  3         320  
  3         14  
  3         5  
  3         127  
  3         14  
  3         6  
  3         231  
  3         15  
  3         6  
  3         891  
  3         14  
  3         6  
  3         90  
  3         14  
  3         4  
  3         104  
  3         11  
  3         6  
  3         309  
  3         15  
  3         7  
  3         111  
  3         13  
  3         9  
  3         234  
  3         14  
  3         4  
  3         838  
  3         16  
  3         5  
  3         78  
  3         18  
  3         6  
  3         112  
  3         15  
  3         4  
  3         308  
  3         14  
  3         6  
  3         128  
  3         22  
  3         5  
  3         247  
  3         15  
  3         11  
  3         934  
  3         15  
  3         6  
  3         92  
  3         15  
  3         4  
  3         116  
  3         12  
  3         6  
  3         326  
  3         14  
  3         5  
  3         130  
  3         16  
  3         4  
  3         269  
  3         16  
  3         5  
  3         854  
  3         14  
  3         6  
  3         95  
  3         15  
  3         8  
  3         116  
  3         13  
  3         6  
  3         317  
  3         15  
  3         5  
  3         117  
  3         15  
  3         5  
  3         311  
  3         16  
  3         5  
  3         934  
  3         15  
  3         10  
  3         84  
  3         12  
  3         6  
  3         116  
  3         13  
  3         6  
  3         286  
  3         14  
  3         5  
  3         126  
  3         18  
  3         6  
  3         238  
  3         14  
  3         5  
  3         893  
  3         14  
  3         6  
  3         85  
  3         24  
  3         4  
  3         99  
  3         12  
  3         6  
  3         302  
  3         16  
  3         7  
  3         132  
  3         20  
  3         11  
  3         275  
  3         17  
  3         5  
  3         1753  
  3         16  
  3         3  
  3         77  
  3         14  
  3         6  
  3         109  
  3         14  
  3         4  
  3         288  
  3         13  
  3         7  
  3         121  
  3         15  
  3         5  
  3         239  
  3         17  
  3         6  
  3         849  
  3         17  
  3         4  
  3         77  
  3         13  
  3         6  
  3         426  
  3         15  
  3         5  
  3         311  
  3         14  
  3         9  
  3         107  
  3         18  
  3         3  
  3         236  
  3         13  
  3         5  
  3         834  
  3         17  
  3         5  
  3         82  
  3         12  
  3         5  
  3         110  
  3         12  
  3         5  
  3         297  
  3         15  
  3         5  
  3         114  
  3         13  
  3         4  
  3         258  
  3         19  
  3         6  
  3         932  
  3         14  
  3         6  
  3         78  
  3         14  
  3         11  
  3         108  
  3         13  
  3         5  
  3         315  
  3         15  
  3         5  
  3         127  
  3         16  
  3         6  
  3         299  
  3         16  
  3         4  
  3         964  
  3         16  
  3         5  
  3         101  
  3         13  
  3         4  
  3         102  
  3         14  
  3         5  
  3         288  
  3         14  
  3         9  
  3         126  
  3         20  
  3         3  
  3         245  
  3         21  
  3         5  
  3         970  
  3         17  
  3         3  
  3         86  
  3         14  
  3         4  
  3         110  
  3         13  
  3         5  
  3         320  
  3         15  
  3         4  
  3         136  
  3         15  
  3         14  
  3         273  
  3         93  
  3         7  
  3         839  
  3         16  
  3         5  
  3         84  
  3         13  
  3         5  
  3         119  
  3         19  
  3         5  
  3         324  
  3         14  
  3         6  
  3         129  
  3         14  
  3         12  
  3         294  
  3         25  
  3         6  
  3         896  
  3         16  
  3         4  
  3         95  
  3         13  
  3         4  
  3         109  
  3         14  
  3         3  
  3         315  
  3         14  
  3         6  
  3         122  
  3         22  
  3         5  
  3         265  
  3         15  
  3         6  
  3         967  
  3         15  
  3         3  
  3         75  
  3         13  
  3         5  
  3         109  
  3         12  
  3         5  
  3         282  
  3         13  
  3         10  
  3         150  
  3         15  
  3         5  
  3         237  
  3         377  
  3         4  
  3         945  
  3         15  
  3         5  
  3         78  
  3         12  
  3         5  
  3         101  
  3         13  
  3         4  
  3         309  
  3         14  
  3         5  
  3         151  
  3         14  
  3         6  
  3         256  
  3         16  
  3         5  
  3         859  
  3         15  
  3         3  
  3         93  
  3         13  
  3         3  
  3         98  
  3         18  
  3         5  
  3         310  
  3         14  
  3         5  
  3         131  
  3         20  
  3         7  
  3         264  
  3         16  
  3         13  
  3         981  
  3         14  
  3         4  
  3         99  
  3         14  
  3         5  
  3         115  
  3         13  
  3         5  
  3         326  
  3         15  
  3         6  
  3         138  
  3         16  
  3         6  
  3         277  
  3         14  
  3         6  
  3         1025  
  3         24  
  3         6  
  3         99  
  3         16  
  3         4  
  3         146  
  3         15  
  3         5  
  3         335  
  3         15  
  3         9  
  3         142  
  3         15  
  3         5  
  3         286  
  3         16  
  3         7  
  3         981  
  3         16  
  3         6  
  3         98  
  3         14  
  3         6  
  3         119  
  3         12  
  3         6  
  3         344  
  3         17  
  3         3  
  3         144  
  3         22  
  3         4  
  3         306  
  3         17  
  3         6  
  3         1011  
  3         18  
  3         7  
  3         98  
  3         12  
  3         6  
  3         110  
  3         26  
  3         11  
  3         344  
  3         16  
  3         6  
  3         138  
  3         15  
  3         5  
  3         255  
  3         16  
  3         4  
  3         970  
  3         16  
  3         5  
  3         103  
  3         14  
  3         5  
  3         113  
  3         17  
  3         4  
  3         353  
  3         15  
  3         5  
  3         137  
  3         15  
  3         15  
  3         256  
  3         16  
  3         5  
  3         942  
  3         16  
  3         11  
  3         97  
  3         14  
  3         6  
  3         124  
  3         13  
  3         7  
  3         378  
  3         14  
  3         6  
  3         148  
  3         15  
  3         6  
  3         255  
  3         16  
  3         6  
  3         891  
  3         16  
  3         6  
  3         90  
  3         13  
  3         6  
  3         121  
  3         14  
  3         5  
  3         343  
  3         15  
  3         3  
  3         126  
  3         14  
  3         5  
  3         268  
  3         17  
  3         5  
  3         976  
  3         14  
  3         6  
  3         87  
  3         12  
  3         5  
  3         139  
  3         14  
  3         6  
  3         316  
  3         16  
  3         6  
  3         121  
  3         14  
  3         6  
  3         242  
  3         12  
  3         5  
  3         947  
  3         18  
  3         7  
  3         115  
  3         16  
  3         11  
  3         136  
  3         15  
  3         7  
  3         332  
  3         15  
  3         7  
  3         125  
  3         16  
  3         15  
  3         282  
  3         15  
  3         7  
  3         954  
  3         15  
  3         6  
  3         88  
  3         13  
  3         5  
  3         128  
  3         15  
  3         4  
  3         337  
  3         16  
  3         6  
  3         133  
  3         18  
  3         6  
  3         287  
  3         14  
  3         5  
  3         959  
  3         16  
  3         6  
  3         91  
  3         16  
  3         4  
  3         131  
  3         15  
  3         6  
  3         343  
  3         16  
  3         9  
  3         164  
  3         15  
  3         6  
  3         281  
  3         16  
  3         6  
  3         910  
  3         16  
  3         4  
  3         88  
  3         13  
  3         6  
  3         100  
  3         13  
  3         4  
  3         293  
  3         14  
  3         5  
  3         121  
  3         14  
  3         11  
  3         281  
  3         17  
  3         7  
  3         958  
  3         18  
  3         6  
  3         109  
  3         16  
  3         12  
  3         118  
  3         43  
  3         6  
  3         308  
  3         14  
  3         5  
  3         132  
  3         20  
  3         5  
  3         256  
  3         15  
  3         6  
  3         913  
  3         16  
  3         6  
  3         82  
  3         13  
  3         6  
  3         104  
  3         20  
  3         5  
  3         342  
  3         17  
  3         8  
  3         159  
  3         24  
  3         5  
  3         265  
  3         16  
  3         5  
  3         1010  
  3         18  
  3         4  
  3         95  
  3         14  
  3         6  
  3         123  
  3         15  
  3         5  
  3         345  
  3         14  
  3         7  
  3         116  
  3         12  
  3         5  
  3         267  
  3         17  
  3         6  
  3         925  
  3         17  
  3         5  
  3         81  
  3         13  
  3         6  
  3         173  
  3         14  
  3         4  
  3         309  
  3         15  
  3         4  
  3         123  
  3         15  
  3         10  
  3         254  
  3         14  
  3         10  
  3         927  
  3         15  
  3         6  
  3         80  
  3         14  
  3         6  
  3         126  
  3         15  
  3         13  
  3         333  
  3         14  
  3         5  
  3         122  
  3         13  
  3         5  
  3         257  
  3         15  
  3         6  
  3         866  
  3         17  
  3         5  
  3         94  
  3         15  
  3         6  
  3         136  
  3         19  
  3         4  
  3         337  
  3         13  
  3         7  
  3         131  
  3         31  
  3         7  
  3         265  
  3         15  
  3         13  
  3         1061  
  3         17  
  3         6  
  3         96  
  3         14  
  3         5  
  3         115  
  3         14  
  3         11  
  3         354  
  3         16  
  3         4  
  3         135  
  3         15  
  3         4  
  3         264  
  3         16  
  3         5  
  3         917  
  3         18  
  3         7  
  3         102  
  3         15  
  3         6  
  3         117  
  3         13  
  3         39  
  3         345  
  3         17  
  3         7  
  3         155  
  3         19  
  3         5  
  3         306  
  3         19  
  3         14  
  3         983  
  3         14  
  3         7  
  3         84  
  3         12  
  3         11  
  3         120  
  3         19  
  3         8  
  3         324  
  3         14  
  3         6  
  3         137  
  3         27  
  3         6  
  3         256  
  3         17  
  3         6  
  3         970  
  3         17  
  3         13  
  3         101  
  3         12  
  3         6  
  3         123  
  3         14  
  3         4  
  3         338  
  3         18  
  3         13  
  3         147  
  3         17  
  3         5  
  3         257  
  3         16  
  3         6  
  3         934  
  3         17  
  3         5  
  3         104  
  3         45  
  3         5  
  3         120  
  3         20  
  3         6  
  3         357  
  3         32  
  3         7  
  3         141  
  3         16  
  3         6  
  3         270  
  3         15  
  3         7  
  3         996  
  3         17  
  3         4  
  3         94  
  3         14  
  3         6  
  3         115  
  3         14  
  3         11  
  3         324  
  3         14  
  3         7  
  3         130  
  3         15  
  3         6  
  3         254  
  3         15  
  3         5  
  3         1067  
  3         18  
  3         6  
  3         138  
  3         30  
  3         7  
  3         135  
  3         17  
  3         4  
  3         336  
  3         17  
  3         5  
  3         140  
  3         14  
  3         6  
  3         298  
  3         19  
  3         6  
  3         902  
  3         17  
  3         13  
  3         85  
  3         12  
  3         5  
  3         105  
  3         14  
  3         3  
  3         319  
  3         16  
  3         5  
  3         133  
  3         15  
  3         6  
  3         284  
  3         16  
  3         5  
  3         915  
  3         16  
  3         5  
  3         93  
  3         13  
  3         6  
  3         111  
  3         14  
  3         5  
  3         326  
  3         14  
  3         5  
  3         126  
  3         15  
  3         5  
  3         269  
  3         15  
  3         6  
  3         1014  
  3         18  
  3         7  
  3         126  
  3         14  
  3         6  
  3         128  
  3         15  
  3         6  
  3         343  
  3         17  
  3         10  
  3         131  
  3         16  
  3         11  
  3         276  
  3         15  
  3         7  
  3         958  
  3         18  
  3         5  
  3         103  
  3         14  
  3         6  
  3         120  
  3         15  
  3         6  
  3         299  
  3         15  
  3         6  
  3         131  
  3         14  
  3         6  
  3         260  
  3         14  
  3         7  
  3         967  
  3         16  
  3         5  
  3         97  
  3         14  
  3         5  
  3         106  
  3         12  
  3         5  
  3         364  
  3         17  
  3         5  
  3         137  
  3         16  
  3         10  
  3         282  
  3         17  
  3         5  
  3         866  
  3         16  
  3         6  
  3         98  
  3         14  
  3         13  
  3         110  
  3         22  
  3         6  
  3         344  
  3         14  
  3         930  
  3         137  
  3         15  
  3         6  
  3         284  
  3         15  
  3         5  
  3         973  
  3         15  
  3         6  
  3         83  
  3         12  
  3         6  
  3         98  
  3         15  
  3         3  
  3         316  
  3         14  
  3         5  
  3         127  
  3         16  
  3         6  
  3         1317  
  3         18  
  3         6  
  3         890  
  3         15  
  3         5  
  3         81  
  3         14  
  3         5  
  3         112  
  3         12  
  3         5  
  3         340  
  3         18  
  3         4  
  3         142  
  3         15  
  3         5  
  3         276  
  3         16  
  3         5  
  3         920  
  3         18  
  3         6  
  3         96  
  3         14  
  3         6  
  3         115  
  3         21  
  3         6  
  3         294  
  3         13  
  3         7  
  3         116  
  3         14  
  3         3  
  3         266  
  3         15  
  3         5  
  3         906  
  3         16  
  3         6  
  3         93  
  3         14  
  3         6  
  3         110  
  3         20  
  3         4  
  3         343  
  3         15  
  3         6  
  3         162  
  3         17  
  3         5  
  3         305  
  3         16  
  3         5  
  3         916  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
94             package $PACKAGE\::$_;
95             use strict;
96             use vars qw(\@ISA);
97             use Carp qw(:DEFAULT cluck);
98             use Data::Dumper;
99             use Anarres::Mud::Driver::Compiler::Node qw(:all);
100             use Anarres::Mud::Driver::Compiler::Type qw(:all);
101             \@ISA = qw(Anarres::Mud::Driver::Compiler::Node);
102             sub accept { return \$_[1]->$visit(\$_[0]); } # Visitors
103 414 50       12463 }; die $@ if $@;
104             }
105             }
106              
107             # Now that we have set up the Node packages, we can do this:
108              
109             # use Anarres::Mud::Driver::Compiler::Dump;
110             # use Anarres::Mud::Driver::Compiler::Check;
111             # use Anarres::Mud::Driver::Compiler::Generate;
112              
113             # Meanwhile, back in the Node package...
114              
115             sub new {
116 1     1 0 617 my ($class, @vals) = @_;
117             # die "Construct invalid node type $class" unless $class =~ /::/;
118             # print "Construct node $class with " . scalar(@vals) . " values\n";
119 1         3 my $self = [ undef, 0, @vals ]; # type, flags, vals
120 1         5 return bless $self, $class;
121             }
122              
123             # The format of a node is [ type, flags, value0, value1, ... ]
124              
125 1     1 0 15 sub type { $_[0]->[0] }
126 1     1 0 5 sub settype { $_[0]->[0] = $_[1] }
127              
128 0     0 0 0 sub value { $_[0]->[2 + $_[1]] }
129 0     0 0 0 sub setvalue{ $_[0]->[2 + $_[1]] = $_[2] }
130 1     1 0 4 sub values { @{$_[0]}[2..$#{$_[0]}] }
  1         13  
  1         4  
131              
132             # sub flag { $_[0]->[1] & $_[1] }
133 1     1 0 3 sub setflag { $_[0]->[1] |= $_[1] }
134 0     0 0 0 sub flags { $_[0]->[1] }
135              
136             sub opcode {
137 2   33 2 0 16 (my $name = (ref($_[0]) || $_[0])) =~ s/.*:://;
138 2         6 return $name;
139             }
140              
141             sub setopcode {
142 0     0 0   my ($self, $newopcode) = @_;
143 0           my $class = ref($self);
144 0           $class =~ s/[^:]+$/$newopcode/;
145 0           bless $self, $class;
146 0           return 1;
147             }
148              
149             1;