develooper Front page | perl.cvs.parrot | Postings from December 2008

[svn:parrot] r33873 - in branches/calling_conventions: . compilers/imcc compilers/ncigen compilers/ncigen/lib/Parrot/Test compilers/ncigen/src compilers/ncigen/t/NCIGENAST compilers/pct/src/PAST compilers/pct/src/PCT compilers/pct/src/POST compilers/pge/P

From:
Whiteknight
Date:
December 13, 2008 19:46
Subject:
[svn:parrot] r33873 - in branches/calling_conventions: . compilers/imcc compilers/ncigen compilers/ncigen/lib/Parrot/Test compilers/ncigen/src compilers/ncigen/t/NCIGENAST compilers/pct/src/PAST compilers/pct/src/PCT compilers/pct/src/POST compilers/pge/P
Message ID:
20081214034646.D7FDCCBAC8@x12.develooper.com
Author: Whiteknight
Date: Sat Dec 13 19:46:32 2008
New Revision: 33873

Added:
   branches/calling_conventions/languages/ecmascript/t/00-comments.t
      - copied unchanged from r33872, /trunk/languages/ecmascript/t/00-comments.t
   branches/calling_conventions/languages/perl6/src/classes/Abstraction.pir
      - copied unchanged from r33872, /trunk/languages/perl6/src/classes/Abstraction.pir
   branches/calling_conventions/languages/pipp/ROADMAP
      - copied unchanged from r33872, /trunk/languages/pipp/ROADMAP
   branches/calling_conventions/languages/pipp/docs/pipp.pod
      - copied unchanged from r33872, /trunk/languages/pipp/docs/pipp.pod
   branches/calling_conventions/t/perl/testlib/
      - copied from r33872, /trunk/t/perl/testlib/
   branches/calling_conventions/t/perl/testlib/answer.pir
      - copied unchanged from r33872, /trunk/t/perl/testlib/answer.pir
   branches/calling_conventions/t/perl/testlib/hello
      - copied unchanged from r33872, /trunk/t/perl/testlib/hello
   branches/calling_conventions/t/perl/testlib/hello.pasm
      - copied unchanged from r33872, /trunk/t/perl/testlib/hello.pasm
   branches/calling_conventions/tools/dev/vgp
      - copied unchanged from r33872, /trunk/tools/dev/vgp
Removed:
   branches/calling_conventions/docs/ROADMAP.pod
   branches/calling_conventions/languages/pipp/TODO
   branches/calling_conventions/languages/pipp/docs/overview.pod
   branches/calling_conventions/languages/pipp/t/php/strings.t
   branches/calling_conventions/t/compilers/imcc/syn/namespace.t
Modified:
   branches/calling_conventions/   (props changed)
   branches/calling_conventions/DEPRECATED.pod
   branches/calling_conventions/MANIFEST
   branches/calling_conventions/MANIFEST.SKIP
   branches/calling_conventions/NEWS
   branches/calling_conventions/PLATFORMS
   branches/calling_conventions/README
   branches/calling_conventions/TODO
   branches/calling_conventions/compilers/imcc/imcc.l
   branches/calling_conventions/compilers/imcc/imcc.y
   branches/calling_conventions/compilers/imcc/imclexer.c
   branches/calling_conventions/compilers/imcc/imcparser.c
   branches/calling_conventions/compilers/imcc/imcparser.h
   branches/calling_conventions/compilers/imcc/main.c
   branches/calling_conventions/compilers/imcc/pbc.c
   branches/calling_conventions/compilers/imcc/pcc.c
   branches/calling_conventions/compilers/imcc/symreg.c
   branches/calling_conventions/compilers/imcc/symreg.h
   branches/calling_conventions/compilers/ncigen/NCIGENP6.pm   (props changed)
   branches/calling_conventions/compilers/ncigen/lib/Parrot/Test/NCIGENAST.pm   (props changed)
   branches/calling_conventions/compilers/ncigen/ncigen.pir   (props changed)
   branches/calling_conventions/compilers/ncigen/ncigen.pl   (props changed)
   branches/calling_conventions/compilers/ncigen/src/NCIGENAST.pir   (props changed)
   branches/calling_conventions/compilers/ncigen/t/NCIGENAST/   (props changed)
   branches/calling_conventions/compilers/pct/src/PAST/Compiler.pir
   branches/calling_conventions/compilers/pct/src/PAST/Node.pir
   branches/calling_conventions/compilers/pct/src/PCT/Node.pir
   branches/calling_conventions/compilers/pct/src/POST/Compiler.pir
   branches/calling_conventions/compilers/pct/src/POST/Node.pir
   branches/calling_conventions/compilers/pge/PGE/Exp.pir
   branches/calling_conventions/compilers/pirc/new/main.c
   branches/calling_conventions/compilers/pirc/new/pircompiler.c
   branches/calling_conventions/compilers/pirc/new/pircompunit.c
   branches/calling_conventions/compilers/pirc/new/pirregalloc.c
   branches/calling_conventions/compilers/pirc/new/pirregalloc.h
   branches/calling_conventions/docs/book/ch07_testing_and_debugging.pod   (props changed)
   branches/calling_conventions/docs/book/ch08_architecture.pod   (props changed)
   branches/calling_conventions/docs/book/ch09_pct.pod   (props changed)
   branches/calling_conventions/docs/book/ch10_hlls.pod   (props changed)
   branches/calling_conventions/docs/book/ch11_pmcs.pod   (props changed)
   branches/calling_conventions/docs/book/ch12_opcodes.pod   (contents, props changed)
   branches/calling_conventions/docs/book/ch13_reference.pod   (props changed)
   branches/calling_conventions/docs/dev/c_functions.pod   (props changed)
   branches/calling_conventions/docs/pdds/draft/pdd14_numbers.pod
   branches/calling_conventions/docs/pdds/pdd19_pir.pod
   branches/calling_conventions/docs/pdds/pdd22_io.pod
   branches/calling_conventions/docs/project/cage_cleaners_guide.pod
   branches/calling_conventions/docs/project/debian_packaging_guide.pod
   branches/calling_conventions/docs/project/release_manager_guide.pod
   branches/calling_conventions/docs/project/ticket_wrangler_guide.pod
   branches/calling_conventions/examples/benchmarks/addit.pir
   branches/calling_conventions/examples/benchmarks/fib.pir
   branches/calling_conventions/examples/library/md5sum.pir
   branches/calling_conventions/examples/pir/euclid.pir
   branches/calling_conventions/examples/pir/hanoi.pir
   branches/calling_conventions/examples/pir/io.pir
   branches/calling_conventions/examples/pir/life.pir
   branches/calling_conventions/examples/pir/readline.pir
   branches/calling_conventions/examples/pir/substr.pir
   branches/calling_conventions/examples/pir/sudoku.pir
   branches/calling_conventions/examples/pir/uniq.pir
   branches/calling_conventions/examples/shootout/fasta.pir
   branches/calling_conventions/examples/shootout/knucleotide.pir
   branches/calling_conventions/examples/shootout/revcomp.pir
   branches/calling_conventions/examples/subs/single_retval.pir
   branches/calling_conventions/ext/SQLite3/t/test.p6   (props changed)
   branches/calling_conventions/languages/WMLScript/src/wmlsstdlibs.pir
   branches/calling_conventions/languages/dotnet/t/args.t
   branches/calling_conventions/languages/dotnet/t/array.t
   branches/calling_conventions/languages/dotnet/t/bitwise.t
   branches/calling_conventions/languages/dotnet/t/box.t
   branches/calling_conventions/languages/dotnet/t/branch.t
   branches/calling_conventions/languages/dotnet/t/calling.t
   branches/calling_conventions/languages/dotnet/t/callvirt.t
   branches/calling_conventions/languages/dotnet/t/castclass.t
   branches/calling_conventions/languages/dotnet/t/compare.t
   branches/calling_conventions/languages/dotnet/t/conditional.t
   branches/calling_conventions/languages/dotnet/t/constants.t
   branches/calling_conventions/languages/dotnet/t/constructor.t
   branches/calling_conventions/languages/dotnet/t/conv.t
   branches/calling_conventions/languages/dotnet/t/convovf.t
   branches/calling_conventions/languages/dotnet/t/enum.t
   branches/calling_conventions/languages/dotnet/t/exceptions.t
   branches/calling_conventions/languages/dotnet/t/external.t
   branches/calling_conventions/languages/dotnet/t/field.t
   branches/calling_conventions/languages/dotnet/t/finally.t
   branches/calling_conventions/languages/dotnet/t/floatarray.t
   branches/calling_conventions/languages/dotnet/t/hierachy.t
   branches/calling_conventions/languages/dotnet/t/i8.t
   branches/calling_conventions/languages/dotnet/t/inheritance.t
   branches/calling_conventions/languages/dotnet/t/initializer.t
   branches/calling_conventions/languages/dotnet/t/intarray.t
   branches/calling_conventions/languages/dotnet/t/interface.t
   branches/calling_conventions/languages/dotnet/t/isinst.t
   branches/calling_conventions/languages/dotnet/t/locals.t
   branches/calling_conventions/languages/dotnet/t/loop.t
   branches/calling_conventions/languages/dotnet/t/math.t
   branches/calling_conventions/languages/dotnet/t/mathovf.t
   branches/calling_conventions/languages/dotnet/t/mp.t
   branches/calling_conventions/languages/dotnet/t/mp_pmc.t
   branches/calling_conventions/languages/dotnet/t/null.t
   branches/calling_conventions/languages/dotnet/t/overloading.t
   branches/calling_conventions/languages/dotnet/t/overloadprimitives.t
   branches/calling_conventions/languages/dotnet/t/recursion.t
   branches/calling_conventions/languages/dotnet/t/staticfield.t
   branches/calling_conventions/languages/dotnet/t/staticmethod.t
   branches/calling_conventions/languages/dotnet/t/string.t
   branches/calling_conventions/languages/dotnet/t/switch.t
   branches/calling_conventions/languages/dotnet/t/unsigned.t
   branches/calling_conventions/languages/dotnet/t/valuetypes.t
   branches/calling_conventions/languages/ecmascript/src/parser/actions.pm
   branches/calling_conventions/languages/ecmascript/src/parser/grammar.pg
   branches/calling_conventions/languages/jako/lib/Jako/Construct/Declaration/Variable.pm
   branches/calling_conventions/languages/jako/lib/Jako/Construct/Expression/Call.pm
   branches/calling_conventions/languages/jako/lib/Jako/Construct/Expression/Value/Identifier.pm
   branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Arithmetic.pm
   branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Assign.pm
   branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Concat.pm
   branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Decrement.pm
   branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Increment.pm
   branches/calling_conventions/languages/lisp/system.pir
   branches/calling_conventions/languages/lua/luac2pir.pir
   branches/calling_conventions/languages/lua/luad.pir
   branches/calling_conventions/languages/lua/src/lib/complex.pir
   branches/calling_conventions/languages/lua/src/lib/lfs.pir
   branches/calling_conventions/languages/lua/src/lib/luaaux.pir
   branches/calling_conventions/languages/lua/src/lib/luabasic.pir
   branches/calling_conventions/languages/lua/src/lib/luabytecode.pir
   branches/calling_conventions/languages/lua/src/lib/luabytecode.rules
   branches/calling_conventions/languages/lua/src/lib/luafile.pir
   branches/calling_conventions/languages/lua/src/lib/luaio.pir
   branches/calling_conventions/languages/lua/src/lib/luaperl.pir
   branches/calling_conventions/languages/lua/src/pmc/luauserdata.pmc
   branches/calling_conventions/languages/lua/t/basic.t
   branches/calling_conventions/languages/lua/t/complex.t
   branches/calling_conventions/languages/lua/t/io.t
   branches/calling_conventions/languages/lua/t/mathx.t
   branches/calling_conventions/languages/lua/t/package.t
   branches/calling_conventions/languages/lua/t/test/bisect-output-win32.txt   (props changed)
   branches/calling_conventions/languages/ook/ook.pasm
   branches/calling_conventions/languages/perl6/Test.pm
   branches/calling_conventions/languages/perl6/config/makefiles/root.in
   branches/calling_conventions/languages/perl6/docs/spectest-progress.csv
   branches/calling_conventions/languages/perl6/src/builtins/any-list.pir
   branches/calling_conventions/languages/perl6/src/builtins/assign.pir
   branches/calling_conventions/languages/perl6/src/builtins/control.pir
   branches/calling_conventions/languages/perl6/src/builtins/enums.pir
   branches/calling_conventions/languages/perl6/src/builtins/guts.pir
   branches/calling_conventions/languages/perl6/src/builtins/io.pir
   branches/calling_conventions/languages/perl6/src/builtins/math.pir
   branches/calling_conventions/languages/perl6/src/builtins/op.pir
   branches/calling_conventions/languages/perl6/src/classes/Code.pir
   branches/calling_conventions/languages/perl6/src/classes/Failure.pir
   branches/calling_conventions/languages/perl6/src/classes/IO.pir
   branches/calling_conventions/languages/perl6/src/classes/List.pir
   branches/calling_conventions/languages/perl6/src/classes/Mapping.pir
   branches/calling_conventions/languages/perl6/src/classes/Object.pir
   branches/calling_conventions/languages/perl6/src/parser/actions.pm
   branches/calling_conventions/languages/perl6/src/parser/grammar.pg
   branches/calling_conventions/languages/perl6/src/parser/quote_expression.pir
   branches/calling_conventions/languages/perl6/src/pmc/perl6multisub.pmc
   branches/calling_conventions/languages/perl6/src/utils/perl6doc.pir
   branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-arity.t
   branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-tiebreak.t
   branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-type.t
   branches/calling_conventions/languages/perl6/t/spectest.data
   branches/calling_conventions/languages/perl6/tools/progress-graph.pl
   branches/calling_conventions/languages/perl6/tools/test_summary.pl
   branches/calling_conventions/languages/pipp/   (props changed)
   branches/calling_conventions/languages/pipp/README
   branches/calling_conventions/languages/pipp/Test.php   (props changed)
   branches/calling_conventions/languages/pipp/docs/namespaces.pod   (props changed)
   branches/calling_conventions/languages/pipp/src/common/eval.pir   (props changed)
   branches/calling_conventions/languages/pipp/src/common/guts.pir   (props changed)
   branches/calling_conventions/languages/pipp/src/common/php_API.pir
   branches/calling_conventions/languages/pipp/src/common/php_file.pir
   branches/calling_conventions/languages/pipp/src/common/php_md5.pir
   branches/calling_conventions/languages/pipp/src/common/php_sha1.pir
   branches/calling_conventions/languages/pipp/src/pmc/phpnull.pmc   (props changed)
   branches/calling_conventions/languages/pipp/t/in_php/array.t   (props changed)
   branches/calling_conventions/languages/pipp/t/php/builtin.t
   branches/calling_conventions/languages/pipp/t/php/file.t
   branches/calling_conventions/languages/pipp/t/php/string.t
   branches/calling_conventions/languages/pipp/t/php_qa_testsuite/   (props changed)
   branches/calling_conventions/languages/pipp/t/pmc/null.t   (props changed)
   branches/calling_conventions/languages/unlambda/unl.pir
   branches/calling_conventions/lib/Parrot/Docs/Section/Info.pm
   branches/calling_conventions/lib/Parrot/Manifest.pm
   branches/calling_conventions/lib/Parrot/Test.pm
   branches/calling_conventions/runtime/parrot/library/Config/JSON.pir
   branches/calling_conventions/runtime/parrot/library/P6object.pir
   branches/calling_conventions/src/debug.c
   branches/calling_conventions/src/packfile/pf_items.c
   branches/calling_conventions/src/pmc/capture.pmc
   branches/calling_conventions/src/pmc/exceptionhandler.pmc
   branches/calling_conventions/src/pmc/filehandle.pmc
   branches/calling_conventions/t/compilers/imcc/syn/subflags.t
   branches/calling_conventions/t/compilers/tge/NoneGrammar.tg   (props changed)
   branches/calling_conventions/t/perl/Parrot_Test.t
   branches/calling_conventions/t/pmc/exceptionhandler.t
   branches/calling_conventions/t/pmc/key.t
   branches/calling_conventions/tools/util/release.json
   branches/calling_conventions/tools/util/templates.json

Log:
[calling_conventions] update to trunk r33872

Modified: branches/calling_conventions/DEPRECATED.pod
==============================================================================
--- branches/calling_conventions/DEPRECATED.pod	(original)
+++ branches/calling_conventions/DEPRECATED.pod	Sat Dec 13 19:46:32 2008
@@ -86,24 +86,10 @@
 
 =over 4
 
-=item * C<#line> [post 0.6.4]
-
-Will be replaced by C<.line> to be more consistent with other PIR syntax.
-
-See RT #45857, RT #43269, and RT #47141.
-
-=item * C<<.namespace <identifier> >> syntax [post 0.5.1]
-
-See RT #48737.
-
 =item * C<.namespace [ "a" .. "b" ]> [post 0.5.0]
 
 See RT #46715.
 
-=item * vtable name .constants and __vtable overrides [post 0.5.2]
-
-See RT #48877.
-
 =item * Assignment syntax with opcodes [post 0.8.2]
 
 See RT #36283.  When the first argument of an opcode is C<OUT>, then
@@ -152,7 +138,7 @@
 
 =item * Subs marked with C<:vtable>/C<:method> aren't in namespace [post 0.8.2]
 
-Subs marked with C<:vtable> or C<:method> flags are no longer given a 
+Subs marked with C<:vtable> or C<:method> flags are no longer given a
 namespace entry by default.  Use the C<:nsentry> flag to cause this
 to happen.  See RT #60586 and RT #53302.
 

Modified: branches/calling_conventions/MANIFEST
==============================================================================
--- branches/calling_conventions/MANIFEST	(original)
+++ branches/calling_conventions/MANIFEST	Sat Dec 13 19:46:32 2008
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Dec 10 08:00:47 2008 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sat Dec 13 14:28:34 2008 UT
 #
 # See tools/dev/install_files.pl for documentation on the
 # format of this file.
@@ -445,7 +445,6 @@
 config/inter/shlibs.pm                                      []
 config/inter/types.pm                                       []
 config/inter/yacc.pm                                        []
-docs/ROADMAP.pod                                            [devel]doc
 docs/book/README                                            [main]doc
 docs/book/appendix.pod                                      [main]doc
 docs/book/ch01_overview.pod                                 [main]doc
@@ -1573,6 +1572,7 @@
 languages/ecmascript/src/builtin/builtins.pir               [ecmascript]
 languages/ecmascript/src/parser/actions.pm                  [ecmascript]
 languages/ecmascript/src/parser/grammar.pg                  [ecmascript]
+languages/ecmascript/t/00-comments.t                        [ecmascript]
 languages/ecmascript/t/01-literals.t                        [ecmascript]
 languages/ecmascript/t/harness                              [ecmascript]
 languages/forth/MAINTAINER                                  [forth]
@@ -2123,6 +2123,7 @@
 languages/perl6/src/builtins/parrot.pir                     [perl6]
 languages/perl6/src/builtins/system.pir                     [perl6]
 languages/perl6/src/builtins/traits.pir                     [perl6]
+languages/perl6/src/classes/Abstraction.pir                 [perl6]
 languages/perl6/src/classes/Any.pir                         [perl6]
 languages/perl6/src/classes/Array.pir                       [perl6]
 languages/perl6/src/classes/Block.pir                       [perl6]
@@ -2244,13 +2245,13 @@
 languages/pipp/Configure.pl                                 [pipp]
 languages/pipp/MAINTAINER                                   [pipp]
 languages/pipp/README                                       [pipp]
-languages/pipp/TODO                                         [pipp]
+languages/pipp/ROADMAP                                      [pipp]
 languages/pipp/Test.php                                     [pipp]
 languages/pipp/config/makefiles/root.in                     [pipp]
 languages/pipp/docs/antlr3.pod                              [pipp]
 languages/pipp/docs/extensions.pod                          [pipp]
 languages/pipp/docs/namespaces.pod                          [pipp]
-languages/pipp/docs/overview.pod                            [pipp]
+languages/pipp/docs/pipp.pod                                [pipp]
 languages/pipp/docs/testing.pod                             [pipp]
 languages/pipp/lib/Parrot/Test/Pipp.pm                      [pipp]
 languages/pipp/lib/Parrot/Test/Pipp/Antlr3.pm               [pipp]
@@ -2434,7 +2435,6 @@
 languages/pipp/t/php/selection.txt                          [pipp]
 languages/pipp/t/php/sha1.t                                 [pipp]
 languages/pipp/t/php/string.t                               [pipp]
-languages/pipp/t/php/strings.t                              [pipp]
 languages/pipp/t/php/superglobals.t                         [pipp]
 languages/pipp/t/php/tags.t                                 [pipp]
 languages/pipp/t/php/type.t                                 [pipp]
@@ -3226,7 +3226,6 @@
 t/compilers/imcc/syn/keyed.t                                []
 t/compilers/imcc/syn/labels.t                               []
 t/compilers/imcc/syn/macro.t                                []
-t/compilers/imcc/syn/namespace.t                            []
 t/compilers/imcc/syn/objects.t                              []
 t/compilers/imcc/syn/op.t                                   []
 t/compilers/imcc/syn/pasm.t                                 []
@@ -3476,6 +3475,9 @@
 t/perl/Parrot_IO.t                                          []
 t/perl/Parrot_Test.t                                        []
 t/perl/README                                               []
+t/perl/testlib/answer.pir                                   []
+t/perl/testlib/hello                                        []
+t/perl/testlib/hello.pasm                                   []
 t/pharness/01-default_tests.t                               []
 t/pharness/02-get_test_prog_args.t                          []
 t/pharness/03-handle_long_options.t                         []
@@ -3772,6 +3774,7 @@
 tools/dev/svnclobber.pl                                     [devel]
 tools/dev/symlink.pl                                        [devel]
 tools/dev/testyamd                                          [devel]
+tools/dev/vgp                                               [devel]
 tools/dev/vms-patch                                         [devel]
 tools/dev/vtablize.pl                                       [devel]
 tools/docs/func_boilerplate.pl                              [devel]

Modified: branches/calling_conventions/MANIFEST.SKIP
==============================================================================
--- branches/calling_conventions/MANIFEST.SKIP	(original)
+++ branches/calling_conventions/MANIFEST.SKIP	Sat Dec 13 19:46:32 2008
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Tue Dec  9 06:24:54 2008 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sat Dec 13 11:27:31 2008 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -1149,6 +1149,8 @@
 ^languages/pipp/pipp_phc_past\.pir/
 ^languages/pipp/pipp_phc_past\.xml$
 ^languages/pipp/pipp_phc_past\.xml/
+^languages/pipp/pipp_test_run\.tar\.gz$
+^languages/pipp/pipp_test_run\.tar\.gz/
 # generated from svn:ignore of 'languages/pipp/src/antlr3/'
 ^languages/pipp/src/antlr3/.*\.class$
 ^languages/pipp/src/antlr3/.*\.class/

Modified: branches/calling_conventions/NEWS
==============================================================================
--- branches/calling_conventions/NEWS	(original)
+++ branches/calling_conventions/NEWS	Sat Dec 13 19:46:32 2008
@@ -2,21 +2,39 @@
 
 New in December 2008 Release
 - Compilers
+  + IMCC
+    - removed undocumented .param int <stringc> => <ident> syntax
+    - .line directive now only takes an integer argument
+    - new .file directive to specify the file name being compiled
   + PIRC
     - add macro handling to PASM mode
     - disable vanilla register allocation in PASM mode, but do allow optimization
     - add tests and bug fixes
+    - first bits of bytecode generation. No sub calling/returning yet.
 - Languages
+  + Rakudo
+    - refactored subtypes implementation
+    - support for quotes with multi-character delimiters
+    - implemented list slices
+    - list assignment
+    - reduction meta operators
+    - hyper meta operators
+    - cross meta operators
+    - more builtin functions
+    - basic support for protos
+    - iterator on filehandle objects
   + Pipp
     - added support for a return value from user defined functions
     - added incomplete implemention of 'require_once'
 - Deprecations
   + PARROT_API is now PARROT_EXPORT
-  + :lexid is now :subid
-  + .arg is now .set_arg
-  + .result is now .get_result
-  + .yield (in .begin/end_yield) is now .set_yield
-  + .return (in .begin/end_return) is now .set_return
+  + PIR
+    - :lexid is now :subid
+    - .arg is now .set_arg
+    - .result is now .get_result
+    - .yield (in .begin/end_yield) is now .set_yield
+    - .return (in .begin/end_return) is now .set_return
+    - .namespace x / .endnamespace x syntax is removed
 
 New in 0.8.1
 - Implementation

Modified: branches/calling_conventions/PLATFORMS
==============================================================================
--- branches/calling_conventions/PLATFORMS	(original)
+++ branches/calling_conventions/PLATFORMS	Sat Dec 13 19:46:32 2008
@@ -15,19 +15,12 @@
 --------------------------------------------------------------------------------
 cygwin1.5.24-x86-gcc3.4.4     4   Y    Y    -     -   -   Y    Y/6*1 ?  20071016
 cygwin1.5.25-x86-gcc3.4.4     4   Y    Y    -     -   -   Y    Y/6*1 ?  20080513
-darwin7.9.0-ppc-3.3          B    Y    Y    -     Y   Y   Y    Y/5   Y  20060808
-darwin8.6.0-ppc-gcc4.0.1     B    ?    ?    ?     ?   ?   ?    Y/4   ?  20060807
 darwin8.8.0-ppc-gcc4.0.1     B    Y/2  ?    ?     ?   ?   Y    Y     ?  20070116
-darwin8.6.0-x86-gcc4.0.1          ?    -    ?     ?   ?   Y    Y     ?  20060607
 darwin8.8.1-x86-gcc4.0.1          Y/2  ?    ?     ?   ?   Y    Y     ?  20070116
 darwin8.11.1-x86-gcc4.0.1         Y    ?    ?     ?   ?   Y    Y/7   ?  20080220
 freebsd-x86-gcc-3.4.6             Y    ?    ?     ?   ?   Y    Y     ?  20080519
 linux-x86-gcc3.3.3.20040412       Y/2  ?    ?     ?   ?   Y    Y     ?  20070116
-linux-x86-gcc3.3.5.2005013        Y    Y    Y     Y   Y   Y    Y     ?  20060618
 linux-x86-gcc3.4.5                Y    Y    Y     ?   ?   Y    Y     ?  20071016
-linux-x86-gcc4.0.2                Y    Y    Y     Y   Y   Y    Y     ?  20060514
-linux-x86-gcc4.0.3                Y    Y    Y     Y   Y   Y    Y     ?  20060707
-linux-x86-gcc4.1.0                Y    Y    Y     Y   Y   Y    Y     Y  20060306
 linux-x86-gcc4.1.2                Y    Y    ?     Y   Y   Y    Y     ?  20080617
 linux-x86-gcc4.1.3                Y    Y    ?     Y   Y   Y    Y     ?  20080414
 linux-x86-gcc4.2.3                Y    Y    ?     Y   Y   Y    Y     ?  20080715
@@ -37,12 +30,10 @@
 linux-x86-llvm-gcc-4.2            Y    Y    ?     ?   ?   Y    Y     ?  20080801
 sol8-sparc-cc                B    -    -    -     -   -   -    Y/85  ?  20080818
 sol8-sparc-gcc_4.1.0         B    -    -    -     -   -   -    Y/87  ?  20080818
-sol10-sparc-cc_5.8           B    Y    -    -     Y   Y   Y    Y/9   ?  20060807
-sol10-sparc-cc_5.9           B4*4 Y    -    -     Y   Y   Y    Y     ?  20080510
+sol10-sparc-cc_5.9           B4*3 Y    -    -     Y   Y   Y    Y     ?  20080510
 sol10-sparc-cc_5.9           B8   Y    -    -     Y   Y   Y    Y/2   ?  20080518
-sol10-sparc-gcc_4.0.2        B4*4 Y    -    -     Y   Y   Y    Y/1   ?  20080510
+sol10-sparc-gcc_4.0.2        B4*3 Y    -    -     Y   Y   Y    Y/1   ?  20080510
 sol10-sparc-gcc_4.0.2        B8   Y    -    -     Y   Y   Y    Y/2   ?  20080518
-tru64-alpha-compaq_c6.5       8   ?    ?    ?     Y   ?   Y    Y/2   ?  20060203
 win32-x86-mingw_gcc3.4.5          Y    Y    -     -   -   Y    Y     Y  20080917
 win32-x86-msvc_9.0                -    Y    -     Y   -   Y    Y/4   ?  20081203
 
@@ -53,14 +44,12 @@
                                 CGoto JIT EXEC   Thr Sig
 --------------------------------------------------------------------------------
 aix5.3-power-gcc4.2          B8   -    -    -             Y    ?     ?  20080510
-freebsd-amd64-gcc3.4.6            Y    Y*3  ?     ?   ?   Y    Y     ?  20071008
+freebsd-amd64-gcc3.4.6            Y    Y*2  ?     ?   ?   Y    Y     ?  20071008
 freebsd-x86-gcc-3.4.6             Y    ?    ?     ?   ?   Y    Y     ?  20080519
 linux-ppc-gcc3.4.5                Y    Y    Y     ?   ?   Y    Y     ?  20080519
 linux-ps3-gcc4.1.1           B    Y    Y    Y     Y   Y   Y    Y/3   -  20070308
 linux-s390x-gcc4.1.2         B4   ?    -    -     Y   Y   Y    Y/2   ?  20080908
-linux-x86_64-gcc3.4.3         8   Y    -    -     Y   Y   Y    Y     ?  20060618
 linux-x86_64-gcc4.1.0         8   Y    -    -     Y   Y   Y    Y     ?  20070116
-linux-x86_64-gcc4.1.0         4   Y    -    -     Y   Y   Y    Y/2   ?  20060807
 linux-x86_64-gcc4.1.2         8   Y    -    -     Y   Y   Y    Y     ?  20080220
 linux-x86_64-gcc4.3.2         8   Y    -    -     Y   Y   Y    Y     ?  20081118
 openbsd-zaurus-gcc3.3.5           Y    -    -     Y   Y   Y    ?     ?  20070309
@@ -98,9 +87,8 @@
 
 Remarks:
 *1 need PATH=$PATH:$PWD/blib/lib to locate DLL
-*2 some tests fail intermittently when building x86 on xeon processor
-*3 You must run Configure.pl with --jitcapable
-*4 gcc and cc defaults to 32bits on solaris
+*2 You must run Configure.pl with --jitcapable
+*3 gcc and cc defaults to 32bits on solaris
 
 The following configurations are also working on x86/linux (and possibly
 other platforms):

Modified: branches/calling_conventions/README
==============================================================================
--- branches/calling_conventions/README	(original)
+++ branches/calling_conventions/README	Sat Dec 13 19:46:32 2008
@@ -59,14 +59,8 @@
 
 The file "myconfig" has an overview of configure settings.
 
-Next, run make:
-
-For UNIX like systems that come with its own make, 'gmake' should be
-used.  (On most Linux systems, this is the default make.)
-
-On Windows systems, use 'nmake'.
-
-On other systems, just try 'make'.
+Next, run make. (Configure.pl will tell you which version of make it
+recommends for your system.)
 
 Now, the interpreter should build.  If you are building the ICU library
 (this is the default on most systems), you need to use GNU make instead
@@ -77,9 +71,8 @@
 you may have to delete the installed version of parrot before building a new
 one. Our apologies.
 
-You can test parrot by running
-
-    make test         (or nmake test or gmake test)
+You can test parrot by running "make test". You can run the tests in parallel
+with "make TEST_JOBS=3 test".
 
 You can run the full test suite with
 
@@ -94,6 +87,7 @@
 
 This installs a bunch of files in /usr/local. The parrot executable is in
 /usr/local/bin.   Please note that this feature is currently experimental.
+(It's so experimental that you have to read the directions it gives you.)
 
 If you want to install Parrot into a non-standard location use:
 
@@ -127,12 +121,15 @@
 MAILING LISTS
 -------------
 
-The mailing list for parrot is parrot-porters.  Subscribe by sending mail to
-parrot-porters-subscribe@perl.org. It is archived at
+The mailing list for parrot is parrot-dev@parrot.org. Subscribe by 
+filling out the form at http://lists.parrot.org/mailman/listinfo/parrot-dev
+It is archived at http://lists.parrot.org/pipermail/parrot-dev/
+
+The old development list is archived at
 http://www.nntp.perl.org/group/perl.perl6.internals
 and available via NNTP at nntp://nntp.perl.org/perl.perl6.internals
 
-You can also read the list via Google Groups at
+You can also read the (old) list via Google Groups at
 http://groups-beta.google.com/group/perl.perl6.internals
 
 FEEDBACK, PATCHES, etc.
@@ -144,11 +141,14 @@
 WEB SITES
 ---------
 
-The following web sites have all the Parrot information you need:
-    http://www.parrotcode.org/
-    http://www.perlfoundation.org/parrot/
+The following web sites have all the information you need about Parrot:
+    http://www.parrot.org/
+    http://trac.parrot.org/
+    http://www.parrotblog.org/
+
+And Perl6:
+    http://rakudo.org/
     http://dev.perl.org/perl6/
-    http://bugs6.perl.org/perl6/
     http://pugscode.org/
 
 Have fun,

Modified: branches/calling_conventions/TODO
==============================================================================
--- branches/calling_conventions/TODO	(original)
+++ branches/calling_conventions/TODO	Sat Dec 13 19:46:32 2008
@@ -1,24 +1,14 @@
 # $Id$
 
-All TODO items should be documented in RT. (https://rt.perl.org/)
+All todo items should have a corresponding trac ticket. See the current list:
 
-A listing of all TODO items is available at:
+ https://trac.parrot.org/parrot/report/9
 
- http://www.parrotcode.org/todo
-
-To add TODOs to this list (which is powered by RT), send an email to 
-
- parrotbug@parrotcode.org
-
-Begin your subject with '[TODO]' so that the bug is automatically marked as a
-TODO ticket.  For reasons of consistency, the encouraged format of the subject
-line is:
+To open a new todo ticket, use
 
- '[TODO] <subsystem/component/topic> - <summary of task>'
+ https://trac.parrot.org/
 
-An example of this format would be:
-
- '[TODO] IMCC - remove globals'
-
-See also docs/ROADMAP.pod
+Note that we are still transitioning away from RT. To see what todos remain
+in our old tracking system, use:
 
+ http://www.parrotcode.org/todo

Modified: branches/calling_conventions/compilers/imcc/imcc.l
==============================================================================
--- branches/calling_conventions/compilers/imcc/imcc.l	(original)
+++ branches/calling_conventions/compilers/imcc/imcc.l	Sat Dec 13 19:46:32 2008
@@ -354,7 +354,7 @@
 <emit,INITIAL>".namespace"    return NAMESPACE;
 <emit,INITIAL>".HLL"          return HLL;
 <emit,INITIAL>".HLL_map"      return HLL_MAP;
-".endnamespace"               return ENDNAMESPACE;
+
 ".local"                      return LOCAL;
 <emit,INITIAL>".const"        return CONST;
 ".globalconst"                return GLOBAL_CONST;

Modified: branches/calling_conventions/compilers/imcc/imcc.y
==============================================================================
--- branches/calling_conventions/compilers/imcc/imcc.y	(original)
+++ branches/calling_conventions/compilers/imcc/imcc.y	Sat Dec 13 19:46:32 2008
@@ -295,7 +295,7 @@
     const int type_enum = atoi(type);
     const int ascii = (*constant == '\'' || *constant == '"');
     SymReg *rhs;
-    SymReg *r[2];
+    SymReg *r[3];
     char   *name;
 
     if (left->type == VTADDRESS) {      /* IDENTIFIER */
@@ -325,7 +325,7 @@
             if (!ascii)
                 rhs->type |= VT_ENCODED;
 
-            rhs->usage    = U_FIXUP;
+            rhs->usage    = U_FIXUP | U_SUBID_LOOKUP;;
             break;
         default:
             rhs = mk_const(interp, name, 'P');
@@ -347,7 +347,7 @@
     ARGIN(const char *name), ARGMOD(SymReg *left), ARGIN(const char *constant))
 {
     SymReg *rhs;
-    SymReg *r[2];
+    SymReg *r[3];
     char   *const_name;
     const int ascii       = (*constant == '\'' || *constant == '"');
     char   *unquoted_name = str_dup(name + 1);
@@ -381,7 +381,7 @@
         if (!ascii)
             rhs->type |= VT_ENCODED;
 
-        rhs->usage    = U_FIXUP;
+        rhs->usage    = U_FIXUP | U_SUBID_LOOKUP;
     }
     else {
         rhs = mk_const(interp, const_name, 'P');
@@ -701,7 +701,7 @@
 %token <t> GOTO ARG IF UNLESS PNULL SET_RETURN SET_YIELD
 %token <t> ADV_FLAT ADV_SLURPY ADV_OPTIONAL ADV_OPT_FLAG ADV_NAMED ADV_ARROW
 %token <t> NEW ADV_INVOCANT
-%token <t> NAMESPACE ENDNAMESPACE DOT_METHOD
+%token <t> NAMESPACE DOT_METHOD
 %token <t> SUB SYM LOCAL LEXICAL CONST
 %token <t> INC DEC GLOBAL_CONST
 %token <t> PLUS_ASSIGN MINUS_ASSIGN MUL_ASSIGN DIV_ASSIGN CONCAT_ASSIGN
@@ -742,7 +742,7 @@
 %type <i> if_statement unless_statement
 %type <i> func_assign get_results
 %type <i> opt_invocant
-%type <sr> target targetlist reg const var string result pcc_set_yield
+%type <sr> target targetlist reg const var result pcc_set_yield
 %type <sr> keylist keylist_force _keylist key maybe_ns
 %type <sr> vars _vars var_or_i _var_or_i label_op sub_label_op sub_label_op_c
 %type <i> pasmcode pasmline pasm_inst
@@ -992,7 +992,14 @@
          {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, $3);
          }
-     sub_proto '\n'            { IMCC_INFO(interp)->cur_call->pcc_sub->pragma = $5; }
+     sub_proto '\n'
+        {
+          IMCC_INFO(interp)->cur_call->pcc_sub->pragma = $5;
+          if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid) {
+            IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup(
+            IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->name);
+          }
+        }
      sub_params
      sub_body  ESUB            { $$ = 0; IMCC_INFO(interp)->cur_call = NULL; }
    ;
@@ -1107,15 +1114,10 @@
          {
            $$ = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
-           /*
-           IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup_remove_quotes($3);
-           mem_sys_free($3);
-           */
          }
    | SUBID '(' any_string ')'
          {
            $$ = 0;
-           /* IMCC_INFO(interp)->cur_unit->subid = $3; */
            IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, $3, 'S');
            IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup_remove_quotes($3);
            mem_sys_free($3);
@@ -1457,7 +1459,7 @@
    | MACRO '\n'                { $$ = 0; }
    | FILECOMMENT               { $$ = 0; }
    | LINECOMMENT               { $$ = 0; }
-   | location_directive            { $$ = 0; }
+   | location_directive        { $$ = 0; }
    ;
 
 labels:
@@ -1526,8 +1528,6 @@
 labeled_inst:
      assignment
    | conditional_statement
-   | NAMESPACE IDENTIFIER      { push_namespace(interp, $2); mem_sys_free($2); }
-   | ENDNAMESPACE IDENTIFIER   { pop_namespace(interp, $2); mem_sys_free($2); }
    | LOCAL { is_def=1; } type id_list
          {
            IdList *l = $4;
@@ -2061,10 +2061,6 @@
    | USTRINGC                  { $$ = mk_const(interp, $1, 'U'); mem_sys_free($1); }
    ;
 
-string:
-     SREG                      { $$ = mk_symreg(interp, $1, 'S'); mem_sys_free($1); }
-   | STRINGC                   { $$ = mk_const(interp, $1, 'S');  mem_sys_free($1); }
-   ;
 
 
 /* The End */

Modified: branches/calling_conventions/compilers/imcc/imclexer.c
==============================================================================
--- branches/calling_conventions/compilers/imcc/imclexer.c	(original)
+++ branches/calling_conventions/compilers/imcc/imclexer.c	Sat Dec 13 19:46:32 2008
@@ -367,8 +367,8 @@
     *yy_cp = '\0'; \
     yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 149
-#define YY_END_OF_BUFFER 150
+#define YY_NUM_RULES 148
+#define YY_END_OF_BUFFER 149
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -376,124 +376,123 @@
     flex_int32_t yy_verify;
     flex_int32_t yy_nxt;
     };
-static yyconst flex_int16_t yy_accept[1057] =
+static yyconst flex_int16_t yy_accept[1048] =
     {   0,
         0,    0,    0,    0,    0,    0,   15,   15,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        3,    3,  150,  136,  135,   10,  135,  136,  136,   11,
-      136,  136,  136,  136,  136,  136,  116,  136,   95,  136,
-      120,  120,  136,   87,  136,   89,  134,  134,  134,  134,
-      134,  134,  134,  134,  136,  136,   13,  135,  135,  136,
-      136,  136,  136,  134,   13,  148,  143,  138,  143,  148,
-      148,  148,  148,  148,  120,  120,  148,  146,  146,  146,
-      142,  142,   13,   15,   16,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,  149,  136,    8,    8,
-
-      136,  136,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    5,  136,    9,  136,  136,  136,  136,  136,
-      120,  120,  136,  136,  136,  136,   12,  136,  136,  136,
-      136,  136,  120,  120,  136,  136,  136,  149,    1,  149,
-      149,  149,  149,  149,  120,  120,  149,  149,  149,    3,
+        3,    3,  149,  135,  134,   10,  134,  135,  135,   11,
+      135,  135,  135,  135,  135,  135,  115,  135,   94,  135,
+      119,  119,  135,   86,  135,   88,  133,  133,  133,  133,
+      133,  133,  133,  133,  135,  135,   13,  134,  134,  135,
+      135,  135,  135,  133,   13,  147,  142,  137,  142,  147,
+      147,  147,  147,  147,  119,  119,  147,  145,  145,  145,
+      141,  141,   13,   15,   16,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,  148,  135,    8,    8,
+
+      135,  135,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    5,  135,    9,  135,  135,  135,  135,  135,
+      119,  119,  135,  135,  135,  135,   12,  135,  135,  135,
+      135,  135,  119,  119,  135,  135,  135,  148,    1,  148,
+      148,  148,  148,  148,  119,  119,  148,  148,  148,    3,
         2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,  135,    0,   10,   92,    0,  125,    0,  132,  132,
-      132,  132,  132,  101,   84,  104,    0,   93,   99,    0,
-      120,   97,   98,   96,  119,  110,  118,  118,  118,  118,
-      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+        3,  134,    0,   10,   91,    0,  124,    0,  131,  131,
+      131,  131,  131,  100,   83,  103,    0,   92,   98,    0,
+      119,   96,   97,   95,  118,  109,  117,  117,  117,  117,
+      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
 
-      118,  118,  102,  100,  119,    0,    0,  124,    0,    0,
+      117,  117,  101,   99,  118,    0,    0,  123,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   81,   88,   91,   62,   90,   82,  115,    0,  134,
-      117,  133,  134,   73,  134,  134,  134,  134,  134,  134,
-      134,  105,   85,  106,   86,  135,  118,  118,  118,  118,
-      118,  118,    0,    0,    0,    0,  143,  138,  143,    0,
-        0,    0,  147,  147,  147,  147,  146,    0,  144,  146,
-      142,  142,   15,   16,   15,   15,   15,   15,   15,   15,
+        0,   80,   87,   90,   62,   89,   81,  114,    0,  133,
+      116,  132,  133,   72,  133,  133,  133,  133,  133,  133,
+      133,  104,   84,  105,   85,  134,  117,  117,  117,  117,
+      117,  117,    0,    0,    0,    0,  142,  137,  142,    0,
+        0,    0,  146,  146,  146,  146,  145,    0,  143,  145,
+      141,  141,   15,   16,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,    0,    0,    8,    0,    4,    4,
 
         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
         4,    4,    4,    4,    4,    4,    0,    9,    0,    0,
-        0,  125,    0,    0,    0,    0,  120,  119,    0,    0,
-      119,    0,    0,  124,    0,    0,    0,    0,    0,    0,
-        0,   12,    0,    0,    0,  125,    0,    0,    0,    0,
-      120,  119,    0,    0,  119,    0,    0,  124,    0,    0,
-        0,    0,    0,    0,    0,    1,    0,    0,    0,  125,
-        0,    0,    0,    0,  120,  119,    0,    0,  119,    0,
-        0,  124,    0,    0,    0,    0,    0,    0,    3,    2,
+        0,  124,    0,    0,    0,    0,  119,  118,    0,    0,
+      118,    0,    0,  123,    0,    0,    0,    0,    0,    0,
+        0,   12,    0,    0,    0,  124,    0,    0,    0,    0,
+      119,  118,    0,    0,  118,    0,    0,  123,    0,    0,
+        0,    0,    0,    0,    0,    1,    0,    0,    0,  124,
+        0,    0,    0,    0,  119,  118,    0,    0,  118,    0,
+        0,  123,    0,    0,    0,    0,    0,    0,    3,    2,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
 
-        3,    3,    3,    3,    3,    3,    3,    3,    3,   94,
-      128,  129,  131,  130,    0,  118,  118,  118,  118,  118,
-      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
-      118,  118,  118,  118,  118,  118,  118,  118,  118,  103,
-      119,  122,    0,  119,  123,  121,    0,    0,    0,    0,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,   93,
+      127,  128,  130,  129,    0,  117,  117,  117,  117,  117,
+      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
+      117,  117,  117,  117,  117,  117,  117,  117,  117,  102,
+      118,  121,    0,  118,  122,  120,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  108,  107,   83,  114,
-        0,    0,  133,  134,   76,   78,  134,   77,   79,  134,
-      134,  134,  118,  118,    0,    0,  139,  145,  141,  147,
-      147,  147,  147,  147,  146,   15,   15,   15,   15,   15,
+        0,    0,    0,    0,    0,    0,  107,  106,   82,  113,
+        0,    0,  132,  133,   75,   77,  133,   76,   78,  133,
+      133,  133,  117,  117,    0,    0,  138,  144,  140,  146,
+      146,  146,  146,  146,  145,   15,   15,   15,   15,   15,
 
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
         0,    0,    0,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    0,    0,    0,  119,  122,
-        0,  119,  123,  121,    0,    0,    0,    0,    0,    0,
-        0,    0,  119,  122,    0,  119,  123,  121,    0,    0,
-        0,    0,    0,    0,    0,    0,  119,  122,    0,  119,
-      123,  121,    0,    0,    0,    0,    0,    3,    3,    3,
+        4,    4,    4,    4,    4,    0,    0,    0,  118,  121,
+        0,  118,  122,  120,    0,    0,    0,    0,    0,    0,
+        0,    0,  118,  121,    0,  118,  122,  120,    0,    0,
+        0,    0,    0,    0,    0,    0,  118,  121,    0,  118,
+      122,  120,    0,    0,    0,    0,    0,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    0,  119,   65,  118,  118,  118,   22,  118,  118,
-      118,  118,  118,   19,  118,  118,  118,  118,  118,  118,
+        3,    0,  118,   65,  117,  117,  117,   22,  117,  117,
+      117,  117,  117,   19,  117,  117,  117,  117,  117,  117,
 
-      118,  118,  118,  118,  118,   21,  118,  118,    0,    0,
+      117,  117,  117,  117,  117,   21,  117,  117,    0,    0,
         0,    0,    0,    0,   43,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  126,
-        0,    0,  109,    0,  127,    0,    0,    0,   72,   75,
-      134,  134,  134,  134,  141,  147,  147,  147,  147,  146,
-      146,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  125,
+        0,    0,  108,    0,  126,    0,    0,    0,   71,   74,
+      133,  133,  133,  133,  140,  146,  146,  146,  146,  145,
+      145,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,    0,    0,    0,
         0,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    0,  119,    0,    0,    0,    0,  126,    0,    0,
-        0,    0,    0,  127,    0,    0,    0,    0,    0,    0,
+        4,    0,  118,    0,    0,    0,    0,  125,    0,    0,
+        0,    0,    0,  126,    0,    0,    0,    0,    0,    0,
 
-      119,    0,    0,    0,    0,  126,    0,    0,    0,    0,
-        0,  127,    0,    0,    0,    0,    0,    0,  119,    0,
-        0,    0,    0,  126,    0,    0,    0,    0,    0,  127,
+      118,    0,    0,    0,    0,  125,    0,    0,    0,    0,
+        0,  126,    0,    0,    0,    0,    0,    0,  118,    0,
+        0,    0,    0,  125,    0,    0,    0,    0,    0,  126,
         0,    0,    0,    0,    0,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-      118,  118,   25,  118,  118,  118,   18,  118,  118,  118,
-      118,   17,  118,  118,  118,  118,  118,  118,  118,  118,
-      118,  118,  118,  118,   41,   57,    0,   38,    0,    0,
-       37,   36,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  134,  134,  134,  134,  137,   18,
-
-      147,   17,  146,  146,   15,   15,   15,   15,   14,   15,
-       18,   17,    0,    0,    4,    4,    4,    4,   18,   17,
-        0,    0,   18,   17,    0,    0,   18,   17,    0,    0,
-        3,    3,    3,    3,  118,  118,   69,  118,  118,  118,
-      118,  118,  118,  118,  118,  118,   68,  112,  118,  118,
-      118,   71,  118,  118,  118,  118,  118,  118,   51,    0,
-        0,    0,    0,   35,   61,    0,    0,    0,   42,    0,
-        0,   48,    0,    0,  134,  134,   80,   74,  147,  146,
-      146,   15,   15,    0,    0,    4,    4,    0,    0,    0,
-        0,    0,    0,    3,    3,  118,  118,  118,  118,  118,
-
-      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
-      118,   53,  118,  118,  118,  118,    0,    0,    0,   34,
-        0,    0,    0,    0,   58,    0,   44,  134,  134,  140,
-      146,  146,   15,   15,    0,    0,    4,    4,    0,    0,
-        0,    0,    0,    0,    3,    3,   66,  118,  118,  118,
-      118,  118,  118,  118,  118,  118,  113,  118,   56,  118,
-      118,  118,  118,   29,   20,  118,  118,  118,    0,    0,
-        0,   45,    0,    0,    0,    0,    0,    7,   15,    7,
-        4,    4,    0,    7,    0,    7,    0,    7,    3,    3,
-      118,  118,  118,   24,  118,  118,  118,  118,  118,   28,
-
-      118,  118,  118,   26,  118,  118,   55,    0,    0,   63,
-       60,   59,   40,    0,    6,    6,    6,    6,    6,    3,
-      118,  118,  118,  118,   33,  118,  118,  118,  118,   27,
-       64,  118,   52,   39,    0,    0,   23,  118,  118,   31,
-      118,   49,  118,  118,   54,   47,   46,  118,   32,  118,
-       50,   70,  111,   30,   67,    0
+      117,  117,   25,  117,  117,   18,  117,  117,  117,  117,
+       17,  117,  117,  117,  117,  117,  117,  117,  117,  117,
+      117,  117,  117,   41,   57,    0,   38,    0,    0,   37,
+       36,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  133,  133,  133,  133,  136,   18,  146,
+
+       17,  145,  145,   15,   15,   15,   15,   14,   15,   18,
+       17,    0,    0,    4,    4,    4,    4,   18,   17,    0,
+        0,   18,   17,    0,    0,   18,   17,    0,    0,    3,
+        3,    3,    3,  117,  117,   68,  117,  117,  117,  117,
+      117,  117,  117,  117,   67,  111,  117,  117,  117,   70,
+      117,  117,  117,  117,  117,  117,   51,    0,    0,    0,
+        0,   35,   61,    0,    0,    0,   42,    0,    0,   48,
+        0,    0,  133,  133,   79,   73,  146,  145,  145,   15,
+       15,    0,    0,    4,    4,    0,    0,    0,    0,    0,
+        0,    3,    3,  117,  117,  117,  117,  117,  117,  117,
+
+      117,  117,  117,  117,  117,  117,  117,  117,   53,  117,
+      117,  117,  117,    0,    0,    0,   34,    0,    0,    0,
+        0,   58,    0,   44,  133,  133,  139,  145,  145,   15,
+       15,    0,    0,    4,    4,    0,    0,    0,    0,    0,
+        0,    3,    3,   66,  117,  117,  117,  117,  117,  117,
+      117,  117,  112,  117,   56,  117,  117,  117,  117,   29,
+       20,  117,  117,  117,    0,    0,    0,   45,    0,    0,
+        0,    0,    0,    7,   15,    7,    4,    4,    0,    7,
+        0,    7,    0,    7,    3,    3,  117,  117,  117,   24,
+      117,  117,  117,  117,   28,  117,  117,  117,   26,  117,
+
+      117,   55,    0,    0,   63,   60,   59,   40,    0,    6,
+        6,    6,    6,    6,    3,  117,  117,  117,  117,   33,
+      117,  117,  117,   27,   64,  117,   52,   39,    0,    0,
+       23,  117,  117,   31,   49,  117,  117,   54,   47,   46,
+      117,   32,   50,   69,  110,   30,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -539,42 +538,42 @@
        10,   10,   10,   10,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1214] =
+static yyconst flex_int16_t yy_base[1205] =
     {   0,
-        0, 4280,   65, 4279,  131,   82,  197, 4278,  263,    0,
+        0, 4201,   65, 4200,  131,   82,  197, 4199,  263,    0,
       329,    0,   73,   78,  395,    0,  461,    0,  527,    0,
-      593,    0, 4302, 7508,   99, 7508,  107, 4276,   65, 7508,
-       84, 4275,  103, 4287,   83,  643, 7508,  650,  659,  648,
+      593,    0, 4223, 7508,   99, 7508,  107, 4197,   65, 7508,
+       84, 4196,  103, 4208,   83,  643, 7508,  650,  659,  648,
       707,  735,  740,   49,  101,  657,  716,  755,  726,  750,
       763,  790,  795,  735,  720,  674,  705,  758,  812,  805,
-      830,  778, 4204,  829, 7508, 7508,  832, 7508,  844,  727,
-      823, 4215,  845,  850,    0,  883, 4202,  773,  899,  861,
-      888,  906, 7508,    0, 7508, 4222,  800, 4212,  906,  911,
-      946,  906, 4199, 1009, 1075, 4178, 7508,  932,  917, 1020,
+      830,  778, 4195,  829, 7508, 7508,  832, 7508,  844,  727,
+      823, 4206,  845,  850,    0,  883, 4193,  773,  899,  861,
+      888,  906, 7508,    0, 7508, 4213,  800, 4203,  906,  911,
+      946,  906, 4190, 1009, 1075, 4169, 7508,  932,  917, 1020,
 
-     4198,   83,    0,    0,  943,  974,  951, 1125,  945, 4196,
+     4189,   83,    0,    0,  943,  974,  951, 1125,  945, 4187,
      1188, 1254,  803,  744, 7508,  780,  937,  944, 1026, 1092,
      1318, 1094,  983, 1381, 1447,  847, 7508,  895, 1054, 1000,
      1048, 1105, 1511, 1124, 1114, 1574, 1640, 1002, 7508, 1052,
      1125, 1059, 1204, 1282, 1704, 1141, 1206, 1767, 1833,    0,
-     7508, 4216,  846, 4206, 1085, 1196, 1883, 1198, 4193, 1946,
+     7508, 4207,  846, 4197, 1085, 1196, 1883, 1198, 4184, 1946,
      2012, 1227, 1170, 7508, 7508,  872, 7508,    0,    0, 1229,
-     1254, 1262, 1268, 7508, 7508, 7508, 4204, 7508, 7508, 1276,
-     1296, 7508, 7508, 7508, 1381, 7508,    0, 4181, 4168,  936,
-     4160, 4162,  687, 4158, 1112,  766,  777,  872, 4164,  897,
-
-     4167, 4158, 4182, 7508, 1393, 1040, 1346, 7508, 1115,    0,
-     4153, 4154, 1020,  631, 1263,  986,  808, 4149,   17, 4149,
-     4142, 1299, 7508, 7508, 7508, 7508, 1094, 4177, 4176, 1160,
-     4191, 1354, 1408, 1318, 1409, 1335, 1327, 1419, 1410, 1420,
-     1465, 7508, 7508, 7508, 7508, 1231, 4143, 4143, 1192, 4153,
-     4152, 4149, 1097, 4134, 4131,  952, 1480, 7508, 1487, 4163,
-     1475,    0,    0, 4132, 4134, 1131, 1015, 4176, 1483, 1421,
-     1505, 1515,    0, 7508, 1057,    0,    0, 4168, 1502, 1585,
-     1516, 4108, 4107, 1590, 1166, 1539,    0, 1272, 2060, 1233,
-     2107, 2173, 2239, 4096, 4105, 4104, 1651,  938,    0, 1522,
+     1254, 1262, 1268, 7508, 7508, 7508, 4195, 7508, 7508, 1276,
+     1296, 7508, 7508, 7508, 1381, 7508,    0, 4172, 4159,  936,
+     4150, 4152,  687, 4148, 1112,  766,  777,  872, 4154,  897,
+
+     4157, 4148, 4172, 7508, 1393, 1040, 1346, 7508, 1115,    0,
+     4143, 4144, 1020,  631, 1263,  986,  808, 4140,   17, 4140,
+     4133, 1299, 7508, 7508, 7508, 7508, 1094, 4168, 4163, 1160,
+     4178, 1354, 1408, 1318, 1409, 1335, 1327, 1419, 1410, 1420,
+     1465, 7508, 7508, 7508, 7508, 1231, 4130, 4130, 1192, 4138,
+     4116, 4113, 1097, 4098, 4095,  952, 1480, 7508, 1487, 4131,
+     1475,    0,    0, 4100, 4102, 1131, 1015, 4144, 1483, 1421,
+     1505, 1515,    0, 7508, 1057,    0,    0, 4138, 1502, 1585,
+     1516, 4099, 4098, 1590, 1166, 1539,    0, 1272, 2060, 1233,
+     2107, 2173, 2239, 4084, 4093, 4092, 1651,  938,    0, 1522,
 
-        0, 1547, 1657, 1674, 4103, 4102, 1709, 1200, 1602,    0,
+        0, 1547, 1657, 1674, 4091, 4090, 1709, 1200, 1602,    0,
      1389, 2287, 1300, 2334, 2400, 2466, 1328, 7508, 1342, 1622,
      1695, 1352, 1437, 1539, 1560, 1697, 2530, 1783, 1523, 1545,
      1850, 1733, 1795, 1472, 1741, 2574, 1815, 2621, 2687, 2753,
@@ -583,236 +582,234 @@
      1882, 2908, 2974, 3040, 1629, 7508, 1631, 1871, 1970, 1634,
      1685, 1753, 1932, 1975, 3104, 1985, 1817, 1917, 2029, 2036,
      2050, 1791, 2041, 3148, 2080, 3195, 3261, 3327,    0, 7508,
-     1504,    0,    0, 4139, 1804, 2118, 2123, 4100, 4099, 2239,
+     1504,    0,    0, 4123, 1804, 2118, 2123, 4084, 4083, 2239,
 
      1777, 2077,    0, 1843, 3375, 1589, 3422, 3488, 3554, 1826,
-     1979, 2107, 2135, 2139, 2252,    0, 4114, 4096, 4092, 4089,
-     4096, 4089, 4076, 4080,  992, 4070, 4079, 1266, 4087, 4071,
-     4077, 4078, 4070, 4082, 4066, 4065, 4080, 4072, 4005, 7508,
-     2256, 1781, 2146, 2261, 2022,    0, 3996, 4007, 3996, 2007,
-     3984, 4004, 3995, 3985, 3992, 3990, 3995, 3981, 3980, 3980,
-     3977, 3993, 3985, 3992, 1848, 4021, 7508, 7508, 4007, 7508,
-     1861, 4008, 2278, 2287, 2302, 2303, 2304, 2305, 2345, 2347,
-     2477, 2478, 3986, 3987, 3978, 4003, 7508, 2269,    0,    0,
-     3980, 3973, 3980, 3969, 2346, 2357, 3970, 3967, 2345, 1923,
+     1979, 2107, 2135, 2139, 2252,    0, 4098, 4083, 4079, 4076,
+     4083, 4076, 4067, 4071,  992, 4061, 4070, 1266, 4078, 3992,
+     3998, 3999, 3991, 4003, 3987, 3986, 4001, 3993, 3996, 7508,
+     2256, 1781, 2146, 2261, 2022,    0, 3987, 3998, 3987, 2007,
+     3975, 3995, 3986, 3976, 3983, 3981, 3986, 3972, 3971, 3971,
+     3968, 3983, 3975, 3982, 1848, 4011, 7508, 7508, 3997, 7508,
+     1861, 3998, 2278, 2287, 2302, 2303, 2304, 2305, 2345, 2347,
+     2477, 2478, 3976, 3977, 3968, 3994, 7508, 2269,    0,    0,
+     3971, 3964, 3971, 3956, 2346, 2357, 3957, 3954, 2345, 1923,
 
-     2361, 2365, 2130, 3602, 1888, 4007, 1909, 3649, 3715, 3959,
-     3966, 3963, 1302, 2483, 3964, 3961, 2489, 1956, 2493, 2501,
+     2361, 2365, 2130, 3602, 1888, 3994, 1909, 3649, 3715, 3944,
+     3930, 3927, 1302, 2483, 3928, 3925, 2489, 1956, 2493, 2501,
      2303, 3763, 2533, 3810, 3876, 2551, 2043, 2070, 2637, 2538,
      2565, 2578, 2571, 3940, 2602, 2159, 2608, 3987, 4053, 2649,
      2492, 2513, 2769, 2777, 2781, 2803, 2807, 4117, 2791, 2525,
      2801, 4164, 4230, 2839, 2559, 2535, 2924, 2810, 2853, 2865,
-     2829, 4294, 2889, 2669, 2895, 4341, 4407, 2936, 3958, 3955,
-     2917, 1971, 2655, 2857, 2369, 4455, 2027, 3995, 2094, 4502,
-     4568, 2940, 2945, 3965, 3953, 3930, 3922, 1050, 3933, 3937,
-     3934, 3925, 3921,    0, 3928, 3928, 3930, 3914, 3918, 3920,
-
-     3924, 3922, 3922, 3898, 3916,    0, 3905, 3904, 3901, 3894,
-     3906, 3892, 3891, 3895, 7508, 3903, 3894, 3897, 3886, 3837,
-     3821, 1081, 3827, 3813, 3814, 3820, 3813, 3825, 2260, 7508,
-        0, 3855, 7508, 2478, 7508,    0, 3843, 3858, 3051, 3052,
-     3053, 3061, 3062, 3070,    0, 3812, 3817, 3816, 3815, 2530,
-     2759, 3068, 3075, 3814, 3813, 2519,    0,    0, 3846, 2549,
-        0,    0, 4634, 3850, 4700, 4766, 1999, 3810, 3809, 1567,
-     1580, 3097, 3110, 3808, 3807, 2648,    0, 4832, 3845, 4898,
+     2829, 4294, 2889, 2669, 2895, 4341, 4407, 2936, 3926, 3923,
+     2917, 1971, 2655, 2857, 2369, 4455, 2027, 3963, 2094, 4502,
+     4568, 2940, 2945, 3933, 3923, 3921, 3913, 3926, 3920, 3924,
+     3921, 3912, 3904,    0, 3911, 3911, 3913, 3897, 3904, 3906,
+
+     3910, 3908, 3908, 3888, 3906,    0, 3895, 3894, 3830, 3815,
+     3827, 3813, 3812, 3816, 7508, 3824, 3815, 3818, 3807, 3819,
+     3811, 1081, 3817, 3803, 3804, 3810, 3803, 3815, 2260, 7508,
+        0, 3845, 7508, 2478, 7508,    0, 3833, 3848, 3051, 3052,
+     3053, 3061, 3062, 3070,    0, 3802, 3807, 3806, 3805, 2530,
+     2759, 3068, 3075, 3803, 3802, 2519,    0,    0, 3835, 2549,
+        0,    0, 4634, 3839, 4700, 4766, 1999, 3799, 3798, 1567,
+     1580, 3097, 3110, 3797, 3796, 2648,    0, 4832, 3834, 4898,
      4964, 3136, 3140, 2604, 2842, 3097, 3106, 2082, 2392, 2937,
-     3069, 3176, 3182, 2610, 2675, 5030, 2863, 5096, 3801, 3144,
+     3069, 3176, 3182, 2610, 2675, 5030, 2863, 5096, 3790, 3144,
 
      3211, 3138, 3171, 3351, 3358, 2681, 2783, 3079, 3169, 3366,
-     3368, 2813, 2891, 5162, 2965, 5228, 3799, 3220, 3224, 3343,
+     3368, 2813, 2891, 5162, 2965, 5228, 3789, 3220, 3224, 3343,
      3353, 3373, 3375, 2897, 3132, 3222, 3244, 3446, 3451, 3150,
-     3184, 5294, 3246, 5360, 3798, 3390, 3422, 3801, 3800, 2642,
-        0,    0, 3833, 2890,    0,    0, 5426, 3837, 5492, 5558,
-     3791, 3789,    0, 3782, 3194, 3798,    0, 3782, 3796, 3777,
-     3788,    0, 3780, 3779, 3775, 3785, 3759, 3760, 3751, 3744,
-     3744, 3195, 3756, 3754, 7508, 7508, 3753, 7508, 3755, 3752,
-     7508, 7508, 3741, 3744, 3745, 3730, 3741, 3733, 3729, 3674,
-     3658, 3667, 3651, 3659, 3365, 3565, 3566, 3567,    0,    0,
-
-     3658,    0, 3575, 3576,    0,    0, 5624, 5690, 7508, 3705,
-     7508, 7508,  883, 1736,    0,    0, 5756, 5822, 3251, 3345,
-     5888, 1318, 3356, 3360, 3333,  752, 3397, 3448, 3406, 1606,
-        0,    0, 3409, 1701, 3665, 3665,    0, 3663, 3658, 3653,
-     3650, 3655, 3648, 3648, 3629, 3620,    0, 3627, 3599, 3583,
-     3594,    0, 3567, 3559, 3552, 3562, 3537, 3543,    0, 3523,
-     3504, 3437, 3431, 7508, 7508, 3368, 3356, 3349, 7508, 3336,
-     3323, 7508, 3339, 3322, 3587, 3588, 3452, 3454, 3462, 1922,
-     3570, 1392, 1629, 1644, 1760, 1844, 1934, 1562, 1676, 1370,
-     1384, 1506, 1762, 2247, 2249, 3288, 3421, 3206, 3177, 3183,
-
-     3165, 3124, 3127, 3103, 3092, 3090, 3083, 3080, 3078, 3051,
-     3055,    0, 3044, 3000, 3010, 2920, 2900, 2880, 2818, 7508,
-     2798, 2802, 2793, 2731, 7508, 2733, 7508, 3660, 3672, 3467,
-     3579, 3612, 1217, 2023, 1709, 2525, 2787, 3361, 2090, 2095,
-     1309, 3433, 3565, 3602, 3632, 3634,    0, 2727, 2634, 2616,
-     2603, 2583, 2586, 2543, 2523, 2525,    0, 2502,    0, 2490,
-     2456, 2454, 2437,    0,    0, 2422, 2422, 2341, 2313, 2307,
-     2291, 7508, 2236, 2219, 2200, 2185, 2657, 2171, 2847, 2165,
-     2946, 2131, 3477, 3637, 3687, 3675, 3693, 3682, 3107, 2105,
-     2012, 1950, 1947,    0, 1928, 1917, 1851, 1842, 1834,    0,
-
-     1799, 1798, 1720,    0, 1692, 1494,    0, 1440, 1412, 7508,
-     7508, 7508, 7508, 1376, 7508,    0, 3470, 3597, 3602,    0,
-     1329, 1268, 1248, 1186,    0, 1140, 1092, 1058, 1052,    0,
-        0, 1025,    0, 7508,  978,  953,    0,  867,  850,    0,
-      813,  786,  709,  615,    0, 7508, 7508,  608,    0,   56,
-        0,    0,    0,    0,    0, 7508, 5954, 5960, 5970, 5978,
-     5982, 5990, 5997, 6008, 6019, 6030, 6041, 6048, 6059, 6070,
-     6081, 6092, 6103, 6114, 6125, 6136, 6147, 6158, 6169, 6180,
-     6191, 6202, 6213, 6224, 6235, 6246, 6257, 6263, 6273, 6279,
-     6285, 6290, 6298, 6307, 6313, 6317, 6323, 6330, 6341, 6352,
-
-     6363, 6374, 6385, 6396, 6407, 6418, 6429, 6440, 6451, 6462,
-     6473, 6484, 6495, 6506, 6517, 6528, 6539, 6550, 6561, 6572,
-     6583, 6589, 6594, 6600, 6609, 6620, 6631, 6638, 6646, 6652,
-     6658, 6664, 6671, 6682, 6693, 6704, 6715, 6726, 6733, 6744,
-     6755, 6766, 6777, 6788, 6799, 6810, 6821, 6832, 6843, 6854,
-     6865, 6876, 6887, 6898, 6909, 6920, 6931, 6942, 6953, 6964,
-     6975, 6986, 6992, 7003, 7014, 7025, 7032, 7040, 7046, 7052,
-     7059, 7070, 7081, 7092, 7103, 7114, 7125, 7132, 7143, 7154,
-     7165, 7176, 7187, 7198, 7209, 7220, 7231, 7242, 7253, 7264,
-     7275, 7286, 7297, 7308, 7319, 7330, 7341, 7352, 7363, 7374,
+     3184, 5294, 3246, 5360, 3788, 3390, 3422, 3791, 3786, 2642,
+        0,    0, 3819, 2890,    0,    0, 5426, 3823, 5492, 5558,
+     3777, 3773,    0, 3758, 3194,    0, 3747, 3761, 3742, 3757,
+        0, 3749, 3748, 3744, 3756, 3738, 3751, 3742, 3732, 3732,
+     3195, 3744, 3742, 7508, 7508, 3741, 7508, 3676, 3669, 7508,
+     7508, 3658, 3661, 3665, 3650, 3661, 3653, 3649, 3661, 3649,
+     3658, 3642, 3650, 3365, 3565, 3566, 3567,    0,    0, 3648,
+
+        0, 3575, 3576,    0,    0, 5624, 5690, 7508, 3690, 7508,
+     7508,  883, 1736,    0,    0, 5756, 5822, 3251, 3345, 5888,
+     1318, 3356, 3360, 3333,  752, 3397, 3448, 3406, 1606,    0,
+        0, 3409, 1701, 3629, 3629,    0, 3626, 3597, 3588, 3590,
+     3576, 3567, 3567, 3558,    0, 3546, 3541, 3518, 3515,    0,
+     3419, 3423, 3368, 3361, 3352, 3348,    0, 3337, 3332, 3326,
+     3298, 7508, 7508, 3200, 3185, 3176, 7508, 3157, 3118, 7508,
+     3125, 3103, 3587, 3588, 3452, 3454, 3462, 1922, 3570, 1057,
+     1392, 1644, 1760, 1629, 1844, 1562, 1676, 1370, 1384, 1506,
+     1762, 2247, 2249, 3090, 3421, 3082, 3068, 3076, 3062, 3070,
+
+     3066, 3049, 3055, 3048, 3017, 3014, 2920, 2899,    0, 2876,
+     2812, 2816, 2793, 2793, 2739, 2721, 7508, 2705, 2638, 2624,
+     2602, 7508, 2602, 7508, 3660, 3672, 3467, 3579, 3612, 1217,
+     1975, 1709, 2525, 2787, 3361, 2090, 2095, 1309, 3433, 3565,
+     3602, 3632, 3634,    0, 2595, 2555, 2533, 2528, 2501, 2493,
+     2447, 2444,    0, 2429,    0, 2428, 2422, 2348, 2321,    0,
+        0, 2293, 2299, 2233, 2211, 2209, 2183, 7508, 2128, 2119,
+     2081, 2053, 1980, 2071, 2657, 2058, 2847, 2004, 3477, 3637,
+     3687, 3675, 3693, 3682, 2946, 1988, 1911, 1847, 1847,    0,
+     1830, 1807, 1798, 1713,    0, 1696, 1488, 1440,    0, 1409,
+
+     1377,    0, 1334, 1274, 7508, 7508, 7508, 7508, 1253, 7508,
+        0, 3470, 3597, 3602,    0, 1188, 1122, 1100, 1063,    0,
+     1032, 1020,  967,    0,    0,  948,    0, 7508,  877,  847,
+        0,  800,  799,    0,  710,  615,  602,    0, 7508, 7508,
+       49,    0,    0,    0,    0,    0, 7508, 5954, 5960, 5970,
+     5978, 5982, 5990, 5997, 6008, 6019, 6030, 6041, 6048, 6059,
+     6070, 6081, 6092, 6103, 6114, 6125, 6136, 6147, 6158, 6169,
+     6180, 6191, 6202, 6213, 6224, 6235, 6246, 6257, 6263, 6273,
+     6279, 6285, 6290, 6298, 6307, 6313, 6317, 6323, 6330, 6341,
+     6352, 6363, 6374, 6385, 6396, 6407, 6418, 6429, 6440, 6451,
+
+     6462, 6473, 6484, 6495, 6506, 6517, 6528, 6539, 6550, 6561,
+     6572, 6583, 6589, 6594, 6600, 6609, 6620, 6631, 6638, 6646,
+     6652, 6658, 6664, 6671, 6682, 6693, 6704, 6715, 6726, 6733,
+     6744, 6755, 6766, 6777, 6788, 6799, 6810, 6821, 6832, 6843,
+     6854, 6865, 6876, 6887, 6898, 6909, 6920, 6931, 6942, 6953,
+     6964, 6975, 6986, 6992, 7003, 7014, 7025, 7032, 7040, 7046,
+     7052, 7059, 7070, 7081, 7092, 7103, 7114, 7125, 7132, 7143,
+     7154, 7165, 7176, 7187, 7198, 7209, 7220, 7231, 7242, 7253,
+     7264, 7275, 7286, 7297, 7308, 7319, 7330, 7341, 7352, 7363,
+     7374, 7385, 7396, 7407, 7413, 7421, 7427, 7434, 7445, 7456,
 
-     7385, 7396, 7407, 7413, 7421, 7427, 7434, 7445, 7456, 7463,
-     7474, 7485, 7496
+     7463, 7474, 7485, 7496
     } ;
 
-static yyconst flex_int16_t yy_def[1214] =
+static yyconst flex_int16_t yy_def[1205] =
     {   0,
-     1056,    1,    1,    3, 1056,    5, 1056,    7, 1056,    9,
-     1056,   11,    9,    9, 1056,   15, 1056,   17, 1056,   19,
-     1056,   21, 1056, 1056, 1056, 1056, 1056, 1056, 1057, 1056,
-     1058, 1056, 1056, 1059, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1060, 1060, 1060, 1060,
-     1060, 1060, 1060, 1060, 1056, 1056, 1056, 1056, 1056, 1056,
-       39, 1056, 1056, 1060, 1056, 1056, 1056, 1056, 1056, 1057,
-     1061, 1059, 1056, 1062,   41, 1056, 1056, 1063, 1063, 1063,
-     1056, 1056, 1056, 1064, 1056, 1064, 1065, 1066, 1064, 1064,
-     1064,   91, 1064, 1067, 1067, 1064, 1056, 1056,   41, 1056,
-
-     1068, 1068, 1069, 1069, 1070, 1069, 1069, 1069,  108, 1069,
-     1071, 1071, 1057, 1072, 1056, 1072, 1073, 1074, 1072, 1072,
-     1072,  121, 1072, 1075, 1075, 1076, 1056, 1076, 1077, 1078,
-     1076, 1076, 1076,  133, 1076, 1079, 1079, 1080, 1056, 1080,
-     1081, 1082, 1080, 1080, 1080,  145, 1080, 1083, 1083, 1084,
-     1056, 1084, 1085, 1086, 1084, 1084, 1084,  157, 1084, 1087,
-     1087, 1056, 1056, 1056, 1056, 1057, 1056, 1057, 1088, 1088,
-     1088, 1088, 1088, 1056, 1056, 1056, 1089, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1090, 1090, 1090, 1090,
+     1047,    1,    1,    3, 1047,    5, 1047,    7, 1047,    9,
+     1047,   11,    9,    9, 1047,   15, 1047,   17, 1047,   19,
+     1047,   21, 1047, 1047, 1047, 1047, 1047, 1047, 1048, 1047,
+     1049, 1047, 1047, 1050, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1051, 1051, 1051, 1051,
+     1051, 1051, 1051, 1051, 1047, 1047, 1047, 1047, 1047, 1047,
+       39, 1047, 1047, 1051, 1047, 1047, 1047, 1047, 1047, 1048,
+     1052, 1050, 1047, 1053,   41, 1047, 1047, 1054, 1054, 1054,
+     1047, 1047, 1047, 1055, 1047, 1055, 1056, 1057, 1055, 1055,
+     1055,   91, 1055, 1058, 1058, 1055, 1047, 1047,   41, 1047,
+
+     1059, 1059, 1060, 1060, 1061, 1060, 1060, 1060,  108, 1060,
+     1062, 1062, 1048, 1063, 1047, 1063, 1064, 1065, 1063, 1063,
+     1063,  121, 1063, 1066, 1066, 1067, 1047, 1067, 1068, 1069,
+     1067, 1067, 1067,  133, 1067, 1070, 1070, 1071, 1047, 1071,
+     1072, 1073, 1071, 1071, 1071,  145, 1071, 1074, 1074, 1075,
+     1047, 1075, 1076, 1077, 1075, 1075, 1075,  157, 1075, 1078,
+     1078, 1047, 1047, 1047, 1047, 1048, 1047, 1048, 1079, 1079,
+     1079, 1079, 1079, 1047, 1047, 1047, 1080, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1081, 1081, 1081, 1081,
+     1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
+
+     1081, 1081, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1082,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1083, 1084,
+     1085, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084,
+     1084, 1047, 1047, 1047, 1047, 1047, 1081, 1081, 1081, 1081,
+     1081, 1081, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1086,
+     1086, 1087, 1088, 1088, 1088, 1088, 1089, 1085, 1089, 1089,
+     1047, 1047, 1090, 1047, 1091, 1090, 1091, 1092, 1090, 1090,
      1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
+     1093, 1047, 1093, 1090, 1047, 1047, 1047, 1083, 1094, 1095,
 
-     1090, 1090, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1091,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1092, 1093,
-     1094, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
-     1093, 1056, 1056, 1056, 1056, 1056, 1090, 1090, 1090, 1090,
-     1090, 1090, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1095,
-     1095, 1096, 1097, 1097, 1097, 1097, 1098, 1094, 1098, 1098,
-     1056, 1056, 1099, 1056, 1100, 1099, 1100, 1101, 1099, 1099,
-     1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
-     1102, 1056, 1102, 1099, 1056, 1056, 1056, 1092, 1103, 1104,
+     1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+     1094, 1094, 1094, 1096, 1047, 1096, 1097, 1047, 1097, 1098,
+     1098, 1097, 1098, 1099, 1099, 1097, 1097, 1097, 1097, 1097,
+     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1100, 1047, 1100,
+     1101, 1047, 1101, 1102, 1102, 1101, 1102, 1103, 1103, 1101,
+     1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
+     1101, 1104, 1047, 1104, 1105, 1047, 1105, 1106, 1106, 1105,
+     1106, 1107, 1107, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
+     1105, 1105, 1105, 1105, 1105, 1108, 1047, 1108, 1109, 1047,
+     1110, 1109, 1110, 1111, 1109, 1109, 1109, 1109, 1109, 1109,
+
+     1109, 1109, 1109, 1109, 1109, 1109, 1112, 1047, 1112, 1047,
+     1113, 1113, 1113, 1113, 1047, 1114, 1114, 1114, 1114, 1114,
+     1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
+     1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1047,
+     1047, 1047, 1047, 1047, 1047, 1115, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1116, 1117, 1047, 1047, 1047, 1047,
+     1118, 1119, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
+     1120, 1120, 1114, 1114, 1047, 1121, 1047, 1121, 1122, 1123,
+     1123, 1123, 1123, 1123, 1124, 1125, 1125, 1125, 1125, 1125,
+
+     1125, 1125, 1125, 1125, 1126, 1127, 1128, 1129, 1047, 1125,
+     1047, 1047, 1130, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
+     1131, 1131, 1132, 1133, 1047, 1134, 1134, 1134, 1134, 1134,
+     1134, 1134, 1134, 1134, 1135, 1136, 1137, 1138, 1047, 1139,
+     1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1140, 1141,
+     1142, 1143, 1047, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
+     1144, 1144, 1145, 1146, 1147, 1148, 1047, 1149, 1149, 1149,
+     1149, 1149, 1149, 1149, 1149, 1149, 1150, 1151, 1152, 1153,
+     1047, 1047, 1047, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
+     1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
+
+     1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1155, 1047,
+     1155, 1156, 1047, 1157, 1047, 1157, 1158, 1047, 1159, 1159,
+     1159, 1159, 1159, 1159, 1160, 1161, 1161, 1161, 1161, 1162,
+     1162, 1163, 1163, 1163, 1163, 1164, 1163, 1164, 1165, 1166,
+     1163, 1166, 1167, 1163, 1168, 1168, 1163, 1047, 1047, 1169,
+     1169, 1170, 1170, 1170, 1170, 1171, 1170, 1172, 1170, 1173,
+     1173, 1174, 1174, 1174, 1174, 1175, 1175, 1174, 1175, 1176,
+     1176, 1177, 1177, 1174, 1177, 1178, 1174, 1047,  698, 1179,
+
+     1179, 1179, 1179, 1180, 1180, 1179, 1180, 1181, 1181, 1182,
+     1182, 1179, 1182, 1183, 1179, 1047,  716, 1184, 1184, 1184,
+     1184, 1185, 1185, 1184, 1185, 1186, 1186, 1187, 1187, 1184,
+     1187, 1188, 1184, 1047,  734, 1189, 1189, 1189, 1189, 1190,
+     1189, 1190, 1191, 1192, 1189, 1192, 1193, 1189, 1194, 1194,
+     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+     1195, 1195, 1195, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1196, 1196, 1196, 1196, 1197, 1197, 1197,
+
+     1197, 1198, 1198, 1199, 1199, 1200, 1200, 1047, 1199, 1047,
+     1047, 1201, 1201, 1202, 1202, 1203, 1203, 1204, 1204, 1047,
+      820, 1179, 1179,  716,  716, 1184, 1184,  734,  734, 1189,
+     1189,  750,  750, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1196, 1196, 1196, 1196, 1197, 1198, 1198,  807,
+      807, 1201, 1201,  817,  817,  820,  820,  716,  716,  734,
+      734,  750,  750, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
 
-     1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
-     1103, 1103, 1103, 1105, 1056, 1105, 1106, 1056, 1106, 1107,
-     1107, 1106, 1107, 1108, 1108, 1106, 1106, 1106, 1106, 1106,
-     1106, 1106, 1106, 1106, 1106, 1106, 1106, 1109, 1056, 1109,
-     1110, 1056, 1110, 1111, 1111, 1110, 1111, 1112, 1112, 1110,
-     1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
-     1110, 1113, 1056, 1113, 1114, 1056, 1114, 1115, 1115, 1114,
-     1115, 1116, 1116, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
-     1114, 1114, 1114, 1114, 1114, 1117, 1056, 1117, 1118, 1056,
-     1119, 1118, 1119, 1120, 1118, 1118, 1118, 1118, 1118, 1118,
-
-     1118, 1118, 1118, 1118, 1118, 1118, 1121, 1056, 1121, 1056,
-     1122, 1122, 1122, 1122, 1056, 1123, 1123, 1123, 1123, 1123,
-     1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
-     1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1056,
-     1056, 1056, 1056, 1056, 1056, 1124, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1125, 1126, 1056, 1056, 1056, 1056,
-     1127, 1128, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129,
-     1129, 1129, 1123, 1123, 1056, 1130, 1056, 1130, 1131, 1132,
-     1132, 1132, 1132, 1132, 1133, 1134, 1134, 1134, 1134, 1134,
-
-     1134, 1134, 1134, 1134, 1135, 1136, 1137, 1138, 1056, 1134,
-     1056, 1056, 1139, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
-     1140, 1140, 1141, 1142, 1056, 1143, 1143, 1143, 1143, 1143,
-     1143, 1143, 1143, 1143, 1144, 1145, 1146, 1147, 1056, 1148,
-     1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1149, 1150,
-     1151, 1152, 1056, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
-     1153, 1153, 1154, 1155, 1156, 1157, 1056, 1158, 1158, 1158,
-     1158, 1158, 1158, 1158, 1158, 1158, 1159, 1160, 1161, 1162,
-     1056, 1056, 1056, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
-     1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
-
-     1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1164, 1056,
-     1164, 1165, 1056, 1166, 1056, 1166, 1167, 1056, 1168, 1168,
-     1168, 1168, 1168, 1168, 1169, 1170, 1170, 1170, 1170, 1171,
-     1171, 1172, 1172, 1172, 1172, 1173, 1172, 1173, 1174, 1175,
-     1172, 1175, 1176, 1172, 1177, 1177, 1172, 1056, 1056, 1178,
-     1178, 1179, 1179, 1179, 1179, 1180, 1179, 1181, 1179, 1182,
-     1182, 1183, 1183, 1183, 1183, 1184, 1184, 1183, 1184, 1185,
-     1185, 1186, 1186, 1183, 1186, 1187, 1183, 1056,  698, 1188,
-
-     1188, 1188, 1188, 1189, 1189, 1188, 1189, 1190, 1190, 1191,
-     1191, 1188, 1191, 1192, 1188, 1056,  716, 1193, 1193, 1193,
-     1193, 1194, 1194, 1193, 1194, 1195, 1195, 1196, 1196, 1193,
-     1196, 1197, 1193, 1056,  734, 1198, 1198, 1198, 1198, 1199,
-     1198, 1199, 1200, 1201, 1198, 1201, 1202, 1198, 1203, 1203,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1205, 1205, 1205, 1205, 1206, 1206,
-
-     1206, 1206, 1207, 1207, 1208, 1208, 1209, 1209, 1056, 1208,
-     1056, 1056, 1210, 1210, 1211, 1211, 1212, 1212, 1213, 1213,
-     1056,  821, 1188, 1188,  716,  716, 1193, 1193,  734,  734,
-     1198, 1198,  750,  750, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1205, 1205, 1205, 1205, 1206, 1207,
-     1207,  808,  808, 1210, 1210,  818,  818,  821,  821,  716,
-      716,  734,  734,  750,  750, 1204, 1204, 1204, 1204, 1204,
-
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204, 1204, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1205, 1205, 1056,
-     1207, 1207,  808,  808, 1210, 1210,  818,  818,  821,  821,
-      716,  716,  734,  734,  750,  750, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1208, 1208,
-     1211, 1211, 1213, 1213, 1188, 1188, 1193, 1193, 1198, 1198,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1208, 1213, 1188, 1193, 1198,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1056, 1056, 1056, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204, 1056, 1056, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204,    0, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
+     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+     1195, 1195, 1195, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1196, 1196, 1047, 1198, 1198,  807,
+      807, 1201, 1201,  817,  817,  820,  820,  716,  716,  734,
+      734,  750,  750, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+     1195, 1195, 1195, 1195, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1199, 1199, 1202, 1202, 1204, 1204,
+     1179, 1179, 1184, 1184, 1189, 1189, 1195, 1195, 1195, 1195,
+     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+
+     1195, 1195, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1199, 1204, 1179, 1184, 1189, 1195, 1195, 1195, 1195, 1195,
+     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1047, 1047, 1047,
+     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1047, 1047,
+     1195, 1195, 1195, 1195, 1195, 1195,    0, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
 
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056
+     1047, 1047, 1047, 1047
     } ;
 
 static yyconst flex_int16_t yy_nxt[7575] =
@@ -828,7 +825,7 @@
        60,   61,   24,   81,  113,   82,   81,   62,   63,   24,
        24,   41,   42,   42,   42,  178,   41,   42,   42,   42,
 
-      162, 1055,  162,  162,  168,  268,   83,  179,  162,  164,
+      162, 1046,  162,  162,  168,  268,   83,  179,  162,  164,
       162,  162,   47,  175,   47,  163,  170,   47,  171,   47,
       172,  173,   64,  163,   47,  224,  225,  176,  298,   24,
        24,   66,   67,   68,   69,   67,   66,   70,   66,   71,
@@ -889,8 +886,8 @@
       160,  160,  150,  160,  160,  160,  160,  160,  160,  160,
       160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
       161,  160,  160,  160,  160,  160,  160,  150,  150,  180,
-     1054,  181,  181,  181,  181,  203,  180,  182,  181,  181,
-      181,  181,  204, 1053,  183,  184,  451,  185,  185,  185,
+     1045,  181,  181,  181,  181,  203,  180,  182,  181,  181,
+      181,  181,  204, 1044,  183,  184,  451,  185,  185,  185,
       185,  226,  227,  186,  452,  187,  187,  187,  187,  187,
       188,  187,  187,  187,  187,  187,  187,  187,  244,  187,
 
@@ -900,26 +897,26 @@
       225,  229,  423,  167,  228,  206,  207,  424,  231,  245,
       208,  229,  209,  228,  242,  210,  318,  319,  231,  206,
       229,  205,  207,  181,  181,  181,  181,  231,  228,  246,
-      209,  246,  246,  228,  207,  229,  168, 1052,  208,  210,
+      209,  246,  246,  228,  207,  229,  168, 1043,  208,  210,
       229,  228,  231,  232,  232,  232,  232,  231,  229,  233,
       207,  211,  318,  319,  243,  231,  212,  241,  229,  213,
       214,  215,  216,  217,  218,  268,  234,  219,  228,  220,
 
-      221,  362,  235,  228,  891,  229,  276,  429,  236,  167,
+      221,  362,  235,  228,  889,  229,  276,  429,  236,  167,
       229,  430,  231,  246,  164,  246,  246,  231,  431,  211,
       432,  180,  237,  181,  181,  181,  181,  253,  214,  215,
       254,  255,  218,  257,  258,  259,  257,  228,  221,  277,
-      239,  238,  168, 1051,  229,  257,  258,  259,  257,  342,
-      343,  231,  392,  240, 1056,  261, 1050,  261,  262,  261,
+      239,  238,  168, 1042,  229,  257,  258,  259,  257,  342,
+      343,  231,  392,  240, 1047,  261, 1041,  261,  262,  261,
       261,  180,  458,  181,  181,  181,  181,  459,  185,  185,
       185,  185,  187,  247,  239,  187,  229,  187,  167,  248,
       249,  250,  251,  268,  252,  393,  187,  187,  187,  271,
-      258,  272,  271,  187, 1049,  264,  265,  342,  343,  205,
+      258,  272,  271,  187, 1040,  264,  265,  342,  343,  205,
 
       266,  181,  181,  181,  181,  268,  270,  271,  258,  272,
       271,  168,  207,  433,  229,  434,  208,  269,  269,  269,
-      269,  268,  279, 1048,  280,  280,  280,  280,  207,  281,
-      281,  281,  281,  884,  273,  297,  297,  297,  297,  318,
+      269,  268,  279, 1039,  280,  280,  280,  280,  207,  281,
+      281,  281,  281,  882,  273,  297,  297,  297,  297,  318,
       321,  273,  436,  322,  273,  299,  318,  325,  273,  177,
       185,  185,  185,  185,  301,  322,  437,  282,  465,  273,
       268,  283,  284,  466,  280,  280,  280,  280,  273,  304,
@@ -927,135 +924,135 @@
       299,  288,  296,  299,  289,  318,  319,  299,  285,  420,
       302,  286,  303,  303,  303,  303,  513,  305,  299,  288,
 
-     1047,  306,  342,  349,  366,  367,  337,  299,  289,  273,
+     1038,  306,  342,  349,  366,  367,  337,  299,  289,  273,
       273,  346,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273, 1046,  273,  273,  456,  318,  319,
+      273,  273,  273,  273, 1037,  273,  273,  456,  318,  319,
       229,  292,  273,  273,  273,  592,  205,  268,  297,  297,
       297,  297,  326,  457,  327,  327,  327,  327,  273,  207,
       342,  343,  593,  208,  366,  367,  342,  345,  442,  442,
       346,  366,  373,  276,  350,  207,  351,  351,  351,  351,
-      370,  449,  450,  273,  273,  273,  273, 1045,  273,  273,
+      370,  449,  450,  273,  273,  273,  273, 1036,  273,  273,
       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      755,  273,  273,  347,  318,  319,  277,  292,  273,  273,
+     1035,  273,  273,  347,  318,  319,  277,  292,  273,  273,
 
-      273,  395,  756,  396,  396,  396,  396,  342,  343, 1044,
-      328,  328,  328,  328,  273, 1043,  342,  343,  468,  469,
-      293,  787,  317,  352,  352,  352,  352,  366,  369,  317,
-      788,  370,  317,  445,  445,  445,  317,  361,  329,  273,
+      273,  395,  930,  396,  396,  396,  396,  342,  343,  291,
+      328,  328,  328,  328,  273, 1034,  342,  343,  468,  469,
+      293,  786,  317,  352,  352,  352,  352,  366,  369,  317,
+      787,  370,  317,  445,  445,  445,  317,  361,  329,  273,
       273,  307,  330,  303,  303,  303,  303,  317,  449,  485,
-     1042,  353,  341,  308,  309,  354,  317,  426,  310,  341,
+     1033,  353,  341,  308,  309,  354,  317,  426,  310,  341,
       311,  427,  341,  312,  371,  428,  341,  308,  228,  365,
       309,  410,  493,  410,  410,  229,  365,  341,  311,  365,
-      494, 1041,  231,  365,  500,  500,  341,  312,  299,  299,
+      494, 1032,  231,  365,  500,  500,  341,  312,  299,  299,
       299,  299,  299,  299,  365,  299,  299,  299,  299,  299,
 
       299,  299,  299,  365,  299,  299,  366,  367,  366,  367,
       315,  299,  299,  299,  397,  397,  397,  397,  518,  518,
-      374,  979,  375,  375,  375,  375,  389,  299,  162,  385,
-      162,  162,  246,  389,  246,  246,  389,  426, 1040,  505,
+      374,  975,  375,  375,  375,  375,  389,  299,  162,  385,
+      162,  162,  246,  389,  246,  246,  389,  426, 1031,  505,
       389,  427,  398,  163,  506,  484,  399,  411,  411,  411,
       411,  389,  299,  299,  299,  299,  299,  299,  299,  299,
       389,  299,  299,  299,  299,  299,  299,  299,  299,  291,
       299,  299,  412,  412,  412,  412,  315,  299,  299,  299,
       413,  413,  413,  413,  366,  367,  414,  414,  414,  414,
-      503,  503,  503,  299,  185,  185,  185,  185, 1039,  316,
+      503,  503,  503,  299,  185,  185,  185,  185, 1030,  316,
 
       376,  376,  376,  376,  453,  465,  465,  596,  454,  597,
-      466,  523,  205,  985,  181,  181,  181,  181,  299,  299,
-      318,  319,  455,  467,  268,  207,  228, 1038,  377,  208,
+      466,  523,  205,  981,  181,  181,  181,  181,  299,  299,
+      318,  319,  455,  467,  268,  207,  228, 1029,  377,  208,
       318,  319,  378,  229,  331,  228,  327,  327,  327,  327,
       231,  207,  229,  228,  318,  319,  332,  333,  670,  231,
       229,  334,  671,  335,  318,  319,  336,  231,  362,  443,
       332,  443,  228,  333,  444,  444,  444,  444,  338,  229,
-      889,  335,  473,  473,  473,  473,  231,  477,  478, 1037,
+      887,  335,  473,  473,  473,  473,  231,  477,  478, 1028,
       336,  317,  317,  318,  319,  317,  317,  317,  317,  317,
       317,  317,  317,  317,  317,  317,  476,  317,  317,  185,
 
       185,  185,  185,  339,  317,  317,  317,  521,  521,  521,
-      415,  441,  441,  441,  441,  941,  228,  228,  228,  362,
-      317, 1036,  415,  229,  229,  229,  415,  228,  228,  942,
-      231,  231,  231,  362,  229,  229,  229,  933,  415,  318,
+      415,  441,  441,  441,  441,  938,  228,  228,  228,  362,
+      317, 1027,  415,  229,  229,  229,  415,  228,  228,  939,
+      231,  231,  231,  362,  229,  229,  229,  931,  415,  318,
       321,  231,  231,  268,  291,  317,  317,  317,  317,  318,
       319,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-      317,  317,  479,  317,  317, 1035,  474,  475,  480,  339,
+      317,  317,  479,  317,  317, 1026,  474,  475,  480,  339,
       317,  317,  317,  228,  318,  319,  481,  342,  343,  495,
-      229,  257,  258,  259,  257, 1034,  317,  231,  257,  258,
+      229,  257,  258,  259,  257, 1025,  317,  231,  257,  258,
       259,  257,  340,  488,  488,  488,  488,  487,  229,  342,
 
       343,  269,  269,  269,  269,  268,  271,  258,  272,  271,
       392,  317,  317,  342,  343,  482,  271,  258,  272,  271,
       281,  281,  281,  281,  299,  318,  319,  355,  177,  351,
-      351,  351,  351,  301,  281,  281,  281,  281, 1033,  356,
+      351,  351,  351,  301,  281,  281,  281,  281, 1024,  356,
       357,  318,  325,  393,  358,  496,  359,  318,  319,  360,
-      322,  943,  501,  356,  501,  386,  357,  502,  502,  502,
+      322,  940,  501,  356,  501,  386,  357,  502,  502,  502,
       502,  496,  318,  325,  359,  304,  304,  304,  304,  342,
       343,  322,  527,  360,  341,  341,  342,  343,  341,  341,
       341,  341,  341,  341,  341,  341,  341,  341,  341,  268,
       341,  341,  342,  345,  528,  577,  363,  341,  341,  341,
 
-      578,  284,  268,  280,  280,  280,  280,  939,  499,  499,
-      499,  499,  338,  341,  286,  519,  813,  519,  287,  496,
-      520,  520,  520,  520,  318,  321,  342,  343,  322,  814,
+      578,  284,  268,  280,  280,  280,  280,  936,  499,  499,
+      499,  499,  338,  341,  286,  519,  812,  519,  287,  496,
+      520,  520,  520,  520,  318,  321,  342,  343,  322,  813,
       286,  366,  367,  366,  367,  496,  366,  367,  341,  341,
       341,  341,  342,  343,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  386,  341,  341,  893,  342,
+      341,  341,  341,  341,  341,  386,  341,  341,  891,  342,
       349,  323,  363,  341,  341,  341,  268,  205,  346,  297,
       297,  297,  297,  307,  934,  303,  303,  303,  303,  341,
-      207,  291,  342,  349,  208,  364,  309,  366,  369,  935,
+      207,  314,  342,  349,  208,  364,  309,  366,  369,  932,
       310,  346,  304,  304,  304,  304,  207,  318,  321,  318,
 
       319,  322,  309,  514,  341,  341,  366,  367,  342,  345,
-      342,  345,  346,  977,  346,  328,  328,  328,  328,  514,
-      379,  940,  375,  375,  375,  375,  338,  517,  517,  517,
+      342,  345,  346,  973,  346,  328,  328,  328,  328,  514,
+      379,  937,  375,  375,  375,  375,  338,  517,  517,  517,
       517,  268,  380,  381,  323,  318,  319,  382,  514,  383,
-      342,  343,  384,  318,  319,  347,  380,  347, 1032,  381,
-      407,  530,  530,  895,  514,  366,  373,  383,  268,  533,
-      533,  533,  342,  343,  370, 1031,  384,  365,  365,  366,
+      342,  343,  384,  318,  319,  347,  380,  347, 1023,  381,
+      407,  530,  530,  893,  514,  366,  373,  383,  268,  533,
+      533,  533,  342,  343,  370, 1022,  384,  365,  365,  366,
       367,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  365,  268,  365,  365,  318,  319,  541,  885,  387,
+      365,  365,  268,  365,  365,  318,  319,  541,  883,  387,
       365,  365,  365,  366,  367,  572,  572,  318,  319,  442,
 
-      442,  328,  328,  328,  328,  936,  365,  944,  531,  542,
+      442,  328,  328,  328,  328,  933,  365,  941,  531,  542,
       531,  386,  526,  532,  532,  532,  532,  318,  319,  366,
       367,  535,  397,  397,  397,  397,  536,  410,  526,  410,
       410,  365,  365,  365,  365,  366,  367,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365, 1030,  365,
-      365, 1029,  318,  319,  630,  387,  365,  365,  365,  342,
+      365,  365,  365,  365,  365,  365,  365,  365, 1021,  365,
+      365, 1020,  318,  319,  630,  387,  365,  365,  365,  342,
       343,  575,  575,  575,  342,  343,  555,  635,  529,  529,
       529,  529,  365,  366,  369,  544,  544,  370,  388,  526,
-      352,  352,  352,  352,  342,  343, 1028,  631,  549,  937,
-      342,  343, 1027,  550,  657,  526,  314,  365,  365,  400,
+      352,  352,  352,  352,  342,  343, 1019,  631,  549,  935,
+      342,  343, 1018,  550,  657,  526,  314,  365,  365,  400,
 
-      636,  396,  396,  396,  396, 1026,  352,  352,  352,  352,
+      636,  396,  396,  396,  396, 1017,  352,  352,  352,  352,
       371,  401,  402,  342,  343,  661,  403,  540,  404,  366,
       367,  405,  342,  343,  545,  401,  545,  658,  402,  546,
       546,  546,  546,  540,  366,  373,  404,  229,  547,  547,
       547,  500,  500,  370,  268,  405,  389,  389,  662,  389,
       389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389, 1025,  389,  389,  342,  343,  556,  931,  408,  389,
-      389,  389,  366,  369,  518,  518,  370,  366,  367,  938,
-      543,  543,  543,  543, 1024,  389,  314,  366,  367,  572,
-      572,  540, 1023,  376,  376,  376,  376,  411,  411,  411,
+      389, 1016,  389,  389,  342,  343,  556,  928,  408,  389,
+      389,  389,  366,  369,  518,  518,  370,  366,  367,  976,
+      543,  543,  543,  543,  973,  389, 1010,  366,  367,  572,
+      572,  540,  986,  376,  376,  376,  376,  411,  411,  411,
 
-      411,  809,  810,  376,  376,  376,  376,  540, 1022,  371,
+      411,  808,  809,  376,  376,  376,  376,  540,  978,  371,
       389,  389,  389,  389,  554,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  980,  389,  389,
+      389,  389,  389,  389,  389,  389,  389,  291,  389,  389,
       554,  366,  367,  741,  408,  389,  389,  389,  366,  367,
       445,  445,  445,  366,  367,  318,  319,  557,  557,  557,
       557,  389,  366,  367,  558,  558,  612,  409,  554,  561,
-      561,  561, 1021,  559,  613,  559,  742,  614,  560,  560,
-      560,  560,  318,  319,  554,  291,  389,  389,  504,  504,
+      561,  561,  976,  559,  613,  559,  742,  614,  560,  560,
+      560,  560,  318,  319,  554,  974,  389,  389,  504,  504,
       504,  504,  366,  367,  318,  319,  563,  504,  504,  504,
-      573,  564,  573,  684,  983,  574,  574,  574,  574,  984,
+      573,  564,  573,  684,  979,  574,  574,  574,  574,  980,
 
-      745,  504,  504,  504,  504,  504,  504,  273,  273,  990,
+      745,  504,  504,  504,  504,  504,  504,  273,  273, 1009,
       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
       273,  273,  685,  273,  273,  412,  412,  412,  412,  292,
-      273,  273,  273,  746,  400,  982,  396,  396,  396,  396,
+      273,  273,  273,  746,  400, 1008,  396,  396,  396,  396,
       338,  397,  397,  397,  397,  338,  273,  402,  503,  503,
       503,  403,  568,  413,  413,  413,  413,  414,  414,  414,
-      414,  318,  691,  402,  444,  444,  444,  444,  568,  980,
-      688,  273,  273,  273,  273,  978,  273,  273,  273,  507,
+      414,  318,  691,  402,  444,  444,  444,  444,  568, 1007,
+      688,  273,  273,  273,  273, 1006,  273,  273,  273,  507,
       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
       273,  273,  273,  273,  273,  273,  273,  273,  273,  508,
 
@@ -1063,23 +1060,23 @@
       508,  508,  273,  508,  508,  508,  508,  508,  508,  508,
       508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
       508,  508,  508,  508,  508,  508,  508,  273,  273,  273,
-      273, 1014,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273, 1013,  273,  273,  571,  571,  571,
-      571,  292,  273,  273,  273,  582,  630,  582,  568, 1012,
+      273, 1005,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273, 1004,  273,  273,  571,  571,  571,
+      571,  292,  273,  273,  273,  582,  630,  582,  568, 1003,
       583,  583,  583,  583,  441,  441,  441,  441,  273,  444,
-      444,  444,  444, 1011,  568,  415,  228,  488,  488,  488,
-      488,  487,  945,  229,  946,  228,  407,  509,  407,  631,
+      444,  444,  444, 1002,  568,  415,  228,  488,  488,  488,
+      488,  487,  942,  229,  943,  228,  407,  509,  407,  631,
 
       231,  415,  229,  273,  273,  522,  522,  522,  522,  231,
       228,  228,  228,  228,  522,  522,  522,  229,  229,  229,
       229,  521,  521,  521,  231,  231,  231,  231,  522,  522,
       522,  522,  522,  522,  299,  299,  299,  299,  299,  299,
-      639,  299,  299,  299,  299,  299,  299,  299,  299, 1010,
-      299,  299, 1009,  228,  640,  228,  315,  299,  299,  299,
+      639,  299,  299,  299,  299,  299,  299,  299,  299, 1001,
+      299,  299, 1000,  228,  640,  228,  315,  299,  299,  299,
       229,  229,  229,  499,  499,  499,  499,  231,  268,  231,
-      652, 1008,  652,  299,  496,  653,  653,  653,  653,  502,
+      652,  999,  652,  299,  496,  653,  653,  653,  653,  502,
       502,  502,  502,  502,  502,  502,  502,  575,  575,  575,
-      496, 1007,  650,  641,  318,  687,  651,  642,  299,  299,
+      496,  998,  650,  641,  318,  687,  651,  642,  299,  299,
 
       299,  299,  299,  299,  299,  299,  471,  299,  299,  299,
       299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
@@ -1088,29 +1085,29 @@
       524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
       524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
       524,  524,  524,  524,  299,  299,  299,  299,  299,  299,
-      299,  299, 1006,  299,  299,  299,  299,  299,  299,  299,
-      299, 1005,  299,  299,  635,  228,  228, 1004,  315,  299,
-      299,  299,  229,  229,  342,  343,  672, 1003,  672,  231,
+      299,  299,  997,  299,  299,  299,  299,  299,  299,  299,
+      299,  996,  299,  299,  635,  228,  228,  995,  315,  299,
+      299,  299,  229,  229,  342,  343,  672,  994,  672,  231,
 
-      231,  673,  673,  673,  673,  299, 1002,  517,  517,  517,
+      231,  673,  673,  673,  673,  299,  993,  517,  517,  517,
       517,  520,  520,  520,  520,  342,  343,  636,  514,  520,
-      520,  520,  520,  644,  525,  657,  643,  342,  709,  978,
+      520,  520,  520,  644,  525,  657,  643,  342,  709,  974,
       299,  299,  318,  319,  514,  299,  706,  366,  367,  632,
-      318,  319,  702, 1001,  677,  229,  331,  268,  327,  327,
+      318,  319,  702,  992,  677,  229,  331,  268,  327,  327,
       327,  327,  268,  318,  319,  661,  530,  530,  658,  333,
-     1000,  366,  367,  334,  682,  703,  682,  318,  319,  683,
-      683,  683,  683,  318,  319,  333,  318,  319,  999,  803,
-      318,  319,  998,  532,  532,  532,  532,  721,  662,  533,
+      991,  366,  367,  334,  682,  703,  682,  318,  319,  683,
+      683,  683,  683,  318,  319,  333,  318,  319,  990,  802,
+      318,  319,  989,  532,  532,  532,  532,  721,  662,  533,
       533,  533,  534,  534,  534,  534,  532,  532,  532,  532,
 
-      997,  534,  534,  534,  318,  687,  318,  319,  688,  720,
+      988,  534,  534,  534,  318,  687,  318,  319,  688,  720,
       318,  693,  318,  319,  694,  534,  534,  534,  534,  534,
       534,  317,  317,  318,  319,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  996,  317,  317,  318,
-      319,  689,  995,  339,  317,  317,  317,  695,  741,  819,
-      299,  342,  343,  994,  632,  529,  529,  529,  529,  677,
-      317,  977,  700, 1015,  700,  993,  526,  701,  701,  701,
-      701,  366,  727,  574,  574,  574,  574,  318,  693,  992,
+      317,  317,  317,  317,  317,  317,  987,  317,  317,  318,
+      319,  689,  972,  339,  317,  317,  317,  695,  741,  818,
+      299,  342,  343,  971,  632,  529,  529,  529,  529,  677,
+      317,  975,  700, 1011,  700,  970,  526,  701,  701,  701,
+      701,  366,  727,  574,  574,  574,  574,  318,  693,  969,
       724,  742,  526,  342,  343,  317,  317,  317,  317,  318,
       319,  317,  317,  537,  317,  317,  317,  317,  317,  317,
 
@@ -1120,30 +1117,30 @@
       538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
       538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
       538,  317,  317,  317,  317,  318,  319,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  991,  317,
-      317,  342,  343,  976,  229,  339,  317,  317,  317,  342,
-      343,  268,  975,  342,  343,  342,  705,  543,  543,  543,
-      543,  981,  317,  342,  705,  544,  544,  706,  540,  546,
+      317,  317,  317,  317,  317,  317,  317,  317,  968,  317,
+      317,  342,  343,  967,  229,  339,  317,  317,  317,  342,
+      343,  268,  966,  342,  343,  342,  705,  543,  543,  543,
+      543,  977,  317,  342,  705,  544,  544,  706,  540,  546,
 
-      546,  546,  546,  342,  711,  342,  343,  712,  804,  342,
+      546,  546,  546,  342,  711,  342,  343,  712,  803,  342,
       343,  539,  366,  367,  540,  342,  343,  317,  317,  342,
       343,  546,  546,  546,  546,  547,  547,  547,  558,  558,
-      707,  366,  367,  355,  974,  351,  351,  351,  351,  314,
-      713,  366,  367,  973,  318,  319,  357,  561,  561,  561,
-      358,  979,  718, 1016,  718,  366,  367,  719,  719,  719,
-      719,  972,  357,  342,  343,  318,  319,  366,  367,  537,
-      971,  560,  560,  560,  560,  574,  574,  574,  574,  548,
-      548,  548,  548,  560,  560,  560,  560,  820,  548,  548,
+      707,  366,  367,  355,  965,  351,  351,  351,  351,  314,
+      713,  366,  367,  964,  318,  319,  357,  561,  561,  561,
+      358,  977,  718, 1010,  718,  366,  367,  719,  719,  719,
+      719,  963,  357,  342,  343,  318,  319,  366,  367,  537,
+      962,  560,  560,  560,  560,  574,  574,  574,  574,  548,
+      548,  548,  548,  560,  560,  560,  560,  819,  548,  548,
       548,  366,  723,  342,  711,  724,  745,  366,  729,  366,
 
       367,  730,  548,  548,  548,  548,  548,  548,  341,  341,
       342,  343,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  970,  341,  341,  366,  367,  725,  746,
+      341,  341,  341,  961,  341,  341,  366,  367,  725,  746,
       363,  341,  341,  341,  731,  571,  571,  571,  571,  318,
-      691,  969,  557,  557,  557,  557,  568,  341,  688,  736,
-      981,  736, 1015,  554,  737,  737,  737,  737,  583,  583,
+      691,  960,  557,  557,  557,  557,  568,  341,  688,  736,
+      985,  736, 1015,  554,  737,  737,  737,  737,  583,  583,
       583,  583,  568,  583,  583,  583,  583,  342,  343,  554,
-      968,  551,  341,  341,  341,  341,  342,  343,  341,  341,
+      959,  551,  341,  341,  341,  341,  342,  343,  341,  341,
       551,  341,  341,  341,  341,  341,  341,  341,  341,  341,
       341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
 
@@ -1152,29 +1149,29 @@
       552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
       552,  552,  552,  552,  552,  552,  552,  552,  341,  341,
       341,  341,  342,  343,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  967,  341,  341,  966,  228,
+      341,  341,  341,  341,  341,  958,  341,  341,  957,  228,
       228,  228,  363,  341,  341,  341,  229,  229,  229,  228,
       228,  318,  691,  231,  231,  231,  229,  229,  228,  341,
       688,  342,  709,  231,  231,  229,  653,  653,  653,  653,
-      706,  965,  231,  653,  653,  653,  653,  964,  553,  318,
+      706,  956,  231,  653,  653,  653,  653,  955,  553,  318,
 
-      687,  963,  795,  688,  341,  341,  366,  367,  318,  687,
-      796,  989,  688, 1020,  797,  673,  673,  673,  673,  962,
-      379,  961,  375,  375,  375,  375,  960,  798,  673,  673,
-      673,  673,  959,  381,  366,  723,  689,  382,  318,  319,
-      342,  343,  318,  319,  958,  689,  342,  343,  957,  381,
+      687,  954,  794,  688,  341,  341,  366,  367,  318,  687,
+      795,  953,  688,  952,  796,  673,  673,  673,  673,  951,
+      379,  950,  375,  375,  375,  375,  949,  797,  673,  673,
+      673,  673,  948,  381,  366,  723,  689,  382,  318,  319,
+      342,  343,  318,  319,  944,  689,  342,  343,  924,  381,
       366,  367,  366,  367,  683,  683,  683,  683,  683,  683,
       683,  683,  701,  701,  701,  701,  562,  562,  562,  562,
-      956,  342,  709,  342,  343,  562,  562,  562,  318,  693,
-      706,  955,  694,  823,  318,  693,  366,  729,  694,  562,
+      923,  342,  709,  342,  343,  562,  562,  562,  318,  693,
+      706,  922,  694,  822,  318,  693,  366,  729,  694,  562,
       562,  562,  562,  562,  562,  365,  365,  366,  367,  365,
 
       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      954,  365,  365,  342,  343,  695,  824,  387,  365,  365,
-      365,  695,  366,  367,  366,  727,  366,  367,  953,  701,
-      701,  701,  701,  724,  365,  952,  855,  838,  719,  719,
+      921,  365,  365,  342,  343,  695,  823,  387,  365,  365,
+      365,  695,  366,  367,  366,  727,  366,  367,  920,  701,
+      701,  701,  701,  724,  365,  919,  853,  837,  719,  719,
       719,  719,  719,  719,  719,  719,  366,  727,  366,  367,
-      839,  856,  565,  318,  319,  724,  951,  840,  857,  365,
+      838,  854,  565,  318,  319,  724,  918,  839,  855,  365,
       365,  365,  365,  366,  367,  365,  365,  565,  365,  365,
       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
       365,  365,  365,  365,  365,  365,  365,  566,  566,  566,
@@ -1184,22 +1181,22 @@
       566,  566,  566,  566,  566,  566,  566,  566,  566,  566,
       566,  566,  566,  566,  566,  365,  365,  365,  365,  366,
       367,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  365,  947,  365,  365,  366,  367,  318,  319,  387,
+      365,  365,  917,  365,  365,  366,  367,  318,  319,  387,
       365,  365,  365,  342,  705,  366,  367,  706,  342,  343,
-      342,  705,  342,  343,  706,  982,  365,  927,  342,  711,
+      342,  705,  342,  343,  706,  978,  365,  916,  342,  711,
       342,  711,  712,  228,  712,  366,  723,  366,  723,  724,
-      229,  724,  362,  890,  926,  567,  925,  231,  827,  924,
-      707,  365,  365,  576,  576,  576,  576,  707,  828,  366,
+      229,  724,  362,  888,  915,  567,  914,  231,  826,  913,
+      707,  365,  365,  576,  576,  576,  576,  707,  827,  366,
 
-      367,  923,  576,  576,  576,  713,  922,  713,  737,  737,
-      737,  737,  725,  314,  725,  875,  576,  576,  576,  576,
-      576,  576,  389,  389,  921,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  986,  389,  389,
+      367,  912,  576,  576,  576,  713,  911,  713,  737,  737,
+      737,  737,  725,  314,  725,  873,  576,  576,  576,  576,
+      576,  576,  389,  389,  910,  389,  389,  389,  389,  389,
+      389,  389,  389,  389,  389,  389,  389,  982,  389,  389,
       737,  737,  737,  737,  408,  389,  389,  389,  366,  729,
-      366,  367,  730,  366,  729,  386,  892,  730,  407,  894,
-      228,  389,  228,  930,  948,  930,  930,  229,  930,  229,
-      930,  930,  318,  319,  231,  920,  231,  949,  919,  318,
-      319,  983,  362, 1017,  950,  731,  389,  389,  389,  389,
+      366,  367,  730,  366,  729,  386,  890,  730,  407,  892,
+      228,  389,  228,  927,  945,  927,  927,  229,  927,  229,
+      927,  927,  318,  319,  231,  909,  231,  946,  908,  318,
+      319,  979,  362, 1012,  947,  731,  389,  389,  389,  389,
       731,  389,  389,  389,  579,  389,  389,  389,  389,  389,
 
       389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
@@ -1207,62 +1204,62 @@
       580,  580,  580,  580,  580,  580,  580,  389,  580,  580,
       580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
       580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
-      580,  580,  389,  389,  389,  389,  918,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  987,
-      389,  389,  917,  228,  228,  228,  408,  389,  389,  389,
-      229,  229,  229,  977,  916,  229,  915,  231,  231,  231,
+      580,  580,  389,  389,  389,  389,  907,  389,  389,  389,
+      389,  389,  389,  389,  389,  389,  389,  389,  389,  983,
+      389,  389,  906,  228,  228,  228,  408,  389,  389,  389,
+      229,  229,  229,  973,  905,  229,  904,  231,  231,  231,
       229,  229,  268,  389,  229,  228,  228,  268,  268,  342,
 
-      343,  268,  229,  229,  366,  367,  988,  914,  913,  231,
-      231,  912,  581,  877,  386,  932,  978,  876,  389,  389,
-      504,  504,  504,  504,  878,  880,  911,  229,  881,  504,
-      504,  504,  928,  929,  268,  910,  989,  909,  990,  318,
-      319,  984,  908,  504,  504,  504,  504,  504,  504,  273,
+      343,  268,  229,  229,  366,  367,  984,  903,  902,  231,
+      231,  901,  581,  875,  386,  929,  974,  874,  389,  389,
+      504,  504,  504,  504,  876,  878,  900,  229,  879,  504,
+      504,  504,  925,  926,  268,  899,  985,  898,  986,  318,
+      319,  980,  897,  504,  504,  504,  504,  504,  504,  273,
       273,  386,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  977,  273,  273,  907,  228,  906,
-      905,  664,  273,  273,  273,  229,  978,  342,  343,  986,
-      228,  407,  231,  407,  366,  367,  988,  229,  273,  342,
-      343,  985,  904, 1018,  231,  366,  367,  987,  903, 1019,
+      273,  273,  273,  273,  973,  273,  273,  896,  228,  895,
+      894,  664,  273,  273,  273,  229,  974,  342,  343,  982,
+      228,  407,  231,  407,  366,  367,  984,  229,  273,  342,
+      343,  981,  808, 1013,  231,  366,  367,  983,  877, 1014,
 
-      902,  901,  900,  899,  898,  897,  896,  809,  879,  874,
-      873,  872,  871,  273,  273,  273,  273,  870,  273,  273,
+      872,  871,  870,  869,  868,  867,  866,  865,  864,  863,
+      862,  861,  860,  273,  273,  273,  273,  859,  273,  273,
       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
       291,  273,  273,  291,  291,  291,  291,  292,  273,  273,
       273,  291,  291,  291,  291,  291,  291,  291,  291,  291,
       291,  291,  291,  291,  273,  291,  291,  291,  291,  291,
       291,  665,  291,  291,  291,  666,  291,  291,  291,  291,
       291,  291,  291,  291,  291,  291,  291,  291,  291,  273,
-      273,  522,  522,  522,  522,  869,  868,  867,  866,  865,
-      522,  522,  522,  864,  863,  862,  861,  860,  859,  858,
+      273,  522,  522,  522,  522,  858,  857,  856,  852,  851,
+      522,  522,  522,  850,  849,  848,  847,  846,  845,  844,
 
-      854,  853,  852,  851,  522,  522,  522,  522,  522,  522,
-      299,  299,  299,  299,  299,  299,  850,  299,  299,  299,
-      299,  299,  299,  299,  299,  849,  299,  299,  848,  847,
-      846,  845,  679,  299,  299,  299,  844,  843,  842,  841,
-      837,  836,  835,  579,  741,  832,  831,  830,  826,  299,
-      822,  471,  816,  815,  812,  811,  507,  657,  806,  805,
-      802,  801,  800,  799,  471,  638,  630,  794,  793,  792,
-      791,  790,  789,  786,  299,  299,  299,  299,  299,  299,
-      299,  299,  785,  299,  299,  299,  299,  299,  299,  299,
+      843,  842,  841,  840,  522,  522,  522,  522,  522,  522,
+      299,  299,  299,  299,  299,  299,  836,  299,  299,  299,
+      299,  299,  299,  299,  299,  835,  299,  299,  834,  579,
+      741,  831,  679,  299,  299,  299,  830,  829,  825,  821,
+      471,  815,  814,  811,  810,  507,  657,  805,  804,  299,
+      801,  800,  799,  798,  471,  638,  630,  793,  792,  791,
+      790,  789,  788,  785,  784,  783,  782,  781,  780,  779,
+      778,  777,  776,  775,  299,  299,  299,  299,  299,  299,
+      299,  299,  774,  299,  299,  299,  299,  299,  299,  299,
       299,  314,  299,  299,  314,  314,  314,  314,  315,  299,
 
       299,  299,  314,  314,  314,  314,  314,  314,  314,  314,
       314,  314,  314,  314,  314,  299,  314,  314,  314,  314,
       314,  314,  680,  314,  314,  314,  681,  314,  314,  314,
       314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
-      299,  299,  318,  319,  784,  783,  782,  781,  780,  779,
-      778,  777,  776,  775,  774,  773,  772,  771,  534,  534,
-      534,  534,  770,  769,  768,  767,  766,  534,  534,  534,
-      765,  764,  763,  762,  761,  760,  759,  758,  757,  754,
-      753,  534,  534,  534,  534,  534,  534,  317,  317,  318,
+      299,  299,  318,  319,  773,  772,  771,  770,  769,  768,
+      767,  766,  765,  764,  763,  762,  761,  760,  534,  534,
+      534,  534,  759,  758,  757,  756,  755,  534,  534,  534,
+      754,  753,  752,  751,  741,  739,  738,  675,  674,  669,
+      668,  534,  534,  534,  534,  534,  534,  317,  317,  318,
       319,  317,  317,  317,  317,  317,  317,  317,  317,  317,
 
-      317,  317,  752,  317,  317,  751,  741,  739,  738,  697,
-      317,  317,  317,  675,  674,  669,  668,  667,  657,  655,
-      654,  649,  648,  647,  646,  487,  317,  612,  596,  592,
-      638,  633,  630,  628,  627,  626,  625,  624,  623,  622,
-      621,  620,  619,  618,  617,  616,  615,  611,  610,  609,
-      608,  317,  317,  317,  317,  318,  319,  317,  317,  317,
+      317,  317,  667,  317,  317,  657,  655,  654,  649,  697,
+      317,  317,  317,  648,  647,  646,  487,  612,  596,  592,
+      638,  633,  630,  628,  627,  626,  317,  625,  624,  623,
+      622,  621,  620,  619,  618,  617,  616,  615,  611,  610,
+      609,  608,  607,  606,  605,  604,  603,  602,  601,  600,
+      599,  317,  317,  317,  317,  318,  319,  317,  317,  317,
       317,  317,  317,  317,  317,  317,  317,  317,  338,  317,
       317,  338,  338,  338,  338,  339,  317,  317,  317,  338,
       338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
@@ -1270,222 +1267,222 @@
 
       338,  338,  338,  699,  338,  338,  338,  338,  338,  338,
       338,  338,  338,  338,  338,  338,  338,  317,  317,  342,
-      343,  607,  606,  605,  604,  603,  602,  601,  600,  599,
-      598,  595,  594,  591,  590,  548,  548,  548,  548,  589,
-      588,  587,  586,  585,  548,  548,  548,  584,  570,  569,
-      392,  516,  515,  512,  511,  510,  498,  497,  548,  548,
+      343,  598,  595,  594,  591,  590,  589,  588,  587,  586,
+      585,  584,  570,  569,  392,  548,  548,  548,  548,  516,
+      515,  512,  511,  510,  548,  548,  548,  498,  497,  276,
+      471,  492,  491,  487,  459,  457,  434,  431,  548,  548,
       548,  548,  548,  548,  341,  341,  342,  343,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  276,
-      341,  341,  471,  492,  491,  487,  715,  341,  341,  341,
-      459,  457,  434,  431,  429,  483,  420,  471,  268,  470,
-
-      464,  463,  460,  341,  448,  447,  440,  439,  438,  435,
-      425,  422,  421,  418,  417,  167,  406,  392,  390,  313,
-      268,  294,  290,  276,  274,  256,  167,  256,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  429,
+      341,  341,  483,  420,  471,  268,  715,  341,  341,  341,
+      470,  464,  463,  460,  448,  447,  440,  439,  438,  435,
+
+      425,  422,  421,  341,  418,  417,  167,  406,  392,  390,
+      313,  268,  294,  290,  276,  274,  256,  167,  256,  167,
+      174,  165, 1047,   96,   65,   57, 1047, 1047,  341,  341,
       341,  341,  342,  343,  341,  341,  341,  341,  341,  341,
       341,  341,  341,  341,  341,  362,  341,  341,  362,  362,
       362,  362,  363,  341,  341,  341,  362,  362,  362,  362,
       362,  362,  362,  362,  362,  362,  362,  362,  362,  341,
       362,  362,  362,  362,  362,  362,  716,  362,  362,  362,
       717,  362,  362,  362,  362,  362,  362,  362,  362,  362,
-      362,  362,  362,  362,  341,  341,  366,  367,  167,  174,
+      362,  362,  362,  362,  341,  341,  366,  367, 1047, 1047,
 
-      165, 1056,   96,   65,   57, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056,  562,  562,  562,  562, 1056, 1056, 1056, 1056,
-     1056,  562,  562,  562, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056,  562,  562,  562,  562,  562,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047,  562,  562,  562,  562, 1047, 1047, 1047, 1047,
+     1047,  562,  562,  562, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047,  562,  562,  562,  562,  562,
       562,  365,  365,  366,  367,  365,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  365, 1056,  365,  365, 1056,
-     1056, 1056, 1056,  733,  365,  365,  365, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-      365, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
+      365,  365,  365,  365,  365,  365, 1047,  365,  365, 1047,
+     1047, 1047, 1047,  733,  365,  365,  365, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+      365, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
 
-     1056, 1056, 1056, 1056, 1056,  365,  365,  365,  365,  366,
+     1047, 1047, 1047, 1047, 1047,  365,  365,  365,  365,  366,
       367,  365,  365,  365,  365,  365,  365,  365,  365,  365,
       365,  365,  386,  365,  365,  386,  386,  386,  386,  387,
       365,  365,  365,  386,  386,  386,  386,  386,  386,  386,
       386,  386,  386,  386,  386,  386,  365,  386,  386,  386,
       386,  386,  386,  734,  386,  386,  386,  735,  386,  386,
       386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      386,  365,  365,  576,  576,  576,  576, 1056, 1056, 1056,
-     1056, 1056,  576,  576,  576, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056,  576,  576,  576,  576,
-
-      576,  576,  389,  389, 1056,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389, 1056,  389,  389,
-     1056, 1056, 1056, 1056,  748,  389,  389,  389, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056,  389, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056,  389,  389,  389,  389,
-     1056,  389,  389,  389,  389,  389,  389,  389,  389,  389,
+      386,  365,  365,  576,  576,  576,  576, 1047, 1047, 1047,
+     1047, 1047,  576,  576,  576, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047,  576,  576,  576,  576,
+
+      576,  576,  389,  389, 1047,  389,  389,  389,  389,  389,
+      389,  389,  389,  389,  389,  389,  389, 1047,  389,  389,
+     1047, 1047, 1047, 1047,  748,  389,  389,  389, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047,  389, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047,  389,  389,  389,  389,
+     1047,  389,  389,  389,  389,  389,  389,  389,  389,  389,
       389,  389,  389,  407,  389,  389,  407,  407,  407,  407,
       408,  389,  389,  389,  407,  407,  407,  407,  407,  407,
 
       407,  407,  407,  407,  407,  407,  407,  389,  407,  407,
       407,  407,  407,  407,  749,  407,  407,  407,  750,  407,
       407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  407,  389,  389,  273,  273, 1056,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273, 1056,
-      273,  273, 1056, 1056, 1056, 1056,  664,  273,  273,  273,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056,  273, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,  273,  273,
-
-      273,  273, 1056,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273, 1056,  273,  273, 1056, 1056,
-     1056, 1056,  292,  273,  273,  273, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,  273,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,  807,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056,  273,  273,  273,  273, 1056,  273,
+      407,  407,  389,  389,  273,  273, 1047,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273, 1047,
+      273,  273, 1047, 1047, 1047, 1047,  664,  273,  273,  273,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047,  273, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  273,  273,
+
+      273,  273, 1047,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  273,  273, 1047,  273,  273, 1047, 1047,
+     1047, 1047,  292,  273,  273,  273, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  273,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  806,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047,  273,  273,  273,  273, 1047,  273,
       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273, 1056,  273,  273, 1056, 1056, 1056, 1056,  292,  273,
-      273,  273, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
+      273, 1047,  273,  273, 1047, 1047, 1047, 1047,  292,  273,
+      273,  273, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
 
-     1056, 1056, 1056, 1056, 1056,  273, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056,  808, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-      273,  273,  299,  299,  299,  299,  299,  299, 1056,  299,
-      299,  299,  299,  299,  299,  299,  299, 1056,  299,  299,
-     1056, 1056, 1056, 1056,  679,  299,  299,  299, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056,  299, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056,  299,  299,  299,  299,
-
-      299,  299,  299,  299, 1056,  299,  299,  299,  299,  299,
-      299,  299,  299, 1056,  299,  299, 1056, 1056, 1056, 1056,
-      315,  299,  299,  299, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056,  299, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056,  817, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056,  299,  299,  299,  299,  299,  299,  299,  299,
-     1056,  299,  299,  299,  299,  299,  299,  299,  299, 1056,
-      299,  299, 1056, 1056, 1056, 1056,  315,  299,  299,  299,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-
-     1056, 1056, 1056,  299, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056,  818, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,  299,  299,
+     1047, 1047, 1047, 1047, 1047,  273, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047,  807, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+      273,  273,  299,  299,  299,  299,  299,  299, 1047,  299,
+      299,  299,  299,  299,  299,  299,  299, 1047,  299,  299,
+     1047, 1047, 1047, 1047,  679,  299,  299,  299, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047,  299, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047,  299,  299,  299,  299,
+
+      299,  299,  299,  299, 1047,  299,  299,  299,  299,  299,
+      299,  299,  299, 1047,  299,  299, 1047, 1047, 1047, 1047,
+      315,  299,  299,  299, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047,  299, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047,  816, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047,  299,  299,  299,  299,  299,  299,  299,  299,
+     1047,  299,  299,  299,  299,  299,  299,  299,  299, 1047,
+      299,  299, 1047, 1047, 1047, 1047,  315,  299,  299,  299,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+
+     1047, 1047, 1047,  299, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047,  817, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  299,  299,
       317,  317,  318,  319,  317,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  317, 1056,  317,  317, 1056, 1056,
-     1056, 1056,  697,  317,  317,  317, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,  317,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056,  317,  317,  317,  317,  318,  319,
+      317,  317,  317,  317,  317, 1047,  317,  317, 1047, 1047,
+     1047, 1047,  697,  317,  317,  317, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  317,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047,  317,  317,  317,  317,  318,  319,
 
       317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
       317,  338,  317,  317,  338,  338,  338,  338,  339,  317,
       317,  317,  338,  338,  338,  338,  338,  338,  338,  338,
       338,  338,  338,  338,  338,  317,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  821,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  820,  338,  338,  338,  338,
       338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
       317,  317,  341,  341,  342,  343,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341, 1056,  341,  341,
-     1056, 1056, 1056, 1056,  715,  341,  341,  341, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-
-     1056,  341, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341, 1047,  341,  341,
+     1047, 1047, 1047, 1047,  715,  341,  341,  341, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+
+     1047,  341, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047,  341,  341,  341,  341,
       342,  343,  341,  341,  341,  341,  341,  341,  341,  341,
       341,  341,  341,  362,  341,  341,  362,  362,  362,  362,
       363,  341,  341,  341,  362,  362,  362,  362,  362,  362,
       362,  362,  362,  362,  362,  362,  362,  341,  362,  362,
-      362,  362,  362,  362,  362,  362,  362,  825,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  824,  362,  362,
       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
       362,  362,  341,  341,  365,  365,  366,  367,  365,  365,
 
-      365,  365,  365,  365,  365,  365,  365,  365,  365, 1056,
-      365,  365, 1056, 1056, 1056, 1056,  733,  365,  365,  365,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056,  365, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365, 1047,
+      365,  365, 1047, 1047, 1047, 1047,  733,  365,  365,  365,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047,  365, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  365,  365,
       365,  365,  366,  367,  365,  365,  365,  365,  365,  365,
       365,  365,  365,  365,  365,  386,  365,  365,  386,  386,
       386,  386,  387,  365,  365,  365,  386,  386,  386,  386,
       386,  386,  386,  386,  386,  386,  386,  386,  386,  365,
 
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  829,
+      386,  386,  386,  386,  386,  386,  386,  386,  386,  828,
       386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      386,  386,  386,  386,  365,  365,  389,  389, 1056,  389,
+      386,  386,  386,  386,  365,  365,  389,  389, 1047,  389,
       389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389, 1056,  389,  389, 1056, 1056, 1056, 1056,  748,  389,
-      389,  389, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056,  389, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-      389,  389,  389,  389, 1056,  389,  389,  389,  389,  389,
-
-      389,  389,  389,  389,  389,  389,  389, 1056,  389,  389,
-     1056, 1056, 1056, 1056,  408,  389,  389,  389, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056,  389, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056,  833, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056,  389,  389,  389,  389,
-     1056,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389, 1056,  389,  389, 1056, 1056, 1056, 1056,
-      408,  389,  389,  389, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056,  389, 1056, 1056,
-
-     1056, 1056, 1056, 1056, 1056, 1056, 1056,  834, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056,  389,  389,  273,  273, 1056,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273, 1056,
-      273,  273, 1056, 1056, 1056, 1056,  292,  273,  273,  273,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056,  273, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056,  882, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,  273,  273,
-      273,  273, 1056,  273,  273,  273,  273,  273,  273,  273,
-
-      273,  273,  273,  273,  273, 1056,  273,  273, 1056, 1056,
-     1056, 1056,  292,  273,  273,  273, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,  273,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056,  883, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056,  273,  273,  299,  299,  299,  299,
-      299,  299, 1056,  299,  299,  299,  299,  299,  299,  299,
-      299, 1056,  299,  299, 1056, 1056, 1056, 1056,  315,  299,
-      299,  299, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056,  299, 1056, 1056, 1056, 1056,
-
-     1056, 1056, 1056, 1056, 1056, 1056,  886, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-      299,  299,  299,  299,  299,  299,  299,  299, 1056,  299,
-      299,  299,  299,  299,  299,  299,  299, 1056,  299,  299,
-     1056, 1056, 1056, 1056,  315,  299,  299,  299, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056,  299, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056,  887, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056,  299,  299,  317,  317,
+      389, 1047,  389,  389, 1047, 1047, 1047, 1047,  748,  389,
+      389,  389, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047,  389, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+      389,  389,  389,  389, 1047,  389,  389,  389,  389,  389,
+
+      389,  389,  389,  389,  389,  389,  389, 1047,  389,  389,
+     1047, 1047, 1047, 1047,  408,  389,  389,  389, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047,  389, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047,  832, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047,  389,  389,  389,  389,
+     1047,  389,  389,  389,  389,  389,  389,  389,  389,  389,
+      389,  389,  389, 1047,  389,  389, 1047, 1047, 1047, 1047,
+      408,  389,  389,  389, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047,  389, 1047, 1047,
+
+     1047, 1047, 1047, 1047, 1047, 1047, 1047,  833, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047,  389,  389,  273,  273, 1047,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273, 1047,
+      273,  273, 1047, 1047, 1047, 1047,  292,  273,  273,  273,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047,  273, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047,  880, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  273,  273,
+      273,  273, 1047,  273,  273,  273,  273,  273,  273,  273,
+
+      273,  273,  273,  273,  273, 1047,  273,  273, 1047, 1047,
+     1047, 1047,  292,  273,  273,  273, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  273,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047,  881, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047,  273,  273,  299,  299,  299,  299,
+      299,  299, 1047,  299,  299,  299,  299,  299,  299,  299,
+      299, 1047,  299,  299, 1047, 1047, 1047, 1047,  315,  299,
+      299,  299, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047,  299, 1047, 1047, 1047, 1047,
+
+     1047, 1047, 1047, 1047, 1047, 1047,  884, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+      299,  299,  299,  299,  299,  299,  299,  299, 1047,  299,
+      299,  299,  299,  299,  299,  299,  299, 1047,  299,  299,
+     1047, 1047, 1047, 1047,  315,  299,  299,  299, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047,  299, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047,  885, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047,  299,  299,  317,  317,
       318,  319,  317,  317,  317,  317,  317,  317,  317,  317,
 
       317,  317,  317,  338,  317,  317,  338,  338,  338,  338,
       339,  317,  317,  317,  338,  338,  338,  338,  338,  338,
       338,  338,  338,  338,  338,  338,  338,  317,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  888,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  886,  338,
       338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  317,  317,  166, 1056,  166,  166,  166,  166,
-      166,  166,  166,  166,  166,  169, 1056, 1056,  169,  169,
-      177, 1056,  177,  177,  177,  177,  177,  177,  177,  177,
+      338,  338,  317,  317,  166, 1047,  166,  166,  166,  166,
+      166,  166,  166,  166,  166,  169, 1047, 1047,  169,  169,
+      177, 1047,  177,  177,  177,  177,  177,  177,  177,  177,
       177,  230,  230,  230,  230,  230,  230,  230,  230,  260,
-      260,  260,  260,  263, 1056,  263, 1056,  263,  263,  263,
+      260,  260,  260,  263, 1047,  263, 1047,  263,  263,  263,
 
-      263,  267,  267,  267,  267,  267,  267,  267,  273, 1056,
+      263,  267,  267,  267,  267,  267,  267,  267,  273, 1047,
       273,  273,  273,  273,  273,  273,  273,  273,  273,  275,
-     1056,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      278, 1056,  278,  278,  278,  278,  278,  278,  278,  278,
-      278,  291, 1056,  291,  291,  291,  291,  291,  291,  291,
+     1047,  275,  275,  275,  275,  275,  275,  275,  275,  275,
+      278, 1047,  278,  278,  278,  278,  278,  278,  278,  278,
+      278,  291, 1047,  291,  291,  291,  291,  291,  291,  291,
       291,  291,  229,  229,  229,  229,  229,  229,  229,  299,
-      299, 1056,  299,  299,  299,  299,  299,  299,  299,  299,
+      299, 1047,  299,  299,  299,  299,  299,  299,  299,  299,
       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
-      300,  314,  314, 1056,  314,  314,  314,  314,  314,  314,
+      300,  314,  314, 1047,  314,  314,  314,  314,  314,  314,
       314,  314,  317,  317,  317,  317,  317,  317,  317,  317,
 
       317,  317,  317,  320,  320,  320,  320,  320,  320,  320,
@@ -1501,27 +1498,27 @@
 
       368,  368,  372,  372,  372,  372,  372,  372,  372,  372,
       372,  372,  372,  386,  386,  386,  386,  386,  386,  386,
-      386,  386,  386,  386,  389, 1056,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  391, 1056,  391,  391,  391,
-      391,  391,  391,  391,  391,  391,  394, 1056,  394,  394,
-      394,  394,  394,  394,  394,  394,  394,  407, 1056,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  169, 1056,
-     1056,  169,  169,  177, 1056,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  416, 1056, 1056,  416,  416,  416,
-      446, 1056, 1056,  446,  229,  229,  229,  229,  229,  229,
+      386,  386,  386,  386,  389, 1047,  389,  389,  389,  389,
+      389,  389,  389,  389,  389,  391, 1047,  391,  391,  391,
+      391,  391,  391,  391,  391,  391,  394, 1047,  394,  394,
+      394,  394,  394,  394,  394,  394,  394,  407, 1047,  407,
+      407,  407,  407,  407,  407,  407,  407,  407,  169, 1047,
+     1047,  169,  169,  177, 1047,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  416, 1047, 1047,  416,  416,  416,
+      446, 1047, 1047,  446,  229,  229,  229,  229,  229,  229,
 
       229,  230,  230,  230,  230,  230,  230,  230,  230,  472,
-     1056, 1056, 1056, 1056,  472,  472,  472,  472,  486,  486,
-      486,  486,  486,  486,  489,  489,  489,  489,  490, 1056,
+     1047, 1047, 1047, 1047,  472,  472,  472,  472,  486,  486,
+      486,  486,  486,  486,  489,  489,  489,  489,  490, 1047,
       490,  490,  490,  490,  267,  267,  267,  267,  267,  267,
-      267,  273, 1056,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  275, 1056,  275,  275,  275,  275,  275,  275,
-      275,  275,  275,  278, 1056,  278,  278,  278,  278,  278,
-      278,  278,  278,  278,  291, 1056,  291,  291,  291,  291,
-      291,  291,  291,  291,  291,  299,  299, 1056,  299,  299,
+      267,  273, 1047,  273,  273,  273,  273,  273,  273,  273,
+      273,  273,  275, 1047,  275,  275,  275,  275,  275,  275,
+      275,  275,  275,  278, 1047,  278,  278,  278,  278,  278,
+      278,  278,  278,  278,  291, 1047,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  299,  299, 1047,  299,  299,
       299,  299,  299,  299,  299,  299,  300,  300,  300,  300,
 
-      300,  300,  300,  300,  300,  300,  300,  314,  314, 1056,
+      300,  300,  300,  300,  300,  300,  300,  314,  314, 1047,
       314,  314,  314,  314,  314,  314,  314,  314,  317,  317,
       317,  317,  317,  317,  317,  317,  317,  317,  317,  320,
       320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
@@ -1537,30 +1534,30 @@
       368,  368,  368,  368,  368,  368,  368,  368,  372,  372,
       372,  372,  372,  372,  372,  372,  372,  372,  372,  386,
       386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      389, 1056,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  391, 1056,  391,  391,  391,  391,  391,  391,  391,
-      391,  391,  394, 1056,  394,  394,  394,  394,  394,  394,
-      394,  394,  394,  407, 1056,  407,  407,  407,  407,  407,
-      407,  407,  407,  407,  169, 1056, 1056,  169,  169,  416,
-
-     1056, 1056,  416,  416,  416,  446, 1056, 1056,  446,  629,
-     1056,  629,  629,  629,  629,  629,  629,  629,  629,  629,
-      632, 1056,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  634, 1056,  634,  634,  634,  634,  634,  634,  634,
+      389, 1047,  389,  389,  389,  389,  389,  389,  389,  389,
+      389,  391, 1047,  391,  391,  391,  391,  391,  391,  391,
+      391,  391,  394, 1047,  394,  394,  394,  394,  394,  394,
+      394,  394,  394,  407, 1047,  407,  407,  407,  407,  407,
+      407,  407,  407,  407,  169, 1047, 1047,  169,  169,  416,
+
+     1047, 1047,  416,  416,  416,  446, 1047, 1047,  446,  629,
+     1047,  629,  629,  629,  629,  629,  629,  629,  629,  629,
+      632, 1047,  632,  632,  632,  632,  632,  632,  632,  632,
+      632,  634, 1047,  634,  634,  634,  634,  634,  634,  634,
       634,  634,  637,  637,  637,  637,  637,  637,  637,  230,
       230,  230,  230,  230,  230,  230,  230,  486,  486,  486,
-      486,  486,  486,  645, 1056,  645,  645,  645,  645,  490,
-     1056,  490,  490,  490,  490,  267,  267,  267,  267,  267,
-      267,  267,  273, 1056,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  656, 1056,  656,  656,  656,  656,  656,
-
-      656,  656,  656,  656,  659, 1056,  659,  659,  659,  659,
-      659,  659,  659,  659,  659,  660, 1056,  660,  660,  660,
-      660,  660,  660,  660,  660,  660,  663, 1056,  663,  663,
+      486,  486,  486,  645, 1047,  645,  645,  645,  645,  490,
+     1047,  490,  490,  490,  490,  267,  267,  267,  267,  267,
+      267,  267,  273, 1047,  273,  273,  273,  273,  273,  273,
+      273,  273,  273,  656, 1047,  656,  656,  656,  656,  656,
+
+      656,  656,  656,  656,  659, 1047,  659,  659,  659,  659,
+      659,  659,  659,  659,  659,  660, 1047,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  663, 1047,  663,  663,
       663,  663,  663,  663,  663,  663,  663,  229,  229,  229,
-      229,  229,  229,  229,  299,  299, 1056,  299,  299,  299,
+      229,  229,  229,  229,  299,  299, 1047,  299,  299,  299,
       299,  299,  299,  299,  299,  676,  676,  676,  676,  676,
-      676,  676,  676,  676,  676,  676,  678,  678, 1056,  678,
+      676,  676,  676,  676,  676,  676,  678,  678, 1047,  678,
       678,  678,  678,  678,  678,  678,  678,  317,  317,  317,
       317,  317,  317,  317,  317,  317,  317,  317,  686,  686,
       686,  686,  686,  686,  686,  686,  686,  686,  686,  690,
@@ -1580,32 +1577,32 @@
       726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
       728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
       728,  732,  732,  732,  732,  732,  732,  732,  732,  732,
-      732,  732,  389, 1056,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  740, 1056,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  743, 1056,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  744, 1056,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  747, 1056,  747,  747,
-      747,  747,  747,  747,  747,  747,  747,  416, 1056, 1056,
-
-      416,  416,  416,  629, 1056,  629,  629,  629,  629,  629,
-      629,  629,  629,  629,  632, 1056,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  634, 1056,  634,  634,  634,
+      732,  732,  389, 1047,  389,  389,  389,  389,  389,  389,
+      389,  389,  389,  740, 1047,  740,  740,  740,  740,  740,
+      740,  740,  740,  740,  743, 1047,  743,  743,  743,  743,
+      743,  743,  743,  743,  743,  744, 1047,  744,  744,  744,
+      744,  744,  744,  744,  744,  744,  747, 1047,  747,  747,
+      747,  747,  747,  747,  747,  747,  747,  416, 1047, 1047,
+
+      416,  416,  416,  629, 1047,  629,  629,  629,  629,  629,
+      629,  629,  629,  629,  632, 1047,  632,  632,  632,  632,
+      632,  632,  632,  632,  632,  634, 1047,  634,  634,  634,
       634,  634,  634,  634,  634,  634,  637,  637,  637,  637,
       637,  637,  637,  230,  230,  230,  230,  230,  230,  230,
-      230,  645, 1056,  645,  645,  645,  645,  490, 1056,  490,
+      230,  645, 1047,  645,  645,  645,  645,  490, 1047,  490,
       490,  490,  490,  267,  267,  267,  267,  267,  267,  267,
-      273, 1056,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  656, 1056,  656,  656,  656,  656,  656,  656,  656,
-      656,  656,  659, 1056,  659,  659,  659,  659,  659,  659,
-
-      659,  659,  659,  660, 1056,  660,  660,  660,  660,  660,
-      660,  660,  660,  660,  663, 1056,  663,  663,  663,  663,
-      663,  663,  663,  663,  663,  291, 1056,  291,  291,  291,
+      273, 1047,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  656, 1047,  656,  656,  656,  656,  656,  656,  656,
+      656,  656,  659, 1047,  659,  659,  659,  659,  659,  659,
+
+      659,  659,  659,  660, 1047,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  663, 1047,  663,  663,  663,  663,
+      663,  663,  663,  663,  663,  291, 1047,  291,  291,  291,
       291,  291,  291,  291,  291,  291,  229,  229,  229,  229,
-      229,  229,  229,  299,  299, 1056,  299,  299,  299,  299,
+      229,  229,  229,  299,  299, 1047,  299,  299,  299,  299,
       299,  299,  299,  299,  676,  676,  676,  676,  676,  676,
-      676,  676,  676,  676,  676,  678,  678, 1056,  678,  678,
-      678,  678,  678,  678,  678,  678,  314,  314, 1056,  314,
+      676,  676,  676,  676,  676,  678,  678, 1047,  678,  678,
+      678,  678,  678,  678,  678,  678,  314,  314, 1047,  314,
       314,  314,  314,  314,  314,  314,  314,  317,  317,  317,
       317,  317,  317,  317,  317,  317,  317,  317,  686,  686,
 
@@ -1625,31 +1622,31 @@
       726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
       728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
       728,  732,  732,  732,  732,  732,  732,  732,  732,  732,
-      732,  732,  389, 1056,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  740, 1056,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  743, 1056,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  744, 1056,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  747, 1056,  747,  747,
-
-      747,  747,  747,  747,  747,  747,  747,  407, 1056,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  416, 1056,
-     1056,  416,  416,  416,  230,  230,  230,  230,  230,  230,
-      230,  230,  490, 1056,  490,  490,  490,  490,  267,  267,
-      267,  267,  267,  267,  267,  273, 1056,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  291, 1056,  291,  291,
+      732,  732,  389, 1047,  389,  389,  389,  389,  389,  389,
+      389,  389,  389,  740, 1047,  740,  740,  740,  740,  740,
+      740,  740,  740,  740,  743, 1047,  743,  743,  743,  743,
+      743,  743,  743,  743,  743,  744, 1047,  744,  744,  744,
+      744,  744,  744,  744,  744,  744,  747, 1047,  747,  747,
+
+      747,  747,  747,  747,  747,  747,  747,  407, 1047,  407,
+      407,  407,  407,  407,  407,  407,  407,  407,  416, 1047,
+     1047,  416,  416,  416,  230,  230,  230,  230,  230,  230,
+      230,  230,  490, 1047,  490,  490,  490,  490,  267,  267,
+      267,  267,  267,  267,  267,  273, 1047,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  291, 1047,  291,  291,
       291,  291,  291,  291,  291,  291,  291,  229,  229,  229,
-      229,  229,  229,  229,  299,  299, 1056,  299,  299,  299,
-      299,  299,  299,  299,  299,  314,  314, 1056,  314,  314,
+      229,  229,  229,  229,  299,  299, 1047,  299,  299,  299,
+      299,  299,  299,  299,  299,  314,  314, 1047,  314,  314,
       314,  314,  314,  314,  314,  314,  317,  317,  317,  317,
 
-      317,  317,  317,  317,  317,  317,  317,   23, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056
+      317,  317,  317,  317,  317,  317,  317,   23, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047
     } ;
 
 static yyconst flex_int16_t yy_chk[7575] =
@@ -1665,7 +1662,7 @@
         3,    3,    3,    6,   14,    6,    6,    3,    3,    3,
         3,   13,   13,   13,   13,   35,   14,   14,   14,   14,
 
-       25, 1050,   25,   25,   29,  102,    6,   35,   27,   27,
+       25, 1041,   25,   25,   29,  102,    6,   35,   27,   27,
        27,   27,    3,   33,    3,   25,   31,    3,   31,    3,
        31,   31,    3,   27,    3,   45,   45,   33,  102,    3,
         3,    5,    5,    5,    5,    5,    5,    5,    5,    5,
@@ -1726,8 +1723,8 @@
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   36,
-     1048,   36,   36,   36,   36,   40,   38,   36,   38,   38,
-       38,   38,   40, 1044,   38,   39,  214,   39,   39,   39,
+     1037,   36,   36,   36,   36,   40,   38,   36,   38,   38,
+       38,   38,   40, 1036,   38,   39,  214,   39,   39,   39,
        39,   46,   46,   39,  214,   39,   39,   39,   39,   39,
        39,   39,   39,   39,   39,   39,   39,   39,   56,   39,
 
@@ -1737,26 +1734,26 @@
        57,   47,  193,   70,   49,   41,   41,  193,   47,   56,
        41,   49,   41,   54,   55,   41,  114,  114,   49,   41,
        54,   42,   41,   42,   42,   42,   42,   54,   50,   58,
-       41,   58,   58,   48,   42,   50,   70, 1043,   42,   41,
+       41,   58,   58,   48,   42,   50,   70, 1035,   42,   41,
        48,   51,   50,   48,   48,   48,   48,   48,   51,   49,
        42,   43,  116,  116,   55,   51,   43,   54,   78,   43,
        43,   43,   43,   43,   43,   78,   50,   43,   52,   43,
 
-       43,  826,   50,   53,  826,   52,   87,  196,   51,  113,
+       43,  825,   50,   53,  825,   52,   87,  196,   51,  113,
        53,  196,   52,   59,   59,   59,   59,   53,  197,   62,
       197,   60,   51,   60,   60,   60,   60,   62,   62,   62,
        62,   62,   62,   67,   67,   67,   67,   64,   62,   87,
-       53,   52,  113, 1042,   64,   69,   69,   69,   69,  126,
-      126,   64,  153,   53,   61,   71, 1041,   71,   74,   71,
+       53,   52,  113, 1033,   64,   69,   69,   69,   69,  126,
+      126,   64,  153,   53,   61,   71, 1032,   71,   74,   71,
        71,   73,  217,   73,   73,   73,   73,  217,   74,   74,
        74,   74,   61,   61,   64,   61,   80,   61,  166,   61,
        61,   61,   61,   80,   61,  153,   61,   61,   61,   81,
-       81,   81,   81,   61, 1039,   74,   74,  128,  128,   76,
+       81,   81,   81,   61, 1030,   74,   74,  128,  128,   76,
 
-       74,   76,   76,   76,   76,  813,   80,   82,   82,   82,
+       74,   76,   76,   76,   76,  812,   80,   82,   82,   82,
        82,  166,   76,  198,   79,  198,   76,   79,   79,   79,
-       79,   79,   89, 1038,   89,   89,   89,   89,   76,   90,
-       90,   90,   90,  813,   92,   99,   99,   99,   99,  117,
+       79,   79,   89, 1029,   89,   89,   89,   89,   76,   90,
+       90,   90,   90,  812,   92,   99,   99,   99,   99,  117,
       117,   92,  200,  117,   92,  105,  118,  118,   92,  105,
        98,   98,   98,   98,  105,  118,  200,   90,  256,   92,
       298,   90,   91,  256,   91,   91,   91,   91,   92,  107,
@@ -1764,135 +1761,135 @@
       109,   91,   98,  109,   91,  123,  123,  109,   91,  190,
       106,   91,  106,  106,  106,  106,  298,  107,  109,   91,
 
-     1036,  107,  130,  130,  138,  138,  123,  109,   91,   94,
+     1026,  107,  130,  130,  138,  138,  123,  109,   91,   94,
        94,  130,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   94,   94,   94, 1035,   94,   94,  216,  119,  119,
+       94,   94,   94,   94, 1023,   94,   94,  216,  119,  119,
       267,   94,   94,   94,   94,  425,  100,  267,  100,  100,
       100,  100,  119,  216,  119,  119,  119,  119,   94,  100,
       131,  131,  425,  100,  140,  140,  129,  129,  206,  206,
       129,  142,  142,  275,  131,  100,  131,  131,  131,  131,
-      142,  213,  213,   94,   94,   95,   95, 1032,   95,   95,
+      142,  213,  213,   94,   94,   95,   95, 1022,   95,   95,
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-      588,   95,   95,  129,  120,  120,  275,   95,   95,   95,
+     1021,   95,   95,  129,  120,  120,  275,   95,   95,   95,
 
-       95,  155,  588,  155,  155,  155,  155,  132,  132, 1029,
-      120,  120,  120,  120,   95, 1028,  135,  135,  227,  227,
+       95,  155,  880,  155,  155,  155,  155,  132,  132,  880,
+      120,  120,  120,  120,   95, 1019,  135,  135,  227,  227,
        95,  622,  122,  132,  132,  132,  132,  141,  141,  122,
       622,  141,  122,  209,  209,  209,  122,  135,  120,   95,
        95,  108,  120,  108,  108,  108,  108,  122,  253,  253,
-     1027,  132,  134,  108,  108,  132,  122,  195,  108,  134,
+     1018,  132,  134,  108,  108,  132,  122,  195,  108,  134,
       108,  195,  134,  108,  141,  195,  134,  108,  230,  146,
       108,  163,  266,  163,  163,  230,  146,  134,  108,  146,
-      266, 1026,  230,  146,  285,  285,  134,  108,  111,  111,
+      266, 1017,  230,  146,  285,  285,  134,  108,  111,  111,
       111,  111,  111,  111,  146,  111,  111,  111,  111,  111,
 
       111,  111,  111,  146,  111,  111,  143,  143,  147,  147,
       111,  111,  111,  111,  156,  156,  156,  156,  308,  308,
-      143,  933,  143,  143,  143,  143,  158,  111,  162,  147,
-      162,  162,  246,  158,  246,  246,  158,  249, 1024,  290,
+      143,  930,  143,  143,  143,  143,  158,  111,  162,  147,
+      162,  162,  246,  158,  246,  246,  158,  249, 1016,  290,
       158,  249,  156,  162,  290,  249,  156,  170,  170,  170,
       170,  158,  111,  111,  112,  112,  112,  112,  112,  112,
-      158,  112,  112,  112,  112,  112,  112,  112,  112,  933,
+      158,  112,  112,  112,  112,  112,  112,  112,  112,  930,
       112,  112,  171,  171,  171,  171,  112,  112,  112,  112,
       172,  172,  172,  172,  144,  144,  173,  173,  173,  173,
-      288,  288,  288,  112,  180,  180,  180,  180, 1023,  112,
+      288,  288,  288,  112,  180,  180,  180,  180, 1009,  112,
 
       144,  144,  144,  144,  215,  222,  313,  428,  215,  428,
-      222,  313,  181,  941,  181,  181,  181,  181,  112,  112,
-      121,  121,  215,  222,  513,  181,  234, 1022,  144,  181,
+      222,  313,  181,  938,  181,  181,  181,  181,  112,  112,
+      121,  121,  215,  222,  513,  181,  234, 1004,  144,  181,
       317,  317,  144,  234,  121,  237,  121,  121,  121,  121,
       234,  181,  237,  236,  319,  319,  121,  121,  513,  237,
-      236,  121,  513,  121,  322,  322,  121,  236,  941,  207,
-      121,  207,  232,  121,  207,  207,  207,  207,  822,  232,
-      822,  121,  232,  232,  232,  232,  232,  237,  237, 1021,
+      236,  121,  513,  121,  322,  322,  121,  236,  938,  207,
+      121,  207,  232,  121,  207,  207,  207,  207,  821,  232,
+      821,  121,  232,  232,  232,  232,  232,  237,  237, 1003,
       121,  124,  124,  124,  124,  124,  124,  124,  124,  124,
       124,  124,  124,  124,  124,  124,  236,  124,  124,  185,
 
       185,  185,  185,  124,  124,  124,  124,  311,  311,  311,
-      185,  205,  205,  205,  205,  890,  233,  235,  239,  890,
-      124, 1014,  205,  233,  235,  239,  185,  238,  240,  891,
-      233,  235,  239,  891,  238,  240,  270,  882,  205,  323,
-      323,  238,  240,  270,  882,  124,  124,  125,  125,  125,
+      185,  205,  205,  205,  205,  888,  233,  235,  239,  888,
+      124, 1001,  205,  233,  235,  239,  185,  238,  240,  889,
+      233,  235,  239,  889,  238,  240,  270,  881,  205,  323,
+      323,  238,  240,  270,  881,  124,  124,  125,  125,  125,
       125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
-      125,  125,  238,  125,  125, 1009,  233,  235,  239,  125,
+      125,  125,  238,  125,  125, 1000,  233,  235,  239,  125,
       125,  125,  125,  241,  334,  334,  240,  341,  341,  270,
-      241,  257,  257,  257,  257, 1008,  125,  241,  259,  259,
+      241,  257,  257,  257,  257,  998,  125,  241,  259,  259,
       259,  259,  125,  261,  261,  261,  261,  261,  269,  343,
 
       343,  269,  269,  269,  269,  269,  271,  271,  271,  271,
       391,  125,  125,  133,  133,  241,  272,  272,  272,  272,
       279,  279,  279,  279,  300,  329,  329,  133,  300,  133,
-      133,  133,  133,  300,  281,  281,  281,  281, 1006,  133,
+      133,  133,  133,  300,  281,  281,  281,  281,  997,  133,
       133,  324,  324,  391,  133,  281,  133,  330,  330,  133,
-      324,  892,  286,  133,  286,  892,  133,  286,  286,  286,
+      324,  890,  286,  133,  286,  890,  133,  286,  286,  286,
       286,  281,  325,  325,  133,  302,  302,  302,  302,  346,
       346,  325,  329,  133,  136,  136,  136,  136,  136,  136,
       136,  136,  136,  136,  136,  136,  136,  136,  136,  670,
       136,  136,  347,  347,  330,  406,  136,  136,  136,  136,
 
-      406,  280,  671,  280,  280,  280,  280,  888,  284,  284,
-      284,  284,  888,  136,  280,  309,  670,  309,  280,  284,
+      406,  280,  671,  280,  280,  280,  280,  886,  284,  284,
+      284,  284,  886,  136,  280,  309,  670,  309,  280,  284,
       309,  309,  309,  309,  320,  320,  358,  358,  320,  671,
       280,  365,  365,  367,  367,  284,  370,  370,  136,  136,
       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
-      137,  137,  137,  137,  137,  830,  137,  137,  830,  348,
-      348,  320,  137,  137,  137,  137,  884,  297,  348,  297,
-      297,  297,  297,  303,  883,  303,  303,  303,  303,  137,
-      297,  883,  349,  349,  297,  137,  303,  371,  371,  884,
+      137,  137,  137,  137,  137,  829,  137,  137,  829,  348,
+      348,  320,  137,  137,  137,  137,  882,  297,  348,  297,
+      297,  297,  297,  303,  884,  303,  303,  303,  303,  137,
+      297,  884,  349,  349,  297,  137,  303,  371,  371,  882,
       303,  349,  304,  304,  304,  304,  297,  321,  321,  326,
 
       326,  321,  303,  304,  137,  137,  145,  145,  344,  344,
-      345,  345,  344,  935,  345,  326,  326,  326,  326,  304,
-      145,  889,  145,  145,  145,  145,  889,  307,  307,  307,
-      307,  935,  145,  145,  321,  332,  332,  145,  307,  145,
-      353,  353,  145,  335,  335,  344,  145,  345, 1005,  145,
-      834,  332,  332,  834,  307,  372,  372,  145,  814,  335,
-      335,  335,  354,  354,  372, 1003,  145,  148,  148,  148,
+      345,  345,  344,  932,  345,  326,  326,  326,  326,  304,
+      145,  887,  145,  145,  145,  145,  887,  307,  307,  307,
+      307,  932,  145,  145,  321,  332,  332,  145,  307,  145,
+      353,  353,  145,  335,  335,  344,  145,  345,  996,  145,
+      833,  332,  332,  833,  307,  372,  372,  145,  813,  335,
+      335,  335,  354,  354,  372,  994,  145,  148,  148,  148,
       148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
-      148,  148,  885,  148,  148,  328,  328,  353,  814,  148,
+      148,  148,  883,  148,  148,  328,  328,  353,  813,  148,
       148,  148,  148,  382,  382,  401,  401,  333,  333,  442,
 
-      442,  328,  328,  328,  328,  885,  148,  893,  333,  354,
-      333,  893,  328,  333,  333,  333,  333,  337,  337,  377,
+      442,  328,  328,  328,  328,  883,  148,  891,  333,  354,
+      333,  891,  328,  333,  333,  333,  333,  337,  337,  377,
       377,  337,  395,  395,  395,  395,  337,  410,  328,  410,
       410,  148,  148,  149,  149,  149,  149,  149,  149,  149,
-      149,  149,  149,  149,  149,  149,  149,  149, 1002,  149,
-      149, 1001,  331,  331,  465,  149,  149,  149,  149,  356,
+      149,  149,  149,  149,  149,  149,  149,  149,  993,  149,
+      149,  992,  331,  331,  465,  149,  149,  149,  149,  356,
       356,  404,  404,  404,  350,  350,  377,  471,  331,  331,
       331,  331,  149,  368,  368,  356,  356,  368,  149,  331,
-      350,  350,  350,  350,  361,  361,  999,  465,  361,  886,
-      352,  352,  998,  361,  505,  331,  886,  149,  149,  157,
+      350,  350,  350,  350,  361,  361,  991,  465,  361,  885,
+      352,  352,  989,  361,  505,  331,  885,  149,  149,  157,
 
-      471,  157,  157,  157,  157,  997,  352,  352,  352,  352,
+      471,  157,  157,  157,  157,  988,  352,  352,  352,  352,
       368,  157,  157,  357,  357,  507,  157,  352,  157,  378,
       378,  157,  359,  359,  357,  157,  357,  505,  157,  357,
-      357,  357,  357,  352,  373,  373,  157,  880,  359,  359,
-      359,  500,  500,  373,  880,  157,  160,  160,  507,  160,
+      357,  357,  357,  352,  373,  373,  157,  878,  359,  359,
+      359,  500,  500,  373,  878,  157,  160,  160,  507,  160,
       160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
-      160,  996,  160,  160,  355,  355,  378,  880,  160,  160,
-      160,  160,  369,  369,  518,  518,  369,  374,  374,  887,
-      355,  355,  355,  355,  995,  160,  887,  376,  376,  572,
-      572,  355,  993,  374,  374,  374,  374,  411,  411,  411,
+      160,  987,  160,  160,  355,  355,  378,  878,  160,  160,
+      160,  160,  369,  369,  518,  518,  369,  374,  374,  931,
+      355,  355,  355,  355,  973,  160,  973,  376,  376,  572,
+      572,  355,  986,  374,  374,  374,  374,  411,  411,  411,
 
-      411,  667,  667,  376,  376,  376,  376,  355,  992,  369,
+      411,  667,  667,  376,  376,  376,  376,  355,  978,  369,
       160,  160,  161,  161,  376,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  934,  161,  161,
+      161,  161,  161,  161,  161,  161,  161,  931,  161,  161,
       376,  379,  379,  577,  161,  161,  161,  161,  380,  380,
       445,  445,  445,  383,  383,  527,  527,  379,  379,  379,
       379,  161,  381,  381,  380,  380,  450,  161,  379,  383,
-      383,  383,  991,  381,  450,  381,  577,  450,  381,  381,
-      381,  381,  528,  528,  379,  934,  161,  161,  289,  289,
+      383,  383,  976,  381,  450,  381,  577,  450,  381,  381,
+      381,  381,  528,  528,  379,  974,  161,  161,  289,  289,
       289,  289,  385,  385,  688,  688,  385,  289,  289,  289,
-      402,  385,  402,  527,  939,  402,  402,  402,  402,  940,
+      402,  385,  402,  527,  936,  402,  402,  402,  402,  937,
 
-      579,  289,  289,  289,  289,  289,  289,  291,  291,  990,
+      579,  289,  289,  289,  289,  289,  289,  291,  291,  972,
       291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
       291,  291,  528,  291,  291,  412,  412,  412,  412,  291,
-      291,  291,  291,  579,  396,  982,  396,  396,  396,  396,
-      939,  397,  397,  397,  397,  940,  291,  396,  503,  503,
+      291,  291,  291,  579,  396,  971,  396,  396,  396,  396,
+      936,  397,  397,  397,  397,  937,  291,  396,  503,  503,
       503,  396,  397,  413,  413,  413,  413,  414,  414,  414,
-      414,  536,  536,  396,  443,  443,  443,  443,  397,  980,
-      536,  291,  291,  292,  292,  978,  292,  292,  292,  292,
+      414,  536,  536,  396,  443,  443,  443,  443,  397,  970,
+      536,  291,  291,  292,  292,  969,  292,  292,  292,  292,
       292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
       292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
 
@@ -1900,23 +1897,23 @@
       292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
       292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
       292,  292,  292,  292,  292,  292,  292,  292,  292,  293,
-      293,  976,  293,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  293,  975,  293,  293,  400,  400,  400,
-      400,  293,  293,  293,  293,  415,  629,  415,  400,  974,
+      293,  967,  293,  293,  293,  293,  293,  293,  293,  293,
+      293,  293,  293,  293,  966,  293,  293,  400,  400,  400,
+      400,  293,  293,  293,  293,  415,  629,  415,  400,  965,
       415,  415,  415,  415,  441,  441,  441,  441,  293,  444,
-      444,  444,  444,  973,  400,  441,  473,  488,  488,  488,
-      488,  488,  894,  473,  895,  474,  894,  293,  895,  629,
+      444,  444,  444,  964,  400,  441,  473,  488,  488,  488,
+      488,  488,  892,  473,  893,  474,  892,  293,  893,  629,
 
       473,  441,  474,  293,  293,  312,  312,  312,  312,  474,
       475,  476,  477,  478,  312,  312,  312,  475,  476,  477,
       478,  521,  521,  521,  475,  476,  477,  478,  312,  312,
       312,  312,  312,  312,  314,  314,  314,  314,  314,  314,
-      474,  314,  314,  314,  314,  314,  314,  314,  314,  971,
-      314,  314,  970,  479,  477,  480,  314,  314,  314,  314,
+      474,  314,  314,  314,  314,  314,  314,  314,  314,  963,
+      314,  314,  962,  479,  477,  480,  314,  314,  314,  314,
       479,  495,  480,  499,  499,  499,  499,  479,  495,  480,
-      496,  969,  496,  314,  499,  496,  496,  496,  496,  501,
+      496,  959,  496,  314,  499,  496,  496,  496,  496,  501,
       501,  501,  501,  502,  502,  502,  502,  575,  575,  575,
-      499,  968,  495,  480,  689,  689,  495,  480,  314,  314,
+      499,  958,  495,  480,  689,  689,  495,  480,  314,  314,
 
       315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
       315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
@@ -1925,29 +1922,29 @@
       315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
       315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
       315,  315,  315,  315,  315,  315,  316,  316,  316,  316,
-      316,  316,  967,  316,  316,  316,  316,  316,  316,  316,
-      316,  966,  316,  316,  634,  481,  482,  963,  316,  316,
-      316,  316,  481,  482,  541,  541,  514,  962,  514,  481,
+      316,  316,  957,  316,  316,  316,  316,  316,  316,  316,
+      316,  956,  316,  316,  634,  481,  482,  954,  316,  316,
+      316,  316,  481,  482,  541,  541,  514,  952,  514,  481,
 
-      482,  514,  514,  514,  514,  316,  961,  517,  517,  517,
+      482,  514,  514,  514,  514,  316,  951,  517,  517,  517,
       517,  519,  519,  519,  519,  542,  542,  634,  517,  520,
-      520,  520,  520,  482,  316,  656,  481,  550,  550,  936,
+      520,  520,  520,  482,  316,  656,  481,  550,  550,  933,
       316,  316,  327,  327,  517,  523,  550,  556,  556,  523,
-      530,  530,  541,  960,  523,  650,  327,  936,  327,  327,
+      530,  530,  541,  950,  523,  650,  327,  933,  327,  327,
       327,  327,  650,  526,  526,  660,  530,  530,  656,  327,
-      958,  555,  555,  327,  526,  542,  526,  531,  531,  526,
-      526,  526,  526,  533,  533,  327,  336,  336,  956,  650,
-      532,  532,  955,  531,  531,  531,  531,  556,  660,  533,
+      949,  555,  555,  327,  526,  542,  526,  531,  531,  526,
+      526,  526,  526,  533,  533,  327,  336,  336,  948,  650,
+      532,  532,  947,  531,  531,  531,  531,  556,  660,  533,
       533,  533,  336,  336,  336,  336,  532,  532,  532,  532,
 
-      954,  336,  336,  336,  535,  535,  684,  684,  535,  555,
+      946,  336,  336,  336,  535,  535,  684,  684,  535,  555,
       537,  537,  694,  694,  537,  336,  336,  336,  336,  336,
       336,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  953,  338,  338,  529,
-      529,  535,  952,  338,  338,  338,  338,  537,  740,  684,
-      676,  540,  540,  951,  676,  529,  529,  529,  529,  676,
-      338,  977,  540,  977,  540,  950,  529,  540,  540,  540,
-      540,  564,  564,  573,  573,  573,  573,  695,  695,  949,
+      338,  338,  338,  338,  338,  338,  945,  338,  338,  529,
+      529,  535,  923,  338,  338,  338,  338,  537,  740,  684,
+      676,  540,  540,  921,  676,  529,  529,  529,  529,  676,
+      338,  975,  540,  975,  540,  920,  529,  540,  540,  540,
+      540,  564,  564,  573,  573,  573,  573,  695,  695,  919,
       564,  740,  529,  706,  706,  338,  338,  339,  339,  339,
       339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
 
@@ -1957,30 +1954,30 @@
       339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
       339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
       339,  339,  339,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  948,  340,
-      340,  543,  543,  926,  651,  340,  340,  340,  340,  544,
-      544,  651,  924,  545,  545,  707,  707,  543,  543,  543,
-      543,  937,  340,  549,  549,  544,  544,  549,  543,  545,
+      340,  340,  340,  340,  340,  340,  340,  340,  918,  340,
+      340,  543,  543,  916,  651,  340,  340,  340,  340,  544,
+      544,  651,  915,  545,  545,  707,  707,  543,  543,  543,
+      543,  934,  340,  549,  549,  544,  544,  549,  543,  545,
 
       545,  545,  545,  551,  551,  546,  546,  551,  651,  547,
       547,  340,  558,  558,  543,  712,  712,  340,  340,  351,
       351,  546,  546,  546,  546,  547,  547,  547,  558,  558,
-      549,  561,  561,  351,  923,  351,  351,  351,  351,  937,
-      551,  554,  554,  922,  685,  685,  351,  561,  561,  561,
-      351,  979,  554,  979,  554,  559,  559,  554,  554,  554,
-      554,  921,  351,  360,  360,  697,  697,  560,  560,  697,
-      919,  559,  559,  559,  559,  574,  574,  574,  574,  360,
+      549,  561,  561,  351,  914,  351,  351,  351,  351,  934,
+      551,  554,  554,  913,  685,  685,  351,  561,  561,  561,
+      351,  977,  554,  977,  554,  559,  559,  554,  554,  554,
+      554,  912,  351,  360,  360,  697,  697,  560,  560,  697,
+      911,  559,  559,  559,  559,  574,  574,  574,  574,  360,
       360,  360,  360,  560,  560,  560,  560,  685,  360,  360,
       360,  563,  563,  713,  713,  563,  744,  565,  565,  724,
 
       724,  565,  360,  360,  360,  360,  360,  360,  362,  362,
       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
-      362,  362,  362,  918,  362,  362,  557,  557,  563,  744,
+      362,  362,  362,  910,  362,  362,  557,  557,  563,  744,
       362,  362,  362,  362,  565,  571,  571,  571,  571,  690,
-      690,  917,  557,  557,  557,  557,  571,  362,  690,  568,
-      981,  568,  981,  557,  568,  568,  568,  568,  582,  582,
+      690,  908,  557,  557,  557,  557,  571,  362,  690,  568,
+      985,  568,  985,  557,  568,  568,  568,  568,  582,  582,
       582,  582,  571,  583,  583,  583,  583,  715,  715,  557,
-      916,  715,  362,  362,  363,  363,  363,  363,  363,  363,
+      907,  715,  362,  362,  363,  363,  363,  363,  363,  363,
       363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
       363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
 
@@ -1989,29 +1986,29 @@
       363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
       363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
       364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
-      364,  364,  364,  364,  364,  915,  364,  364,  914,  639,
+      364,  364,  364,  364,  364,  906,  364,  364,  905,  639,
       640,  641,  364,  364,  364,  364,  639,  640,  641,  642,
       643,  691,  691,  639,  640,  641,  642,  643,  644,  364,
       691,  708,  708,  642,  643,  644,  652,  652,  652,  652,
-      708,  913,  644,  653,  653,  653,  653,  911,  364,  686,
+      708,  904,  644,  653,  653,  653,  653,  903,  364,  686,
 
-      686,  910,  641,  686,  364,  364,  375,  375,  687,  687,
-      642,  989,  687,  989,  643,  672,  672,  672,  672,  909,
-      375,  908,  375,  375,  375,  375,  907,  644,  673,  673,
-      673,  673,  906,  375,  725,  725,  686,  375,  682,  682,
-      702,  702,  683,  683,  905,  687,  700,  700,  904,  375,
+      686,  902,  641,  686,  364,  364,  375,  375,  687,  687,
+      642,  901,  687,  900,  643,  672,  672,  672,  672,  899,
+      375,  898,  375,  375,  375,  375,  897,  644,  673,  673,
+      673,  673,  896,  375,  725,  725,  686,  375,  682,  682,
+      702,  702,  683,  683,  894,  687,  700,  700,  872,  375,
       384,  384,  730,  730,  682,  682,  682,  682,  683,  683,
       683,  683,  700,  700,  700,  700,  384,  384,  384,  384,
-      903,  709,  709,  703,  703,  384,  384,  384,  692,  692,
-      709,  902,  692,  702,  693,  693,  731,  731,  693,  384,
+      871,  709,  709,  703,  703,  384,  384,  384,  692,  692,
+      709,  869,  692,  702,  693,  693,  731,  731,  693,  384,
       384,  384,  384,  384,  384,  386,  386,  386,  386,  386,
 
       386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      901,  386,  386,  701,  701,  692,  703,  386,  386,  386,
-      386,  693,  718,  718,  726,  726,  719,  719,  900,  701,
-      701,  701,  701,  726,  386,  899,  772,  755,  718,  718,
+      868,  386,  386,  701,  701,  692,  703,  386,  386,  386,
+      386,  693,  718,  718,  726,  726,  719,  719,  866,  701,
+      701,  701,  701,  726,  386,  865,  771,  755,  718,  718,
       718,  718,  719,  719,  719,  719,  727,  727,  733,  733,
-      755,  772,  733,  819,  819,  727,  898,  755,  772,  386,
+      755,  771,  733,  818,  818,  727,  864,  755,  771,  386,
       386,  387,  387,  387,  387,  387,  387,  387,  387,  387,
       387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
       387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
@@ -2021,22 +2018,22 @@
       387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
       387,  387,  387,  387,  387,  387,  387,  388,  388,  388,
       388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
-      388,  388,  896,  388,  388,  720,  720,  820,  820,  388,
-      388,  388,  388,  704,  704,  721,  721,  704,  823,  823,
-      705,  705,  824,  824,  705,  938,  388,  874,  710,  710,
-      711,  711,  710,  795,  711,  722,  722,  723,  723,  722,
-      795,  723,  825,  825,  873,  388,  871,  795,  720,  870,
-      704,  388,  388,  405,  405,  405,  405,  705,  721,  827,
-
-      827,  868,  405,  405,  405,  710,  867,  711,  736,  736,
-      736,  736,  722,  938,  723,  795,  405,  405,  405,  405,
-      405,  405,  407,  407,  866,  407,  407,  407,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  942,  407,  407,
+      388,  388,  861,  388,  388,  720,  720,  819,  819,  388,
+      388,  388,  388,  704,  704,  721,  721,  704,  822,  822,
+      705,  705,  823,  823,  705,  935,  388,  860,  710,  710,
+      711,  711,  710,  794,  711,  722,  722,  723,  723,  722,
+      794,  723,  824,  824,  859,  388,  858,  794,  720,  856,
+      704,  388,  388,  405,  405,  405,  405,  705,  721,  826,
+
+      826,  855,  405,  405,  405,  710,  854,  711,  736,  736,
+      736,  736,  722,  935,  723,  794,  405,  405,  405,  405,
+      405,  405,  407,  407,  853,  407,  407,  407,  407,  407,
+      407,  407,  407,  407,  407,  407,  407,  939,  407,  407,
       737,  737,  737,  737,  407,  407,  407,  407,  728,  728,
-      828,  828,  728,  729,  729,  829,  829,  729,  833,  833,
-      877,  407,  878,  879,  897,  879,  879,  877,  930,  878,
-      930,  930, 1017, 1017,  877,  863,  878,  897,  862,  983,
-      983,  983,  942,  983,  897,  728,  407,  407,  408,  408,
+      827,  827,  728,  729,  729,  828,  828,  729,  832,  832,
+      875,  407,  876,  877,  895,  877,  877,  875,  927,  876,
+      927,  927, 1012, 1012,  875,  852,  876,  895,  851,  979,
+      979,  979,  939,  979,  895,  728,  407,  407,  408,  408,
       729,  408,  408,  408,  408,  408,  408,  408,  408,  408,
 
       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
@@ -2044,62 +2041,62 @@
       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  409,  409,  861,  409,  409,  409,
-      409,  409,  409,  409,  409,  409,  409,  409,  409,  943,
-      409,  409,  860,  796,  797,  798,  409,  409,  409,  409,
-      796,  797,  798,  931,  858,  881,  857,  796,  797,  798,
-      803,  804,  881,  409,  931,  875,  876,  803,  804, 1018,
-
-     1018,  931,  875,  876, 1019, 1019,  944,  856,  855,  875,
-      876,  854,  409,  797,  943,  881,  932,  796,  409,  409,
-      504,  504,  504,  504,  798,  803,  853,  932,  804,  504,
-      504,  504,  875,  876,  932,  851,  945,  850,  946,  984,
-      984,  984,  849,  504,  504,  504,  504,  504,  504,  508,
-      508,  944,  508,  508,  508,  508,  508,  508,  508,  508,
-      508,  508,  508,  508,  928,  508,  508,  848,  928,  846,
-      845,  508,  508,  508,  508,  928,  929,  986,  986,  986,
-      929,  945,  928,  946,  988,  988,  988,  929,  508,  985,
-      985,  985,  844,  985,  929,  987,  987,  987,  843,  987,
+      408,  408,  408,  408,  409,  409,  849,  409,  409,  409,
+      409,  409,  409,  409,  409,  409,  409,  409,  409,  940,
+      409,  409,  848,  795,  796,  797,  409,  409,  409,  409,
+      795,  796,  797,  928,  847,  879,  846,  795,  796,  797,
+      802,  803,  879,  409,  928,  873,  874,  802,  803, 1013,
+
+     1013,  928,  873,  874, 1014, 1014,  941,  844,  843,  873,
+      874,  842,  409,  796,  940,  879,  929,  795,  409,  409,
+      504,  504,  504,  504,  797,  802,  841,  929,  803,  504,
+      504,  504,  873,  874,  929,  840,  942,  839,  943,  980,
+      980,  980,  838,  504,  504,  504,  504,  504,  504,  508,
+      508,  941,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  925,  508,  508,  837,  925,  835,
+      834,  508,  508,  508,  508,  925,  926,  982,  982,  982,
+      926,  942,  925,  943,  984,  984,  984,  926,  508,  981,
+      981,  981,  809,  981,  926,  983,  983,  983,  800,  983,
 
-      842,  841,  840,  839,  838,  836,  835,  810,  801,  794,
-      793,  792,  791,  508,  508,  509,  509,  790,  509,  509,
+      793,  792,  791,  790,  789,  788,  787,  786,  785,  784,
+      783,  782,  779,  508,  508,  509,  509,  778,  509,  509,
       509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
       509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
       509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
       509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
       509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
       509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
-      509,  522,  522,  522,  522,  789,  788,  787,  786,  785,
-      522,  522,  522,  784,  783,  780,  779,  777,  774,  773,
+      509,  522,  522,  522,  522,  776,  773,  772,  770,  769,
+      522,  522,  522,  768,  767,  766,  765,  764,  763,  762,
 
-      771,  770,  769,  768,  522,  522,  522,  522,  522,  522,
-      524,  524,  524,  524,  524,  524,  767,  524,  524,  524,
-      524,  524,  524,  524,  524,  766,  524,  524,  765,  764,
-      763,  761,  524,  524,  524,  524,  760,  759,  758,  756,
-      754,  752,  751,  748,  743,  739,  738,  735,  717,  524,
-      699,  679,  675,  674,  669,  668,  664,  659,  655,  654,
+      760,  759,  758,  757,  522,  522,  522,  522,  522,  522,
+      524,  524,  524,  524,  524,  524,  754,  524,  524,  524,
+      524,  524,  524,  524,  524,  752,  524,  524,  751,  748,
+      743,  739,  524,  524,  524,  524,  738,  735,  717,  699,
+      679,  675,  674,  669,  668,  664,  659,  655,  654,  524,
       649,  648,  647,  646,  638,  637,  632,  628,  627,  626,
-      625,  624,  623,  621,  524,  524,  525,  525,  525,  525,
-      525,  525,  620,  525,  525,  525,  525,  525,  525,  525,
+      625,  624,  623,  621,  620,  619,  618,  617,  616,  614,
+      613,  612,  611,  610,  524,  524,  525,  525,  525,  525,
+      525,  525,  609,  525,  525,  525,  525,  525,  525,  525,
       525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
 
       525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
       525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
       525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
       525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  534,  534,  619,  618,  617,  616,  614,  613,
-      612,  611,  610,  609,  608,  607,  605,  604,  534,  534,
-      534,  534,  603,  602,  601,  600,  599,  534,  534,  534,
-      598,  597,  596,  595,  593,  592,  591,  590,  589,  587,
-      586,  534,  534,  534,  534,  534,  534,  538,  538,  538,
+      525,  525,  534,  534,  608,  607,  605,  604,  603,  602,
+      601,  600,  599,  598,  597,  596,  595,  593,  534,  534,
+      534,  534,  592,  591,  590,  589,  588,  534,  534,  534,
+      587,  586,  585,  584,  578,  570,  569,  516,  515,  512,
+      511,  534,  534,  534,  534,  534,  534,  538,  538,  538,
       538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
 
-      538,  538,  585,  538,  538,  584,  578,  570,  569,  538,
-      538,  538,  538,  516,  515,  512,  511,  510,  506,  498,
-      497,  494,  493,  492,  491,  486,  538,  485,  484,  483,
-      472,  469,  466,  464,  463,  462,  461,  460,  459,  458,
-      457,  456,  455,  454,  453,  452,  451,  449,  448,  447,
-      439,  538,  538,  539,  539,  539,  539,  539,  539,  539,
+      538,  538,  510,  538,  538,  506,  498,  497,  494,  538,
+      538,  538,  538,  493,  492,  491,  486,  485,  484,  483,
+      472,  469,  466,  464,  463,  462,  538,  461,  460,  459,
+      458,  457,  456,  455,  454,  453,  452,  451,  449,  448,
+      447,  439,  438,  437,  436,  435,  434,  433,  432,  431,
+      430,  538,  538,  539,  539,  539,  539,  539,  539,  539,
       539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
       539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
       539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
@@ -2107,27 +2104,27 @@
 
       539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
       539,  539,  539,  539,  539,  539,  539,  539,  539,  548,
-      548,  438,  437,  436,  435,  434,  433,  432,  431,  430,
-      429,  427,  426,  424,  423,  548,  548,  548,  548,  422,
-      421,  420,  419,  418,  548,  548,  548,  417,  399,  398,
-      394,  306,  305,  296,  295,  294,  283,  282,  548,  548,
+      548,  429,  427,  426,  424,  423,  422,  421,  420,  419,
+      418,  417,  399,  398,  394,  548,  548,  548,  548,  306,
+      305,  296,  295,  294,  548,  548,  548,  283,  282,  278,
+      268,  265,  264,  260,  255,  254,  252,  251,  548,  548,
       548,  548,  548,  548,  552,  552,  552,  552,  552,  552,
-      552,  552,  552,  552,  552,  552,  552,  552,  552,  278,
-      552,  552,  268,  265,  264,  260,  552,  552,  552,  552,
-      255,  254,  252,  251,  250,  248,  247,  231,  229,  228,
-
-      221,  220,  218,  552,  212,  211,  203,  202,  201,  199,
-      194,  192,  191,  189,  188,  177,  159,  154,  152,  110,
-      101,   96,   93,   88,   86,   77,   72,   63,  552,  552,
+      552,  552,  552,  552,  552,  552,  552,  552,  552,  250,
+      552,  552,  248,  247,  231,  229,  552,  552,  552,  552,
+      228,  221,  220,  218,  212,  211,  203,  202,  201,  199,
+
+      194,  192,  191,  552,  189,  188,  177,  159,  154,  152,
+      110,  101,   96,   93,   88,   86,   77,   72,   63,   34,
+       32,   28,   23,    8,    4,    2,    0,    0,  552,  552,
       553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
       553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
       553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
       553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
       553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
       553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  562,  562,   34,   32,
+      553,  553,  553,  553,  553,  553,  562,  562,    0,    0,
 
-       28,   23,    8,    4,    2,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,  562,  562,  562,  562,    0,    0,    0,    0,
         0,  562,  562,  562,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,  562,  562,  562,  562,  562,
@@ -2272,221 +2269,221 @@
 
         0,    0,    0,    0,    0,    0,    0,  750,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  750,  750,  807,  807,    0,  807,  807,  807,
-      807,  807,  807,  807,  807,  807,  807,  807,  807,    0,
-      807,  807,    0,    0,    0,    0,  807,  807,  807,  807,
+        0,    0,  750,  750,  806,  806,    0,  806,  806,  806,
+      806,  806,  806,  806,  806,  806,  806,  806,  806,    0,
+      806,  806,    0,    0,    0,    0,  806,  806,  806,  806,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  807,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  807,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  807,  807,
-      808,  808,    0,  808,  808,  808,  808,  808,  808,  808,
-
-      808,  808,  808,  808,  808,    0,  808,  808,    0,    0,
-        0,    0,  808,  808,  808,  808,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  808,
+        0,    0,    0,  806,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  806,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  806,  806,
+      807,  807,    0,  807,  807,  807,  807,  807,  807,  807,
+
+      807,  807,  807,  807,  807,    0,  807,  807,    0,    0,
+        0,    0,  807,  807,  807,  807,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  807,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  808,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  808,  808,  817,  817,  817,  817,
-      817,  817,    0,  817,  817,  817,  817,  817,  817,  817,
-      817,    0,  817,  817,    0,    0,    0,    0,  817,  817,
-      817,  817,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  817,    0,    0,    0,    0,
+        0,    0,  807,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  807,  807,  816,  816,  816,  816,
+      816,  816,    0,  816,  816,  816,  816,  816,  816,  816,
+      816,    0,  816,  816,    0,    0,    0,    0,  816,  816,
+      816,  816,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  816,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,  817,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  816,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      817,  817,  818,  818,  818,  818,  818,  818,    0,  818,
-      818,  818,  818,  818,  818,  818,  818,    0,  818,  818,
-        0,    0,    0,    0,  818,  818,  818,  818,    0,    0,
+      816,  816,  817,  817,  817,  817,  817,  817,    0,  817,
+      817,  817,  817,  817,  817,  817,  817,    0,  817,  817,
+        0,    0,    0,    0,  817,  817,  817,  817,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  818,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  818,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  818,  818,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821, 1057,    0, 1057, 1057, 1057, 1057,
-     1057, 1057, 1057, 1057, 1057, 1058,    0,    0, 1058, 1058,
-     1059,    0, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
-     1059, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1061,
-     1061, 1061, 1061, 1062,    0, 1062,    0, 1062, 1062, 1062,
-
-     1062, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1064,    0,
-     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1065,
-        0, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1066,    0, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1067,    0, 1067, 1067, 1067, 1067, 1067, 1067, 1067,
-     1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069,
-     1069,    0, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
+        0,  817,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  817,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  817,  817,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
+      820,  820,  820,  820, 1048,    0, 1048, 1048, 1048, 1048,
+     1048, 1048, 1048, 1048, 1048, 1049,    0,    0, 1049, 1049,
+     1050,    0, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+     1050, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1052,
+     1052, 1052, 1052, 1053,    0, 1053,    0, 1053, 1053, 1053,
+
+     1053, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1055,    0,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1056,
+        0, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
+     1057,    0, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
+     1057, 1058,    0, 1058, 1058, 1058, 1058, 1058, 1058, 1058,
+     1058, 1058, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1060,
+     1060,    0, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1062, 1062,    0, 1062, 1062, 1062, 1062, 1062, 1062,
+     1062, 1062, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+
+     1063, 1063, 1063, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
+     1064, 1064, 1064, 1064, 1065, 1065, 1065, 1065, 1065, 1065,
+     1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066, 1066, 1066,
+     1066, 1066, 1066, 1066, 1066, 1066, 1067, 1067, 1067, 1067,
+     1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068,
+     1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069,
+     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070,
      1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
-     1070, 1071, 1071,    0, 1071, 1071, 1071, 1071, 1071, 1071,
-     1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
+     1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071,
+     1071, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
 
-     1072, 1072, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
-     1073, 1073, 1073, 1073, 1074, 1074, 1074, 1074, 1074, 1074,
-     1074, 1074, 1074, 1074, 1074, 1075, 1075, 1075, 1075, 1075,
-     1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, 1076, 1076,
-     1076, 1076, 1076, 1076, 1076, 1076, 1076, 1077, 1077, 1077,
-     1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1078, 1078,
-     1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079,
-     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
-     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
-     1080, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
-
-     1081, 1081, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082,
-     1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
-     1083, 1083, 1083, 1083, 1084,    0, 1084, 1084, 1084, 1084,
-     1084, 1084, 1084, 1084, 1084, 1085,    0, 1085, 1085, 1085,
-     1085, 1085, 1085, 1085, 1085, 1085, 1086,    0, 1086, 1086,
-     1086, 1086, 1086, 1086, 1086, 1086, 1086, 1087,    0, 1087,
-     1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1088,    0,
-        0, 1088, 1088, 1089,    0, 1089, 1089, 1089, 1089, 1089,
-     1089, 1089, 1089, 1089, 1090,    0,    0, 1090, 1090, 1090,
-     1091,    0,    0, 1091, 1092, 1092, 1092, 1092, 1092, 1092,
-
-     1092, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1094,
-        0,    0,    0,    0, 1094, 1094, 1094, 1094, 1095, 1095,
-     1095, 1095, 1095, 1095, 1096, 1096, 1096, 1096, 1097,    0,
-     1097, 1097, 1097, 1097, 1098, 1098, 1098, 1098, 1098, 1098,
-     1098, 1099,    0, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
-     1099, 1099, 1100,    0, 1100, 1100, 1100, 1100, 1100, 1100,
-     1100, 1100, 1100, 1101,    0, 1101, 1101, 1101, 1101, 1101,
-     1101, 1101, 1101, 1101, 1102,    0, 1102, 1102, 1102, 1102,
-     1102, 1102, 1102, 1102, 1102, 1103, 1103,    0, 1103, 1103,
-     1103, 1103, 1103, 1103, 1103, 1103, 1104, 1104, 1104, 1104,
-
-     1104, 1104, 1104, 1104, 1104, 1104, 1104, 1105, 1105,    0,
-     1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1106, 1106,
-     1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1107,
-     1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107,
+     1072, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
+     1073, 1073, 1073, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
+     1074, 1074, 1074, 1074, 1075,    0, 1075, 1075, 1075, 1075,
+     1075, 1075, 1075, 1075, 1075, 1076,    0, 1076, 1076, 1076,
+     1076, 1076, 1076, 1076, 1076, 1076, 1077,    0, 1077, 1077,
+     1077, 1077, 1077, 1077, 1077, 1077, 1077, 1078,    0, 1078,
+     1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079,    0,
+        0, 1079, 1079, 1080,    0, 1080, 1080, 1080, 1080, 1080,
+     1080, 1080, 1080, 1080, 1081,    0,    0, 1081, 1081, 1081,
+     1082,    0,    0, 1082, 1083, 1083, 1083, 1083, 1083, 1083,
+
+     1083, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1085,
+        0,    0,    0,    0, 1085, 1085, 1085, 1085, 1086, 1086,
+     1086, 1086, 1086, 1086, 1087, 1087, 1087, 1087, 1088,    0,
+     1088, 1088, 1088, 1088, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1090,    0, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
+     1090, 1090, 1091,    0, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1091, 1091, 1092,    0, 1092, 1092, 1092, 1092, 1092,
+     1092, 1092, 1092, 1092, 1093,    0, 1093, 1093, 1093, 1093,
+     1093, 1093, 1093, 1093, 1093, 1094, 1094,    0, 1094, 1094,
+     1094, 1094, 1094, 1094, 1094, 1094, 1095, 1095, 1095, 1095,
+
+     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1096, 1096,    0,
+     1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097, 1097,
+     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098,
+     1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
+     1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
+     1099, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100,
+     1100, 1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
+     1101, 1101, 1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102,
+     1102, 1102, 1102, 1102, 1103, 1103, 1103, 1103, 1103, 1103,
+     1103, 1103, 1103, 1103, 1103, 1104, 1104, 1104, 1104, 1104,
+
+     1104, 1104, 1104, 1104, 1104, 1104, 1105, 1105, 1105, 1105,
+     1105, 1105, 1105, 1105, 1105, 1105, 1105, 1106, 1106, 1106,
+     1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1107, 1107,
+     1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108,
      1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
-     1108, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109,
-     1109, 1109, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
-     1110, 1110, 1110, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
-     1111, 1111, 1111, 1111, 1112, 1112, 1112, 1112, 1112, 1112,
-     1112, 1112, 1112, 1112, 1112, 1113, 1113, 1113, 1113, 1113,
-
-     1113, 1113, 1113, 1113, 1113, 1113, 1114, 1114, 1114, 1114,
-     1114, 1114, 1114, 1114, 1114, 1114, 1114, 1115, 1115, 1115,
-     1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116, 1116,
-     1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1117,
-     1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
-     1118,    0, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
-     1118, 1119,    0, 1119, 1119, 1119, 1119, 1119, 1119, 1119,
-     1119, 1119, 1120,    0, 1120, 1120, 1120, 1120, 1120, 1120,
-     1120, 1120, 1120, 1121,    0, 1121, 1121, 1121, 1121, 1121,
-     1121, 1121, 1121, 1121, 1122,    0,    0, 1122, 1122, 1123,
-
-        0,    0, 1123, 1123, 1123, 1124,    0,    0, 1124, 1125,
-        0, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
-     1126,    0, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126,
-     1126, 1127,    0, 1127, 1127, 1127, 1127, 1127, 1127, 1127,
-     1127, 1127, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1129,
+     1109,    0, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109,
+     1109, 1110,    0, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
+     1110, 1110, 1111,    0, 1111, 1111, 1111, 1111, 1111, 1111,
+     1111, 1111, 1111, 1112,    0, 1112, 1112, 1112, 1112, 1112,
+     1112, 1112, 1112, 1112, 1113,    0,    0, 1113, 1113, 1114,
+
+        0,    0, 1114, 1114, 1114, 1115,    0,    0, 1115, 1116,
+        0, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
+     1117,    0, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
+     1117, 1118,    0, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
+     1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1120,
+     1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121, 1121, 1121,
+     1121, 1121, 1121, 1122,    0, 1122, 1122, 1122, 1122, 1123,
+        0, 1123, 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124,
+     1124, 1124, 1125,    0, 1125, 1125, 1125, 1125, 1125, 1125,
+     1125, 1125, 1125, 1126,    0, 1126, 1126, 1126, 1126, 1126,
+
+     1126, 1126, 1126, 1126, 1127,    0, 1127, 1127, 1127, 1127,
+     1127, 1127, 1127, 1127, 1127, 1128,    0, 1128, 1128, 1128,
+     1128, 1128, 1128, 1128, 1128, 1128, 1129,    0, 1129, 1129,
      1129, 1129, 1129, 1129, 1129, 1129, 1129, 1130, 1130, 1130,
-     1130, 1130, 1130, 1131,    0, 1131, 1131, 1131, 1131, 1132,
-        0, 1132, 1132, 1132, 1132, 1133, 1133, 1133, 1133, 1133,
-     1133, 1133, 1134,    0, 1134, 1134, 1134, 1134, 1134, 1134,
-     1134, 1134, 1134, 1135,    0, 1135, 1135, 1135, 1135, 1135,
-
-     1135, 1135, 1135, 1135, 1136,    0, 1136, 1136, 1136, 1136,
-     1136, 1136, 1136, 1136, 1136, 1137,    0, 1137, 1137, 1137,
-     1137, 1137, 1137, 1137, 1137, 1137, 1138,    0, 1138, 1138,
-     1138, 1138, 1138, 1138, 1138, 1138, 1138, 1139, 1139, 1139,
-     1139, 1139, 1139, 1139, 1140, 1140,    0, 1140, 1140, 1140,
-     1140, 1140, 1140, 1140, 1140, 1141, 1141, 1141, 1141, 1141,
-     1141, 1141, 1141, 1141, 1141, 1141, 1142, 1142,    0, 1142,
-     1142, 1142, 1142, 1142, 1142, 1142, 1142, 1143, 1143, 1143,
-     1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1144, 1144,
-     1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1145,
+     1130, 1130, 1130, 1130, 1131, 1131,    0, 1131, 1131, 1131,
+     1131, 1131, 1131, 1131, 1131, 1132, 1132, 1132, 1132, 1132,
+     1132, 1132, 1132, 1132, 1132, 1132, 1133, 1133,    0, 1133,
+     1133, 1133, 1133, 1133, 1133, 1133, 1133, 1134, 1134, 1134,
+     1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1135, 1135,
+     1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1136,
+
+     1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
+     1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137,
+     1137, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
+     1138, 1138, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
+     1139, 1139, 1139, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
+     1140, 1140, 1140, 1140, 1141, 1141, 1141, 1141, 1141, 1141,
+     1141, 1141, 1141, 1141, 1141, 1142, 1142, 1142, 1142, 1142,
+     1142, 1142, 1142, 1142, 1142, 1142, 1143, 1143, 1143, 1143,
+     1143, 1143, 1143, 1143, 1143, 1143, 1143, 1144, 1144, 1144,
+     1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1145, 1145,
 
-     1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
+     1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1146,
      1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
-     1146, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
-     1147, 1147, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
-     1148, 1148, 1148, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
-     1149, 1149, 1149, 1149, 1150, 1150, 1150, 1150, 1150, 1150,
-     1150, 1150, 1150, 1150, 1150, 1151, 1151, 1151, 1151, 1151,
-     1151, 1151, 1151, 1151, 1151, 1151, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1153, 1153, 1153,
-     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1154, 1154,
-
-     1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1155,
-     1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
-     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
-     1156, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
-     1157, 1157, 1158,    0, 1158, 1158, 1158, 1158, 1158, 1158,
-     1158, 1158, 1158, 1159,    0, 1159, 1159, 1159, 1159, 1159,
-     1159, 1159, 1159, 1159, 1160,    0, 1160, 1160, 1160, 1160,
-     1160, 1160, 1160, 1160, 1160, 1161,    0, 1161, 1161, 1161,
-     1161, 1161, 1161, 1161, 1161, 1161, 1162,    0, 1162, 1162,
-     1162, 1162, 1162, 1162, 1162, 1162, 1162, 1163,    0,    0,
-
-     1163, 1163, 1163, 1164,    0, 1164, 1164, 1164, 1164, 1164,
-     1164, 1164, 1164, 1164, 1165,    0, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1166,    0, 1166, 1166, 1166,
-     1166, 1166, 1166, 1166, 1166, 1166, 1167, 1167, 1167, 1167,
-     1167, 1167, 1167, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
-     1168, 1169,    0, 1169, 1169, 1169, 1169, 1170,    0, 1170,
-     1170, 1170, 1170, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1172,    0, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
-     1172, 1173,    0, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
-     1173, 1173, 1174,    0, 1174, 1174, 1174, 1174, 1174, 1174,
-
-     1174, 1174, 1174, 1175,    0, 1175, 1175, 1175, 1175, 1175,
-     1175, 1175, 1175, 1175, 1176,    0, 1176, 1176, 1176, 1176,
-     1176, 1176, 1176, 1176, 1176, 1177,    0, 1177, 1177, 1177,
-     1177, 1177, 1177, 1177, 1177, 1177, 1178, 1178, 1178, 1178,
-     1178, 1178, 1178, 1179, 1179,    0, 1179, 1179, 1179, 1179,
-     1179, 1179, 1179, 1179, 1180, 1180, 1180, 1180, 1180, 1180,
-     1180, 1180, 1180, 1180, 1180, 1181, 1181,    0, 1181, 1181,
-     1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182,    0, 1182,
-     1182, 1182, 1182, 1182, 1182, 1182, 1182, 1183, 1183, 1183,
-     1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1184, 1184,
+     1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+     1147, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
+     1148, 1148, 1149,    0, 1149, 1149, 1149, 1149, 1149, 1149,
+     1149, 1149, 1149, 1150,    0, 1150, 1150, 1150, 1150, 1150,
+     1150, 1150, 1150, 1150, 1151,    0, 1151, 1151, 1151, 1151,
+     1151, 1151, 1151, 1151, 1151, 1152,    0, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1152, 1153,    0, 1153, 1153,
+     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1154,    0,    0,
+
+     1154, 1154, 1154, 1155,    0, 1155, 1155, 1155, 1155, 1155,
+     1155, 1155, 1155, 1155, 1156,    0, 1156, 1156, 1156, 1156,
+     1156, 1156, 1156, 1156, 1156, 1157,    0, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158,
+     1158, 1158, 1158, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
+     1159, 1160,    0, 1160, 1160, 1160, 1160, 1161,    0, 1161,
+     1161, 1161, 1161, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+     1163,    0, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
+     1163, 1164,    0, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
+     1164, 1164, 1165,    0, 1165, 1165, 1165, 1165, 1165, 1165,
+
+     1165, 1165, 1165, 1166,    0, 1166, 1166, 1166, 1166, 1166,
+     1166, 1166, 1166, 1166, 1167,    0, 1167, 1167, 1167, 1167,
+     1167, 1167, 1167, 1167, 1167, 1168,    0, 1168, 1168, 1168,
+     1168, 1168, 1168, 1168, 1168, 1168, 1169, 1169, 1169, 1169,
+     1169, 1169, 1169, 1170, 1170,    0, 1170, 1170, 1170, 1170,
+     1170, 1170, 1170, 1170, 1171, 1171, 1171, 1171, 1171, 1171,
+     1171, 1171, 1171, 1171, 1171, 1172, 1172,    0, 1172, 1172,
+     1172, 1172, 1172, 1172, 1172, 1172, 1173, 1173,    0, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1174, 1174, 1174,
+     1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1175, 1175,
+
+     1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1176,
+     1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176,
+     1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
+     1177, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
+     1178, 1178, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+     1179, 1179, 1179, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
+     1180, 1180, 1180, 1180, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1181, 1182, 1182, 1182, 1182, 1182,
+     1182, 1182, 1182, 1182, 1182, 1182, 1183, 1183, 1183, 1183,
+     1183, 1183, 1183, 1183, 1183, 1183, 1183, 1184, 1184, 1184,
 
-     1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
+     1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1185,
+     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1186,
      1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
-     1186, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
-     1187, 1187, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
-     1188, 1188, 1188, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1190, 1190, 1190, 1190, 1190, 1190,
-     1190, 1190, 1190, 1190, 1190, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1192, 1192, 1192, 1192,
-     1192, 1192, 1192, 1192, 1192, 1192, 1192, 1193, 1193, 1193,
-
-     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1194, 1194,
-     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
-     1196, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
-     1197, 1197, 1198,    0, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1199,    0, 1199, 1199, 1199, 1199, 1199,
-     1199, 1199, 1199, 1199, 1200,    0, 1200, 1200, 1200, 1200,
-     1200, 1200, 1200, 1200, 1200, 1201,    0, 1201, 1201, 1201,
-     1201, 1201, 1201, 1201, 1201, 1201, 1202,    0, 1202, 1202,
-
-     1202, 1202, 1202, 1202, 1202, 1202, 1202, 1203,    0, 1203,
-     1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1204,    0,
-        0, 1204, 1204, 1204, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1206,    0, 1206, 1206, 1206, 1206, 1207, 1207,
-     1207, 1207, 1207, 1207, 1207, 1208,    0, 1208, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1209,    0, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1210, 1210, 1210,
-     1210, 1210, 1210, 1210, 1211, 1211,    0, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1212, 1212,    0, 1212, 1212,
-     1212, 1212, 1212, 1212, 1212, 1212, 1213, 1213, 1213, 1213,
-
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1056, 1056
+     1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
+     1187, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
+     1188, 1188, 1189,    0, 1189, 1189, 1189, 1189, 1189, 1189,
+     1189, 1189, 1189, 1190,    0, 1190, 1190, 1190, 1190, 1190,
+     1190, 1190, 1190, 1190, 1191,    0, 1191, 1191, 1191, 1191,
+     1191, 1191, 1191, 1191, 1191, 1192,    0, 1192, 1192, 1192,
+     1192, 1192, 1192, 1192, 1192, 1192, 1193,    0, 1193, 1193,
+
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1194,    0, 1194,
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195,    0,
+        0, 1195, 1195, 1195, 1196, 1196, 1196, 1196, 1196, 1196,
+     1196, 1196, 1197,    0, 1197, 1197, 1197, 1197, 1198, 1198,
+     1198, 1198, 1198, 1198, 1198, 1199,    0, 1199, 1199, 1199,
+     1199, 1199, 1199, 1199, 1199, 1199, 1200,    0, 1200, 1200,
+     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1202, 1202,    0, 1202, 1202, 1202,
+     1202, 1202, 1202, 1202, 1202, 1203, 1203,    0, 1203, 1203,
+     1203, 1203, 1203, 1203, 1203, 1203, 1204, 1204, 1204, 1204,
+
+     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1047
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2595,7 +2592,7 @@
 
 
 
-#line 2599 "compilers/imcc/imclexer.c"
+#line 2596 "compilers/imcc/imclexer.c"
 
 #define INITIAL 0
 #define emit 1
@@ -2854,7 +2851,7 @@
             return 0;
         }
 
-#line 2858 "compilers/imcc/imclexer.c"
+#line 2855 "compilers/imcc/imclexer.c"
 
     if ( !yyg->yy_init )
         {
@@ -2908,13 +2905,13 @@
             while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                 {
                 yy_current_state = (int) yy_def[yy_current_state];
-                if ( yy_current_state >= 1057 )
+                if ( yy_current_state >= 1048 )
                     yy_c = yy_meta[(unsigned int) yy_c];
                 }
             yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
             ++yy_cp;
             }
-        while ( yy_current_state != 1056 );
+        while ( yy_current_state != 1047 );
         yy_cp = yyg->yy_last_accepting_cpos;
         yy_current_state = yyg->yy_last_accepting_state;
 
@@ -3372,225 +3369,220 @@
     YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 357 "compilers/imcc/imcc.l"
-return ENDNAMESPACE;
-    YY_BREAK
-case 68:
-YY_RULE_SETUP
 #line 358 "compilers/imcc/imcc.l"
 return LOCAL;
     YY_BREAK
-case 69:
+case 68:
 YY_RULE_SETUP
 #line 359 "compilers/imcc/imcc.l"
 return CONST;
     YY_BREAK
-case 70:
+case 69:
 YY_RULE_SETUP
 #line 360 "compilers/imcc/imcc.l"
 return GLOBAL_CONST;
     YY_BREAK
-case 71:
+case 70:
 YY_RULE_SETUP
 #line 361 "compilers/imcc/imcc.l"
 return PARAM;
     YY_BREAK
-case 72:
+case 71:
 YY_RULE_SETUP
 #line 362 "compilers/imcc/imcc.l"
 return GOTO;
     YY_BREAK
-case 73:
+case 72:
 YY_RULE_SETUP
 #line 363 "compilers/imcc/imcc.l"
 return IF;
     YY_BREAK
-case 74:
+case 73:
 YY_RULE_SETUP
 #line 364 "compilers/imcc/imcc.l"
 return UNLESS;
     YY_BREAK
-case 75:
+case 74:
 YY_RULE_SETUP
 #line 365 "compilers/imcc/imcc.l"
 return PNULL;
     YY_BREAK
-case 76:
+case 75:
 YY_RULE_SETUP
 #line 366 "compilers/imcc/imcc.l"
 return INTV;
     YY_BREAK
-case 77:
+case 76:
 YY_RULE_SETUP
 #line 367 "compilers/imcc/imcc.l"
 return FLOATV;
     YY_BREAK
-case 78:
+case 77:
 YY_RULE_SETUP
 #line 368 "compilers/imcc/imcc.l"
 return NEW;
     YY_BREAK
-case 79:
+case 78:
 YY_RULE_SETUP
 #line 369 "compilers/imcc/imcc.l"
 return PMCV;
     YY_BREAK
-case 80:
+case 79:
 YY_RULE_SETUP
 #line 370 "compilers/imcc/imcc.l"
 return STRINGV;
     YY_BREAK
-case 81:
+case 80:
 YY_RULE_SETUP
 #line 371 "compilers/imcc/imcc.l"
 return SHIFT_LEFT;
     YY_BREAK
-case 82:
+case 81:
 YY_RULE_SETUP
 #line 372 "compilers/imcc/imcc.l"
 return SHIFT_RIGHT;
     YY_BREAK
-case 83:
+case 82:
 YY_RULE_SETUP
 #line 373 "compilers/imcc/imcc.l"
 return SHIFT_RIGHT_U;
     YY_BREAK
-case 84:
+case 83:
 YY_RULE_SETUP
 #line 374 "compilers/imcc/imcc.l"
 return LOG_AND;
     YY_BREAK
-case 85:
+case 84:
 YY_RULE_SETUP
 #line 375 "compilers/imcc/imcc.l"
 return LOG_OR;
     YY_BREAK
-case 86:
+case 85:
 YY_RULE_SETUP
 #line 376 "compilers/imcc/imcc.l"
 return LOG_XOR;
     YY_BREAK
-case 87:
+case 86:
 YY_RULE_SETUP
 #line 377 "compilers/imcc/imcc.l"
 return RELOP_LT;
     YY_BREAK
-case 88:
+case 87:
 YY_RULE_SETUP
 #line 378 "compilers/imcc/imcc.l"
 return RELOP_LTE;
     YY_BREAK
-case 89:
+case 88:
 YY_RULE_SETUP
 #line 379 "compilers/imcc/imcc.l"
 return RELOP_GT;
     YY_BREAK
-case 90:
+case 89:
 YY_RULE_SETUP
 #line 380 "compilers/imcc/imcc.l"
 return RELOP_GTE;
     YY_BREAK
-case 91:
+case 90:
 YY_RULE_SETUP
 #line 381 "compilers/imcc/imcc.l"
 return RELOP_EQ;
     YY_BREAK
-case 92:
+case 91:
 YY_RULE_SETUP
 #line 382 "compilers/imcc/imcc.l"
 return RELOP_NE;
     YY_BREAK
-case 93:
+case 92:
 YY_RULE_SETUP
 #line 383 "compilers/imcc/imcc.l"
 return POW;
     YY_BREAK
-case 94:
+case 93:
 YY_RULE_SETUP
 #line 385 "compilers/imcc/imcc.l"
 return CONCAT;
     YY_BREAK
-case 95:
+case 94:
 YY_RULE_SETUP
 #line 386 "compilers/imcc/imcc.l"
 return DOT;
     YY_BREAK
-case 96:
+case 95:
 YY_RULE_SETUP
 #line 387 "compilers/imcc/imcc.l"
 return DOTDOT;
     YY_BREAK
-case 97:
+case 96:
 YY_RULE_SETUP
 #line 388 "compilers/imcc/imcc.l"
 return PLUS_ASSIGN;
     YY_BREAK
-case 98:
+case 97:
 YY_RULE_SETUP
 #line 389 "compilers/imcc/imcc.l"
 return MINUS_ASSIGN;
     YY_BREAK
-case 99:
+case 98:
 YY_RULE_SETUP
 #line 390 "compilers/imcc/imcc.l"
 return MUL_ASSIGN;
     YY_BREAK
-case 100:
+case 99:
 YY_RULE_SETUP
 #line 391 "compilers/imcc/imcc.l"
 return DIV_ASSIGN;
     YY_BREAK
-case 101:
+case 100:
 YY_RULE_SETUP
 #line 392 "compilers/imcc/imcc.l"
 return MOD_ASSIGN;
     YY_BREAK
-case 102:
+case 101:
 YY_RULE_SETUP
 #line 393 "compilers/imcc/imcc.l"
 return FDIV;
     YY_BREAK
-case 103:
+case 102:
 YY_RULE_SETUP
 #line 394 "compilers/imcc/imcc.l"
 return FDIV_ASSIGN;
     YY_BREAK
-case 104:
+case 103:
 YY_RULE_SETUP
 #line 395 "compilers/imcc/imcc.l"
 return BAND_ASSIGN;
     YY_BREAK
-case 105:
+case 104:
 YY_RULE_SETUP
 #line 396 "compilers/imcc/imcc.l"
 return BOR_ASSIGN;
     YY_BREAK
-case 106:
+case 105:
 YY_RULE_SETUP
 #line 397 "compilers/imcc/imcc.l"
 return BXOR_ASSIGN;
     YY_BREAK
-case 107:
+case 106:
 YY_RULE_SETUP
 #line 398 "compilers/imcc/imcc.l"
 return SHR_ASSIGN;
     YY_BREAK
-case 108:
+case 107:
 YY_RULE_SETUP
 #line 399 "compilers/imcc/imcc.l"
 return SHL_ASSIGN;
     YY_BREAK
-case 109:
+case 108:
 YY_RULE_SETUP
 #line 400 "compilers/imcc/imcc.l"
 return SHR_U_ASSIGN;
     YY_BREAK
-case 110:
+case 109:
 YY_RULE_SETUP
 #line 401 "compilers/imcc/imcc.l"
 return CONCAT_ASSIGN;
     YY_BREAK
-case 111:
+case 110:
 YY_RULE_SETUP
 #line 403 "compilers/imcc/imcc.l"
 {
@@ -3623,14 +3615,14 @@
         return MACRO;
     }
     YY_BREAK
-case 112:
+case 111:
 YY_RULE_SETUP
 #line 433 "compilers/imcc/imcc.l"
 {
         return read_macro(valp, interp, yyscanner);
     }
     YY_BREAK
-case 113:
+case 112:
 YY_RULE_SETUP
 #line 437 "compilers/imcc/imcc.l"
 {
@@ -3642,7 +3634,7 @@
         include_file(interp, yytext + 1, yyscanner);
     }
     YY_BREAK
-case 114:
+case 113:
 YY_RULE_SETUP
 #line 446 "compilers/imcc/imcc.l"
 {
@@ -3667,7 +3659,7 @@
         return LABEL;
     }
     YY_BREAK
-case 115:
+case 114:
 YY_RULE_SETUP
 #line 468 "compilers/imcc/imcc.l"
 {
@@ -3692,12 +3684,12 @@
         return IDENTIFIER;
      }
     YY_BREAK
-case 116:
+case 115:
 YY_RULE_SETUP
 #line 490 "compilers/imcc/imcc.l"
 return COMMA;
     YY_BREAK
-case 117:
+case 116:
 YY_RULE_SETUP
 #line 492 "compilers/imcc/imcc.l"
 {
@@ -3710,7 +3702,7 @@
         return LABEL;
     }
     YY_BREAK
-case 118:
+case 117:
 YY_RULE_SETUP
 #line 502 "compilers/imcc/imcc.l"
 {
@@ -3722,32 +3714,32 @@
         }
     }
     YY_BREAK
-case 119:
+case 118:
 YY_RULE_SETUP
 #line 513 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, FLOATC);
     YY_BREAK
-case 120:
+case 119:
 YY_RULE_SETUP
 #line 514 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
     YY_BREAK
-case 121:
+case 120:
 YY_RULE_SETUP
 #line 515 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
     YY_BREAK
-case 122:
+case 121:
 YY_RULE_SETUP
 #line 516 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
     YY_BREAK
-case 123:
+case 122:
 YY_RULE_SETUP
 #line 517 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
     YY_BREAK
-case 124:
+case 123:
 YY_RULE_SETUP
 #line 519 "compilers/imcc/imcc.l"
 {
@@ -3760,7 +3752,7 @@
         return STRINGC;
     }
     YY_BREAK
-case 125:
+case 124:
 YY_RULE_SETUP
 #line 529 "compilers/imcc/imcc.l"
 {
@@ -3770,7 +3762,7 @@
         return STRINGC;
     }
     YY_BREAK
-case 126:
+case 125:
 YY_RULE_SETUP
 #line 536 "compilers/imcc/imcc.l"
 {
@@ -3801,7 +3793,7 @@
         yy_push_state(heredoc1, yyscanner);
     }
     YY_BREAK
-case 127:
+case 126:
 YY_RULE_SETUP
 #line 564 "compilers/imcc/imcc.l"
 {
@@ -3812,7 +3804,7 @@
         return USTRINGC;
     }
     YY_BREAK
-case 128:
+case 127:
 YY_RULE_SETUP
 #line 572 "compilers/imcc/imcc.l"
 {
@@ -3823,7 +3815,7 @@
         return IREG;
     }
     YY_BREAK
-case 129:
+case 128:
 YY_RULE_SETUP
 #line 580 "compilers/imcc/imcc.l"
 {
@@ -3834,7 +3826,7 @@
         return NREG;
     }
     YY_BREAK
-case 130:
+case 129:
 YY_RULE_SETUP
 #line 588 "compilers/imcc/imcc.l"
 {
@@ -3845,7 +3837,7 @@
         return SREG;
     }
     YY_BREAK
-case 131:
+case 130:
 YY_RULE_SETUP
 #line 596 "compilers/imcc/imcc.l"
 {
@@ -3856,7 +3848,7 @@
         return PREG;
     }
     YY_BREAK
-case 132:
+case 131:
 YY_RULE_SETUP
 #line 604 "compilers/imcc/imcc.l"
 {
@@ -3864,7 +3856,7 @@
             "'%s' is not a valid register name", yytext);
     }
     YY_BREAK
-case 133:
+case 132:
 YY_RULE_SETUP
 #line 609 "compilers/imcc/imcc.l"
 {
@@ -3878,7 +3870,7 @@
         return REG;
     }
     YY_BREAK
-case 134:
+case 133:
 YY_RULE_SETUP
 #line 620 "compilers/imcc/imcc.l"
 {
@@ -3909,12 +3901,12 @@
         return (!is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
     }
     YY_BREAK
-case 135:
+case 134:
 YY_RULE_SETUP
 #line 649 "compilers/imcc/imcc.l"
 /* skip */;
     YY_BREAK
-case 136:
+case 135:
 YY_RULE_SETUP
 #line 651 "compilers/imcc/imcc.l"
 {
@@ -3939,13 +3931,13 @@
 #line 667 "compilers/imcc/imcc.l"
 yyterminate();
     YY_BREAK
-case 137:
+case 136:
 YY_RULE_SETUP
 #line 669 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, ENDM);
     YY_BREAK
-case 138:
-/* rule 138 can match eol */
+case 137:
+/* rule 137 can match eol */
 YY_RULE_SETUP
 #line 671 "compilers/imcc/imcc.l"
 {
@@ -3953,12 +3945,12 @@
         DUP_AND_RET(valp, '\n');
     }
     YY_BREAK
-case 139:
+case 138:
 YY_RULE_SETUP
 #line 676 "compilers/imcc/imcc.l"
 return LABEL;
     YY_BREAK
-case 140:
+case 139:
 YY_RULE_SETUP
 #line 678 "compilers/imcc/imcc.l"
 {
@@ -3984,7 +3976,7 @@
         return LABEL;
     }
     YY_BREAK
-case 141:
+case 140:
 YY_RULE_SETUP
 #line 701 "compilers/imcc/imcc.l"
 {
@@ -4001,37 +3993,37 @@
         return IDENTIFIER;
     }
     YY_BREAK
-case 142:
+case 141:
 YY_RULE_SETUP
 #line 715 "compilers/imcc/imcc.l"
 /* skip leading ws */;
     YY_BREAK
-case 143:
+case 142:
 YY_RULE_SETUP
 #line 716 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, ' ');
     YY_BREAK
-case 144:
+case 143:
 YY_RULE_SETUP
 #line 717 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, REG);
     YY_BREAK
-case 145:
+case 144:
 YY_RULE_SETUP
 #line 718 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, REG);
     YY_BREAK
-case 146:
+case 145:
 YY_RULE_SETUP
 #line 719 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, IDENTIFIER);
     YY_BREAK
-case 147:
+case 146:
 YY_RULE_SETUP
 #line 720 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, MACRO);
     YY_BREAK
-case 148:
+case 147:
 YY_RULE_SETUP
 #line 721 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, yytext[0]);
@@ -4040,12 +4032,12 @@
 #line 722 "compilers/imcc/imcc.l"
 yyterminate();
     YY_BREAK
-case 149:
+case 148:
 YY_RULE_SETUP
 #line 724 "compilers/imcc/imcc.l"
 ECHO;
     YY_BREAK
-#line 4049 "compilers/imcc/imclexer.c"
+#line 4041 "compilers/imcc/imclexer.c"
 case YY_STATE_EOF(pod):
 case YY_STATE_EOF(cmt1):
 case YY_STATE_EOF(cmt2):
@@ -4348,7 +4340,7 @@
         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
             {
             yy_current_state = (int) yy_def[yy_current_state];
-            if ( yy_current_state >= 1057 )
+            if ( yy_current_state >= 1048 )
                 yy_c = yy_meta[(unsigned int) yy_c];
             }
         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -4377,11 +4369,11 @@
     while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
         {
         yy_current_state = (int) yy_def[yy_current_state];
-        if ( yy_current_state >= 1057 )
+        if ( yy_current_state >= 1048 )
             yy_c = yy_meta[(unsigned int) yy_c];
         }
     yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-    yy_is_jam = (yy_current_state == 1056);
+    yy_is_jam = (yy_current_state == 1047);
 
     return yy_is_jam ? 0 : yy_current_state;
 }

Modified: branches/calling_conventions/compilers/imcc/imcparser.c
==============================================================================
--- branches/calling_conventions/compilers/imcc/imcparser.c	(original)
+++ branches/calling_conventions/compilers/imcc/imcparser.c	Sat Dec 13 19:46:32 2008
@@ -1,3 +1,14 @@
+/* ex: set ro ft=c:
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ *
+ * This file is generated automatically from 'compilers/imcc/imcc.y'
+ * by tools/build/fixup_gen_file.pl.
+ *
+ * Any changes made here will be lost!
+ *
+ */
+/* HEADERIZER HFILE: none */
+/* HEADERIZER STOP */
 /* A Bison parser, made by GNU Bison 2.3.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
@@ -88,103 +99,102 @@
      NEW = 277,
      ADV_INVOCANT = 278,
      NAMESPACE = 279,
-     ENDNAMESPACE = 280,
-     DOT_METHOD = 281,
-     SUB = 282,
-     SYM = 283,
-     LOCAL = 284,
-     LEXICAL = 285,
-     CONST = 286,
-     INC = 287,
-     DEC = 288,
-     GLOBAL_CONST = 289,
-     PLUS_ASSIGN = 290,
-     MINUS_ASSIGN = 291,
-     MUL_ASSIGN = 292,
-     DIV_ASSIGN = 293,
-     CONCAT_ASSIGN = 294,
-     BAND_ASSIGN = 295,
-     BOR_ASSIGN = 296,
-     BXOR_ASSIGN = 297,
-     FDIV = 298,
-     FDIV_ASSIGN = 299,
-     MOD_ASSIGN = 300,
-     SHR_ASSIGN = 301,
-     SHL_ASSIGN = 302,
-     SHR_U_ASSIGN = 303,
-     SHIFT_LEFT = 304,
-     SHIFT_RIGHT = 305,
-     INTV = 306,
-     FLOATV = 307,
-     STRINGV = 308,
-     PMCV = 309,
-     LOG_XOR = 310,
-     RELOP_EQ = 311,
-     RELOP_NE = 312,
-     RELOP_GT = 313,
-     RELOP_GTE = 314,
-     RELOP_LT = 315,
-     RELOP_LTE = 316,
-     RESULT = 317,
-     RETURN = 318,
-     TAILCALL = 319,
-     YIELDT = 320,
-     GET_RESULTS = 321,
-     POW = 322,
-     SHIFT_RIGHT_U = 323,
-     LOG_AND = 324,
-     LOG_OR = 325,
-     COMMA = 326,
-     ESUB = 327,
-     DOTDOT = 328,
-     PCC_BEGIN = 329,
-     PCC_END = 330,
-     PCC_CALL = 331,
-     PCC_SUB = 332,
-     PCC_BEGIN_RETURN = 333,
-     PCC_END_RETURN = 334,
-     PCC_BEGIN_YIELD = 335,
-     PCC_END_YIELD = 336,
-     NCI_CALL = 337,
-     METH_CALL = 338,
-     INVOCANT = 339,
-     MAIN = 340,
-     LOAD = 341,
-     INIT = 342,
-     IMMEDIATE = 343,
-     POSTCOMP = 344,
-     METHOD = 345,
-     ANON = 346,
-     OUTER = 347,
-     NEED_LEX = 348,
-     MULTI = 349,
-     VTABLE_METHOD = 350,
-     LOADLIB = 351,
-     SUB_INSTANCE_OF = 352,
-     SUBID = 353,
-     NS_ENTRY = 354,
-     UNIQUE_REG = 355,
-     LABEL = 356,
-     EMIT = 357,
-     EOM = 358,
-     IREG = 359,
-     NREG = 360,
-     SREG = 361,
-     PREG = 362,
-     IDENTIFIER = 363,
-     REG = 364,
-     MACRO = 365,
-     ENDM = 366,
-     STRINGC = 367,
-     INTC = 368,
-     FLOATC = 369,
-     USTRINGC = 370,
-     PARROT_OP = 371,
-     VAR = 372,
-     LINECOMMENT = 373,
-     FILECOMMENT = 374,
-     DOT = 375,
-     CONCAT = 376
+     DOT_METHOD = 280,
+     SUB = 281,
+     SYM = 282,
+     LOCAL = 283,
+     LEXICAL = 284,
+     CONST = 285,
+     INC = 286,
+     DEC = 287,
+     GLOBAL_CONST = 288,
+     PLUS_ASSIGN = 289,
+     MINUS_ASSIGN = 290,
+     MUL_ASSIGN = 291,
+     DIV_ASSIGN = 292,
+     CONCAT_ASSIGN = 293,
+     BAND_ASSIGN = 294,
+     BOR_ASSIGN = 295,
+     BXOR_ASSIGN = 296,
+     FDIV = 297,
+     FDIV_ASSIGN = 298,
+     MOD_ASSIGN = 299,
+     SHR_ASSIGN = 300,
+     SHL_ASSIGN = 301,
+     SHR_U_ASSIGN = 302,
+     SHIFT_LEFT = 303,
+     SHIFT_RIGHT = 304,
+     INTV = 305,
+     FLOATV = 306,
+     STRINGV = 307,
+     PMCV = 308,
+     LOG_XOR = 309,
+     RELOP_EQ = 310,
+     RELOP_NE = 311,
+     RELOP_GT = 312,
+     RELOP_GTE = 313,
+     RELOP_LT = 314,
+     RELOP_LTE = 315,
+     RESULT = 316,
+     RETURN = 317,
+     TAILCALL = 318,
+     YIELDT = 319,
+     GET_RESULTS = 320,
+     POW = 321,
+     SHIFT_RIGHT_U = 322,
+     LOG_AND = 323,
+     LOG_OR = 324,
+     COMMA = 325,
+     ESUB = 326,
+     DOTDOT = 327,
+     PCC_BEGIN = 328,
+     PCC_END = 329,
+     PCC_CALL = 330,
+     PCC_SUB = 331,
+     PCC_BEGIN_RETURN = 332,
+     PCC_END_RETURN = 333,
+     PCC_BEGIN_YIELD = 334,
+     PCC_END_YIELD = 335,
+     NCI_CALL = 336,
+     METH_CALL = 337,
+     INVOCANT = 338,
+     MAIN = 339,
+     LOAD = 340,
+     INIT = 341,
+     IMMEDIATE = 342,
+     POSTCOMP = 343,
+     METHOD = 344,
+     ANON = 345,
+     OUTER = 346,
+     NEED_LEX = 347,
+     MULTI = 348,
+     VTABLE_METHOD = 349,
+     LOADLIB = 350,
+     SUB_INSTANCE_OF = 351,
+     SUBID = 352,
+     NS_ENTRY = 353,
+     UNIQUE_REG = 354,
+     LABEL = 355,
+     EMIT = 356,
+     EOM = 357,
+     IREG = 358,
+     NREG = 359,
+     SREG = 360,
+     PREG = 361,
+     IDENTIFIER = 362,
+     REG = 363,
+     MACRO = 364,
+     ENDM = 365,
+     STRINGC = 366,
+     INTC = 367,
+     FLOATC = 368,
+     USTRINGC = 369,
+     PARROT_OP = 370,
+     VAR = 371,
+     LINECOMMENT = 372,
+     FILECOMMENT = 373,
+     DOT = 374,
+     CONCAT = 375
    };
 #endif
 /* Tokens.  */
@@ -210,103 +220,102 @@
 #define NEW 277
 #define ADV_INVOCANT 278
 #define NAMESPACE 279
-#define ENDNAMESPACE 280
-#define DOT_METHOD 281
-#define SUB 282
-#define SYM 283
-#define LOCAL 284
-#define LEXICAL 285
-#define CONST 286
-#define INC 287
-#define DEC 288
-#define GLOBAL_CONST 289
-#define PLUS_ASSIGN 290
-#define MINUS_ASSIGN 291
-#define MUL_ASSIGN 292
-#define DIV_ASSIGN 293
-#define CONCAT_ASSIGN 294
-#define BAND_ASSIGN 295
-#define BOR_ASSIGN 296
-#define BXOR_ASSIGN 297
-#define FDIV 298
-#define FDIV_ASSIGN 299
-#define MOD_ASSIGN 300
-#define SHR_ASSIGN 301
-#define SHL_ASSIGN 302
-#define SHR_U_ASSIGN 303
-#define SHIFT_LEFT 304
-#define SHIFT_RIGHT 305
-#define INTV 306
-#define FLOATV 307
-#define STRINGV 308
-#define PMCV 309
-#define LOG_XOR 310
-#define RELOP_EQ 311
-#define RELOP_NE 312
-#define RELOP_GT 313
-#define RELOP_GTE 314
-#define RELOP_LT 315
-#define RELOP_LTE 316
-#define RESULT 317
-#define RETURN 318
-#define TAILCALL 319
-#define YIELDT 320
-#define GET_RESULTS 321
-#define POW 322
-#define SHIFT_RIGHT_U 323
-#define LOG_AND 324
-#define LOG_OR 325
-#define COMMA 326
-#define ESUB 327
-#define DOTDOT 328
-#define PCC_BEGIN 329
-#define PCC_END 330
-#define PCC_CALL 331
-#define PCC_SUB 332
-#define PCC_BEGIN_RETURN 333
-#define PCC_END_RETURN 334
-#define PCC_BEGIN_YIELD 335
-#define PCC_END_YIELD 336
-#define NCI_CALL 337
-#define METH_CALL 338
-#define INVOCANT 339
-#define MAIN 340
-#define LOAD 341
-#define INIT 342
-#define IMMEDIATE 343
-#define POSTCOMP 344
-#define METHOD 345
-#define ANON 346
-#define OUTER 347
-#define NEED_LEX 348
-#define MULTI 349
-#define VTABLE_METHOD 350
-#define LOADLIB 351
-#define SUB_INSTANCE_OF 352
-#define SUBID 353
-#define NS_ENTRY 354
-#define UNIQUE_REG 355
-#define LABEL 356
-#define EMIT 357
-#define EOM 358
-#define IREG 359
-#define NREG 360
-#define SREG 361
-#define PREG 362
-#define IDENTIFIER 363
-#define REG 364
-#define MACRO 365
-#define ENDM 366
-#define STRINGC 367
-#define INTC 368
-#define FLOATC 369
-#define USTRINGC 370
-#define PARROT_OP 371
-#define VAR 372
-#define LINECOMMENT 373
-#define FILECOMMENT 374
-#define DOT 375
-#define CONCAT 376
+#define DOT_METHOD 280
+#define SUB 281
+#define SYM 282
+#define LOCAL 283
+#define LEXICAL 284
+#define CONST 285
+#define INC 286
+#define DEC 287
+#define GLOBAL_CONST 288
+#define PLUS_ASSIGN 289
+#define MINUS_ASSIGN 290
+#define MUL_ASSIGN 291
+#define DIV_ASSIGN 292
+#define CONCAT_ASSIGN 293
+#define BAND_ASSIGN 294
+#define BOR_ASSIGN 295
+#define BXOR_ASSIGN 296
+#define FDIV 297
+#define FDIV_ASSIGN 298
+#define MOD_ASSIGN 299
+#define SHR_ASSIGN 300
+#define SHL_ASSIGN 301
+#define SHR_U_ASSIGN 302
+#define SHIFT_LEFT 303
+#define SHIFT_RIGHT 304
+#define INTV 305
+#define FLOATV 306
+#define STRINGV 307
+#define PMCV 308
+#define LOG_XOR 309
+#define RELOP_EQ 310
+#define RELOP_NE 311
+#define RELOP_GT 312
+#define RELOP_GTE 313
+#define RELOP_LT 314
+#define RELOP_LTE 315
+#define RESULT 316
+#define RETURN 317
+#define TAILCALL 318
+#define YIELDT 319
+#define GET_RESULTS 320
+#define POW 321
+#define SHIFT_RIGHT_U 322
+#define LOG_AND 323
+#define LOG_OR 324
+#define COMMA 325
+#define ESUB 326
+#define DOTDOT 327
+#define PCC_BEGIN 328
+#define PCC_END 329
+#define PCC_CALL 330
+#define PCC_SUB 331
+#define PCC_BEGIN_RETURN 332
+#define PCC_END_RETURN 333
+#define PCC_BEGIN_YIELD 334
+#define PCC_END_YIELD 335
+#define NCI_CALL 336
+#define METH_CALL 337
+#define INVOCANT 338
+#define MAIN 339
+#define LOAD 340
+#define INIT 341
+#define IMMEDIATE 342
+#define POSTCOMP 343
+#define METHOD 344
+#define ANON 345
+#define OUTER 346
+#define NEED_LEX 347
+#define MULTI 348
+#define VTABLE_METHOD 349
+#define LOADLIB 350
+#define SUB_INSTANCE_OF 351
+#define SUBID 352
+#define NS_ENTRY 353
+#define UNIQUE_REG 354
+#define LABEL 355
+#define EMIT 356
+#define EOM 357
+#define IREG 358
+#define NREG 359
+#define SREG 360
+#define PREG 361
+#define IDENTIFIER 362
+#define REG 363
+#define MACRO 364
+#define ENDM 365
+#define STRINGC 366
+#define INTC 367
+#define FLOATC 368
+#define USTRINGC 369
+#define PARROT_OP 370
+#define VAR 371
+#define LINECOMMENT 372
+#define FILECOMMENT 373
+#define DOT 374
+#define CONCAT 375
 
 
 
@@ -610,7 +619,7 @@
     const int type_enum = atoi(type);
     const int ascii = (*constant == '\'' || *constant == '"');
     SymReg *rhs;
-    SymReg *r[2];
+    SymReg *r[3];
     char   *name;
 
     if (left->type == VTADDRESS) {      /* IDENTIFIER */
@@ -640,7 +649,7 @@
             if (!ascii)
                 rhs->type |= VT_ENCODED;
 
-            rhs->usage    = U_FIXUP;
+            rhs->usage    = U_FIXUP | U_SUBID_LOOKUP;;
             break;
         default:
             rhs = mk_const(interp, name, 'P');
@@ -662,7 +671,7 @@
     ARGIN(const char *name), ARGMOD(SymReg *left), ARGIN(const char *constant))
 {
     SymReg *rhs;
-    SymReg *r[2];
+    SymReg *r[3];
     char   *const_name;
     const int ascii       = (*constant == '\'' || *constant == '"');
     char   *unquoted_name = str_dup(name + 1);
@@ -696,7 +705,7 @@
         if (!ascii)
             rhs->type |= VT_ENCODED;
 
-        rhs->usage    = U_FIXUP;
+        rhs->usage    = U_FIXUP | U_SUBID_LOOKUP;
     }
     else {
         rhs = mk_const(interp, const_name, 'P');
@@ -1028,7 +1037,7 @@
     Instruction *i;
 }
 /* Line 187 of yacc.c.  */
-#line 1032 "compilers/imcc/imcparser.c"
+#line 1030 "compilers/imcc/imcparser.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -1041,7 +1050,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 1045 "compilers/imcc/imcparser.c"
+#line 1043 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1256,20 +1265,20 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  33
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   736
+#define YYLAST   713
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  138
+#define YYNTOKENS  137
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  126
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  348
+#define YYNRULES  346
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  562
+#define YYNSTATES  558
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   376
+#define YYMAXUTOK   375
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -1280,16 +1289,16 @@
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        4,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   128,     2,     2,     2,   134,   135,     2,
-     126,   127,   132,   131,     2,   130,     2,   133,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,   137,
-       2,   123,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   127,     2,     2,     2,   133,   134,     2,
+     125,   126,   131,   130,     2,   129,     2,   132,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,   136,
+       2,   122,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   124,     2,   125,     2,     2,     2,     2,     2,     2,
+       2,   123,     2,   124,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,   136,     2,   129,     2,     2,     2,
+       2,     2,     2,     2,   135,     2,   128,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1314,7 +1323,7 @@
       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
      106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122
+     116,   117,   118,   119,   120,   121
 };
 
 #if YYDEBUG
@@ -1339,131 +1348,131 @@
      404,   405,   408,   412,   416,   420,   421,   427,   429,   431,
      432,   434,   438,   442,   448,   450,   453,   454,   457,   460,
      462,   464,   466,   467,   469,   472,   474,   476,   480,   483,
-     485,   489,   492,   493,   495,   497,   499,   502,   505,   506,
-     511,   516,   517,   524,   526,   527,   534,   537,   540,   543,
-     546,   548,   550,   552,   554,   555,   557,   559,   561,   563,
-     565,   569,   574,   580,   587,   594,   601,   609,   614,   619,
-     624,   631,   638,   646,   651,   658,   666,   670,   671,   681,
-     683,   685,   687,   691,   693,   695,   697,   699,   701,   703,
-     705,   707,   709,   711,   713,   715,   717,   719,   721,   723,
-     725,   727,   729,   731,   733,   735,   737,   739,   741,   743,
-     744,   750,   754,   756,   758,   760,   762,   764,   766,   768,
-     770,   772,   774,   776,   778,   780,   785,   787,   789,   791,
-     793,   797,   801,   805,   806,   812,   813,   817,   819,   825,
-     829,   832,   833,   836,   838,   840,   845,   848,   852,   858,
-     860,   864,   865,   867,   869,   876,   882,   887,   892,   899,
-     905,   907,   909,   911,   913,   915,   917,   919,   921,   923,
-     925,   926,   928,   932,   934,   936,   941,   945,   947,   949,
-     951,   953,   955,   957,   959,   961,   963,   965,   967,   968,
-     971,   972,   975,   977,   981,   982,   987,   989,   993,   996,
-     999,  1001,  1003,  1005,  1007,  1009,  1011,  1013,  1015
+     485,   489,   492,   493,   495,   497,   499,   500,   505,   510,
+     511,   518,   520,   521,   528,   531,   534,   537,   540,   542,
+     544,   546,   548,   549,   551,   553,   555,   557,   559,   563,
+     568,   574,   581,   588,   595,   603,   608,   613,   618,   625,
+     632,   640,   645,   652,   660,   664,   665,   675,   677,   679,
+     681,   685,   687,   689,   691,   693,   695,   697,   699,   701,
+     703,   705,   707,   709,   711,   713,   715,   717,   719,   721,
+     723,   725,   727,   729,   731,   733,   735,   737,   738,   744,
+     748,   750,   752,   754,   756,   758,   760,   762,   764,   766,
+     768,   770,   772,   774,   779,   781,   783,   785,   787,   791,
+     795,   799,   800,   806,   807,   811,   813,   819,   823,   826,
+     827,   830,   832,   834,   839,   842,   846,   852,   854,   858,
+     859,   861,   863,   870,   876,   881,   886,   893,   899,   901,
+     903,   905,   907,   909,   911,   913,   915,   917,   919,   920,
+     922,   926,   928,   930,   935,   939,   941,   943,   945,   947,
+     949,   951,   953,   955,   957,   959,   961,   962,   965,   966,
+     969,   971,   975,   976,   981,   983,   987,   990,   993,   995,
+     997,   999,  1001,  1003,  1005,  1007,  1009
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     139,     0,    -1,   140,    -1,   141,    -1,   140,   141,    -1,
-     160,    -1,   145,    -1,   162,    -1,   157,    -1,   111,     4,
-      -1,   142,    -1,   143,    -1,     4,    -1,   144,     4,    -1,
-      97,   113,     4,    -1,     8,   114,    72,   113,     4,    -1,
-       9,   113,     4,    -1,     6,   113,    -1,     7,   113,   123,
-     113,    -1,    -1,    32,   146,   221,   109,   123,   263,    -1,
-      -1,    32,   148,   114,   253,   123,   150,    -1,    -1,    32,
-     149,   113,   253,   123,   150,    -1,   113,    -1,   116,    -1,
-     152,    -1,   151,   152,    -1,   210,   153,     4,    -1,   111,
-       4,    -1,   120,    -1,   119,    -1,   160,    -1,   147,    -1,
-     142,    -1,    -1,   154,   117,   156,    -1,    -1,    78,   155,
-     184,   102,    -1,    14,   254,    -1,    31,   113,    72,   110,
-      -1,    -1,   247,    -1,    -1,   103,   158,   159,   104,    -1,
-      -1,   151,    -1,    25,   161,     4,    -1,   124,   255,   125,
-      -1,   124,   125,    -1,    -1,    -1,    -1,    28,   163,   250,
-     164,   184,     4,   165,   166,   179,    73,    -1,    -1,     4,
-      -1,   166,   167,     4,    -1,    -1,     5,   168,   169,    -1,
-     221,   109,   193,    -1,    95,   126,   177,   127,    -1,    93,
-     126,   113,   127,    -1,    93,   126,   109,   127,    -1,    96,
-      -1,    96,   126,   113,   127,    -1,    91,    -1,    91,   126,
-     150,   127,    -1,   100,    -1,   100,   126,   150,   127,    -1,
-      98,   126,   113,   127,    -1,    99,    -1,    99,   126,   150,
-     127,    -1,    -1,   177,    72,   178,    -1,   178,    -1,    52,
-      -1,    53,    -1,    55,    -1,    54,    -1,   109,    -1,   113,
-      -1,   124,   255,   125,    -1,    -1,   207,    -1,    -1,    75,
-       4,   181,   188,   183,   187,   182,   190,    76,    -1,    -1,
-     212,     4,    -1,    -1,    85,   254,     4,    -1,    -1,   185,
-      -1,   186,    -1,   185,   186,    -1,    87,    -1,    88,    -1,
-      86,    -1,    89,    -1,    90,    -1,    92,    -1,    94,    -1,
-     170,    -1,   171,    -1,   172,    -1,   173,    -1,   174,    -1,
-     175,    -1,   176,    -1,    77,   254,    72,   254,     4,    -1,
-      77,   254,     4,    -1,    83,   254,     4,    -1,    84,   246,
-       4,    -1,    84,   113,     4,    -1,    84,   246,    72,   254,
-       4,    -1,    84,   113,    72,   254,     4,    -1,    -1,   188,
-     189,     4,    -1,    11,   236,    -1,    -1,   190,   191,     4,
-      -1,    63,   246,   193,    -1,    -1,    30,   192,   221,   215,
-      -1,    -1,   193,   194,    -1,    18,    -1,    19,    -1,    20,
-      -1,    21,    -1,    21,   126,   113,   127,    -1,   101,    -1,
-      -1,    79,     4,   196,   199,    80,    -1,   203,    -1,    -1,
-      81,     4,   198,   200,    82,    -1,    -1,   199,     4,    -1,
-     199,   201,     4,    -1,    -1,   200,     4,    -1,   200,   202,
-       4,    -1,    15,   254,   237,    -1,    16,   254,   237,    -1,
-      -1,   205,   126,   204,   206,   127,    -1,    64,    -1,    66,
-      -1,    -1,   236,    -1,   113,    22,   254,    -1,   206,    72,
-     236,    -1,   206,    72,   113,    22,   254,    -1,   209,    -1,
-     207,   209,    -1,    -1,   208,   213,    -1,   111,     4,    -1,
-     120,    -1,   119,    -1,   143,    -1,    -1,   211,    -1,   211,
-     212,    -1,   212,    -1,   102,    -1,   210,   217,     4,    -1,
-       1,     4,    -1,   215,    -1,   214,    72,   215,    -1,   109,
-     216,    -1,    -1,   101,    -1,   223,    -1,   241,    -1,    25,
-     109,    -1,    26,   109,    -1,    -1,    30,   218,   221,   214,
-      -1,    31,   113,    72,   246,    -1,    -1,    32,   219,   221,
-     109,   123,   263,    -1,   147,    -1,    -1,    35,   220,   221,
-     109,   123,   263,    -1,    65,   233,    -1,    10,   252,    -1,
-     117,   247,    -1,    14,   254,    -1,   233,    -1,   180,    -1,
-     195,    -1,   197,    -1,    -1,    52,    -1,    53,    -1,    54,
-      -1,    55,    -1,   109,    -1,   246,   123,   254,    -1,   246,
-     123,   225,   254,    -1,   246,   123,   254,   226,   254,    -1,
-     246,   123,   254,   124,   255,   125,    -1,   246,   124,   255,
-     125,   123,   254,    -1,   246,   123,    23,   222,    72,   254,
-      -1,   246,   123,    23,   222,   124,   255,   125,    -1,   246,
-     123,    23,   222,    -1,   246,   123,    23,   254,    -1,   246,
-     123,    23,   161,    -1,   246,   123,    23,   161,    72,   254,
-      -1,   246,   123,    23,   254,    72,   254,    -1,   246,   123,
-      23,   254,   124,   255,   125,    -1,    23,   246,    72,   254,
-      -1,    23,   246,    72,   254,    72,   254,    -1,    23,   246,
-      72,   254,   124,   255,   125,    -1,   246,   123,   233,    -1,
-      -1,   126,   224,   240,   127,   123,   232,   126,   235,   127,
-      -1,   227,    -1,   229,    -1,   231,    -1,   246,   123,    14,
-      -1,   128,    -1,   129,    -1,   130,    -1,   130,    -1,   131,
-      -1,   132,    -1,   133,    -1,   134,    -1,    44,    -1,    68,
-      -1,   122,    -1,    57,    -1,    58,    -1,    59,    -1,    60,
-      -1,    61,    -1,    62,    -1,    50,    -1,    51,    -1,    69,
-      -1,    70,    -1,    71,    -1,    56,    -1,   135,    -1,   136,
-      -1,   129,    -1,    -1,    67,   228,   126,   240,   127,    -1,
-     246,   230,   254,    -1,    36,    -1,    37,    -1,    38,    -1,
-      39,    -1,    46,    -1,    45,    -1,    40,    -1,    41,    -1,
-      42,    -1,    43,    -1,    47,    -1,    48,    -1,    49,    -1,
-     246,   123,   117,   156,    -1,   109,    -1,   113,    -1,   116,
-      -1,   246,    -1,   246,   121,   251,    -1,   246,   121,   113,
-      -1,   246,   121,   246,    -1,    -1,   232,   234,   126,   235,
-     127,    -1,    -1,   235,    72,   236,    -1,   236,    -1,   235,
-      72,   113,    22,   254,    -1,   113,    22,   254,    -1,   254,
-     237,    -1,    -1,   237,   238,    -1,    17,    -1,    21,    -1,
-      21,   126,   113,   127,    -1,   246,   193,    -1,   240,    72,
-     239,    -1,   240,    72,   113,    22,   246,    -1,   239,    -1,
-     113,    22,   246,    -1,    -1,   243,    -1,   242,    -1,    13,
-     254,   245,   254,    10,   252,    -1,    13,    14,   254,    10,
-     252,    -1,    13,   254,   244,   252,    -1,    12,   254,   244,
-     252,    -1,    12,   254,   245,   254,    10,   252,    -1,    12,
-      14,   254,    10,   252,    -1,    72,    -1,    10,    -1,    57,
-      -1,    58,    -1,    59,    -1,    60,    -1,    61,    -1,    62,
-      -1,   118,    -1,   262,    -1,    -1,   248,    -1,   248,    72,
-     249,    -1,   249,    -1,   253,    -1,   246,   124,   255,   125,
-      -1,   124,   257,   125,    -1,   251,    -1,   113,    -1,   116,
-      -1,   109,    -1,   117,    -1,   109,    -1,   117,    -1,   252,
-      -1,   254,    -1,   246,    -1,   263,    -1,    -1,   256,   259,
-      -1,    -1,   258,   259,    -1,   261,    -1,   259,   137,   261,
-      -1,    -1,   259,    72,   260,   261,    -1,   254,    -1,   254,
-      74,   254,    -1,    74,   254,    -1,   254,    74,    -1,   105,
-      -1,   106,    -1,   107,    -1,   108,    -1,   110,    -1,   114,
-      -1,   115,    -1,   113,    -1,   116,    -1
+     138,     0,    -1,   139,    -1,   140,    -1,   139,   140,    -1,
+     159,    -1,   144,    -1,   161,    -1,   156,    -1,   110,     4,
+      -1,   141,    -1,   142,    -1,     4,    -1,   143,     4,    -1,
+      96,   112,     4,    -1,     8,   113,    71,   112,     4,    -1,
+       9,   112,     4,    -1,     6,   112,    -1,     7,   112,   122,
+     112,    -1,    -1,    31,   145,   220,   108,   122,   262,    -1,
+      -1,    31,   147,   113,   252,   122,   149,    -1,    -1,    31,
+     148,   112,   252,   122,   149,    -1,   112,    -1,   115,    -1,
+     151,    -1,   150,   151,    -1,   209,   152,     4,    -1,   110,
+       4,    -1,   119,    -1,   118,    -1,   159,    -1,   146,    -1,
+     141,    -1,    -1,   153,   116,   155,    -1,    -1,    77,   154,
+     183,   101,    -1,    14,   253,    -1,    30,   112,    71,   109,
+      -1,    -1,   246,    -1,    -1,   102,   157,   158,   103,    -1,
+      -1,   150,    -1,    25,   160,     4,    -1,   123,   254,   124,
+      -1,   123,   124,    -1,    -1,    -1,    -1,    27,   162,   249,
+     163,   183,     4,   164,   165,   178,    72,    -1,    -1,     4,
+      -1,   165,   166,     4,    -1,    -1,     5,   167,   168,    -1,
+     220,   108,   192,    -1,    94,   125,   176,   126,    -1,    92,
+     125,   112,   126,    -1,    92,   125,   108,   126,    -1,    95,
+      -1,    95,   125,   112,   126,    -1,    90,    -1,    90,   125,
+     149,   126,    -1,    99,    -1,    99,   125,   149,   126,    -1,
+      97,   125,   112,   126,    -1,    98,    -1,    98,   125,   149,
+     126,    -1,    -1,   176,    71,   177,    -1,   177,    -1,    51,
+      -1,    52,    -1,    54,    -1,    53,    -1,   108,    -1,   112,
+      -1,   123,   254,   124,    -1,    -1,   206,    -1,    -1,    74,
+       4,   180,   187,   182,   186,   181,   189,    75,    -1,    -1,
+     211,     4,    -1,    -1,    84,   253,     4,    -1,    -1,   184,
+      -1,   185,    -1,   184,   185,    -1,    86,    -1,    87,    -1,
+      85,    -1,    88,    -1,    89,    -1,    91,    -1,    93,    -1,
+     169,    -1,   170,    -1,   171,    -1,   172,    -1,   173,    -1,
+     174,    -1,   175,    -1,    76,   253,    71,   253,     4,    -1,
+      76,   253,     4,    -1,    82,   253,     4,    -1,    83,   245,
+       4,    -1,    83,   112,     4,    -1,    83,   245,    71,   253,
+       4,    -1,    83,   112,    71,   253,     4,    -1,    -1,   187,
+     188,     4,    -1,    11,   235,    -1,    -1,   189,   190,     4,
+      -1,    62,   245,   192,    -1,    -1,    29,   191,   220,   214,
+      -1,    -1,   192,   193,    -1,    18,    -1,    19,    -1,    20,
+      -1,    21,    -1,    21,   125,   112,   126,    -1,   100,    -1,
+      -1,    78,     4,   195,   198,    79,    -1,   202,    -1,    -1,
+      80,     4,   197,   199,    81,    -1,    -1,   198,     4,    -1,
+     198,   200,     4,    -1,    -1,   199,     4,    -1,   199,   201,
+       4,    -1,    15,   253,   236,    -1,    16,   253,   236,    -1,
+      -1,   204,   125,   203,   205,   126,    -1,    63,    -1,    65,
+      -1,    -1,   235,    -1,   112,    22,   253,    -1,   205,    71,
+     235,    -1,   205,    71,   112,    22,   253,    -1,   208,    -1,
+     206,   208,    -1,    -1,   207,   212,    -1,   110,     4,    -1,
+     119,    -1,   118,    -1,   142,    -1,    -1,   210,    -1,   210,
+     211,    -1,   211,    -1,   101,    -1,   209,   216,     4,    -1,
+       1,     4,    -1,   214,    -1,   213,    71,   214,    -1,   108,
+     215,    -1,    -1,   100,    -1,   222,    -1,   240,    -1,    -1,
+      29,   217,   220,   213,    -1,    30,   112,    71,   245,    -1,
+      -1,    31,   218,   220,   108,   122,   262,    -1,   146,    -1,
+      -1,    34,   219,   220,   108,   122,   262,    -1,    64,   232,
+      -1,    10,   251,    -1,   116,   246,    -1,    14,   253,    -1,
+     232,    -1,   179,    -1,   194,    -1,   196,    -1,    -1,    51,
+      -1,    52,    -1,    53,    -1,    54,    -1,   108,    -1,   245,
+     122,   253,    -1,   245,   122,   224,   253,    -1,   245,   122,
+     253,   225,   253,    -1,   245,   122,   253,   123,   254,   124,
+      -1,   245,   123,   254,   124,   122,   253,    -1,   245,   122,
+      23,   221,    71,   253,    -1,   245,   122,    23,   221,   123,
+     254,   124,    -1,   245,   122,    23,   221,    -1,   245,   122,
+      23,   253,    -1,   245,   122,    23,   160,    -1,   245,   122,
+      23,   160,    71,   253,    -1,   245,   122,    23,   253,    71,
+     253,    -1,   245,   122,    23,   253,   123,   254,   124,    -1,
+      23,   245,    71,   253,    -1,    23,   245,    71,   253,    71,
+     253,    -1,    23,   245,    71,   253,   123,   254,   124,    -1,
+     245,   122,   232,    -1,    -1,   125,   223,   239,   126,   122,
+     231,   125,   234,   126,    -1,   226,    -1,   228,    -1,   230,
+      -1,   245,   122,    14,    -1,   127,    -1,   128,    -1,   129,
+      -1,   129,    -1,   130,    -1,   131,    -1,   132,    -1,   133,
+      -1,    43,    -1,    67,    -1,   121,    -1,    56,    -1,    57,
+      -1,    58,    -1,    59,    -1,    60,    -1,    61,    -1,    49,
+      -1,    50,    -1,    68,    -1,    69,    -1,    70,    -1,    55,
+      -1,   134,    -1,   135,    -1,   128,    -1,    -1,    66,   227,
+     125,   239,   126,    -1,   245,   229,   253,    -1,    35,    -1,
+      36,    -1,    37,    -1,    38,    -1,    45,    -1,    44,    -1,
+      39,    -1,    40,    -1,    41,    -1,    42,    -1,    46,    -1,
+      47,    -1,    48,    -1,   245,   122,   116,   155,    -1,   108,
+      -1,   112,    -1,   115,    -1,   245,    -1,   245,   120,   250,
+      -1,   245,   120,   112,    -1,   245,   120,   245,    -1,    -1,
+     231,   233,   125,   234,   126,    -1,    -1,   234,    71,   235,
+      -1,   235,    -1,   234,    71,   112,    22,   253,    -1,   112,
+      22,   253,    -1,   253,   236,    -1,    -1,   236,   237,    -1,
+      17,    -1,    21,    -1,    21,   125,   112,   126,    -1,   245,
+     192,    -1,   239,    71,   238,    -1,   239,    71,   112,    22,
+     245,    -1,   238,    -1,   112,    22,   245,    -1,    -1,   242,
+      -1,   241,    -1,    13,   253,   244,   253,    10,   251,    -1,
+      13,    14,   253,    10,   251,    -1,    13,   253,   243,   251,
+      -1,    12,   253,   243,   251,    -1,    12,   253,   244,   253,
+      10,   251,    -1,    12,    14,   253,    10,   251,    -1,    71,
+      -1,    10,    -1,    56,    -1,    57,    -1,    58,    -1,    59,
+      -1,    60,    -1,    61,    -1,   117,    -1,   261,    -1,    -1,
+     247,    -1,   247,    71,   248,    -1,   248,    -1,   252,    -1,
+     245,   123,   254,   124,    -1,   123,   256,   124,    -1,   250,
+      -1,   112,    -1,   115,    -1,   108,    -1,   116,    -1,   108,
+      -1,   116,    -1,   251,    -1,   253,    -1,   245,    -1,   262,
+      -1,    -1,   255,   258,    -1,    -1,   257,   258,    -1,   260,
+      -1,   258,   136,   260,    -1,    -1,   258,    71,   259,   260,
+      -1,   253,    -1,   253,    73,   253,    -1,    73,   253,    -1,
+     253,    73,    -1,   104,    -1,   105,    -1,   106,    -1,   107,
+      -1,   109,    -1,   113,    -1,   114,    -1,   112,    -1,   115,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -1474,36 +1483,36 @@
      861,   870,   870,   876,   876,   883,   884,   888,   889,   893,
      894,   895,   896,   897,   898,   899,   902,   902,   911,   910,
      922,   926,   934,   938,   942,   942,   954,   956,   960,   975,
-     983,   988,   992,   995,   987,  1001,  1002,  1003,  1016,  1016,
-    1020,  1034,  1038,  1044,  1053,  1059,  1068,  1074,  1083,  1089,
-    1098,  1106,  1115,  1127,  1130,  1135,  1143,  1144,  1145,  1146,
-    1147,  1158,  1169,  1172,  1174,  1179,  1178,  1211,  1212,  1216,
-    1217,  1221,  1222,  1226,  1227,  1231,  1232,  1233,  1234,  1235,
-    1236,  1237,  1238,  1239,  1240,  1241,  1242,  1243,  1244,  1248,
-    1253,  1257,  1262,  1266,  1270,  1275,  1284,  1285,  1289,  1294,
-    1295,  1303,  1304,  1304,  1319,  1320,  1324,  1325,  1326,  1327,
-    1328,  1329,  1334,  1334,  1337,  1345,  1345,  1351,  1352,  1357,
-    1365,  1366,  1371,  1379,  1383,  1388,  1387,  1400,  1401,  1405,
-    1406,  1416,  1420,  1430,  1438,  1439,  1451,  1455,  1457,  1458,
-    1459,  1460,  1464,  1465,  1469,  1470,  1474,  1483,  1484,  1495,
-    1502,  1511,  1521,  1522,  1527,  1528,  1529,  1530,  1531,  1531,
-    1547,  1551,  1551,  1558,  1559,  1559,  1565,  1571,  1572,  1584,
-    1585,  1586,  1587,  1588,  1589,  1593,  1594,  1595,  1596,  1600,
-    1613,  1615,  1617,  1619,  1621,  1623,  1625,  1627,  1629,  1631,
-    1633,  1635,  1637,  1641,  1643,  1645,  1648,  1655,  1654,  1663,
-    1664,  1665,  1666,  1674,  1675,  1676,  1680,  1681,  1682,  1683,
-    1684,  1685,  1686,  1687,  1688,  1689,  1690,  1691,  1692,  1693,
-    1694,  1695,  1696,  1697,  1698,  1699,  1700,  1701,  1702,  1708,
-    1707,  1719,  1726,  1727,  1728,  1729,  1730,  1731,  1732,  1733,
-    1734,  1735,  1736,  1737,  1738,  1743,  1754,  1755,  1756,  1757,
-    1763,  1775,  1781,  1787,  1786,  1795,  1796,  1806,  1816,  1822,
-    1831,  1835,  1836,  1840,  1841,  1844,  1848,  1852,  1862,  1867,
-    1877,  1882,  1886,  1887,  1891,  1895,  1899,  1906,  1910,  1914,
-    1921,  1922,  1926,  1927,  1928,  1929,  1930,  1931,  1935,  1936,
-    1940,  1941,  1945,  1946,  1950,  1951,  1958,  1965,  1966,  1967,
-    1971,  1972,  1976,  1977,  1981,  1982,  1986,  1987,  1991,  1991,
-    2004,  2004,  2017,  2018,  2023,  2023,  2032,  2038,  2045,  2046,
-    2050,  2051,  2052,  2053,  2054,  2058,  2059,  2060,  2061
+     983,   988,   992,   996,   987,  1008,  1009,  1010,  1023,  1023,
+    1027,  1041,  1045,  1051,  1060,  1066,  1075,  1081,  1090,  1096,
+    1105,  1113,  1118,  1129,  1132,  1137,  1145,  1146,  1147,  1148,
+    1149,  1160,  1171,  1174,  1176,  1181,  1180,  1213,  1214,  1218,
+    1219,  1223,  1224,  1228,  1229,  1233,  1234,  1235,  1236,  1237,
+    1238,  1239,  1240,  1241,  1242,  1243,  1244,  1245,  1246,  1250,
+    1255,  1259,  1264,  1268,  1272,  1277,  1286,  1287,  1291,  1296,
+    1297,  1305,  1306,  1306,  1321,  1322,  1326,  1327,  1328,  1329,
+    1330,  1331,  1336,  1336,  1339,  1347,  1347,  1353,  1354,  1359,
+    1367,  1368,  1373,  1381,  1385,  1390,  1389,  1402,  1403,  1407,
+    1408,  1418,  1422,  1432,  1440,  1441,  1453,  1457,  1459,  1460,
+    1461,  1462,  1466,  1467,  1471,  1472,  1476,  1485,  1486,  1497,
+    1504,  1513,  1523,  1524,  1529,  1530,  1531,  1531,  1547,  1551,
+    1551,  1558,  1559,  1559,  1565,  1571,  1572,  1584,  1585,  1586,
+    1587,  1588,  1589,  1593,  1594,  1595,  1596,  1600,  1613,  1615,
+    1617,  1619,  1621,  1623,  1625,  1627,  1629,  1631,  1633,  1635,
+    1637,  1641,  1643,  1645,  1648,  1655,  1654,  1663,  1664,  1665,
+    1666,  1674,  1675,  1676,  1680,  1681,  1682,  1683,  1684,  1685,
+    1686,  1687,  1688,  1689,  1690,  1691,  1692,  1693,  1694,  1695,
+    1696,  1697,  1698,  1699,  1700,  1701,  1702,  1708,  1707,  1719,
+    1726,  1727,  1728,  1729,  1730,  1731,  1732,  1733,  1734,  1735,
+    1736,  1737,  1738,  1743,  1754,  1755,  1756,  1757,  1763,  1775,
+    1781,  1787,  1786,  1795,  1796,  1806,  1816,  1822,  1831,  1835,
+    1836,  1840,  1841,  1844,  1848,  1852,  1862,  1867,  1877,  1882,
+    1886,  1887,  1891,  1895,  1899,  1906,  1910,  1914,  1921,  1922,
+    1926,  1927,  1928,  1929,  1930,  1931,  1935,  1936,  1940,  1941,
+    1945,  1946,  1950,  1951,  1958,  1965,  1966,  1967,  1971,  1972,
+    1976,  1977,  1981,  1982,  1986,  1987,  1991,  1991,  2004,  2004,
+    2017,  2018,  2023,  2023,  2032,  2038,  2045,  2046,  2050,  2051,
+    2052,  2053,  2054,  2058,  2059,  2060,  2061
 };
 #endif
 
@@ -1516,31 +1525,30 @@
   "HLL_MAP", "TK_LINE", "TK_FILE", "GOTO", "ARG", "IF", "UNLESS", "PNULL",
   "SET_RETURN", "SET_YIELD", "ADV_FLAT", "ADV_SLURPY", "ADV_OPTIONAL",
   "ADV_OPT_FLAG", "ADV_NAMED", "ADV_ARROW", "NEW", "ADV_INVOCANT",
-  "NAMESPACE", "ENDNAMESPACE", "DOT_METHOD", "SUB", "SYM", "LOCAL",
-  "LEXICAL", "CONST", "INC", "DEC", "GLOBAL_CONST", "PLUS_ASSIGN",
-  "MINUS_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "CONCAT_ASSIGN",
-  "BAND_ASSIGN", "BOR_ASSIGN", "BXOR_ASSIGN", "FDIV", "FDIV_ASSIGN",
-  "MOD_ASSIGN", "SHR_ASSIGN", "SHL_ASSIGN", "SHR_U_ASSIGN", "SHIFT_LEFT",
-  "SHIFT_RIGHT", "INTV", "FLOATV", "STRINGV", "PMCV", "LOG_XOR",
-  "RELOP_EQ", "RELOP_NE", "RELOP_GT", "RELOP_GTE", "RELOP_LT", "RELOP_LTE",
-  "RESULT", "RETURN", "TAILCALL", "YIELDT", "GET_RESULTS", "POW",
-  "SHIFT_RIGHT_U", "LOG_AND", "LOG_OR", "COMMA", "ESUB", "DOTDOT",
-  "PCC_BEGIN", "PCC_END", "PCC_CALL", "PCC_SUB", "PCC_BEGIN_RETURN",
-  "PCC_END_RETURN", "PCC_BEGIN_YIELD", "PCC_END_YIELD", "NCI_CALL",
-  "METH_CALL", "INVOCANT", "MAIN", "LOAD", "INIT", "IMMEDIATE", "POSTCOMP",
-  "METHOD", "ANON", "OUTER", "NEED_LEX", "MULTI", "VTABLE_METHOD",
-  "LOADLIB", "SUB_INSTANCE_OF", "SUBID", "NS_ENTRY", "UNIQUE_REG", "LABEL",
-  "EMIT", "EOM", "IREG", "NREG", "SREG", "PREG", "IDENTIFIER", "REG",
-  "MACRO", "ENDM", "STRINGC", "INTC", "FLOATC", "USTRINGC", "PARROT_OP",
-  "VAR", "LINECOMMENT", "FILECOMMENT", "DOT", "CONCAT", "'='", "'['",
-  "']'", "'('", "')'", "'!'", "'~'", "'-'", "'+'", "'*'", "'/'", "'%'",
-  "'&'", "'|'", "';'", "$accept", "program", "compilation_units",
-  "compilation_unit", "pragma", "location_directive", "hll_def",
-  "constdef", "@1", "pmc_const", "@2", "@3", "any_string", "pasmcode",
-  "pasmline", "pasm_inst", "@4", "@5", "pasm_args", "emit", "@6",
-  "opt_pasmcode", "class_namespace", "maybe_ns", "sub", "@7", "@8", "@9",
-  "sub_params", "sub_param", "@10", "sub_param_type_def", "multi", "outer",
-  "vtable", "method", "ns_entry_name", "instanceof", "subid",
+  "NAMESPACE", "DOT_METHOD", "SUB", "SYM", "LOCAL", "LEXICAL", "CONST",
+  "INC", "DEC", "GLOBAL_CONST", "PLUS_ASSIGN", "MINUS_ASSIGN",
+  "MUL_ASSIGN", "DIV_ASSIGN", "CONCAT_ASSIGN", "BAND_ASSIGN", "BOR_ASSIGN",
+  "BXOR_ASSIGN", "FDIV", "FDIV_ASSIGN", "MOD_ASSIGN", "SHR_ASSIGN",
+  "SHL_ASSIGN", "SHR_U_ASSIGN", "SHIFT_LEFT", "SHIFT_RIGHT", "INTV",
+  "FLOATV", "STRINGV", "PMCV", "LOG_XOR", "RELOP_EQ", "RELOP_NE",
+  "RELOP_GT", "RELOP_GTE", "RELOP_LT", "RELOP_LTE", "RESULT", "RETURN",
+  "TAILCALL", "YIELDT", "GET_RESULTS", "POW", "SHIFT_RIGHT_U", "LOG_AND",
+  "LOG_OR", "COMMA", "ESUB", "DOTDOT", "PCC_BEGIN", "PCC_END", "PCC_CALL",
+  "PCC_SUB", "PCC_BEGIN_RETURN", "PCC_END_RETURN", "PCC_BEGIN_YIELD",
+  "PCC_END_YIELD", "NCI_CALL", "METH_CALL", "INVOCANT", "MAIN", "LOAD",
+  "INIT", "IMMEDIATE", "POSTCOMP", "METHOD", "ANON", "OUTER", "NEED_LEX",
+  "MULTI", "VTABLE_METHOD", "LOADLIB", "SUB_INSTANCE_OF", "SUBID",
+  "NS_ENTRY", "UNIQUE_REG", "LABEL", "EMIT", "EOM", "IREG", "NREG", "SREG",
+  "PREG", "IDENTIFIER", "REG", "MACRO", "ENDM", "STRINGC", "INTC",
+  "FLOATC", "USTRINGC", "PARROT_OP", "VAR", "LINECOMMENT", "FILECOMMENT",
+  "DOT", "CONCAT", "'='", "'['", "']'", "'('", "')'", "'!'", "'~'", "'-'",
+  "'+'", "'*'", "'/'", "'%'", "'&'", "'|'", "';'", "$accept", "program",
+  "compilation_units", "compilation_unit", "pragma", "location_directive",
+  "hll_def", "constdef", "@1", "pmc_const", "@2", "@3", "any_string",
+  "pasmcode", "pasmline", "pasm_inst", "@4", "@5", "pasm_args", "emit",
+  "@6", "opt_pasmcode", "class_namespace", "maybe_ns", "sub", "@7", "@8",
+  "@9", "sub_params", "sub_param", "@10", "sub_param_type_def", "multi",
+  "outer", "vtable", "method", "ns_entry_name", "instanceof", "subid",
   "multi_types", "multi_type", "sub_body", "pcc_sub_call", "@11",
   "opt_label", "opt_invocant", "sub_proto", "sub_proto_list", "proto",
   "pcc_call", "pcc_args", "pcc_arg", "pcc_results", "pcc_result", "@12",
@@ -1577,49 +1585,49 @@
      344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
      354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
      364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
-     374,   375,   376,    61,    91,    93,    40,    41,    33,   126,
-      45,    43,    42,    47,    37,    38,   124,    59
+     374,   375,    61,    91,    93,    40,    41,    33,   126,    45,
+      43,    42,    47,    37,    38,   124,    59
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   138,   139,   140,   140,   141,   141,   141,   141,   141,
-     141,   141,   141,   142,   142,   143,   143,   144,   144,   146,
-     145,   148,   147,   149,   147,   150,   150,   151,   151,   152,
-     152,   152,   152,   152,   152,   152,   154,   153,   155,   153,
-     153,   153,   153,   156,   158,   157,   159,   159,   160,   161,
-     161,   163,   164,   165,   162,   166,   166,   166,   168,   167,
-     169,   170,   171,   171,   172,   172,   173,   173,   174,   174,
-     175,   176,   176,   177,   177,   177,   178,   178,   178,   178,
-     178,   178,   178,   179,   179,   181,   180,   182,   182,   183,
-     183,   184,   184,   185,   185,   186,   186,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   186,   186,   187,
-     187,   187,   187,   187,   187,   187,   188,   188,   189,   190,
-     190,   191,   192,   191,   193,   193,   194,   194,   194,   194,
-     194,   194,   196,   195,   195,   198,   197,   199,   199,   199,
-     200,   200,   200,   201,   202,   204,   203,   205,   205,   206,
-     206,   206,   206,   206,   207,   207,   208,   209,   209,   209,
-     209,   209,   210,   210,   211,   211,   212,   213,   213,   214,
-     214,   215,   216,   216,   217,   217,   217,   217,   218,   217,
-     217,   219,   217,   217,   220,   217,   217,   217,   217,   217,
-     217,   217,   217,   217,   217,   221,   221,   221,   221,   222,
-     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
-     223,   223,   223,   223,   223,   223,   223,   224,   223,   223,
-     223,   223,   223,   225,   225,   225,   226,   226,   226,   226,
-     226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
-     226,   226,   226,   226,   226,   226,   226,   226,   226,   228,
-     227,   229,   230,   230,   230,   230,   230,   230,   230,   230,
-     230,   230,   230,   230,   230,   231,   232,   232,   232,   232,
-     232,   232,   232,   234,   233,   235,   235,   235,   235,   235,
-     236,   237,   237,   238,   238,   238,   239,   240,   240,   240,
-     240,   240,   241,   241,   242,   242,   242,   243,   243,   243,
-     244,   244,   245,   245,   245,   245,   245,   245,   246,   246,
-     247,   247,   248,   248,   249,   249,   249,   250,   250,   250,
-     251,   251,   252,   252,   253,   253,   254,   254,   256,   255,
-     258,   257,   259,   259,   260,   259,   261,   261,   261,   261,
-     262,   262,   262,   262,   262,   263,   263,   263,   263
+       0,   137,   138,   139,   139,   140,   140,   140,   140,   140,
+     140,   140,   140,   141,   141,   142,   142,   143,   143,   145,
+     144,   147,   146,   148,   146,   149,   149,   150,   150,   151,
+     151,   151,   151,   151,   151,   151,   153,   152,   154,   152,
+     152,   152,   152,   155,   157,   156,   158,   158,   159,   160,
+     160,   162,   163,   164,   161,   165,   165,   165,   167,   166,
+     168,   169,   170,   170,   171,   171,   172,   172,   173,   173,
+     174,   175,   175,   176,   176,   176,   177,   177,   177,   177,
+     177,   177,   177,   178,   178,   180,   179,   181,   181,   182,
+     182,   183,   183,   184,   184,   185,   185,   185,   185,   185,
+     185,   185,   185,   185,   185,   185,   185,   185,   185,   186,
+     186,   186,   186,   186,   186,   186,   187,   187,   188,   189,
+     189,   190,   191,   190,   192,   192,   193,   193,   193,   193,
+     193,   193,   195,   194,   194,   197,   196,   198,   198,   198,
+     199,   199,   199,   200,   201,   203,   202,   204,   204,   205,
+     205,   205,   205,   205,   206,   206,   207,   208,   208,   208,
+     208,   208,   209,   209,   210,   210,   211,   212,   212,   213,
+     213,   214,   215,   215,   216,   216,   217,   216,   216,   218,
+     216,   216,   219,   216,   216,   216,   216,   216,   216,   216,
+     216,   216,   216,   220,   220,   220,   220,   221,   222,   222,
+     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
+     222,   222,   222,   222,   222,   223,   222,   222,   222,   222,
+     222,   224,   224,   224,   225,   225,   225,   225,   225,   225,
+     225,   225,   225,   225,   225,   225,   225,   225,   225,   225,
+     225,   225,   225,   225,   225,   225,   225,   227,   226,   228,
+     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
+     229,   229,   229,   230,   231,   231,   231,   231,   231,   231,
+     231,   233,   232,   234,   234,   234,   234,   234,   235,   236,
+     236,   237,   237,   237,   238,   239,   239,   239,   239,   239,
+     240,   240,   241,   241,   241,   242,   242,   242,   243,   243,
+     244,   244,   244,   244,   244,   244,   245,   245,   246,   246,
+     247,   247,   248,   248,   248,   249,   249,   249,   250,   250,
+     251,   251,   252,   252,   253,   253,   255,   254,   257,   256,
+     258,   258,   259,   258,   260,   260,   260,   260,   261,   261,
+     261,   261,   261,   262,   262,   262,   262
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1642,24 +1650,24 @@
        0,     2,     3,     3,     3,     0,     5,     1,     1,     0,
        1,     3,     3,     5,     1,     2,     0,     2,     2,     1,
        1,     1,     0,     1,     2,     1,     1,     3,     2,     1,
-       3,     2,     0,     1,     1,     1,     2,     2,     0,     4,
-       4,     0,     6,     1,     0,     6,     2,     2,     2,     2,
-       1,     1,     1,     1,     0,     1,     1,     1,     1,     1,
-       3,     4,     5,     6,     6,     6,     7,     4,     4,     4,
-       6,     6,     7,     4,     6,     7,     3,     0,     9,     1,
-       1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       3,     2,     0,     1,     1,     1,     0,     4,     4,     0,
+       6,     1,     0,     6,     2,     2,     2,     2,     1,     1,
+       1,     1,     0,     1,     1,     1,     1,     1,     3,     4,
+       5,     6,     6,     6,     7,     4,     4,     4,     6,     6,
+       7,     4,     6,     7,     3,     0,     9,     1,     1,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     4,     1,     1,     1,     1,
-       3,     3,     3,     0,     5,     0,     3,     1,     5,     3,
-       2,     0,     2,     1,     1,     4,     2,     3,     5,     1,
-       3,     0,     1,     1,     6,     5,     4,     4,     6,     5,
+       1,     1,     1,     1,     1,     1,     1,     0,     5,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     1,     3,     1,     1,     4,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     2,
-       0,     2,     1,     3,     0,     4,     1,     3,     2,     2,
-       1,     1,     1,     1,     1,     1,     1,     1,     1
+       1,     1,     1,     4,     1,     1,     1,     1,     3,     3,
+       3,     0,     5,     0,     3,     1,     5,     3,     2,     0,
+       2,     1,     1,     4,     2,     3,     5,     1,     3,     0,
+       1,     1,     6,     5,     4,     4,     6,     5,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
+       3,     1,     1,     4,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     2,     0,     2,
+       1,     3,     0,     4,     1,     3,     2,     2,     1,     1,
+       1,     1,     1,     1,     1,     1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1669,61 +1677,60 @@
 {
        0,    12,     0,     0,     0,     0,     0,    51,    19,     0,
       44,     0,     0,     2,     3,    10,    11,     0,     6,     8,
-       5,     7,    17,     0,     0,     0,   328,     0,     0,     0,
+       5,     7,    17,     0,     0,     0,   326,     0,     0,     0,
        0,   162,     9,     1,     4,    13,     0,     0,    16,    50,
-       0,     0,    48,   320,   318,   319,   321,    52,   317,   195,
-     196,   197,   198,     0,    14,    21,   166,     0,    32,    31,
+       0,     0,    48,   318,   316,   317,   319,    52,   315,   193,
+     194,   195,   196,     0,    14,    21,   166,     0,    32,    31,
       35,    34,   162,    27,     0,    33,    36,   163,   165,    18,
-       0,    49,     0,   340,   341,   342,   343,   344,   347,   345,
-     346,   348,   308,   326,   336,   329,   332,   309,   327,    91,
+       0,    49,     0,   338,   339,   340,   341,   342,   345,   343,
+     344,   346,   306,   324,   334,   327,   330,   307,   325,    91,
        0,     0,     0,    30,    28,    45,     0,     0,    38,     0,
-       0,   164,    15,   338,   339,   334,     0,    97,    95,    96,
+       0,   164,    15,   336,   337,   332,     0,    97,    95,    96,
       98,    99,    66,   100,     0,   101,     0,    64,     0,    71,
       68,   102,   103,   104,   105,   106,   107,   108,     0,    92,
-      93,     0,     0,     0,    40,     0,    91,    29,   310,   337,
-       0,   333,     0,     0,    73,     0,     0,     0,     0,    53,
-      94,    20,   322,   323,   324,     0,   325,     0,     0,     0,
-     330,    37,   326,    43,   311,   313,   314,   335,    25,    26,
-       0,     0,     0,    76,    77,    79,    78,    80,    81,   328,
+      93,     0,     0,     0,    40,     0,    91,    29,   308,   335,
+       0,   331,     0,     0,    73,     0,     0,     0,     0,    53,
+      94,    20,   320,   321,   322,     0,   323,     0,     0,     0,
+     328,    37,   324,    43,   309,   311,   312,   333,    25,    26,
+       0,     0,     0,    76,    77,    79,    78,    80,    81,   326,
        0,    75,     0,     0,     0,     0,    55,     0,     0,    41,
-      39,     0,     0,   328,     0,    67,    63,    62,     0,     0,
-      61,    65,    70,    72,    69,    56,   156,    22,    24,   316,
-     331,     0,   312,    82,    74,    58,     0,   160,   159,   161,
-       0,     0,   156,     0,   154,   315,     0,   158,    57,    54,
-     155,     0,   194,   157,    59,     0,   168,     0,     0,     0,
-       0,     0,     0,     0,   178,     0,   181,   184,   147,     0,
-     148,   249,     0,     0,     0,   266,   267,   268,   310,   217,
-     183,   191,   192,   193,   134,     0,     0,   174,   219,   220,
-     221,   273,   190,   175,   293,   292,   269,   124,   187,     0,
-       0,     0,     0,   189,     0,   176,   177,     0,     0,     0,
-       0,   186,   269,     0,    85,   132,   135,   188,   291,   145,
-     167,     0,   252,   253,   254,   255,   258,   259,   260,   261,
-     257,   256,   262,   263,   264,     0,     0,   328,     0,    60,
-       0,   301,   302,   303,   304,   305,   306,   307,   300,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   291,
-     116,   137,   140,     0,   289,     0,   124,   149,   275,   271,
-     272,   270,   222,     0,   347,   348,   310,   223,   224,   225,
-       0,   216,   326,   200,     0,   251,   126,   127,   128,   129,
-     131,   125,     0,   297,     0,     0,   296,     0,   213,   172,
-     179,   169,   180,     0,     0,     0,    89,     0,     0,     0,
-       0,     0,   286,   347,     0,   150,   281,   347,     0,   277,
-     199,   209,   207,   208,   265,   201,   231,   240,   241,   245,
-     234,   235,   236,   237,   238,   239,   232,   242,   243,   244,
-     233,   328,   248,   226,   227,   228,   229,   230,   246,   247,
-       0,     0,     0,   299,     0,   295,     0,     0,   328,   173,
-     171,     0,     0,     0,   250,     0,     0,     0,     0,   138,
-       0,   133,     0,   141,     0,   136,     0,   290,     0,   287,
-       0,     0,     0,   146,   280,     0,     0,   274,     0,     0,
-     328,     0,   328,     0,   202,     0,     0,   298,   294,   214,
-       0,   170,   182,   185,   118,     0,     0,     0,     0,    87,
-     117,   281,   139,   281,   142,     0,     0,   151,   347,   152,
-     283,   284,   282,   279,   347,   276,   210,   205,     0,   211,
-       0,   203,   204,   130,   215,    90,     0,     0,     0,     0,
-     119,     0,   143,   144,   288,   275,     0,     0,     0,   206,
-     212,   110,     0,   111,   113,     0,   112,     0,     0,    88,
-       0,   153,     0,   278,     0,     0,     0,   122,     0,    86,
-       0,   218,   285,   109,   115,   114,     0,   124,   120,     0,
-     121,   123
+      39,     0,     0,   326,     0,    67,    63,    62,     0,     0,
+      61,    65,    70,    72,    69,    56,   156,    22,    24,   314,
+     329,     0,   310,    82,    74,    58,     0,   160,   159,   161,
+       0,     0,   156,     0,   154,   313,     0,   158,    57,    54,
+     155,     0,   192,   157,    59,     0,   168,     0,     0,     0,
+       0,     0,   176,     0,   179,   182,   147,     0,   148,   247,
+       0,     0,     0,   264,   265,   266,   308,   215,   181,   189,
+     190,   191,   134,     0,     0,   174,   217,   218,   219,   271,
+     188,   175,   291,   290,   267,   124,   185,     0,     0,     0,
+       0,   187,     0,     0,     0,     0,     0,   184,   267,     0,
+      85,   132,   135,   186,   289,   145,   167,     0,   250,   251,
+     252,   253,   256,   257,   258,   259,   255,   254,   260,   261,
+     262,     0,     0,   326,     0,    60,     0,   299,   300,   301,
+     302,   303,   304,   305,   298,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   289,   116,   137,   140,     0,
+     287,     0,   124,   149,   273,   269,   270,   268,   220,     0,
+     345,   346,   308,   221,   222,   223,     0,   214,   324,   198,
+       0,   249,   126,   127,   128,   129,   131,   125,     0,   295,
+       0,     0,   294,     0,   211,   172,   177,   169,   178,     0,
+       0,     0,    89,     0,     0,     0,     0,     0,   284,   345,
+       0,   150,   279,   345,     0,   275,   197,   207,   205,   206,
+     263,   199,   229,   238,   239,   243,   232,   233,   234,   235,
+     236,   237,   230,   240,   241,   242,   231,   326,   246,   224,
+     225,   226,   227,   228,   244,   245,     0,     0,     0,   297,
+       0,   293,     0,     0,   326,   173,   171,     0,     0,     0,
+     248,     0,     0,     0,     0,   138,     0,   133,     0,   141,
+       0,   136,     0,   288,     0,   285,     0,     0,     0,   146,
+     278,     0,     0,   272,     0,     0,   326,     0,   326,     0,
+     200,     0,     0,   296,   292,   212,     0,   170,   180,   183,
+     118,     0,     0,     0,     0,    87,   117,   279,   139,   279,
+     142,     0,     0,   151,   345,   152,   281,   282,   280,   277,
+     345,   274,   208,   203,     0,   209,     0,   201,   202,   130,
+     213,    90,     0,     0,     0,     0,   119,     0,   143,   144,
+     286,   273,     0,     0,     0,   204,   210,   110,     0,   111,
+     113,     0,   112,     0,     0,    88,     0,   153,     0,   276,
+       0,     0,     0,   122,     0,    86,     0,   216,   283,   109,
+     115,   114,     0,   124,   120,     0,   121,   123
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -1733,321 +1740,315 @@
       91,    92,   170,    62,    63,    99,   100,   136,   161,    19,
       31,    64,    20,    27,    21,    28,    89,   186,   206,   220,
      226,   234,   121,   122,   123,   124,   125,   126,   127,   180,
-     181,   221,   261,   340,   520,   447,   128,   129,   130,   489,
-     386,   448,   538,   550,   556,   319,   371,   262,   341,   263,
-     342,   387,   388,   452,   456,   264,   347,   265,   394,   222,
-     223,   224,    66,    67,    68,   233,   380,   381,   440,   266,
-     287,   289,   290,    53,   402,   267,   298,   360,   430,   268,
-     293,   269,   318,   270,   271,   272,   301,   398,   399,   464,
-     502,   344,   345,   273,   274,   275,   329,   330,    83,   163,
+     181,   221,   259,   336,   516,   443,   128,   129,   130,   485,
+     382,   444,   534,   546,   552,   315,   367,   260,   337,   261,
+     338,   383,   384,   448,   452,   262,   343,   263,   390,   222,
+     223,   224,    66,    67,    68,   233,   376,   377,   436,   264,
+     283,   285,   286,    53,   398,   265,   294,   356,   426,   266,
+     289,   267,   314,   268,   269,   270,   297,   394,   395,   460,
+     498,   340,   341,   271,   272,   273,   325,   326,    83,   163,
      164,   165,    47,    48,   154,   166,   156,    40,    41,   191,
      192,    85,   140,    86,    87,    88
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -430
+#define YYPACT_NINF -428
 static const yytype_int16 yypact[] =
 {
-     386,  -430,   -92,   -30,   -22,   -19,    24,  -430,  -430,    33,
-    -430,   117,   158,   386,  -430,  -430,  -430,   155,  -430,  -430,
-    -430,  -430,  -430,    46,   109,   178,    65,   179,    76,   196,
-     203,   198,  -430,  -430,  -430,  -430,    97,    99,  -430,  -430,
-      90,   408,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
-    -430,  -430,  -430,   107,  -430,   105,  -430,   215,  -430,  -430,
-    -430,  -430,   230,  -430,   128,  -430,    55,   119,  -430,  -430,
-     218,  -430,   511,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
-    -430,  -430,  -430,  -430,   151,   -64,  -430,  -430,  -430,   501,
-     110,   138,   122,  -430,  -430,  -430,   511,   144,  -430,   261,
-     150,  -430,  -430,  -430,   511,  -430,   408,  -430,  -430,  -430,
-    -430,  -430,   146,  -430,   147,  -430,   148,   152,   154,   157,
-     159,  -430,  -430,  -430,  -430,  -430,  -430,  -430,   272,   501,
-    -430,   229,   497,   497,  -430,   222,   501,  -430,   439,  -430,
-     408,  -430,    98,   -53,   100,   177,   186,    98,    98,  -430,
-    -430,  -430,  -430,  -430,  -430,   174,  -430,   180,   191,   202,
-    -430,  -430,   181,  -430,   236,  -430,  -430,  -430,  -430,  -430,
-     183,   187,   199,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
-     -65,  -430,   201,   209,   211,   212,   307,    98,    98,  -430,
-    -430,   188,   408,  -430,   439,  -430,  -430,  -430,   200,   100,
-    -430,  -430,  -430,  -430,  -430,  -430,    20,  -430,  -430,  -430,
-     -64,   204,  -430,  -430,  -430,  -430,   326,  -430,  -430,  -430,
-     336,   273,    30,    10,  -430,  -430,   196,  -430,  -430,  -430,
-    -430,   343,   256,  -430,  -430,   242,  -430,   -56,   270,   334,
-     511,   153,   244,   245,  -430,   243,   -43,  -430,  -430,   581,
-    -430,  -430,   351,   353,   354,  -430,  -430,  -430,   439,  -430,
-    -430,  -430,  -430,  -430,  -430,   234,   363,  -430,  -430,  -430,
-    -430,  -430,  -430,  -430,  -430,  -430,   462,  -430,  -430,   511,
-     184,   511,   184,  -430,   296,  -430,  -430,   196,   298,   196,
-     196,  -430,   250,   253,  -430,  -430,  -430,  -430,   121,  -430,
-    -430,   255,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
-    -430,  -430,  -430,  -430,  -430,   595,    58,  -430,   511,    -3,
-     377,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,   -56,
-     511,   381,   -56,   511,   511,   288,   153,   289,   290,   121,
-    -430,  -430,  -430,   378,  -430,   -21,  -430,   525,   539,  -430,
-    -430,  -430,  -430,   460,   275,   276,   439,  -430,  -430,  -430,
-     511,  -430,    70,   407,   278,  -430,  -430,  -430,  -430,   280,
-    -430,  -430,   -56,  -430,   397,   -56,  -430,   398,   -24,   309,
-     344,  -430,  -430,   292,   294,   -20,     2,    22,    28,   153,
-     609,   299,    -3,   404,   -18,  -430,  -430,   409,     7,  -430,
-    -430,   347,    18,    60,  -430,  -430,  -430,  -430,  -430,  -430,
-    -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
-    -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
-     511,   306,   319,  -430,   -56,  -430,   -56,   511,  -430,  -430,
-    -430,   288,   229,   229,  -430,   511,   511,   118,   429,  -430,
-     511,  -430,   431,  -430,   511,  -430,   432,  -430,   415,  -430,
-     581,   511,   553,  -430,   139,   511,   567,  -430,   511,   511,
-    -430,   511,  -430,   313,  -430,   511,   316,  -430,  -430,  -430,
-     328,  -430,  -430,  -430,  -430,   450,   511,   511,   618,   119,
-    -430,  -430,  -430,  -430,  -430,   153,   329,  -430,   434,  -430,
-    -430,   333,  -430,  -430,   438,  -430,  -430,  -430,   337,  -430,
-     345,  -430,  -430,  -430,  -430,  -430,    23,   457,    39,    42,
-    -430,   467,   139,   139,  -430,   539,   511,   359,   511,  -430,
-    -430,  -430,   511,  -430,  -430,   511,  -430,   511,    94,  -430,
-       8,  -430,   346,  -430,   470,   475,   476,  -430,   153,  -430,
-     477,  -430,  -430,  -430,  -430,  -430,   196,  -430,  -430,   288,
-      -3,  -430
+      50,  -428,   -73,   -67,   -65,    -4,    -9,  -428,  -428,     8,
+    -428,   154,   184,    50,  -428,  -428,  -428,   183,  -428,  -428,
+    -428,  -428,  -428,    70,   123,   191,    85,   206,   110,   197,
+     217,    63,  -428,  -428,  -428,  -428,   111,   116,  -428,  -428,
+      93,   274,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
+    -428,  -428,  -428,   124,  -428,   117,  -428,   227,  -428,  -428,
+    -428,  -428,    67,  -428,   130,  -428,     5,   134,  -428,  -428,
+     235,  -428,   462,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
+    -428,  -428,  -428,  -428,   167,   -60,  -428,  -428,  -428,   530,
+     120,   131,   140,  -428,  -428,  -428,   462,   143,  -428,   253,
+     144,  -428,  -428,  -428,   462,  -428,   274,  -428,  -428,  -428,
+    -428,  -428,   136,  -428,   141,  -428,   147,   149,   150,   158,
+     159,  -428,  -428,  -428,  -428,  -428,  -428,  -428,   255,   530,
+    -428,   241,   526,   526,  -428,   194,   530,  -428,   447,  -428,
+     274,  -428,   -85,   -40,    -1,   156,   170,   -85,   -85,  -428,
+    -428,  -428,  -428,  -428,  -428,   164,  -428,   165,   160,   192,
+    -428,  -428,   171,  -428,   224,  -428,  -428,  -428,  -428,  -428,
+     174,   175,   178,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
+     -46,  -428,   179,   180,   186,   188,   312,   -85,   -85,  -428,
+    -428,   199,   274,  -428,   447,  -428,  -428,  -428,   205,    -1,
+    -428,  -428,  -428,  -428,  -428,  -428,     7,  -428,  -428,  -428,
+     -60,   207,  -428,  -428,  -428,  -428,   317,  -428,  -428,  -428,
+     328,   263,    38,   233,  -428,  -428,   197,  -428,  -428,  -428,
+    -428,   332,   433,  -428,  -428,   236,  -428,    53,   213,   256,
+     462,    84,  -428,   231,    92,  -428,  -428,   367,  -428,  -428,
+     342,   347,   353,  -428,  -428,  -428,   447,  -428,  -428,  -428,
+    -428,  -428,  -428,   239,   362,  -428,  -428,  -428,  -428,  -428,
+    -428,  -428,  -428,  -428,   413,  -428,  -428,   462,   220,   462,
+     220,  -428,   296,   197,   301,   197,   197,  -428,   254,   250,
+    -428,  -428,  -428,  -428,   107,  -428,  -428,   251,  -428,  -428,
+    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
+    -428,   290,    26,  -428,   462,     2,   372,  -428,  -428,  -428,
+    -428,  -428,  -428,  -428,  -428,    53,   462,   374,    53,   462,
+     462,   269,    84,   282,   285,   107,  -428,  -428,  -428,   381,
+    -428,   -39,  -428,   540,   554,  -428,  -428,  -428,  -428,   491,
+     279,   283,   447,  -428,  -428,  -428,   462,  -428,    82,   459,
+     286,  -428,  -428,  -428,  -428,   288,  -428,  -428,    53,  -428,
+     401,    53,  -428,   404,   -38,   315,   351,  -428,  -428,   303,
+     305,   -30,    -6,    14,    10,    84,   327,   306,     2,   396,
+     -29,  -428,  -428,   407,   -10,  -428,  -428,   364,   -37,   -11,
+    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
+    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
+    -428,  -428,  -428,  -428,  -428,  -428,   462,   316,   325,  -428,
+      53,  -428,    53,   462,  -428,  -428,  -428,   269,   241,   241,
+    -428,   462,   462,    89,   436,  -428,   462,  -428,   461,  -428,
+     462,  -428,   464,  -428,   444,  -428,   367,   462,   568,  -428,
+     157,   462,   582,  -428,   462,   462,  -428,   462,  -428,   345,
+    -428,   462,   344,  -428,  -428,  -428,   354,  -428,  -428,  -428,
+    -428,   473,   462,   462,   596,   134,  -428,  -428,  -428,  -428,
+    -428,    84,   360,  -428,   466,  -428,  -428,   361,  -428,  -428,
+     467,  -428,  -428,  -428,   369,  -428,   370,  -428,  -428,  -428,
+    -428,  -428,    24,   487,    32,    34,  -428,   496,   157,   157,
+    -428,   554,   462,   383,   462,  -428,  -428,  -428,   462,  -428,
+    -428,   462,  -428,   462,   121,  -428,    19,  -428,   375,  -428,
+     499,   500,   501,  -428,    84,  -428,   502,  -428,  -428,  -428,
+    -428,  -428,   197,  -428,  -428,   269,     2,  -428
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -430,  -430,  -430,   473,    16,   -61,  -430,  -430,  -430,   258,
-    -430,  -430,   -10,  -430,   426,  -430,  -430,  -430,   136,  -430,
-    -430,  -430,    26,   140,  -430,  -430,  -430,  -430,  -430,  -430,
-    -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
-     318,  -430,  -430,  -430,  -430,  -430,   370,  -430,   366,  -430,
-    -430,  -430,  -430,  -430,  -430,  -340,  -430,  -430,  -430,  -430,
-    -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,  -430,
-    -430,   297,   302,  -430,   -66,  -430,  -430,  -429,  -430,  -430,
-    -430,  -430,  -430,  -223,  -430,  -430,  -430,  -430,  -430,  -430,
-    -430,  -430,  -430,  -430,    52,  -219,  -430,    -5,  -337,  -409,
-    -430,   137,   189,  -430,  -430,  -430,   248,   251,  -136,   274,
-    -430,   340,  -430,   220,  -228,   -83,   -41,  -174,  -430,  -430,
-    -430,   358,  -430,   -72,  -430,  -127
+    -428,  -428,  -428,   497,    87,   -93,  -428,  -428,  -428,   280,
+    -428,  -428,  -104,  -428,   460,  -428,  -428,  -428,   169,  -428,
+    -428,  -428,   105,   176,  -428,  -428,  -428,  -428,  -428,  -428,
+    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
+     324,  -428,  -428,  -428,  -428,  -428,   388,  -428,   402,  -428,
+    -428,  -428,  -428,  -428,  -428,  -338,  -428,  -428,  -428,  -428,
+    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
+    -428,   308,   309,  -428,   -66,  -428,  -428,  -427,  -428,  -428,
+    -428,  -428,  -428,  -219,  -428,  -428,  -428,  -428,  -428,  -428,
+    -428,  -428,  -428,  -428,    78,  -223,  -428,    22,  -335,  -368,
+    -428,   161,   209,  -428,  -428,  -428,   266,   277,  -132,   322,
+    -428,   371,  -428,   261,  -224,    43,   -41,  -176,  -428,  -428,
+    -428,   389,  -428,   -69,  -428,  -129
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -270
+#define YYTABLE_NINF -268
 static const yytype_int16 yytable[] =
 {
-      84,   101,   162,   235,   151,   198,   392,   199,   105,   278,
-     395,   231,   481,   445,  -162,   366,   367,   368,   369,   211,
-    -162,    22,  -162,  -162,  -162,   215,   449,   531,     4,     5,
-     291,   103,   453,  -162,   141,  -162,  -162,   450,     4,     5,
-    -162,  -162,  -162,   534,   454,  -162,   536,    60,   437,   155,
-     157,   390,   390,   152,   462,   134,   171,    65,   162,   -42,
-     172,   153,   200,   139,   335,    84,   337,   338,   167,    96,
-     -23,   -21,   352,   106,  -162,  -162,  -162,  -162,    60,   466,
-     466,   353,   522,    23,   523,  -162,    97,   446,    65,  -162,
-     469,  -162,    24,   -83,    25,   532,   276,   361,   370,    84,
-     438,   373,   451,   -84,   376,   284,   391,   444,   484,   463,
-     455,   535,    56,   292,   537,  -162,  -162,  -162,  -162,  -162,
-    -162,    32,   162,  -162,   547,   499,  -162,  -162,  -162,   505,
-     561,   216,   471,    98,   467,   551,  -162,   184,   185,   217,
-     218,   216,   470,   364,   433,   219,    30,   435,    26,   217,
-     218,    84,   173,   174,   175,   176,   500,   548,    33,    35,
-     501,   219,   346,    73,    74,    75,    76,   255,    77,    36,
-     549,   354,    79,    80,   355,   356,    82,   207,   208,   350,
-     362,    37,    38,    42,   472,    43,   357,   358,   359,    44,
-      39,   315,    45,    46,   321,   486,  -269,   280,   282,   283,
-     382,   487,   488,   346,     2,     3,   477,    54,   478,   177,
-      69,   168,    70,   178,   169,    71,    90,   560,   -23,    93,
-     162,    56,   102,     6,   179,   104,    73,    74,    75,    76,
-      55,    77,    95,   131,   343,   133,     2,     3,   320,    82,
-     331,   322,   323,   324,   325,   326,   327,   473,    49,    50,
-      51,    52,   132,   457,   346,     6,   328,   135,    73,    74,
-      75,    76,    55,    77,   480,   137,   237,   138,   238,   239,
-     240,    82,   142,   143,   144,   363,   149,   365,   145,   241,
-     146,   242,   243,   147,   279,   148,   244,   245,   246,   374,
-     182,   247,   377,   378,   158,     9,   508,   187,   510,   183,
-      56,   189,   -46,   188,   190,   193,   396,   396,   194,    57,
-     195,   205,   403,   209,   196,   482,   483,    58,    59,   405,
-     248,   249,   250,   251,   292,   213,   197,     9,   201,   225,
-     227,   252,    56,   559,   -47,   253,   202,   254,   203,   204,
-     228,    57,    78,    79,    80,    81,   229,   236,   281,    58,
-      59,   277,   519,   285,   286,   294,   288,   295,   296,   524,
-     299,    73,    74,    75,    76,   255,    77,   300,   334,   256,
-     336,   315,   257,   258,    82,    73,    74,    75,    76,   339,
-      77,   348,   259,    78,    79,    80,    81,   372,    82,   474,
-       1,   375,     2,     3,     4,     5,   479,   379,   383,   384,
-     389,  -267,  -268,   431,   396,   485,   432,   434,   436,   491,
-     439,     6,   557,   493,     7,   442,   441,   443,     8,   468,
-     497,   396,   460,   521,   503,   396,   461,   506,   507,   475,
-     509,   465,   476,   490,   512,   492,   494,   495,   511,    73,
-      74,    75,    76,   513,    77,   516,   517,    78,    79,    80,
-      81,   406,    82,   514,   515,   525,   526,   407,   408,   527,
-     528,   533,   529,   409,   410,   411,   412,   413,   414,   415,
-     530,   539,   542,   552,   553,   416,   417,   418,   419,   554,
-     555,   558,    72,     9,   396,   541,    34,   543,    94,    10,
-     260,   544,   404,   401,   545,   150,   546,    11,   302,   303,
-     304,   305,   306,   307,   308,   309,   159,   310,   311,   312,
-     313,   314,   496,    73,    74,    75,    76,   214,    77,   230,
-     540,    78,    79,    80,    81,   232,    82,   459,   385,   420,
-     332,   421,   297,   333,   212,   351,   422,   423,   424,   425,
-     426,   427,   428,   429,    73,    74,    75,    76,   152,    77,
-     210,     0,    78,    79,    80,    81,   153,    82,     0,     0,
-       0,     0,     0,   160,     0,    73,    74,    75,    76,   400,
+      84,   101,   151,   198,   388,   441,   162,   235,   391,   -42,
+     477,   105,   215,   276,   449,     4,     5,   211,   445,    96,
+     362,   363,   364,   365,   287,   199,   450,   168,   527,   446,
+     169,   103,   386,   433,   465,    97,   530,   141,   532,    22,
+     348,   386,   458,   184,   185,    23,     4,     5,    24,   349,
+     173,   174,   175,   176,     1,   134,     2,     3,     4,     5,
+     467,   462,   162,   139,   331,    84,   333,   334,   171,     2,
+       3,   167,   172,     2,     3,     6,   106,     7,   442,   -83,
+     200,     8,    98,   207,   208,   434,   466,   387,     6,   357,
+     462,   451,     6,   447,    55,   528,   440,   459,    55,    84,
+     274,   369,   366,   531,   372,   533,   480,   177,    25,   282,
+     -84,   178,   468,   219,    26,   288,   463,   216,    60,   518,
+      30,   519,   179,   495,   162,   217,   218,   501,   557,   219,
+      73,    74,    75,    76,   253,    77,    65,   360,   350,    79,
+      80,   351,   352,    82,   429,   547,     9,   431,   216,    60,
+     543,    84,    10,   353,   354,   355,   217,   218,    32,     9,
+      11,   152,   342,     9,    56,   482,   -46,    65,    56,   153,
+     -47,   483,   484,    57,   496,   155,   157,    57,   497,   346,
+     358,    58,    59,   544,    33,    58,    59,    35,    73,    74,
+      75,    76,    36,    77,    37,    38,   545,   278,   280,   281,
+     378,    82,   311,   342,   -23,   -21,   473,  -267,   474,    39,
+      42,    73,    74,    75,    76,   556,    77,    71,    43,   339,
+     162,    54,    44,    69,    82,    45,    46,   277,    70,   -23,
+     317,    93,    90,    95,   231,    56,   316,  -162,   327,   102,
+     104,   469,   131,  -162,   132,  -162,  -162,  -162,    49,    50,
+      51,    52,   133,   453,   342,   135,  -162,   137,   476,   149,
+     138,   142,  -162,  -162,  -162,   158,   143,  -162,   182,   189,
+     279,   359,   144,   361,   145,   146,   318,   319,   320,   321,
+     322,   323,   183,   147,   148,   370,   187,   188,   373,   374,
+     504,   324,   506,   190,   193,   194,  -162,  -162,  -162,  -162,
+     195,   196,   392,   392,   197,   201,   202,  -162,   399,   478,
+     479,  -162,   203,  -162,   204,   401,   205,    73,    74,    75,
+      76,   227,    77,   209,   288,    78,    79,    80,    81,   213,
+      82,   225,   228,   555,    56,   229,   236,  -162,  -162,  -162,
+    -162,  -162,  -162,   284,   275,  -162,   290,    72,  -162,  -162,
+    -162,   291,   515,    78,    79,    80,    81,   292,  -162,   520,
+      73,    74,    75,    76,   295,    77,   296,   330,    78,    79,
+      80,    81,   332,    82,   311,   335,   344,   375,    73,    74,
+      75,    76,   368,    77,   371,   470,    78,    79,    80,    81,
+     379,    82,   475,   380,    73,    74,    75,    76,    43,    77,
+     392,   481,   345,   385,  -265,   487,    46,    82,  -266,   489,
+     427,   430,   553,   428,   432,   435,   493,   392,   457,   517,
+     499,   392,   437,   502,   503,   438,   505,   439,   456,   461,
+     508,    73,    74,    75,    76,   464,    77,   472,   471,   454,
+     486,   512,   513,   237,    82,   238,   239,   240,   298,   299,
+     300,   301,   302,   303,   304,   305,   241,   306,   307,   308,
+     309,   310,   242,   243,   244,   488,   491,   245,   490,   507,
+     509,    73,    74,    75,    76,   253,    77,   511,   510,   254,
+     392,   537,   255,   539,    82,   521,   523,   540,   522,   524,
+     541,   529,   542,   525,   526,   538,   246,   247,   248,   249,
+     535,   548,   402,   549,   550,   551,   554,   250,   403,   404,
+      34,   251,   258,   252,   405,   406,   407,   408,   409,   410,
+     411,   400,    94,   214,   159,   397,   412,   413,   414,   415,
+     230,   150,   232,   311,   492,   312,   313,    73,    74,    75,
+      76,   253,    77,   536,   381,   254,   328,   455,   255,   256,
+      82,    73,    74,    75,    76,   152,    77,   329,   257,    78,
+      79,    80,    81,   153,    82,   212,    73,    74,    75,    76,
+     160,    77,   347,     0,    78,    79,    80,    81,   293,    82,
+     416,   210,   417,     0,     0,     0,     0,   418,   419,   420,
+     421,   422,   423,   424,   425,    73,    74,    75,    76,   396,
       77,     0,     0,    78,    79,    80,    81,     0,    82,     0,
-       0,     0,     0,   315,    26,   316,   317,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,     0,   118,
-     119,   120,    73,    74,    75,    76,   152,    77,     0,     0,
-      78,    79,    80,    81,   153,    82,    73,    74,    75,    76,
-       0,    77,     0,     0,    78,    79,    80,    81,     0,    82,
-      73,    74,    75,    76,     0,    77,     0,     0,   393,    79,
-      80,    81,     0,    82,    73,    74,    75,    76,     0,    77,
-       0,     0,   397,    79,    80,    81,     0,    82,    73,    74,
-      75,    76,     0,    77,     0,     0,   498,    79,    80,    81,
+       0,     0,     0,     0,    26,   107,   108,   109,   110,   111,
+     112,   113,   114,   115,   116,   117,     0,   118,   119,   120,
+      73,    74,    75,    76,   152,    77,     0,     0,    78,    79,
+      80,    81,   153,    82,    73,    74,    75,    76,     0,    77,
+       0,     0,   389,    79,    80,    81,     0,    82,    73,    74,
+      75,    76,     0,    77,     0,     0,   393,    79,    80,    81,
        0,    82,    73,    74,    75,    76,     0,    77,     0,     0,
-     504,    79,    80,    81,     0,    82,    73,    74,    75,    76,
-     255,    77,     0,     0,   256,     0,     0,   257,     0,    82,
-      73,    74,    75,    76,    43,    77,     0,     0,   349,     0,
-       0,     0,    46,    82,    73,    74,    75,    76,     0,    77,
-       0,     0,   458,    73,    74,    75,    76,    82,    77,     0,
-       0,   518,     0,     0,     0,     0,    82
+     494,    79,    80,    81,     0,    82,    73,    74,    75,    76,
+       0,    77,     0,     0,   500,    79,    80,    81,     0,    82,
+      73,    74,    75,    76,     0,    77,     0,     0,   514,     0,
+       0,     0,     0,    82
 };
 
 static const yytype_int16 yycheck[] =
 {
-      41,    67,   138,   226,   131,   179,   346,    72,    72,   237,
-     347,     1,   441,    11,     4,    18,    19,    20,    21,   193,
-      10,   113,    12,    13,    14,     5,     4,     4,     8,     9,
-     249,    72,     4,    23,   106,    25,    26,    15,     8,     9,
-      30,    31,    32,     4,    16,    35,     4,    31,    72,   132,
-     133,    72,    72,   109,    72,    96,   109,    31,   194,     4,
-     113,   117,   127,   104,   287,   106,   289,   290,   140,    14,
-     113,   114,    14,   137,    64,    65,    66,    67,    62,    72,
-      72,    23,   491,   113,   493,    75,    31,    85,    62,    79,
-      72,    81,   114,    73,   113,    72,   232,   316,   101,   140,
-     124,   329,    80,    73,   332,   241,   127,   127,   445,   127,
-      82,    72,   102,   249,    72,   105,   106,   107,   108,   109,
-     110,     4,   258,   113,    30,   462,   116,   117,   118,   466,
-     559,   111,    72,    78,   127,   127,   126,   147,   148,   119,
-     120,   111,   124,   317,   372,   206,   113,   375,   124,   119,
-     120,   192,    52,    53,    54,    55,    17,    63,     0,     4,
-      21,   222,   298,   105,   106,   107,   108,   109,   110,   123,
-      76,   113,   114,   115,   116,   117,   118,   187,   188,   315,
-     316,    72,     4,     4,   124,   109,   128,   129,   130,   113,
-     125,   121,   116,   117,    10,    77,   126,   238,   239,   240,
-     336,    83,    84,   339,     6,     7,   434,     4,   436,   109,
-     113,   113,   113,   113,   116,   125,   109,   557,   113,     4,
-     356,   102,     4,    25,   124,    74,   105,   106,   107,   108,
-      32,   110,   104,   123,   113,   113,     6,     7,   279,   118,
-     281,    57,    58,    59,    60,    61,    62,   421,    52,    53,
-      54,    55,   114,   389,   390,    25,    72,   113,   105,   106,
-     107,   108,    32,   110,   438,     4,    10,   117,    12,    13,
-      14,   118,   126,   126,   126,   316,     4,   318,   126,    23,
-     126,    25,    26,   126,    14,   126,    30,    31,    32,   330,
-     113,    35,   333,   334,    72,    97,   470,   123,   472,   113,
-     102,   110,   104,   123,   102,   124,   347,   348,    72,   111,
-     127,     4,   353,   125,   127,   442,   443,   119,   120,   360,
-      64,    65,    66,    67,   460,   125,   127,    97,   127,   125,
-       4,    75,   102,   556,   104,    79,   127,    81,   127,   127,
-       4,   111,   113,   114,   115,   116,    73,     4,    14,   119,
-     120,   109,   488,   109,   109,     4,   113,     4,     4,   495,
-     126,   105,   106,   107,   108,   109,   110,     4,    72,   113,
-      72,   121,   116,   117,   118,   105,   106,   107,   108,   126,
-     110,   126,   126,   113,   114,   115,   116,    10,   118,   430,
-       4,    10,     6,     7,     8,     9,   437,   109,   109,   109,
-      22,   126,   126,   125,   445,   446,   126,    10,    10,   450,
-     101,    25,   548,   454,    28,   123,    72,   123,    32,    72,
-     461,   462,   123,   489,   465,   466,    22,   468,   469,   123,
-     471,    22,   113,     4,   475,     4,     4,    22,   125,   105,
-     106,   107,   108,   127,   110,   486,   487,   113,   114,   115,
-     116,    44,   118,   125,     4,   126,    22,    50,    51,   126,
-      22,     4,   125,    56,    57,    58,    59,    60,    61,    62,
-     125,     4,   113,   127,     4,    68,    69,    70,    71,     4,
-       4,     4,    74,    97,   525,   526,    13,   528,    62,   103,
-     232,   532,   356,   353,   535,   129,   537,   111,    36,    37,
-      38,    39,    40,    41,    42,    43,   136,    45,    46,    47,
-      48,    49,   460,   105,   106,   107,   108,   199,   110,   222,
-     525,   113,   114,   115,   116,   223,   118,   390,   339,   122,
-     282,   124,   258,   282,   194,   315,   129,   130,   131,   132,
-     133,   134,   135,   136,   105,   106,   107,   108,   109,   110,
-     192,    -1,   113,   114,   115,   116,   117,   118,    -1,    -1,
-      -1,    -1,    -1,   124,    -1,   105,   106,   107,   108,   109,
-     110,    -1,    -1,   113,   114,   115,   116,    -1,   118,    -1,
-      -1,    -1,    -1,   121,   124,   123,   124,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    96,    -1,    98,
-      99,   100,   105,   106,   107,   108,   109,   110,    -1,    -1,
-     113,   114,   115,   116,   117,   118,   105,   106,   107,   108,
-      -1,   110,    -1,    -1,   113,   114,   115,   116,    -1,   118,
-     105,   106,   107,   108,    -1,   110,    -1,    -1,   113,   114,
-     115,   116,    -1,   118,   105,   106,   107,   108,    -1,   110,
-      -1,    -1,   113,   114,   115,   116,    -1,   118,   105,   106,
-     107,   108,    -1,   110,    -1,    -1,   113,   114,   115,   116,
-      -1,   118,   105,   106,   107,   108,    -1,   110,    -1,    -1,
-     113,   114,   115,   116,    -1,   118,   105,   106,   107,   108,
-     109,   110,    -1,    -1,   113,    -1,    -1,   116,    -1,   118,
-     105,   106,   107,   108,   109,   110,    -1,    -1,   113,    -1,
-      -1,    -1,   117,   118,   105,   106,   107,   108,    -1,   110,
-      -1,    -1,   113,   105,   106,   107,   108,   118,   110,    -1,
-      -1,   113,    -1,    -1,    -1,    -1,   118
+      41,    67,   131,   179,   342,    11,   138,   226,   343,     4,
+     437,    71,     5,   237,     4,     8,     9,   193,     4,    14,
+      18,    19,    20,    21,   247,    71,    16,   112,     4,    15,
+     115,    72,    71,    71,    71,    30,     4,   106,     4,   112,
+      14,    71,    71,   147,   148,   112,     8,     9,   113,    23,
+      51,    52,    53,    54,     4,    96,     6,     7,     8,     9,
+      71,    71,   194,   104,   283,   106,   285,   286,   108,     6,
+       7,   140,   112,     6,     7,    25,   136,    27,    84,    72,
+     126,    31,    77,   187,   188,   123,   123,   126,    25,   312,
+      71,    81,    25,    79,    31,    71,   126,   126,    31,   140,
+     232,   325,   100,    71,   328,    71,   441,   108,   112,   241,
+      72,   112,   123,   206,   123,   247,   126,   110,    31,   487,
+     112,   489,   123,   458,   256,   118,   119,   462,   555,   222,
+     104,   105,   106,   107,   108,   109,    31,   313,   112,   113,
+     114,   115,   116,   117,   368,   126,    96,   371,   110,    62,
+      29,   192,   102,   127,   128,   129,   118,   119,     4,    96,
+     110,   108,   294,    96,   101,    76,   103,    62,   101,   116,
+     103,    82,    83,   110,    17,   132,   133,   110,    21,   311,
+     312,   118,   119,    62,     0,   118,   119,     4,   104,   105,
+     106,   107,   122,   109,    71,     4,    75,   238,   239,   240,
+     332,   117,   120,   335,   112,   113,   430,   125,   432,   124,
+       4,   104,   105,   106,   107,   553,   109,   124,   108,   112,
+     352,     4,   112,   112,   117,   115,   116,    14,   112,   112,
+      10,     4,   108,   103,     1,   101,   277,     4,   279,     4,
+      73,   417,   122,    10,   113,    12,    13,    14,    51,    52,
+      53,    54,   112,   385,   386,   112,    23,     4,   434,     4,
+     116,   125,    29,    30,    31,    71,   125,    34,   112,   109,
+      14,   312,   125,   314,   125,   125,    56,    57,    58,    59,
+      60,    61,   112,   125,   125,   326,   122,   122,   329,   330,
+     466,    71,   468,   101,   123,    71,    63,    64,    65,    66,
+     126,   126,   343,   344,   126,   126,   126,    74,   349,   438,
+     439,    78,   126,    80,   126,   356,     4,   104,   105,   106,
+     107,     4,   109,   124,   456,   112,   113,   114,   115,   124,
+     117,   124,     4,   552,   101,    72,     4,   104,   105,   106,
+     107,   108,   109,   112,   108,   112,     4,    73,   115,   116,
+     117,     4,   484,   112,   113,   114,   115,     4,   125,   491,
+     104,   105,   106,   107,   125,   109,     4,    71,   112,   113,
+     114,   115,    71,   117,   120,   125,   125,   108,   104,   105,
+     106,   107,    10,   109,    10,   426,   112,   113,   114,   115,
+     108,   117,   433,   108,   104,   105,   106,   107,   108,   109,
+     441,   442,   112,    22,   125,   446,   116,   117,   125,   450,
+     124,    10,   544,   125,    10,   100,   457,   458,    22,   485,
+     461,   462,    71,   464,   465,   122,   467,   122,   122,    22,
+     471,   104,   105,   106,   107,    71,   109,   112,   122,   112,
+       4,   482,   483,    10,   117,    12,    13,    14,    35,    36,
+      37,    38,    39,    40,    41,    42,    23,    44,    45,    46,
+      47,    48,    29,    30,    31,     4,    22,    34,     4,   124,
+     126,   104,   105,   106,   107,   108,   109,     4,   124,   112,
+     521,   522,   115,   524,   117,   125,   125,   528,    22,    22,
+     531,     4,   533,   124,   124,   112,    63,    64,    65,    66,
+       4,   126,    43,     4,     4,     4,     4,    74,    49,    50,
+      13,    78,   232,    80,    55,    56,    57,    58,    59,    60,
+      61,   352,    62,   199,   136,   349,    67,    68,    69,    70,
+     222,   129,   223,   120,   456,   122,   123,   104,   105,   106,
+     107,   108,   109,   521,   335,   112,   280,   386,   115,   116,
+     117,   104,   105,   106,   107,   108,   109,   280,   125,   112,
+     113,   114,   115,   116,   117,   194,   104,   105,   106,   107,
+     123,   109,   311,    -1,   112,   113,   114,   115,   256,   117,
+     121,   192,   123,    -1,    -1,    -1,    -1,   128,   129,   130,
+     131,   132,   133,   134,   135,   104,   105,   106,   107,   108,
+     109,    -1,    -1,   112,   113,   114,   115,    -1,   117,    -1,
+      -1,    -1,    -1,    -1,   123,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    -1,    97,    98,    99,
+     104,   105,   106,   107,   108,   109,    -1,    -1,   112,   113,
+     114,   115,   116,   117,   104,   105,   106,   107,    -1,   109,
+      -1,    -1,   112,   113,   114,   115,    -1,   117,   104,   105,
+     106,   107,    -1,   109,    -1,    -1,   112,   113,   114,   115,
+      -1,   117,   104,   105,   106,   107,    -1,   109,    -1,    -1,
+     112,   113,   114,   115,    -1,   117,   104,   105,   106,   107,
+      -1,   109,    -1,    -1,   112,   113,   114,   115,    -1,   117,
+     104,   105,   106,   107,    -1,   109,    -1,    -1,   112,    -1,
+      -1,    -1,    -1,   117
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,     4,     6,     7,     8,     9,    25,    28,    32,    97,
-     103,   111,   139,   140,   141,   142,   143,   144,   145,   157,
-     160,   162,   113,   113,   114,   113,   124,   161,   163,   146,
-     113,   158,     4,     0,   141,     4,   123,    72,     4,   125,
-     255,   256,     4,   109,   113,   116,   117,   250,   251,    52,
-      53,    54,    55,   221,     4,    32,   102,   111,   119,   120,
-     142,   147,   151,   152,   159,   160,   210,   211,   212,   113,
-     113,   125,    74,   105,   106,   107,   108,   110,   113,   114,
-     115,   116,   118,   246,   254,   259,   261,   262,   263,   164,
-     109,   148,   149,     4,   152,   104,    14,    31,    78,   153,
-     154,   212,     4,   254,    74,    72,   137,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    96,    98,    99,
-     100,   170,   171,   172,   173,   174,   175,   176,   184,   185,
-     186,   123,   114,   113,   254,   113,   155,     4,   117,   254,
-     260,   261,   126,   126,   126,   126,   126,   126,   126,     4,
-     186,   263,   109,   117,   252,   253,   254,   253,    72,   184,
-     124,   156,   246,   247,   248,   249,   253,   261,   113,   116,
-     150,   109,   113,    52,    53,    54,    55,   109,   113,   124,
-     177,   178,   113,   113,   150,   150,   165,   123,   123,   110,
-     102,   257,   258,   124,    72,   127,   127,   127,   255,    72,
-     127,   127,   127,   127,   127,     4,   166,   150,   150,   125,
-     259,   255,   249,   125,   178,     5,   111,   119,   120,   143,
-     167,   179,   207,   208,   209,   125,   168,     4,     4,    73,
-     209,     1,   210,   213,   169,   221,     4,    10,    12,    13,
-      14,    23,    25,    26,    30,    31,    32,    35,    64,    65,
-      66,    67,    75,    79,    81,   109,   113,   116,   117,   126,
-     147,   180,   195,   197,   203,   205,   217,   223,   227,   229,
-     231,   232,   233,   241,   242,   243,   246,   109,   252,    14,
-     254,    14,   254,   254,   246,   109,   109,   218,   113,   219,
-     220,   233,   246,   228,     4,     4,     4,   247,   224,   126,
-       4,   234,    36,    37,    38,    39,    40,    41,    42,    43,
-      45,    46,    47,    48,    49,   121,   123,   124,   230,   193,
-     254,    10,    57,    58,    59,    60,    61,    62,    72,   244,
-     245,   254,   244,   245,    72,   221,    72,   221,   221,   126,
-     181,   196,   198,   113,   239,   240,   246,   204,   126,   113,
-     246,   251,    14,    23,   113,   116,   117,   128,   129,   130,
-     225,   233,   246,   254,   255,   254,    18,    19,    20,    21,
-     101,   194,    10,   252,   254,    10,   252,   254,   254,   109,
-     214,   215,   246,   109,   109,   240,   188,   199,   200,    22,
-      72,   127,   193,   113,   206,   236,   254,   113,   235,   236,
-     109,   161,   222,   254,   156,   254,    44,    50,    51,    56,
-      57,    58,    59,    60,    61,    62,    68,    69,    70,    71,
-     122,   124,   129,   130,   131,   132,   133,   134,   135,   136,
-     226,   125,   126,   252,    10,   252,    10,    72,   124,   101,
-     216,    72,   123,   123,   127,    11,    85,   183,   189,     4,
-      15,    80,   201,     4,    16,    82,   202,   246,   113,   239,
-     123,    22,    72,   127,   237,    22,    72,   127,    72,    72,
-     124,    72,   124,   255,   254,   123,   113,   252,   252,   254,
-     255,   215,   263,   263,   236,   254,    77,    83,    84,   187,
-       4,   254,     4,   254,     4,    22,   232,   254,   113,   236,
-      17,    21,   238,   254,   113,   236,   254,   254,   255,   254,
-     255,   125,   254,   127,   125,     4,   254,   254,   113,   246,
-     182,   212,   237,   237,   246,   126,    22,   126,    22,   125,
-     125,     4,    72,     4,     4,    72,     4,    72,   190,     4,
-     235,   254,   113,   254,   254,   254,   254,    30,    63,    76,
-     191,   127,   127,     4,     4,     4,   192,   246,     4,   221,
-     193,   215
+       0,     4,     6,     7,     8,     9,    25,    27,    31,    96,
+     102,   110,   138,   139,   140,   141,   142,   143,   144,   156,
+     159,   161,   112,   112,   113,   112,   123,   160,   162,   145,
+     112,   157,     4,     0,   140,     4,   122,    71,     4,   124,
+     254,   255,     4,   108,   112,   115,   116,   249,   250,    51,
+      52,    53,    54,   220,     4,    31,   101,   110,   118,   119,
+     141,   146,   150,   151,   158,   159,   209,   210,   211,   112,
+     112,   124,    73,   104,   105,   106,   107,   109,   112,   113,
+     114,   115,   117,   245,   253,   258,   260,   261,   262,   163,
+     108,   147,   148,     4,   151,   103,    14,    30,    77,   152,
+     153,   211,     4,   253,    73,    71,   136,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    97,    98,
+      99,   169,   170,   171,   172,   173,   174,   175,   183,   184,
+     185,   122,   113,   112,   253,   112,   154,     4,   116,   253,
+     259,   260,   125,   125,   125,   125,   125,   125,   125,     4,
+     185,   262,   108,   116,   251,   252,   253,   252,    71,   183,
+     123,   155,   245,   246,   247,   248,   252,   260,   112,   115,
+     149,   108,   112,    51,    52,    53,    54,   108,   112,   123,
+     176,   177,   112,   112,   149,   149,   164,   122,   122,   109,
+     101,   256,   257,   123,    71,   126,   126,   126,   254,    71,
+     126,   126,   126,   126,   126,     4,   165,   149,   149,   124,
+     258,   254,   248,   124,   177,     5,   110,   118,   119,   142,
+     166,   178,   206,   207,   208,   124,   167,     4,     4,    72,
+     208,     1,   209,   212,   168,   220,     4,    10,    12,    13,
+      14,    23,    29,    30,    31,    34,    63,    64,    65,    66,
+      74,    78,    80,   108,   112,   115,   116,   125,   146,   179,
+     194,   196,   202,   204,   216,   222,   226,   228,   230,   231,
+     232,   240,   241,   242,   245,   108,   251,    14,   253,    14,
+     253,   253,   245,   217,   112,   218,   219,   232,   245,   227,
+       4,     4,     4,   246,   223,   125,     4,   233,    35,    36,
+      37,    38,    39,    40,    41,    42,    44,    45,    46,    47,
+      48,   120,   122,   123,   229,   192,   253,    10,    56,    57,
+      58,    59,    60,    61,    71,   243,   244,   253,   243,   244,
+      71,   220,    71,   220,   220,   125,   180,   195,   197,   112,
+     238,   239,   245,   203,   125,   112,   245,   250,    14,    23,
+     112,   115,   116,   127,   128,   129,   224,   232,   245,   253,
+     254,   253,    18,    19,    20,    21,   100,   193,    10,   251,
+     253,    10,   251,   253,   253,   108,   213,   214,   245,   108,
+     108,   239,   187,   198,   199,    22,    71,   126,   192,   112,
+     205,   235,   253,   112,   234,   235,   108,   160,   221,   253,
+     155,   253,    43,    49,    50,    55,    56,    57,    58,    59,
+      60,    61,    67,    68,    69,    70,   121,   123,   128,   129,
+     130,   131,   132,   133,   134,   135,   225,   124,   125,   251,
+      10,   251,    10,    71,   123,   100,   215,    71,   122,   122,
+     126,    11,    84,   182,   188,     4,    15,    79,   200,     4,
+      16,    81,   201,   245,   112,   238,   122,    22,    71,   126,
+     236,    22,    71,   126,    71,    71,   123,    71,   123,   254,
+     253,   122,   112,   251,   251,   253,   254,   214,   262,   262,
+     235,   253,    76,    82,    83,   186,     4,   253,     4,   253,
+       4,    22,   231,   253,   112,   235,    17,    21,   237,   253,
+     112,   235,   253,   253,   254,   253,   254,   124,   253,   126,
+     124,     4,   253,   253,   112,   245,   181,   211,   236,   236,
+     245,   125,    22,   125,    22,   124,   124,     4,    71,     4,
+       4,    71,     4,    71,   189,     4,   234,   253,   112,   253,
+     253,   253,   253,    29,    62,    75,   190,   126,   126,     4,
+       4,     4,   191,   245,     4,   220,   192,   214
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2876,17 +2877,17 @@
     {
         case 2:
 #line 781 "compilers/imcc/imcc.y"
-    { if (yynerrs) YYABORT; (yyval.i) = 0; ;}
+    { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
 #line 790 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
 #line 791 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
@@ -2895,7 +2896,7 @@
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = 0;
-         ;}
+         }
     break;
 
   case 8:
@@ -2904,32 +2905,32 @@
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = 0;
-         ;}
+         }
     break;
 
   case 9:
 #line 804 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
   case 10:
 #line 805 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
   case 11:
 #line 806 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
   case 12:
 #line 807 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
   case 13:
 #line 811 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
   case 14:
@@ -2938,7 +2939,7 @@
            (yyval.i) = 0;
            do_loadlib(interp, (yyvsp[(2) - (3)].s));
            mem_sys_free((yyvsp[(2) - (3)].s));
-         ;}
+         }
     break;
 
   case 15:
@@ -2946,14 +2947,14 @@
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
            set_filename(interp, (yyvsp[(4) - (5)].s));
-         ;}
+         }
     break;
 
   case 16:
 #line 827 "compilers/imcc/imcc.y"
     {
            set_filename(interp, (yyvsp[(2) - (3)].s));
-         ;}
+         }
     break;
 
   case 17:
@@ -2965,7 +2966,7 @@
 
             IMCC_INFO(interp)->cur_namespace = NULL;
             (yyval.t) = 0;
-         ;}
+         }
     break;
 
   case 18:
@@ -2983,12 +2984,12 @@
             Parrot_register_HLL_type(interp, ctx->current_HLL,
                 built_in_type, language_type);
             (yyval.t) = 0;
-         ;}
+         }
     break;
 
   case 19:
 #line 861 "compilers/imcc/imcc.y"
-    { is_def = 1; ;}
+    { is_def = 1; }
     break;
 
   case 20:
@@ -2997,12 +2998,12 @@
              mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
              mem_sys_free((yyvsp[(4) - (6)].s));
              is_def = 0;
-         ;}
+         }
     break;
 
   case 21:
 #line 870 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+    { is_def=1; }
     break;
 
   case 22:
@@ -3010,12 +3011,12 @@
     {
            (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
            is_def = 0;
-         ;}
+         }
     break;
 
   case 23:
 #line 876 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+    { is_def=1; }
     break;
 
   case 24:
@@ -3023,37 +3024,37 @@
     {
            (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
            is_def = 0;
-         ;}
+         }
     break;
 
   case 29:
 #line 893 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  ;}
+    { (yyval.i) = 0;  }
     break;
 
   case 30:
 #line 894 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  ;}
+    { (yyval.i) = 0;  }
     break;
 
   case 31:
 #line 895 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  ;}
+    { (yyval.i) = 0;  }
     break;
 
   case 32:
 #line 896 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  ;}
+    { (yyval.i) = 0;  }
     break;
 
   case 33:
 #line 897 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 36:
 #line 902 "compilers/imcc/imcc.y"
-    { clear_state(interp); ;}
+    { clear_state(interp); }
     break;
 
   case 37:
@@ -3063,7 +3064,7 @@
                     (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
                     IMCC_INFO(interp)->nargs, IMCC_INFO(interp) -> keyvec, 1);
            /* XXX: can't seem to mem_sys_free($1) here */
-         ;}
+         }
     break;
 
   case 38:
@@ -3071,7 +3072,7 @@
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
-         ;}
+         }
     break;
 
   case 39:
@@ -3081,14 +3082,14 @@
                     IMCC_INFO(interp)->cur_unit,
                     mk_sub_label(interp, (yyvsp[(4) - (4)].s)));
            IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(3) - (4)].t);
-         ;}
+         }
     break;
 
   case 40:
 #line 923 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
-         ;}
+         }
     break;
 
   case 41:
@@ -3099,17 +3100,17 @@
            (yyval.i) = 0;
            mem_sys_free((yyvsp[(2) - (4)].s));
            mem_sys_free((yyvsp[(4) - (4)].s));
-         ;}
+         }
     break;
 
   case 42:
 #line 934 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;;}
+    { (yyval.i) = 0;}
     break;
 
   case 44:
 #line 942 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); ;}
+    { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
   case 45:
@@ -3120,7 +3121,7 @@
                          emit_flush(interp);
            */
            (yyval.i) = 0;
-         ;}
+         }
     break;
 
   case 48:
@@ -3135,7 +3136,7 @@
            IMCC_INFO(interp)->cur_namespace = (yyvsp[(2) - (3)].sr);
            if (re_open)
                IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
-         ;}
+         }
     break;
 
   case 49:
@@ -3146,50 +3147,56 @@
                     "Slice not allowed in namespace.");
 
             (yyval.sr) = (yyvsp[(2) - (3)].sr);
-        ;}
+        }
     break;
 
   case 50:
 #line 983 "compilers/imcc/imcc.y"
-    { (yyval.sr) = NULL; ;}
+    { (yyval.sr) = NULL; }
     break;
 
   case 51:
 #line 988 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
-         ;}
+         }
     break;
 
   case 52:
 #line 992 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
-         ;}
+         }
     break;
 
   case 53:
-#line 995 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t); ;}
+#line 996 "compilers/imcc/imcc.y"
+    {
+          IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
+          if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid) {
+            IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup(
+            IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->name);
+          }
+        }
     break;
 
   case 54:
-#line 997 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
+#line 1004 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 55:
-#line 1001 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; ;}
+#line 1008 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; }
     break;
 
   case 56:
-#line 1002 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; ;}
+#line 1009 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; }
     break;
 
   case 57:
-#line 1004 "compilers/imcc/imcc.y"
+#line 1011 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                  add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -3198,21 +3205,21 @@
            }
            else
                add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
-         ;}
+         }
     break;
 
   case 58:
-#line 1016 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+#line 1023 "compilers/imcc/imcc.y"
+    { is_def=1; }
     break;
 
   case 59:
-#line 1016 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; ;}
+#line 1023 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; }
     break;
 
   case 60:
-#line 1021 "compilers/imcc/imcc.y"
+#line 1028 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(3) - (3)].t) & VT_UNIQUE_REG)
                (yyval.sr) = mk_ident_ur(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
@@ -3220,162 +3227,157 @@
                (yyval.sr) = mk_ident(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
            (yyval.sr)->type |= (yyvsp[(3) - (3)].t);
            mem_sys_free((yyvsp[(2) - (3)].s));
-          ;}
+          }
     break;
 
   case 61:
-#line 1034 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 1041 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 62:
-#line 1039 "compilers/imcc/imcc.y"
+#line 1046 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
            mem_sys_free((yyvsp[(3) - (4)].s));
-         ;}
+         }
     break;
 
   case 63:
-#line 1045 "compilers/imcc/imcc.y"
+#line 1052 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
            mem_sys_free((yyvsp[(3) - (4)].s));
-         ;}
+         }
     break;
 
   case 64:
-#line 1054 "compilers/imcc/imcc.y"
+#line 1061 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->vtable_name = NULL;
            IMCC_INFO(interp)->cur_unit->is_vtable_method = 1;
-         ;}
+         }
     break;
 
   case 65:
-#line 1060 "compilers/imcc/imcc.y"
+#line 1067 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s);
            IMCC_INFO(interp)->cur_unit->is_vtable_method = 1;
-         ;}
+         }
     break;
 
   case 66:
-#line 1069 "compilers/imcc/imcc.y"
+#line 1076 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = NULL;
            IMCC_INFO(interp)->cur_unit->is_method = 1;
-         ;}
+         }
     break;
 
   case 67:
-#line 1075 "compilers/imcc/imcc.y"
+#line 1082 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
            IMCC_INFO(interp)->cur_unit->is_method = 1;
-         ;}
+         }
     break;
 
   case 68:
-#line 1084 "compilers/imcc/imcc.y"
+#line 1091 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
            IMCC_INFO(interp)->cur_unit->has_ns_entry_name = 1;
-         ;}
+         }
     break;
 
   case 69:
-#line 1090 "compilers/imcc/imcc.y"
+#line 1097 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
            IMCC_INFO(interp)->cur_unit->has_ns_entry_name = 1;
-         ;}
+         }
     break;
 
   case 70:
-#line 1099 "compilers/imcc/imcc.y"
+#line 1106 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
-         ;}
+         }
     break;
 
   case 71:
-#line 1107 "compilers/imcc/imcc.y"
+#line 1114 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
-           /*
-           IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup_remove_quotes($3);
-           mem_sys_free($3);
-           */
-         ;}
+         }
     break;
 
   case 72:
-#line 1116 "compilers/imcc/imcc.y"
+#line 1119 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
-           /* IMCC_INFO(interp)->cur_unit->subid = $3; */
            IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
            IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup_remove_quotes((yyvsp[(3) - (4)].s));
            mem_sys_free((yyvsp[(3) - (4)].s));
-         ;}
+         }
     break;
 
   case 73:
-#line 1127 "compilers/imcc/imcc.y"
+#line 1129 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
-         ;}
+         }
     break;
 
   case 74:
-#line 1131 "compilers/imcc/imcc.y"
+#line 1133 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
-         ;}
+         }
     break;
 
   case 75:
-#line 1136 "compilers/imcc/imcc.y"
+#line 1138 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
-         ;}
+         }
     break;
 
   case 76:
-#line 1143 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); ;}
+#line 1145 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
   case 77:
-#line 1144 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); ;}
+#line 1146 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
   case 78:
-#line 1145 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "PMC",      'S'); ;}
+#line 1147 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
   case 79:
-#line 1146 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "STRING",   'S'); ;}
+#line 1148 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
   case 80:
-#line 1148 "compilers/imcc/imcc.y"
+#line 1150 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3385,11 +3387,11 @@
            }
            mem_sys_free((yyvsp[(1) - (1)].s));
            (yyval.sr) = r;
-         ;}
+         }
     break;
 
   case 81:
-#line 1159 "compilers/imcc/imcc.y"
+#line 1161 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3399,16 +3401,16 @@
            }
            mem_sys_free((yyvsp[(1) - (1)].s));
            (yyval.sr) = r;
-         ;}
+         }
     break;
 
   case 82:
-#line 1169 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (3)].sr); ;}
+#line 1171 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 85:
-#line 1179 "compilers/imcc/imcc.y"
+#line 1181 "compilers/imcc/imcc.y"
     {
            char name[128];
            SymReg *r, *r1;
@@ -3431,177 +3433,177 @@
            r1 = IMCC_INFO(interp)->cur_unit->instructions->symregs[0];
            if (r1 && r1->pcc_sub)
                r1->pcc_sub->calls_a_sub |= 1;
-         ;}
+         }
     break;
 
   case 86:
-#line 1207 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
+#line 1209 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 87:
-#line 1211 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; ;}
+#line 1213 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
   case 88:
-#line 1212 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; ;}
+#line 1214 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
   case 89:
-#line 1216 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL; ;}
+#line 1218 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL; }
     break;
 
   case 90:
-#line 1217 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); ;}
+#line 1219 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 91:
-#line 1221 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 1223 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 93:
-#line 1226 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (1)].t); ;}
+#line 1228 "compilers/imcc/imcc.y"
+    { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
   case 94:
-#line 1227 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
+#line 1229 "compilers/imcc/imcc.y"
+    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 95:
-#line 1231 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_LOAD; ;}
+#line 1233 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_LOAD; }
     break;
 
   case 96:
-#line 1232 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_INIT; ;}
+#line 1234 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_INIT; }
     break;
 
   case 97:
-#line 1233 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_MAIN; ;}
+#line 1235 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_MAIN; }
     break;
 
   case 98:
-#line 1234 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_IMMEDIATE; ;}
+#line 1236 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_IMMEDIATE; }
     break;
 
   case 99:
-#line 1235 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_POSTCOMP; ;}
+#line 1237 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_POSTCOMP; }
     break;
 
   case 100:
-#line 1236 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_ANON; ;}
+#line 1238 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_ANON; }
     break;
 
   case 101:
-#line 1237 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_NEED_LEX; ;}
+#line 1239 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_NEED_LEX; }
     break;
 
   case 109:
-#line 1249 "compilers/imcc/imcc.y"
+#line 1251 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
-         ;}
+         }
     break;
 
   case 110:
-#line 1254 "compilers/imcc/imcc.y"
+#line 1256 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
-         ;}
+         }
     break;
 
   case 111:
-#line 1258 "compilers/imcc/imcc.y"
+#line 1260 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isNCI;
-         ;}
+         }
     break;
 
   case 112:
-#line 1263 "compilers/imcc/imcc.y"
+#line 1265 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
-         ;}
+         }
     break;
 
   case 113:
-#line 1267 "compilers/imcc/imcc.y"
+#line 1269 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
-         ;}
+         }
     break;
 
   case 114:
-#line 1271 "compilers/imcc/imcc.y"
+#line 1273 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
-         ;}
+         }
     break;
 
   case 115:
-#line 1276 "compilers/imcc/imcc.y"
+#line 1278 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
-         ;}
+         }
     break;
 
   case 116:
-#line 1284 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; ;}
+#line 1286 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; }
     break;
 
   case 117:
-#line 1285 "compilers/imcc/imcc.y"
-    { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); ;}
+#line 1287 "compilers/imcc/imcc.y"
+    { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 118:
-#line 1289 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (2)].sr); ;}
+#line 1291 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
   case 119:
-#line 1294 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; ;}
+#line 1296 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; }
     break;
 
   case 120:
-#line 1296 "compilers/imcc/imcc.y"
+#line 1298 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
-         ;}
+         }
     break;
 
   case 121:
-#line 1303 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;}
+#line 1305 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 122:
-#line 1304 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+#line 1306 "compilers/imcc/imcc.y"
+    { is_def=1; }
     break;
 
   case 123:
-#line 1305 "compilers/imcc/imcc.y"
+#line 1307 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            SymReg *ignored;
@@ -3612,162 +3614,162 @@
            UNUSED(ignored);
            is_def=0;
            (yyval.sr)=0;
-         ;}
+         }
     break;
 
   case 124:
-#line 1319 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 1321 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 125:
-#line 1320 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
+#line 1322 "compilers/imcc/imcc.y"
+    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 126:
-#line 1324 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_FLAT;   ;}
+#line 1326 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_FLAT;   }
     break;
 
   case 127:
-#line 1325 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_OPTIONAL; ;}
+#line 1327 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_OPTIONAL; }
     break;
 
   case 128:
-#line 1326 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_OPT_FLAG; ;}
+#line 1328 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_OPT_FLAG; }
     break;
 
   case 129:
-#line 1327 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_NAMED; ;}
+#line 1329 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_NAMED; }
     break;
 
   case 130:
-#line 1328 "compilers/imcc/imcc.y"
-    { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; ;}
+#line 1330 "compilers/imcc/imcc.y"
+    { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 131:
-#line 1329 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_UNIQUE_REG; ;}
+#line 1331 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_UNIQUE_REG; }
     break;
 
   case 132:
-#line 1334 "compilers/imcc/imcc.y"
-    { begin_return_or_yield(interp, 0); ;}
+#line 1336 "compilers/imcc/imcc.y"
+    { begin_return_or_yield(interp, 0); }
     break;
 
   case 133:
-#line 1336 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; ;}
+#line 1338 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 134:
-#line 1338 "compilers/imcc/imcc.y"
+#line 1340 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
            (yyval.i) = 0;
-         ;}
+         }
     break;
 
   case 135:
-#line 1345 "compilers/imcc/imcc.y"
-    { begin_return_or_yield(interp, 1); ;}
+#line 1347 "compilers/imcc/imcc.y"
+    { begin_return_or_yield(interp, 1); }
     break;
 
   case 136:
-#line 1347 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; ;}
+#line 1349 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 137:
-#line 1351 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; ;}
+#line 1353 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; }
     break;
 
   case 138:
-#line 1353 "compilers/imcc/imcc.y"
+#line 1355 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
-         ;}
+         }
     break;
 
   case 139:
-#line 1358 "compilers/imcc/imcc.y"
+#line 1360 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
-         ;}
+         }
     break;
 
   case 140:
-#line 1365 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; ;}
+#line 1367 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; }
     break;
 
   case 141:
-#line 1367 "compilers/imcc/imcc.y"
+#line 1369 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
-         ;}
+         }
     break;
 
   case 142:
-#line 1372 "compilers/imcc/imcc.y"
+#line 1374 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
-         ;}
+         }
     break;
 
   case 143:
-#line 1379 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;}
+#line 1381 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 144:
-#line 1383 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;}
+#line 1385 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 145:
-#line 1388 "compilers/imcc/imcc.y"
+#line 1390 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
               begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
-        ;}
+        }
     break;
 
   case 146:
-#line 1393 "compilers/imcc/imcc.y"
+#line 1395 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
           (yyval.t) = 0;
-        ;}
+        }
     break;
 
   case 147:
-#line 1400 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 1402 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 148:
-#line 1401 "compilers/imcc/imcc.y"
-    { (yyval.t) = 1; ;}
+#line 1403 "compilers/imcc/imcc.y"
+    { (yyval.t) = 1; }
     break;
 
   case 149:
-#line 1405 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+#line 1407 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; }
     break;
 
   case 150:
-#line 1407 "compilers/imcc/imcc.y"
+#line 1409 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3776,18 +3778,18 @@
            }
            else
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (1)].sr));
-         ;}
+         }
     break;
 
   case 151:
-#line 1417 "compilers/imcc/imcc.y"
+#line 1419 "compilers/imcc/imcc.y"
     {
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
-         ;}
+         }
     break;
 
   case 152:
-#line 1421 "compilers/imcc/imcc.y"
+#line 1423 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3796,128 +3798,118 @@
              }
              else
                  add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (3)].sr));
-         ;}
+         }
     break;
 
   case 153:
-#line 1431 "compilers/imcc/imcc.y"
+#line 1433 "compilers/imcc/imcc.y"
     {
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
-         ;}
+         }
     break;
 
   case 156:
-#line 1451 "compilers/imcc/imcc.y"
-    { clear_state(interp); ;}
+#line 1453 "compilers/imcc/imcc.y"
+    { clear_state(interp); }
     break;
 
   case 157:
-#line 1456 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(2) - (2)].i); ;}
+#line 1458 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 158:
-#line 1457 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+#line 1459 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; }
     break;
 
   case 159:
-#line 1458 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+#line 1460 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; }
     break;
 
   case 160:
-#line 1459 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+#line 1461 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; }
     break;
 
   case 161:
-#line 1460 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+#line 1462 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; }
     break;
 
   case 162:
-#line 1464 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL; ;}
+#line 1466 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL; }
     break;
 
   case 166:
-#line 1475 "compilers/imcc/imcc.y"
+#line 1477 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
-         ;}
+         }
     break;
 
   case 167:
-#line 1483 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(2) - (3)].i); ;}
+#line 1485 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
   case 168:
-#line 1485 "compilers/imcc/imcc.y"
+#line 1487 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                IMCC_warning(interp, "Too many errors. Correct some first.\n");
                YYABORT;
            }
            yyerrok;
-         ;}
+         }
     break;
 
   case 169:
-#line 1496 "compilers/imcc/imcc.y"
+#line 1498 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(1) - (1)].idlist);
            l->next = NULL;
            (yyval.idlist) = l;
-         ;}
+         }
     break;
 
   case 170:
-#line 1503 "compilers/imcc/imcc.y"
+#line 1505 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(3) - (3)].idlist);
            l->next = (yyvsp[(1) - (3)].idlist);
            (yyval.idlist) = l;
-         ;}
+         }
     break;
 
   case 171:
-#line 1512 "compilers/imcc/imcc.y"
+#line 1514 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
            l->id           = (yyvsp[(1) - (2)].s);
            l->unique_reg   = (yyvsp[(2) - (2)].t);
            (yyval.idlist) = l;
-         ;}
+         }
     break;
 
   case 172:
-#line 1521 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+#line 1523 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 173:
-#line 1522 "compilers/imcc/imcc.y"
-    { (yyval.t) = 1; ;}
+#line 1524 "compilers/imcc/imcc.y"
+    { (yyval.t) = 1; }
     break;
 
   case 176:
-#line 1529 "compilers/imcc/imcc.y"
-    { push_namespace(interp, (yyvsp[(2) - (2)].s)); mem_sys_free((yyvsp[(2) - (2)].s)); ;}
-    break;
-
-  case 177:
-#line 1530 "compilers/imcc/imcc.y"
-    { pop_namespace(interp, (yyvsp[(2) - (2)].s)); mem_sys_free((yyvsp[(2) - (2)].s)); ;}
-    break;
-
-  case 178:
 #line 1531 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+    { is_def=1; }
     break;
 
-  case 179:
+  case 177:
 #line 1532 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
@@ -3933,59 +3925,59 @@
                mem_sys_free(l1);
            }
            is_def=0; (yyval.i)=0;
-         ;}
+         }
     break;
 
-  case 180:
+  case 178:
 #line 1548 "compilers/imcc/imcc.y"
     {
            set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - (4)].s)); (yyval.i) = 0;
-         ;}
+         }
     break;
 
-  case 181:
+  case 179:
 #line 1551 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+    { is_def=1; }
     break;
 
-  case 182:
+  case 180:
 #line 1552 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
            is_def=0;
            mem_sys_free((yyvsp[(4) - (6)].s));
-         ;}
+         }
     break;
 
-  case 184:
+  case 182:
 #line 1559 "compilers/imcc/imcc.y"
-    { is_def=1; ;}
+    { is_def=1; }
     break;
 
-  case 185:
+  case 183:
 #line 1560 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
            is_def=0;
            mem_sys_free((yyvsp[(4) - (6)].s));
-         ;}
+         }
     break;
 
-  case 186:
+  case 184:
 #line 1566 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
            IMCC_INFO(interp)->cur_call = NULL;
-         ;}
+         }
     break;
 
-  case 187:
+  case 185:
 #line 1571 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
-  case 188:
+  case 186:
 #line 1573 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
@@ -3997,50 +3989,50 @@
                     IMCC_INFO(interp)->keyvec,
                     1);
            mem_sys_free((yyvsp[(1) - (2)].s));
-         ;}
+         }
     break;
 
-  case 189:
+  case 187:
 #line 1584 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
-  case 190:
+  case 188:
 #line 1585 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
+    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
-  case 191:
+  case 189:
 #line 1586 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; ;}
+    { (yyval.i) = 0; }
     break;
 
-  case 194:
+  case 192:
 #line 1589 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;;}
+    { (yyval.i) = 0;}
     break;
 
-  case 195:
+  case 193:
 #line 1593 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'I'; ;}
+    { (yyval.t) = 'I'; }
     break;
 
-  case 196:
+  case 194:
 #line 1594 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'N'; ;}
+    { (yyval.t) = 'N'; }
     break;
 
-  case 197:
+  case 195:
 #line 1595 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'S'; ;}
+    { (yyval.t) = 'S'; }
     break;
 
-  case 198:
+  case 196:
 #line 1596 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'P'; ;}
+    { (yyval.t) = 'P'; }
     break;
 
-  case 199:
+  case 197:
 #line 1601 "compilers/imcc/imcc.y"
     {
            /* there'd normally be a str_dup() here, but the lexer already
@@ -4050,337 +4042,337 @@
                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
                     "Unknown PMC type '%s'\n", (yyvsp[(1) - (1)].s));
            }
-         ;}
+         }
     break;
 
-  case 200:
+  case 198:
 #line 1614 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  }
     break;
 
-  case 201:
+  case 199:
 #line 1616 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  }
     break;
 
-  case 202:
+  case 200:
 #line 1618 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));  ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));  }
     break;
 
-  case 203:
+  case 201:
 #line 1620 "compilers/imcc/imcc.y"
-    { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); ;}
+    { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
     break;
 
-  case 204:
+  case 202:
 #line 1622 "compilers/imcc/imcc.y"
-    { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); ;}
+    { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 205:
+  case 203:
 #line 1624 "compilers/imcc/imcc.y"
-    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].s), (yyvsp[(6) - (6)].sr), 1); ;}
+    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].s), (yyvsp[(6) - (6)].sr), 1); }
     break;
 
-  case 206:
+  case 204:
 #line 1626 "compilers/imcc/imcc.y"
-    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); ;}
+    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }
     break;
 
-  case 207:
+  case 205:
 #line 1628 "compilers/imcc/imcc.y"
-    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].s), NULL, 1); ;}
+    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].s), NULL, 1); }
     break;
 
-  case 208:
+  case 206:
 #line 1630 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 209:
+  case 207:
 #line 1632 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 210:
+  case 208:
 #line 1634 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 211:
+  case 209:
 #line 1636 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 212:
+  case 210:
 #line 1638 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); }
     break;
 
-  case 213:
+  case 211:
 #line 1642 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
     break;
 
-  case 214:
+  case 212:
 #line 1644 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 215:
+  case 213:
 #line 1646 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); ;}
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); }
     break;
 
-  case 216:
+  case 214:
 #line 1649 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
            (yyval.i) = 0;
-         ;}
+         }
     break;
 
-  case 217:
+  case 215:
 #line 1655 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
-         ;}
+         }
     break;
 
-  case 218:
+  case 216:
 #line 1659 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
-         ;}
+         }
     break;
 
-  case 222:
+  case 220:
 #line 1667 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
-         ;}
+         }
     break;
 
-  case 223:
+  case 221:
 #line 1674 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"not"; ;}
+    { (yyval.s) = (char *)"not"; }
     break;
 
-  case 224:
+  case 222:
 #line 1675 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bnot"; ;}
+    { (yyval.s) = (char *)"bnot"; }
     break;
 
-  case 225:
+  case 223:
 #line 1676 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"neg"; ;}
+    { (yyval.s) = (char *)"neg"; }
     break;
 
-  case 226:
+  case 224:
 #line 1680 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"sub"; ;}
+    { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 227:
+  case 225:
 #line 1681 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"add"; ;}
+    { (yyval.s) = (char *)"add"; }
     break;
 
-  case 228:
+  case 226:
 #line 1682 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mul"; ;}
+    { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 229:
+  case 227:
 #line 1683 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"div"; ;}
+    { (yyval.s) = (char *)"div"; }
     break;
 
-  case 230:
+  case 228:
 #line 1684 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mod"; ;}
+    { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 231:
+  case 229:
 #line 1685 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"fdiv"; ;}
+    { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 232:
+  case 230:
 #line 1686 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"pow"; ;}
+    { (yyval.s) = (char *)"pow"; }
     break;
 
-  case 233:
+  case 231:
 #line 1687 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"concat"; ;}
+    { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 234:
+  case 232:
 #line 1688 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"iseq"; ;}
+    { (yyval.s) = (char *)"iseq"; }
     break;
 
-  case 235:
+  case 233:
 #line 1689 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isne"; ;}
+    { (yyval.s) = (char *)"isne"; }
     break;
 
-  case 236:
+  case 234:
 #line 1690 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isgt"; ;}
+    { (yyval.s) = (char *)"isgt"; }
     break;
 
-  case 237:
+  case 235:
 #line 1691 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isge"; ;}
+    { (yyval.s) = (char *)"isge"; }
     break;
 
-  case 238:
+  case 236:
 #line 1692 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"islt"; ;}
+    { (yyval.s) = (char *)"islt"; }
     break;
 
-  case 239:
+  case 237:
 #line 1693 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isle"; ;}
+    { (yyval.s) = (char *)"isle"; }
     break;
 
-  case 240:
+  case 238:
 #line 1694 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shl"; ;}
+    { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 241:
+  case 239:
 #line 1695 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shr"; ;}
+    { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 242:
+  case 240:
 #line 1696 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"lsr"; ;}
+    { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 243:
+  case 241:
 #line 1697 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"and"; ;}
+    { (yyval.s) = (char *)"and"; }
     break;
 
-  case 244:
+  case 242:
 #line 1698 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"or"; ;}
+    { (yyval.s) = (char *)"or"; }
     break;
 
-  case 245:
+  case 243:
 #line 1699 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"xor"; ;}
+    { (yyval.s) = (char *)"xor"; }
     break;
 
-  case 246:
+  case 244:
 #line 1700 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"band"; ;}
+    { (yyval.s) = (char *)"band"; }
     break;
 
-  case 247:
+  case 245:
 #line 1701 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bor"; ;}
+    { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 248:
+  case 246:
 #line 1702 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bxor"; ;}
+    { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 249:
+  case 247:
 #line 1708 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
            (yyval.i)->type |= ITRESULT;
-         ;}
+         }
     break;
 
-  case 250:
+  case 248:
 #line 1713 "compilers/imcc/imcc.y"
-    {  (yyval.i) = 0; ;}
+    {  (yyval.i) = 0; }
     break;
 
-  case 251:
+  case 249:
 #line 1720 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
-         ;}
+         }
     break;
 
-  case 252:
+  case 250:
 #line 1726 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"add"; ;}
+    { (yyval.s) = (char *)"add"; }
     break;
 
-  case 253:
+  case 251:
 #line 1727 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"sub"; ;}
+    { (yyval.s) = (char *)"sub"; }
     break;
 
-  case 254:
+  case 252:
 #line 1728 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mul"; ;}
+    { (yyval.s) = (char *)"mul"; }
     break;
 
-  case 255:
+  case 253:
 #line 1729 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"div"; ;}
+    { (yyval.s) = (char *)"div"; }
     break;
 
-  case 256:
+  case 254:
 #line 1730 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mod"; ;}
+    { (yyval.s) = (char *)"mod"; }
     break;
 
-  case 257:
+  case 255:
 #line 1731 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"fdiv"; ;}
+    { (yyval.s) = (char *)"fdiv"; }
     break;
 
-  case 258:
+  case 256:
 #line 1732 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"concat"; ;}
+    { (yyval.s) = (char *)"concat"; }
     break;
 
-  case 259:
+  case 257:
 #line 1733 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"band"; ;}
+    { (yyval.s) = (char *)"band"; }
     break;
 
-  case 260:
+  case 258:
 #line 1734 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bor"; ;}
+    { (yyval.s) = (char *)"bor"; }
     break;
 
-  case 261:
+  case 259:
 #line 1735 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bxor"; ;}
+    { (yyval.s) = (char *)"bxor"; }
     break;
 
-  case 262:
+  case 260:
 #line 1736 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shr"; ;}
+    { (yyval.s) = (char *)"shr"; }
     break;
 
-  case 263:
+  case 261:
 #line 1737 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shl"; ;}
+    { (yyval.s) = (char *)"shl"; }
     break;
 
-  case 264:
+  case 262:
 #line 1738 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"lsr"; ;}
+    { (yyval.s) = (char *)"lsr"; }
     break;
 
-  case 265:
+  case 263:
 #line 1744 "compilers/imcc/imcc.y"
     {
         (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
@@ -4388,34 +4380,34 @@
                       IMCC_INFO(interp) -> nargs,
                       IMCC_INFO(interp) -> keyvec, 1);
          mem_sys_free((yyvsp[(3) - (4)].s));
-       ;}
+       }
     break;
 
-  case 266:
+  case 264:
 #line 1754 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 267:
+  case 265:
 #line 1755 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 268:
+  case 266:
 #line 1756 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 269:
+  case 267:
 #line 1758 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "Sub isn't a PMC");
-         ;}
+         }
     break;
 
-  case 270:
+  case 268:
 #line 1764 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
@@ -4427,42 +4419,42 @@
 
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = (yyvsp[(3) - (3)].sr);
-        ;}
+        }
     break;
 
-  case 271:
+  case 269:
 #line 1776 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
             mem_sys_free((yyvsp[(3) - (3)].s));
-         ;}
+         }
     break;
 
-  case 272:
+  case 270:
 #line 1781 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); ;}
+    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
-  case 273:
+  case 271:
 #line 1787 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
-         ;}
+         }
     break;
 
-  case 274:
+  case 272:
 #line 1791 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(2) - (5)].i); ;}
+    { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
-  case 275:
+  case 273:
 #line 1795 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; ;}
+    { (yyval.sr) = 0; }
     break;
 
-  case 276:
+  case 274:
 #line 1797 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4472,10 +4464,10 @@
            }
            else
                add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
-         ;}
+         }
     break;
 
-  case 277:
+  case 275:
 #line 1807 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4485,63 +4477,63 @@
            }
            else
                add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
-         ;}
+         }
     break;
 
-  case 278:
+  case 276:
 #line 1817 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
            mem_sys_free((yyvsp[(3) - (5)].s));
-         ;}
+         }
     break;
 
-  case 279:
+  case 277:
 #line 1823 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
-         ;}
+         }
     break;
 
-  case 280:
+  case 278:
 #line 1831 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); ;}
+    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 281:
+  case 279:
 #line 1835 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+    { (yyval.t) = 0; }
     break;
 
-  case 282:
+  case 280:
 #line 1836 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
+    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
-  case 283:
+  case 281:
 #line 1840 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_FLAT; ;}
+    { (yyval.t) = VT_FLAT; }
     break;
 
-  case 284:
+  case 282:
 #line 1841 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_NAMED; ;}
+    { (yyval.t) = VT_NAMED; }
     break;
 
-  case 285:
+  case 283:
 #line 1844 "compilers/imcc/imcc.y"
-    { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; ;}
+    { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
-  case 286:
+  case 284:
 #line 1848 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); ;}
+    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
-  case 287:
+  case 285:
 #line 1853 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4551,18 +4543,18 @@
            }
            else
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
-         ;}
+         }
     break;
 
-  case 288:
+  case 286:
 #line 1863 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
            mem_sys_free((yyvsp[(3) - (5)].s));
-         ;}
+         }
     break;
 
-  case 289:
+  case 287:
 #line 1868 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4572,319 +4564,319 @@
            }
            else
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
-         ;}
+         }
     break;
 
-  case 290:
+  case 288:
 #line 1878 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
-         ;}
+         }
     break;
 
-  case 291:
+  case 289:
 #line 1882 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; ;}
+    { (yyval.sr) = 0; }
     break;
 
-  case 292:
+  case 290:
 #line 1886 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 293:
+  case 291:
 #line 1887 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
-  case 294:
+  case 292:
 #line 1892 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
-         ;}
+         }
     break;
 
-  case 295:
+  case 293:
 #line 1896 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
-         ;}
+         }
     break;
 
-  case 296:
+  case 294:
 #line 1900 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
-         ;}
+         }
     break;
 
-  case 297:
+  case 295:
 #line 1907 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
-         ;}
+         }
     break;
 
-  case 298:
+  case 296:
 #line 1911 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
-         ;}
+         }
     break;
 
-  case 299:
+  case 297:
 #line 1915 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
-         ;}
+         }
     break;
 
-  case 300:
+  case 298:
 #line 1921 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+    { (yyval.t) = 0; }
     break;
 
-  case 301:
+  case 299:
 #line 1922 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; ;}
+    { (yyval.t) = 0; }
     break;
 
-  case 302:
+  case 300:
 #line 1926 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"eq"; ;}
+    { (yyval.s) = (char *)"eq"; }
     break;
 
-  case 303:
+  case 301:
 #line 1927 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"ne"; ;}
+    { (yyval.s) = (char *)"ne"; }
     break;
 
-  case 304:
+  case 302:
 #line 1928 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"gt"; ;}
+    { (yyval.s) = (char *)"gt"; }
     break;
 
-  case 305:
+  case 303:
 #line 1929 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"ge"; ;}
+    { (yyval.s) = (char *)"ge"; }
     break;
 
-  case 306:
+  case 304:
 #line 1930 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"lt"; ;}
+    { (yyval.s) = (char *)"lt"; }
     break;
 
-  case 307:
+  case 305:
 #line 1931 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"le"; ;}
+    { (yyval.s) = (char *)"le"; }
     break;
 
-  case 310:
+  case 308:
 #line 1940 "compilers/imcc/imcc.y"
-    { (yyval.sr) = NULL; ;}
+    { (yyval.sr) = NULL; }
     break;
 
-  case 311:
+  case 309:
 #line 1941 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(1) - (1)].sr); ;}
+    { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 312:
+  case 310:
 #line 1945 "compilers/imcc/imcc.y"
-    { (yyval.sr) = IMCC_INFO(interp)->regs[0]; ;}
+    { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
-  case 314:
+  case 312:
 #line 1950 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); ;}
+    { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 315:
+  case 313:
 #line 1952 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
            IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs);
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(3) - (4)].sr);
            (yyval.sr) = (yyvsp[(1) - (4)].sr);
-         ;}
+         }
     break;
 
-  case 316:
+  case 314:
 #line 1959 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
-         ;}
+         }
     break;
 
-  case 318:
+  case 316:
 #line 1966 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 319:
+  case 317:
 #line 1967 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 320:
+  case 318:
 #line 1971 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 321:
+  case 319:
 #line 1972 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 322:
+  case 320:
 #line 1976 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 323:
+  case 321:
 #line 1977 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 328:
+  case 326:
 #line 1991 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
            IMCC_INFO(interp)->in_slice = 0;
-         ;}
+         }
     break;
 
-  case 329:
+  case 327:
 #line 1996 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
                           IMCC_INFO(interp)->keys, 0);
-         ;}
+         }
     break;
 
-  case 330:
+  case 328:
 #line 2004 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
            IMCC_INFO(interp)->in_slice = 0;
-         ;}
+         }
     break;
 
-  case 331:
+  case 329:
 #line 2009 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
                           IMCC_INFO(interp)->keys, 1);
-         ;}
+         }
     break;
 
-  case 332:
+  case 330:
 #line 2017 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); ;}
+    { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 333:
+  case 331:
 #line 2019 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
-         ;}
+         }
     break;
 
-  case 334:
+  case 332:
 #line 2023 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->in_slice = 1; ;}
+    { IMCC_INFO(interp)->in_slice = 1; }
     break;
 
-  case 335:
+  case 333:
 #line 2025 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(4) - (4)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
-         ;}
+         }
     break;
 
-  case 336:
+  case 334:
 #line 2033 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->in_slice)
                (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
-         ;}
+         }
     break;
 
-  case 337:
+  case 335:
 #line 2039 "compilers/imcc/imcc.y"
     {
            (yyvsp[(1) - (3)].sr)->type |= VT_START_SLICE;
            (yyvsp[(3) - (3)].sr)->type |= VT_END_SLICE;
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (3)].sr);
            (yyval.sr) = (yyvsp[(3) - (3)].sr);
-         ;}
+         }
     break;
 
-  case 338:
+  case 336:
 #line 2045 "compilers/imcc/imcc.y"
-    { (yyvsp[(2) - (2)].sr)->type |= VT_START_ZERO | VT_END_SLICE; (yyval.sr) = (yyvsp[(2) - (2)].sr); ;}
+    { (yyvsp[(2) - (2)].sr)->type |= VT_START_ZERO | VT_END_SLICE; (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
-  case 339:
+  case 337:
 #line 2046 "compilers/imcc/imcc.y"
-    { (yyvsp[(1) - (2)].sr)->type |= VT_START_SLICE | VT_END_INF; (yyval.sr) = (yyvsp[(1) - (2)].sr); ;}
+    { (yyvsp[(1) - (2)].sr)->type |= VT_START_SLICE | VT_END_INF; (yyval.sr) = (yyvsp[(1) - (2)].sr); }
     break;
 
-  case 340:
+  case 338:
 #line 2050 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); ;}
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
-  case 341:
+  case 339:
 #line 2051 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); ;}
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
-  case 342:
+  case 340:
 #line 2052 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); ;}
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
-  case 343:
+  case 341:
 #line 2053 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); ;}
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
-  case 344:
+  case 342:
 #line 2054 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 345:
+  case 343:
 #line 2058 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 346:
+  case 344:
 #line 2059 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 347:
+  case 345:
 #line 2060 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 348:
+  case 346:
 #line 2061 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 4888 "compilers/imcc/imcparser.c"
+#line 4869 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5098,7 +5090,7 @@
 }
 
 
-#line 2071 "compilers/imcc/imcc.y"
+#line 2067 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */

Modified: branches/calling_conventions/compilers/imcc/imcparser.h
==============================================================================
--- branches/calling_conventions/compilers/imcc/imcparser.h	(original)
+++ branches/calling_conventions/compilers/imcc/imcparser.h	Sat Dec 13 19:46:32 2008
@@ -1,3 +1,14 @@
+/* ex: set ro ft=c:
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ *
+ * This file is generated automatically from 'compilers/imcc/imcc.y'
+ * by tools/build/fixup_gen_file.pl.
+ *
+ * Any changes made here will be lost!
+ *
+ */
+/* HEADERIZER HFILE: none */
+/* HEADERIZER STOP */
 /* A Bison parser, made by GNU Bison 2.3.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
@@ -61,103 +72,102 @@
      NEW = 277,
      ADV_INVOCANT = 278,
      NAMESPACE = 279,
-     ENDNAMESPACE = 280,
-     DOT_METHOD = 281,
-     SUB = 282,
-     SYM = 283,
-     LOCAL = 284,
-     LEXICAL = 285,
-     CONST = 286,
-     INC = 287,
-     DEC = 288,
-     GLOBAL_CONST = 289,
-     PLUS_ASSIGN = 290,
-     MINUS_ASSIGN = 291,
-     MUL_ASSIGN = 292,
-     DIV_ASSIGN = 293,
-     CONCAT_ASSIGN = 294,
-     BAND_ASSIGN = 295,
-     BOR_ASSIGN = 296,
-     BXOR_ASSIGN = 297,
-     FDIV = 298,
-     FDIV_ASSIGN = 299,
-     MOD_ASSIGN = 300,
-     SHR_ASSIGN = 301,
-     SHL_ASSIGN = 302,
-     SHR_U_ASSIGN = 303,
-     SHIFT_LEFT = 304,
-     SHIFT_RIGHT = 305,
-     INTV = 306,
-     FLOATV = 307,
-     STRINGV = 308,
-     PMCV = 309,
-     LOG_XOR = 310,
-     RELOP_EQ = 311,
-     RELOP_NE = 312,
-     RELOP_GT = 313,
-     RELOP_GTE = 314,
-     RELOP_LT = 315,
-     RELOP_LTE = 316,
-     RESULT = 317,
-     RETURN = 318,
-     TAILCALL = 319,
-     YIELDT = 320,
-     GET_RESULTS = 321,
-     POW = 322,
-     SHIFT_RIGHT_U = 323,
-     LOG_AND = 324,
-     LOG_OR = 325,
-     COMMA = 326,
-     ESUB = 327,
-     DOTDOT = 328,
-     PCC_BEGIN = 329,
-     PCC_END = 330,
-     PCC_CALL = 331,
-     PCC_SUB = 332,
-     PCC_BEGIN_RETURN = 333,
-     PCC_END_RETURN = 334,
-     PCC_BEGIN_YIELD = 335,
-     PCC_END_YIELD = 336,
-     NCI_CALL = 337,
-     METH_CALL = 338,
-     INVOCANT = 339,
-     MAIN = 340,
-     LOAD = 341,
-     INIT = 342,
-     IMMEDIATE = 343,
-     POSTCOMP = 344,
-     METHOD = 345,
-     ANON = 346,
-     OUTER = 347,
-     NEED_LEX = 348,
-     MULTI = 349,
-     VTABLE_METHOD = 350,
-     LOADLIB = 351,
-     SUB_INSTANCE_OF = 352,
-     SUBID = 353,
-     NS_ENTRY = 354,
-     UNIQUE_REG = 355,
-     LABEL = 356,
-     EMIT = 357,
-     EOM = 358,
-     IREG = 359,
-     NREG = 360,
-     SREG = 361,
-     PREG = 362,
-     IDENTIFIER = 363,
-     REG = 364,
-     MACRO = 365,
-     ENDM = 366,
-     STRINGC = 367,
-     INTC = 368,
-     FLOATC = 369,
-     USTRINGC = 370,
-     PARROT_OP = 371,
-     VAR = 372,
-     LINECOMMENT = 373,
-     FILECOMMENT = 374,
-     DOT = 375,
-     CONCAT = 376
+     DOT_METHOD = 280,
+     SUB = 281,
+     SYM = 282,
+     LOCAL = 283,
+     LEXICAL = 284,
+     CONST = 285,
+     INC = 286,
+     DEC = 287,
+     GLOBAL_CONST = 288,
+     PLUS_ASSIGN = 289,
+     MINUS_ASSIGN = 290,
+     MUL_ASSIGN = 291,
+     DIV_ASSIGN = 292,
+     CONCAT_ASSIGN = 293,
+     BAND_ASSIGN = 294,
+     BOR_ASSIGN = 295,
+     BXOR_ASSIGN = 296,
+     FDIV = 297,
+     FDIV_ASSIGN = 298,
+     MOD_ASSIGN = 299,
+     SHR_ASSIGN = 300,
+     SHL_ASSIGN = 301,
+     SHR_U_ASSIGN = 302,
+     SHIFT_LEFT = 303,
+     SHIFT_RIGHT = 304,
+     INTV = 305,
+     FLOATV = 306,
+     STRINGV = 307,
+     PMCV = 308,
+     LOG_XOR = 309,
+     RELOP_EQ = 310,
+     RELOP_NE = 311,
+     RELOP_GT = 312,
+     RELOP_GTE = 313,
+     RELOP_LT = 314,
+     RELOP_LTE = 315,
+     RESULT = 316,
+     RETURN = 317,
+     TAILCALL = 318,
+     YIELDT = 319,
+     GET_RESULTS = 320,
+     POW = 321,
+     SHIFT_RIGHT_U = 322,
+     LOG_AND = 323,
+     LOG_OR = 324,
+     COMMA = 325,
+     ESUB = 326,
+     DOTDOT = 327,
+     PCC_BEGIN = 328,
+     PCC_END = 329,
+     PCC_CALL = 330,
+     PCC_SUB = 331,
+     PCC_BEGIN_RETURN = 332,
+     PCC_END_RETURN = 333,
+     PCC_BEGIN_YIELD = 334,
+     PCC_END_YIELD = 335,
+     NCI_CALL = 336,
+     METH_CALL = 337,
+     INVOCANT = 338,
+     MAIN = 339,
+     LOAD = 340,
+     INIT = 341,
+     IMMEDIATE = 342,
+     POSTCOMP = 343,
+     METHOD = 344,
+     ANON = 345,
+     OUTER = 346,
+     NEED_LEX = 347,
+     MULTI = 348,
+     VTABLE_METHOD = 349,
+     LOADLIB = 350,
+     SUB_INSTANCE_OF = 351,
+     SUBID = 352,
+     NS_ENTRY = 353,
+     UNIQUE_REG = 354,
+     LABEL = 355,
+     EMIT = 356,
+     EOM = 357,
+     IREG = 358,
+     NREG = 359,
+     SREG = 360,
+     PREG = 361,
+     IDENTIFIER = 362,
+     REG = 363,
+     MACRO = 364,
+     ENDM = 365,
+     STRINGC = 366,
+     INTC = 367,
+     FLOATC = 368,
+     USTRINGC = 369,
+     PARROT_OP = 370,
+     VAR = 371,
+     LINECOMMENT = 372,
+     FILECOMMENT = 373,
+     DOT = 374,
+     CONCAT = 375
    };
 #endif
 /* Tokens.  */
@@ -183,103 +193,102 @@
 #define NEW 277
 #define ADV_INVOCANT 278
 #define NAMESPACE 279
-#define ENDNAMESPACE 280
-#define DOT_METHOD 281
-#define SUB 282
-#define SYM 283
-#define LOCAL 284
-#define LEXICAL 285
-#define CONST 286
-#define INC 287
-#define DEC 288
-#define GLOBAL_CONST 289
-#define PLUS_ASSIGN 290
-#define MINUS_ASSIGN 291
-#define MUL_ASSIGN 292
-#define DIV_ASSIGN 293
-#define CONCAT_ASSIGN 294
-#define BAND_ASSIGN 295
-#define BOR_ASSIGN 296
-#define BXOR_ASSIGN 297
-#define FDIV 298
-#define FDIV_ASSIGN 299
-#define MOD_ASSIGN 300
-#define SHR_ASSIGN 301
-#define SHL_ASSIGN 302
-#define SHR_U_ASSIGN 303
-#define SHIFT_LEFT 304
-#define SHIFT_RIGHT 305
-#define INTV 306
-#define FLOATV 307
-#define STRINGV 308
-#define PMCV 309
-#define LOG_XOR 310
-#define RELOP_EQ 311
-#define RELOP_NE 312
-#define RELOP_GT 313
-#define RELOP_GTE 314
-#define RELOP_LT 315
-#define RELOP_LTE 316
-#define RESULT 317
-#define RETURN 318
-#define TAILCALL 319
-#define YIELDT 320
-#define GET_RESULTS 321
-#define POW 322
-#define SHIFT_RIGHT_U 323
-#define LOG_AND 324
-#define LOG_OR 325
-#define COMMA 326
-#define ESUB 327
-#define DOTDOT 328
-#define PCC_BEGIN 329
-#define PCC_END 330
-#define PCC_CALL 331
-#define PCC_SUB 332
-#define PCC_BEGIN_RETURN 333
-#define PCC_END_RETURN 334
-#define PCC_BEGIN_YIELD 335
-#define PCC_END_YIELD 336
-#define NCI_CALL 337
-#define METH_CALL 338
-#define INVOCANT 339
-#define MAIN 340
-#define LOAD 341
-#define INIT 342
-#define IMMEDIATE 343
-#define POSTCOMP 344
-#define METHOD 345
-#define ANON 346
-#define OUTER 347
-#define NEED_LEX 348
-#define MULTI 349
-#define VTABLE_METHOD 350
-#define LOADLIB 351
-#define SUB_INSTANCE_OF 352
-#define SUBID 353
-#define NS_ENTRY 354
-#define UNIQUE_REG 355
-#define LABEL 356
-#define EMIT 357
-#define EOM 358
-#define IREG 359
-#define NREG 360
-#define SREG 361
-#define PREG 362
-#define IDENTIFIER 363
-#define REG 364
-#define MACRO 365
-#define ENDM 366
-#define STRINGC 367
-#define INTC 368
-#define FLOATC 369
-#define USTRINGC 370
-#define PARROT_OP 371
-#define VAR 372
-#define LINECOMMENT 373
-#define FILECOMMENT 374
-#define DOT 375
-#define CONCAT 376
+#define DOT_METHOD 280
+#define SUB 281
+#define SYM 282
+#define LOCAL 283
+#define LEXICAL 284
+#define CONST 285
+#define INC 286
+#define DEC 287
+#define GLOBAL_CONST 288
+#define PLUS_ASSIGN 289
+#define MINUS_ASSIGN 290
+#define MUL_ASSIGN 291
+#define DIV_ASSIGN 292
+#define CONCAT_ASSIGN 293
+#define BAND_ASSIGN 294
+#define BOR_ASSIGN 295
+#define BXOR_ASSIGN 296
+#define FDIV 297
+#define FDIV_ASSIGN 298
+#define MOD_ASSIGN 299
+#define SHR_ASSIGN 300
+#define SHL_ASSIGN 301
+#define SHR_U_ASSIGN 302
+#define SHIFT_LEFT 303
+#define SHIFT_RIGHT 304
+#define INTV 305
+#define FLOATV 306
+#define STRINGV 307
+#define PMCV 308
+#define LOG_XOR 309
+#define RELOP_EQ 310
+#define RELOP_NE 311
+#define RELOP_GT 312
+#define RELOP_GTE 313
+#define RELOP_LT 314
+#define RELOP_LTE 315
+#define RESULT 316
+#define RETURN 317
+#define TAILCALL 318
+#define YIELDT 319
+#define GET_RESULTS 320
+#define POW 321
+#define SHIFT_RIGHT_U 322
+#define LOG_AND 323
+#define LOG_OR 324
+#define COMMA 325
+#define ESUB 326
+#define DOTDOT 327
+#define PCC_BEGIN 328
+#define PCC_END 329
+#define PCC_CALL 330
+#define PCC_SUB 331
+#define PCC_BEGIN_RETURN 332
+#define PCC_END_RETURN 333
+#define PCC_BEGIN_YIELD 334
+#define PCC_END_YIELD 335
+#define NCI_CALL 336
+#define METH_CALL 337
+#define INVOCANT 338
+#define MAIN 339
+#define LOAD 340
+#define INIT 341
+#define IMMEDIATE 342
+#define POSTCOMP 343
+#define METHOD 344
+#define ANON 345
+#define OUTER 346
+#define NEED_LEX 347
+#define MULTI 348
+#define VTABLE_METHOD 349
+#define LOADLIB 350
+#define SUB_INSTANCE_OF 351
+#define SUBID 352
+#define NS_ENTRY 353
+#define UNIQUE_REG 354
+#define LABEL 355
+#define EMIT 356
+#define EOM 357
+#define IREG 358
+#define NREG 359
+#define SREG 360
+#define PREG 361
+#define IDENTIFIER 362
+#define REG 363
+#define MACRO 364
+#define ENDM 365
+#define STRINGC 366
+#define INTC 367
+#define FLOATC 368
+#define USTRINGC 369
+#define PARROT_OP 370
+#define VAR 371
+#define LINECOMMENT 372
+#define FILECOMMENT 373
+#define DOT 374
+#define CONCAT 375
 
 
 
@@ -295,7 +304,7 @@
     Instruction *i;
 }
 /* Line 1489 of yacc.c.  */
-#line 299 "compilers/imcc/imcparser.h"
+#line 297 "compilers/imcc/imcparser.h"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1

Modified: branches/calling_conventions/compilers/imcc/main.c
==============================================================================
--- branches/calling_conventions/compilers/imcc/main.c	(original)
+++ branches/calling_conventions/compilers/imcc/main.c	Sat Dec 13 19:46:32 2008
@@ -591,7 +591,6 @@
             case RESULT:        printf(".result "); break;
             case RETURN:        printf(".return "); break;
             case NAMESPACE:     printf(".namespace "); break;
-            case ENDNAMESPACE:  printf(".endnamespace"); break;
             case CONST:         printf(".const "); break;
             case PARAM:         printf(".param "); break;
             /* RT#46147: print out more information about the macro */

Modified: branches/calling_conventions/compilers/imcc/pbc.c
==============================================================================
--- branches/calling_conventions/compilers/imcc/pbc.c	(original)
+++ branches/calling_conventions/compilers/imcc/pbc.c	Sat Dec 13 19:46:32 2008
@@ -113,15 +113,12 @@
 static subs_t * find_global_label(PARROT_INTERP,
     ARGIN(const char *name),
     ARGIN(const subs_t *sym),
-    ARGOUT(int *pc),
-    ARGOUT(int *subid_matched))
+    ARGOUT(int *pc))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
         __attribute__nonnull__(4)
-        __attribute__nonnull__(5)
-        FUNC_MODIFIES(*pc)
-        FUNC_MODIFIES(*subid_matched);
+        FUNC_MODIFIES(*pc);
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
@@ -562,6 +559,9 @@
     if (r->type & VT_ENCODED)
         fixup->type |= VT_ENCODED;
 
+    if (r->usage & U_SUBID_LOOKUP)
+      fixup->usage = U_SUBID_LOOKUP;
+
     /* set_p_pc   = 2  */
     fixup->color  = pc;
     fixup->offset = offset;
@@ -659,7 +659,7 @@
 PARROT_CAN_RETURN_NULL
 static subs_t *
 find_global_label(PARROT_INTERP, ARGIN(const char *name),
-    ARGIN(const subs_t *sym), ARGOUT(int *pc), ARGOUT(int *subid_matched))
+    ARGIN(const subs_t *sym), ARGOUT(int *pc))
 {
     subs_t *s;
 
@@ -668,11 +668,8 @@
     for (s = IMCC_INFO(interp)->globals->cs->first; s; s = s->next) {
         SymReg * const r = s->unit->instructions->symregs[0];
 
-        *subid_matched = r && (r->subid && (strcmp(r->subid, name) == 0));
-
         /* if names and namespaces are matching - ok */
-        if (r && (*subid_matched
-                    || (r->name && (strcmp(r->name, name) == 0)))
+        if (r && r->name && (strcmp(r->name, name) == 0)
                 && ((sym->unit->_namespace && s->unit->_namespace
                         && (strcmp(sym->unit->_namespace->name, s->unit->_namespace->name) == 0))
                     || (!sym->unit->_namespace && !s->unit->_namespace)))
@@ -680,10 +677,37 @@
 
         *pc += s->size;
     }
-
     return NULL;
 }
 
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static subs_t *
+find_sub_by_subid(PARROT_INTERP, ARGIN(const char *lookup),
+    ARGIN(const subs_t *sym), ARGOUT(int *pc))
+{
+    subs_t *s;
+
+    *pc = 0;
+
+    for (s = IMCC_INFO(interp)->globals->cs->first; s; s = s->next) {
+        SymReg * const r = s->unit->instructions->symregs[0];
+
+        /* if subid matches - ok */
+        if (r && (r->subid && (strcmp(r->subid, lookup) == 0)))
+            return s;
+
+        /* if names and namespaces are matching - ok */
+        if (r && r->name && (strcmp(r->name, lookup) == 0)
+                && ((sym->unit->_namespace && s->unit->_namespace
+                        && (strcmp(sym->unit->_namespace->name, s->unit->_namespace->name) == 0))
+                    || (!sym->unit->_namespace && !s->unit->_namespace)))
+            return s;
+
+        *pc += s->size;
+    }
+    return NULL;
+}
 
 /*
 
@@ -711,10 +735,17 @@
             for (fixup = hsh->data[i]; fixup; fixup = fixup->next) {
                 int pc, pmc_const;
                 int addr = jumppc + fixup->color;
-                int subid_matched = 0;
+                int subid_lookup = 0;
+                subs_t *s1;
 
                 /* check in matching namespace */
-                subs_t *s1 = find_global_label(interp, fixup->name, s, &pc, &subid_matched);
+                if (fixup->usage & U_SUBID_LOOKUP) {
+                    subid_lookup = 1;
+                    /* s1 = find_sub_by_subid(interp, fixup->name, &pc); */
+                    s1 = find_sub_by_subid(interp, fixup->name, s, &pc);
+                }
+                else
+                    s1 = find_global_label(interp, fixup->name, s, &pc);
 
                 /*
                  * if failed change opcode:
@@ -738,7 +769,7 @@
                         PARROT_ASSERT(pcc_sub);
 
                         /* if the sub is multi, don't insert constant */
-                        if (pcc_sub->nmulti && !subid_matched)
+                        if (pcc_sub->nmulti && !subid_lookup)
                             s1 = NULL;
                     }
                 }

Modified: branches/calling_conventions/compilers/imcc/pcc.c
==============================================================================
--- branches/calling_conventions/compilers/imcc/pcc.c	(original)
+++ branches/calling_conventions/compilers/imcc/pcc.c	Sat Dec 13 19:46:32 2008
@@ -469,7 +469,7 @@
     move_info_t      *info    = (move_info_t *)vinfo;
     SymReg           *src     = NULL;
     SymReg           *dest    = NULL;
-    SymReg           *regs[2];
+    SymReg           *regs[3];
 
     if (d == 255) {
         int t;
@@ -656,7 +656,7 @@
 insert_tail_call(PARROT_INTERP, ARGIN(IMC_Unit *unit), ARGMOD(Instruction *ins),
         ARGMOD(SymReg *sub), ARGIN(SymReg *meth))
 {
-    SymReg *regs[2];
+    SymReg *regs[3];
 
     if (meth) {
         regs[0] = sub->pcc_sub->object;

Modified: branches/calling_conventions/compilers/imcc/symreg.c
==============================================================================
--- branches/calling_conventions/compilers/imcc/symreg.c	(original)
+++ branches/calling_conventions/compilers/imcc/symreg.c	Sat Dec 13 19:46:32 2008
@@ -611,7 +611,7 @@
         ARGMOD(SymReg *rhs))
 {
     /* XXX This always returns NULL.  Probably shouldn't return anything then. */
-    SymReg *r[2];
+    SymReg *r[3];
     char   *name;
     int     len;
 

Modified: branches/calling_conventions/compilers/imcc/symreg.h
==============================================================================
--- branches/calling_conventions/compilers/imcc/symreg.h	(original)
+++ branches/calling_conventions/compilers/imcc/symreg.h	Sat Dec 13 19:46:32 2008
@@ -60,7 +60,8 @@
     U_GLOBAL        = 1 << 3,       /* symbol is global (fixup) */
     U_LEXICAL       = 1 << 4,       /* symbol is lexical */
     U_FIXUP         = 1 << 5,       /* maybe not global, force fixup */
-    U_NON_VOLATILE  = 1 << 6        /* needs preserving */
+    U_NON_VOLATILE  = 1 << 6,       /* needs preserving */
+    U_SUBID_LOOKUP  = 1 << 7        /* .const 'Sub' lookup is done by subid */
 };
 
 typedef struct _SymReg {

Modified: branches/calling_conventions/compilers/pct/src/PAST/Compiler.pir
==============================================================================
--- branches/calling_conventions/compilers/pct/src/PAST/Compiler.pir	(original)
+++ branches/calling_conventions/compilers/pct/src/PAST/Compiler.pir	Sat Dec 13 19:46:32 2008
@@ -566,7 +566,7 @@
     ops = self.'post_children'(node, 'signature'=>$S0)
     $P0 = ops[-1]
     ops.'result'($P0)
-    .local pmc eh, iter
+    .local pmc eh
     eh = node.'handlers'()
     unless eh, no_eh
     ops = self.'wrap_handlers'(ops,eh,'rtype'=>rtype)
@@ -732,22 +732,23 @@
 
     ##  pir-encode name and namespace
     .local string blockreg, blockref
-    name = self.'escape'(name)
     blockreg = self.'uniquereg'('P')
     if ns goto block_ns
     blockref = concat ".const 'Sub' ", blockreg
     concat blockref, ' = '
-    concat blockref, name
+    $P0 = bpost.'subid'()
+    $S0 = self.'escape'($P0)
+    concat blockref, $S0
     goto have_blockref
   block_ns:
     $P0 = get_global '%!codestring'
-    ns = $P0.'key'(ns)
     blockref = concat 'get_hll_global ', blockreg
+    $S0 = $P0.'key'(ns)
     concat blockref, ', '
-    $S0 = ns
     concat blockref, $S0
+    $S0 = self.'escape'(name)
     concat blockref, ', '
-    concat blockref, name
+    concat blockref, $S0
   have_blockref:
 
     ##  determine the outer POST::Sub for the new one
@@ -825,12 +826,22 @@
     $S0 = repeat 'v', $I0
     concat $S0, '*'
     ##  convert children to post
-    .local pmc ops
+    .local pmc ops, retval
     ops = self.'post_children'(node, 'signature'=>$S0)
-    bpost.'push'(ops)
+    ##  wrap the child with appropriate exception handlers, if any
+    .local pmc eh
+    eh = node.'handlers'()
+    unless eh, no_eh
+    $S0 = options['rtype']
+    retval = ops[-1]
+    ops = self.'wrap_handlers'(ops,eh,'rtype'=>$S0)
+    goto had_eh
+  no_eh:
     ##  result of last child is return from block
-    $P0 = ops[-1]
-    bpost.'push_pirop'('return', $P0)
+    retval = ops[-1]
+  had_eh:
+    bpost.'push'(ops)
+    bpost.'push_pirop'('return', retval)
 
     unless ctrlpast goto sub_done
     bpost.'push'(ctrllabel)
@@ -868,9 +879,9 @@
     .local pmc lisub
     $P0 = get_hll_global ['POST'], 'Sub'
     lisub = $P0.'new'('outer'=>bpost, 'pirflags'=>':load :init')
+    lisub.'push_pirop'(blockref)
     lisub.'push_pirop'('.local pmc', 'block')
-    lisub.'push_pirop'('interpinfo', '$P20', .INTERPINFO_CURRENT_SUB)
-    lisub.'push_pirop'('callmethod', '"get_outer"', '$P20', 'result'=>'block')
+    lisub.'push_pirop'('set', 'block', blockreg)
     .local pmc lipast, lipost
     lipast = node.'loadinit'()
     lipost = self.'as_post'(lipast, 'rtype'=>'v')

Modified: branches/calling_conventions/compilers/pct/src/PAST/Node.pir
==============================================================================
--- branches/calling_conventions/compilers/pct/src/PAST/Node.pir	(original)
+++ branches/calling_conventions/compilers/pct/src/PAST/Node.pir	Sat Dec 13 19:46:32 2008
@@ -105,7 +105,7 @@
 .sub 'handlers' :method
     .param pmc value           :optional
     .param int has_value       :opt_flag
-    .tailcall self.'attr'('handle_types', value, has_value)
+    .tailcall self.'attr'('handlers', value, has_value)
 .end
 
 

Modified: branches/calling_conventions/compilers/pct/src/PCT/Node.pir
==============================================================================
--- branches/calling_conventions/compilers/pct/src/PCT/Node.pir	(original)
+++ branches/calling_conventions/compilers/pct/src/PCT/Node.pir	Sat Dec 13 19:46:32 2008
@@ -97,38 +97,6 @@
 .end
 
 
-=item clone
-
-Create and returns a clone of a PAST node.
-
-=cut
-
-.sub 'clone' :vtable :method
-    .local pmc res
-    $S0 = typeof self
-    $P0 = split ';', $S0
-    res = new $P0
-    .local pmc iter
-    iter = self.'iterator'()
-  iter_child_loop:
-    unless iter goto iter_child_end
-    $P0 = shift iter
-    $P1 = clone $P0
-    res.'push'($P1)
-    goto iter_child_loop
-  iter_child_end:
-    iter = new 'Iterator', self
-  iter_attr_loop:
-    unless iter goto iter_attr_end
-    $S0 = shift iter
-    $P0 = iter[$S0]
-    res[$S0] = $P0
-    goto iter_attr_loop
-  iter_attr_end:
-    .return (res)
-.end
-
-
 =item unshift(child)
 
 Add C<child> to the beginning of the invocant's list of children.

Modified: branches/calling_conventions/compilers/pct/src/POST/Compiler.pir
==============================================================================
--- branches/calling_conventions/compilers/pct/src/POST/Compiler.pir	(original)
+++ branches/calling_conventions/compilers/pct/src/POST/Compiler.pir	Sat Dec 13 19:46:32 2008
@@ -211,8 +211,7 @@
     $I0 = index pirflags, ':subid('
     if $I0 >= 0 goto pirflags_subid_done
     .local string subid
-    subid = code.'unique'()
-    node.'subid'(subid)
+    subid = node.'subid'()
     pirflags = concat pirflags, ' :subid("'
     pirflags .= subid
     pirflags .= '")'
@@ -299,6 +298,8 @@
 
     options['target'] = 'pir'
     options['grammar'] = ''
+    $P0 = node.'subid'()
+    options['subid'] = $P0
     .local pmc source, compiler, pir
     source = node[0]
     $S0 = node.'compiler'()

Modified: branches/calling_conventions/compilers/pct/src/POST/Node.pir
==============================================================================
--- branches/calling_conventions/compilers/pct/src/POST/Node.pir	(original)
+++ branches/calling_conventions/compilers/pct/src/POST/Node.pir	Sat Dec 13 19:46:32 2008
@@ -197,6 +197,12 @@
 .sub 'subid' :method
     .param pmc value           :optional
     .param int has_value       :opt_flag
+    if has_value goto getset_value
+    $I0 = exists self['subid']
+    if $I0 goto getset_value
+    value = self.'unique'()
+    has_value = 1
+  getset_value:
     .tailcall self.'attr'('subid', value, has_value)
 .end
 

Modified: branches/calling_conventions/compilers/pge/PGE/Exp.pir
==============================================================================
--- branches/calling_conventions/compilers/pge/PGE/Exp.pir	(original)
+++ branches/calling_conventions/compilers/pge/PGE/Exp.pir	Sat Dec 13 19:46:32 2008
@@ -128,6 +128,15 @@
     name = code.'escape'(name)
     namecorou = code.'escape'(namecorou)
 
+    .local string subid
+    subid = ''
+    $P0 = adverbs['subid']
+    if null $P0 goto have_subid
+    $S0 = code.'escape'($P0)
+    subid = concat ':subid(', $S0
+    concat subid, ')'
+  have_subid:
+
     ##   Perform reduction/optimization on the
     ##   expression tree before generating PIR.
     .local pmc exp
@@ -151,17 +160,17 @@
     ##   Generate the initial PIR code for a backtracking (uncut) rule.
     .local string returnop
     returnop = '.yield'
-    code.'emit'(<<"        CODE", name, namecorou, .INTERPINFO_CURRENT_SUB)
-      .sub %0 :method
+    code.'emit'(<<"        CODE", name, subid, namecorou, .INTERPINFO_CURRENT_SUB)
+      .sub %0 :method %1
           .param pmc adverbs   :slurpy :named
           .local pmc mob
-          .const 'Sub' corou = %1
+          .const 'Sub' corou = %2
           $P0 = corou
           $P0 = clone $P0
           mob = $P0(self, adverbs)
           .return (mob)
       .end
-      .sub %1
+      .sub '' :subid(%2)
           .param pmc mob       :unique_reg
           .param pmc adverbs   :unique_reg
           .local string target :unique_reg
@@ -169,7 +178,7 @@
           .local int cpos, iscont :unique_reg
           $P0 = get_hll_global ['PGE'], 'Match'
           (mob, cpos, target, mfrom, mpos, iscont) = $P0.'new'(mob, adverbs :flat :named)
-          $P0 = interpinfo %2
+          $P0 = interpinfo %3
           setattribute mob, '&!corou', $P0
           .local int lastpos
           lastpos = length target
@@ -180,8 +189,8 @@
   code_cutrule:
     ##   Initial code for a rule that cannot be backtracked into.
     returnop = '.return'
-    code.'emit'(<<"        CODE", name)
-      .sub %0 :method
+    code.'emit'(<<"        CODE", name, subid)
+      .sub %0 :method %1
           .param pmc adverbs      :unique_reg :slurpy :named
           .local pmc mob
           .local string target    :unique_reg

Modified: branches/calling_conventions/compilers/pirc/new/main.c
==============================================================================
--- branches/calling_conventions/compilers/pirc/new/main.c	(original)
+++ branches/calling_conventions/compilers/pirc/new/main.c	Sat Dec 13 19:46:32 2008
@@ -181,10 +181,6 @@
             lexer->outfile = stdout;
         }
 
-        /* if register allocation was requested, do that now */
-        if (TEST_FLAG(lexer->flags, LEXER_FLAG_REGALLOC))
-            linear_scan_register_allocation(lexer->lsr);
-
         if (TEST_FLAG(lexer->flags, LEXER_FLAG_NOOUTPUT)) /* handy for testing the compiler */
             fprintf(stdout, "ok\n");
         else if (TEST_FLAG(lexer->flags, LEXER_FLAG_PREPROCESS))

Modified: branches/calling_conventions/compilers/pirc/new/pircompiler.c
==============================================================================
--- branches/calling_conventions/compilers/pirc/new/pircompiler.c	(original)
+++ branches/calling_conventions/compilers/pirc/new/pircompiler.c	Sat Dec 13 19:46:32 2008
@@ -182,7 +182,7 @@
     lexer->macro_size = INIT_MACRO_SIZE;
 
     /* create a new linear scan register allocator */
-    lexer->lsr        = new_linear_scan_register_allocator();
+    lexer->lsr        = new_linear_scan_register_allocator(lexer);
 
     return lexer;
 }

Modified: branches/calling_conventions/compilers/pirc/new/pircompunit.c
==============================================================================
--- branches/calling_conventions/compilers/pirc/new/pircompunit.c	(original)
+++ branches/calling_conventions/compilers/pirc/new/pircompunit.c	Sat Dec 13 19:46:32 2008
@@ -2388,6 +2388,10 @@
 
     /* store end offset in bytecode of this subroutine */
     CURRENT_SUB(lexer)->endoffset = lexer->codesize;
+
+     /* if register allocation was requested, do that now */
+    if (TEST_FLAG(lexer->flags, LEXER_FLAG_REGALLOC))
+        linear_scan_register_allocation(lexer->lsr);
 }
 
 

Modified: branches/calling_conventions/compilers/pirc/new/pirregalloc.c
==============================================================================
--- branches/calling_conventions/compilers/pirc/new/pirregalloc.c	(original)
+++ branches/calling_conventions/compilers/pirc/new/pirregalloc.c	Sat Dec 13 19:46:32 2008
@@ -37,7 +37,7 @@
 
 */
 lsr_allocator *
-new_linear_scan_register_allocator(void) {
+new_linear_scan_register_allocator(struct lexer_state *lexer) {
     lsr_allocator *lsr = (lsr_allocator *)mem_sys_allocate_zeroed(sizeof (lsr_allocator));
     int i;
 
@@ -51,6 +51,8 @@
     for (i = 0; i < 4; ++i)
         lsr->r[i] = 1;
 
+    lsr->lexer = lexer;
+
     return lsr;
 }
 
@@ -428,9 +430,11 @@
     live_interval * i;
     pir_type type = 0; /* types run from 0 to 4; see pircompunit.h */
 
-
     for (type = 0; type < 4; ++type) { /* handle each of the 4 parrot types separately. */
 
+        /* intialize active intervals list to NULL */
+        lsr->active[type] = NULL;
+
         /* fprintf(stderr, "Lin.scan.reg.alloc.: %u variables to be mapped\n",
            lengthi(lsr->intervals[type]));
         */
@@ -449,7 +453,11 @@
             add_interval_to_active(lsr, i, type);
         }
 
+        /* clear list of intervals */
+        lsr->intervals[type] = NULL;
     }
+
+
 }
 
 

Modified: branches/calling_conventions/compilers/pirc/new/pirregalloc.h
==============================================================================
--- branches/calling_conventions/compilers/pirc/new/pirregalloc.h	(original)
+++ branches/calling_conventions/compilers/pirc/new/pirregalloc.h	Sat Dec 13 19:46:32 2008
@@ -56,7 +56,8 @@
 
 } free_reg;
 
-
+/* forward declaration */
+struct lexer_state;
 
 typedef struct linear_scan_register_allocator {
     unsigned       r[4];
@@ -70,9 +71,11 @@
     /* list of free_reg objects that we can re-use, to save memory allocations. */
     free_reg      *cached_regs;
 
+    struct lexer_state *lexer;
+
 } lsr_allocator;
 
-lsr_allocator *new_linear_scan_register_allocator(void);
+lsr_allocator *new_linear_scan_register_allocator(struct lexer_state *lexer);
 
 void destroy_linear_scan_regiser_allocator(lsr_allocator *lsr);
 

Modified: branches/calling_conventions/docs/book/ch12_opcodes.pod
==============================================================================
--- branches/calling_conventions/docs/book/ch12_opcodes.pod	(original)
+++ branches/calling_conventions/docs/book/ch12_opcodes.pod	Sat Dec 13 19:46:32 2008
@@ -5,7 +5,7 @@
 Z<CHP-11>
 
 The smallest executable component is not the compilation unit or even
-the subroutine, but is in fact the opcode. Opcodes in PASM, like opcodes
+the subroutine, but is actually the opcode. Opcodes in PASM, like opcodes
 in other assembly languages, are individual instructions that implement
 low-level operations in Parrot N<In the world of microprocessors, the
 word "opcode" typically refers to the numeric identifier for each
@@ -32,10 +32,13 @@
 typical software maintenance and analysis tasks. We'll talk about all
 of these throughout the chapter.
 
-Different runcores, because of the way they are structured, require the
-opcodes to be compiled into different forms. Because of this,
-understanding opcodes first requires an understanding of the Parrot
-runcores.
+Runcores must pass execution to each opcode in the incoming bytecode
+stream. This is called I<dispatching> the opcodes. Because the different
+runcores are structured in different ways, the opcodes themselves must
+be formated differently. The opcode compiler compiles opcodes into a
+number of separate formats, depending on what runcores are included in
+the compiled Parrot. Because of this, understanding opcodes first
+requires an understanding of the Parrot runcores.
 
 =head3 Types of Runcores
 
@@ -56,14 +59,55 @@
 properly in bounds, and not somewhere random in memory. Because of this
 modular approach where opcodes are treated as separate executable
 entities many other runcores, especially diagnostic and maintenance
-cores are based on this design.
+cores are based on this design. The program counter C<pc> is the current
+index into the bytecode stream. Here is a pseudocode representation for
+how the slow core works:
+
+  while(1) {
+      pc = NEXT_OPCODE;
+	  if(pc < LOW_BOUND || pc > HIGH_BOUND)
+	      throw exception;
+	  DISPATCH_OPCODE(pc);
+	  UPDATE_INTERPRETER();
+  }
 
 =item* Fast Core
 
 The fast core is a bare-bones core that doesn't do any of the
 bounds-checking or context updating that the slow core does. The fast
 core is the way Parrot should run, and is used to find and debug places
-where execution strays outside of it's normal bounds.
+where execution strays outside of it's normal bounds. In pseudocode, the
+fast core is very much like the slow core except it doesn't do the bounds
+checking between each instruction, and doesn't update the interpreter's
+current context for each dispatch.
+
+  while(1) {
+      pc = NEXT_OPCODE;
+	  DISPATCH_OPCODE(pc);
+  }
+
+=item* Switch Core
+
+As it's name implies, the switch core uses a gigantic C C<switch / case>
+structure to execute opcodes. Here's a brief example of how this
+architecture works:
+
+  for( ; ; current_opcode++) {
+      switch(*current_opcode) {
+	      case opcode_1:
+		      ...
+	      case opcode_2:
+		      ...
+		  case opcode_3:
+		      ...
+	  }
+  }
+
+This is quite a fast architecture for dispatching opcodes because it all
+happens within a single function. The only operations performed between
+opcodes is a jump back to the top of the loop, incrementing the opcode
+pointer, dereferencing the opcode pointer, and then a jump to the C<case>
+statement for the next opcode.
 
 =item* Computed Goto Core
 
@@ -78,11 +122,80 @@
 
 As was mentioned earlier, not all compilers support computed goto, which
 means that this core will not be built on platforms that don't support it.
+However, it's still an interesting topic to study so we will look at it
+briefly here. For compilers that support it, computed goto labels are
+C<void **> values. In the computed goto core, all the labels represent
+different opcodes, so they are stored in an array:
+
+  void *my_labels[] = {
+      &&label1,
+	  &&label2,
+	  &&label3
+  };
+  
+  label1:
+      ...
+  label2:
+      ...
+  label3:
+      ...
+
+Jumping to one of these labels is done with a command like this:
+
+  goto *my_labels[opcode_number];
+
+Actually, opcodes are pointed to by an C<opcode_t *> pointer, and all
+opcodes are stored sequentially in memory, so the actual jump in the
+computed goto core must increment the pointer and then jump to the new
+version. In C it looks something like this:
+
+  goto *my_labels[*(current_opcode += 1)];
+
+Each opcode is an index into the array of labels, and at the end of each
+opcode an instruction like this is performed to move to the next opcode
+in series, or else some kind of control flow occurs that moves it to a
+non-sequential location:
+
+  goto *my_lables[*(current_opcode = destination)];
+
+These are simplifications on what really happens in this core, because
+the actual code has been optimized quite a bit from what has been
+presented here. However, as we shall see with the precomputed goto core,
+it isn't optimized as aggressively as is possible.
 
 =item* Precomputed Goto Core
 
-Thought the Computed Goto core was hard enough to understand? Precomputed
-goto takes the concept a little further.
+The precomputed goto core is an amazingly optimized fast core that uses
+the same computed goto feature, but performs the array dereferencing
+before the core even starts. In the computed goto core, you have this
+operation to move to the next opcode:
+
+  goto *my_labels[*(current_opcode += 1)];
+
+This single line of code is deceptively complex. A number of machine code
+operations must be performed to complete this step: The value of
+C<current_opcode> must be incremented to the next value, that value must
+be dereferenced to find the opcode value. In C, arrays are pointers, so
+C<my_labels> gets dereferenced and an offset is taken according to find
+the stored label reference. That label reference is then dereferenced, and
+the jump is performed.
+
+That's a lot of steps to execute before we can jump to the next opcode.
+Now, what, if each opcode value was replaced with the value of the jump
+label beforehand? If C<current_opcode> points to a label referenced
+already, we don't need the array at all. We can replace that entire mess
+above with this line:
+
+  goto **(current_opcode += 1);
+
+That's far fewer machine instructions to execute before we can move to the
+next opcode, which means faster throughput. Remember that whatever dispatch
+mechanism is used will be called after every singly opcode, and some large
+programs may have millions of opcodes! Every single machine instruction
+that can be cut out of the dispatch mechanism could increase the execution
+speed of Parrot in a significant and noticable way. The precomputed goto
+core, while not available on all compilers, takes the idea of optimization
+to the extreme.
 
 =item* Tracing Core
 
@@ -90,7 +203,18 @@
 
 The profiling core analyzes the performance of Parrot, and helps to
 determine where bottlenecks and trouble spots are in the programs that
-run on top of Parrot.
+run on top of Parrot. When Parrot calls a PIR subroutine it sets up the
+environment, allocates storage for the passed parameters and the return
+values, passes the parameters, and calls a new runcore to execute it. To
+calculate the amount of time that each subroutine takes, we need to
+measure the amount of time spent in each runcore from the time the core
+begins to the time the core executes. The profiling core does exactly
+this, acting very similarly to a slow core but also measuring the amount
+of time it takes for the core to complete. The tracing core actually
+keeps track of a few additional values, including the number of GC cycles
+run while in the subroutine, the number of each opcode called and the
+number of calls to each subroutine made. All this information is helpfully
+printed to the STDERR output for later analysis.
 
 =item* GC Debug Core
 

Modified: branches/calling_conventions/docs/pdds/draft/pdd14_numbers.pod
==============================================================================
--- branches/calling_conventions/docs/pdds/draft/pdd14_numbers.pod	(original)
+++ branches/calling_conventions/docs/pdds/draft/pdd14_numbers.pod	Sat Dec 13 19:46:32 2008
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2004, The Perl Foundation.
+# Copyright (C) 2001-2008, The Perl Foundation.
 # $Id$
 
 =head1 NAME
@@ -34,7 +34,6 @@
 integer may be autoboxed as an C<Integer> PMC, or as an HLL type mapped to
 C<Integer>.
 
-
 =head2 Floating-point data types
 
 Parrot provides a native floating-point data type, generally known as a "Num".
@@ -50,13 +49,12 @@
 method call, a native float may be autoboxed as a C<Float> PMC, or as an HLL
 type mapped to C<Float>.
 
-
 =head2 Integer PMC
 
 The C<Integer> PMC is a high-level integer type, providing the features of a
 integer data type appropriate for use in a high-level language. Some languages
-may be able to use Parrot's C<Integer> directly as their integer data type,
-others may subclass C<Integer> to add their own functionality, and others may
+may be able to use Parrot's C<Integer> directly as their integer data type.
+Others may subclass C<Integer> to add their own functionality, and others may
 implement their own high-level integer data type.
 
 The C<Integer> PMC has a single attribute, the integer value.
@@ -65,20 +63,20 @@
 
 =over 4
 
-=item init()
+=item C<init()>
 
-Initialize the C<Integer> to 0.
+Initializes the C<Integer> to 0.
 
-=item set_pmc(PMC *value) and set_integer_same(PMC* value)
+=item C<set_pmc(PMC *value)> and C<set_integer_same(PMC *value)>
 
-Set the C<Integer> to the integer value of the PMC argument.
+Sets the C<Integer> to the integer value of the PMC argument.
 
-=item set_integer_native(INTVAL value)
+=item C<set_integer_native(INTVAL value)>
 
 Set the C<Integer> to the passed-in integer value.
 
-=item set_number_native(FLOATVAL value), set_bool(INTVAL value),
-      set_bigint_int(INTVAL value), set_string_native(STRING *value)
+=item C<set_number_native(FLOATVAL value)>, C<set_bool(INTVAL value)>,
+      C<set_bigint_int(INTVAL value)>, C<set_string_native(STRING *value)>
 
 Morphs the C<Integer> PMC to a C<Float>, C<Boolean>, C<BigInt>, or C<String>
 PMC, and sets the value from the passed in value.
@@ -86,99 +84,104 @@
 {{NOTE: the morphing behavior is currently under consideration and may be
 rejected.}}
 
-=item get_integer()
+=item C<get_integer()>
 
 Retrieves the integer value of the C<Integer>.
 
-=item get_bool()
+=item C<get_bool()>
 
 Returns the boolean value of the C<Integer> (false if 0, true otherwise).
 
-=item get_number()
+=item C<get_number()>
 
 Returns the integer value of the C<Integer> as a floating-point number.
 
-=item get_bignum()
+=item C<get_bignum()>
 
 Returns the integer value of the C<Integer> in a new C<BigInt> PMC.
 
-=item get_string() and get_repr()
+{{ NOTE: this vtable entry may be deprecated }}
+
+=item C<get_string()> and C<get_repr()>
 
 Returns the integer value of the C<Integer> as a string.
 
-=item [add|subtract|multiply|divide|floor_divide|modulus|pow]_int(INTVAL b,
-      PMC *dest)
+=item C<[add|subtract|multiply|divide|floor_divide|modulus|pow]_int(INTVAL b,
+      PMC *dest)>
 
-Add/subtract/multiply/divide/modulus/exponent an integer value with the
-C<Integer> PMC, and return the result as a new PMC (the C<dest> parameter is
-unused). Overflow of the native integer storage auto-promotes the result PMC
-to a C<BigInt>.
-
-=item i_[add|subtract|multiply|divide|floor_divide|modulus|pow]_int(INTVAL b)
-
-Add/subtract/multiply/divide/modulus/exponent an integer value with the
-C<Integer> PMC, and set the C<Integer> to the resulting value. Overflow of the
-native integer storage auto-promotes the C<Integer> to a C<BigInt>.
+Adds/subtracts/multiplies/divides/moduluses/exponents an integer value with
+the C<Integer> PMC, and returns the result as a new PMC.  (The C<dest>
+parameter is unused). Overflow of the native integer storage auto-promotes the
+result PMC to a C<BigInt>.  Note that these are multidispatched.
+
+=item C<i_[add|subtract|multiply|divide|floor_divide|modulus|pow]_int(INTVAL
+        b)>
+
+Adds/subtracts/multiplies/divides/moduluses/exponents an integer value with
+the C<Integer> PMC, and sets the C<Integer> to the resulting value. Overflow
+of the native integer storage auto-promotes the C<Integer> to a C<BigInt>.
+Note that these are multidispatched.
 
 {{NOTE: there is some discussion of having this promotion of storage happen
 purely internally (perhaps by swapping vtables), rather than converting to a
 different PMC type.}}
 
-=item
-   i_[add|subtract|multiply|divide|floor_divide|modulus|pow]_float(INTVAL b)
+=item C<i_[add|subtract|multiply|divide|floor_divide|modulus|pow]_float(INTVAL
+       b)>
 
-Add/subtract/multiply/divide/modulus/exponent an integer value with the
-C<Integer> PMC, and set the C<Integer> to the resulting value, morphing it
-to a C<Float>.
+Add/subtract/multiply/divide/modulus/exponent an integer value with the the
+C<Integer> PMC, and set the C<Integer> to the resulting value, morphing it to
+a C<Float>.  Note that these are multidispatched.
 
-=item increment()
+=item C<increment()>
 
-Add 1 to the value of the integer.
+Adds 1 to the value of the integer.  This may autopromote the PMC to a
+C<BigInt>.
 
-=item decrement()
+=item C<decrement()>
 
-Subtract 1 from the value of the integer.
+Subtracts 1 from the value of the integer.  This may autopromote the PMC to a
+C<BigInt>.
 
-=item absolute()
+=item C<absolute()>
 
-Return an C<Integer> PMC set to the absolute value of the current C<Integer>.
+Returns an C<Integer> PMC set to the absolute value of the current C<Integer>.
 
-=item i_absolute()
+=item C<i_absolute()>
 
-Set the C<Integer> to the absolute value of itself.
+Sets the C<Integer> to the absolute value of itself.
 
-=item freeze()
+=item C<freeze()>
 
-Freeze the C<Integer> PMC for storage.
+Freezes the C<Integer> PMC for storage.
 
-=item thaw()
+=item C<thaw()>
 
-Thaw the C<Integer> PMC from storage.
+Thaws the C<Integer> PMC from storage.
 
 
 =back
 
 =head3 Integer Multis
 
-Many of the math vtable functions are defined instead as multiple dispatch
-functions.
+Many of the math vtable functions are defined as multiple dispatch functions.
 
 =over 4
 
-=item [add|subtract|multiply|divide|floor_divide|modulus|pow](PMC *value,
-      PMC *dest)
+=item C<[add|subtract|multiply|divide|floor_divide|modulus|pow](PMC *value,
+      PMC *dest)>
 
-Perform the addition/subtraction/multiplication/division/modulus/exponent
-operation, and return a new PMC containing the resulting value. Multiple
+Performs the addition/subtraction/multiplication/division/modulus/exponent
+operation, and returns a new PMC containing the resulting value. Multiple
 dispatch variants are defined for C<Integer>, C<Complex>, C<BigInt>,
 C<String>, and C<DEFAULT>.
 
 Overflow of the native integer storage auto-promotes the result PMC to a
 C<BigInt>.
 
-=item i_[add|subtract|multiply|divide|floor_divide|modulus|pow](PMC *value)
+=item C<i_[add|subtract|multiply|divide|floor_divide|modulus|pow](PMC *value)>
 
-Perform the addition/subtraction/multiplication/division/modulus/exponent
+Performs the addition/subtraction/multiplication/division/modulus/exponent
 operation, morphing the C<Integer> to the passed in type, and setting it to
 the result. Multiple dispatch variants are defined for C<Integer>, C<Complex>,
 C<BigInt>, and C<DEFAULT>.
@@ -186,23 +189,23 @@
 Overflow of the native integer storage auto-promotes the C<Integer> to a
 C<BigInt>.
 
-=item is_equal(PMC *value)
+=item C<is_equal(PMC *value)>
 
-Compare the C<Integer> to the passed in PMC, return true (1) if they are
+Compares the C<Integer> to the passed in PMC, returning true (1) if they are
 equal, and false (0) otherwise. Multiple dispatch variants are defined for
-C<BigInt> and C<DEFAULT>. {{NOTE: Presumably the C<String>, C<Integer>,
-and C<Float> cases are all covered by C<DEFAULT>.}}
+C<BigInt> and C<DEFAULT>. {{NOTE: Presumably the C<String>, C<Integer>, and
+C<Float> cases are all covered by C<DEFAULT>.}}
 
-=item cmp(PMC *value)
+=item C<cmp(PMC *value)>
 
-Compare the C<Integer> to the passed in PMC, return 1 if C<Integer> is
+Compares the C<Integer> to the passed in PMC, returning 1 if C<Integer> is
 greater, -1 if the PMC is greater, and 0 if they are equal. Multiple dispatch
 variants are defined for C<String>, C<Float>, and C<DEFAULT>. {{NOTE:
 Presumably the C<Integer> and C<BigInt> cases are covered by C<DEFAULT>.}}
 
-=item cmp_num(PMC *value)
+=item C<cmp_num(PMC *value)>
 
-Compare the C<Integer> to the passed in PMC, return 1 if C<Integer> is
+Compares the C<Integer> to the passed in PMC, returning 1 if C<Integer> is
 greater, -1 if the PMC is greater, and 0 if they are equal. Multiple dispatch
 variants are defined for C<String>, C<Float>, and C<DEFAULT>. {{NOTE:
 Presumably the C<Integer> and C<BigInt> cases are covered by C<DEFAULT>.}}
@@ -213,10 +216,10 @@
 
 =over 4
 
-=item get_as_base(INTVAL base)
+=item C<get_as_base(INTVAL base)>
 
-Convert the decimal integer to another base (anything from base 2 to base 36).
-Return the result as a string.
+Converts the decimal integer to another base (anything from base 2 to base
+36), returning the result as a STRING.
 
 =back
 
@@ -237,8 +240,8 @@
 operations but differ in the environment under which those operations occur.
 The effort required to produce a library which implements a decimal arithmetic
 is not much greater than that needed to provide a base-2 big number library.
-It is true that some trade-off in both space and speed is made but given the
-nature of dynamic languages, this should not present too great a burden.
+There is a trade-off in both space and speed, but given the nature of dynamic
+languages, this should not present too great a burden.
 
 =head2 Numeric types provided
 
@@ -261,42 +264,43 @@
 
 =back
 
-The library implements these different forms of number using the same internal
-representation, and differentiates between them only when performing rounding
-operations.  A number has the following abstract form:
+The library implements these different forms of numbers using the same
+internal representation, and differentiates between them only when performing
+rounding operations.  A number has the following abstract form:
 
  [ sign, string of digits, exponent ]
 
-If sign is zero, the number is positive, if equal to one, the number is
-negative.  The number has the value
+If sign is zero, the number is positive. If equal to one, the number is
+negative.  The number has the value:
 
  sign, string of digits * 10 ** exponent
 
-A big integer must always have a non-negative exponent, a big float may have
-any exponent and a float with a fixed fractional part will have an exponent
+A big integer must always have a non-negative exponent. A big float may have
+any exponent, and a float with a fixed fractional part will have an exponent
 greater than a given (negative) number.  These limits are not attached to a
 numeric value, but instead are enforced by giving any operation involving the
 numbers a I<context>.
 
 In general, Parrot functions will not need to care about what the bignum
-objects are or do, they should merely be used as arguments to big number
-functions, the objects will be managed by Parrot's garbage collection in a
+objects are or do. They should merely be used as arguments to big number
+functions. The objects will be managed by Parrot's garbage collection in a
 similar manner to strings.
 
 =head2 Special Values
 
-Additionally the library provides special values, which represent the result
-of otherwise undefined operations (division by zero, for instance).
-+Infinity, -Infinity and both quiet and signalling Not a Number (NaN) are
-available.  In general, the result of an operation with at least one argument
-which is NaN will be NaN, if the argument is a signalling NaN, an exception
-will also be raised.  See the EDA for full details.
+Additionally the library provides special values which represent the result of
+otherwise undefined operations (division by zero, for instance).  Positive and
+negative infinity (C<Inf> or C<+Inf> and C<-Inf>, respectively) and both quiet
+and signalling Not a Number (C<NaN>) are available.  In general, the result of
+an operation with at least one argument which is C<NaN> will be C<NaN>. If the
+argument is a signalling C<NaN>, an exception will also be raised.  See the
+EDA for full details.
 
 =head2 Context
 
 All operations occur within a defined context.  This tells the operations how
-they should be treating their arguments, what sort of rounding to perform and
-what to do if information is lost through rounding.
+they should treat their arguments, what sort of rounding to perform, and what
+to do if rounding loses information.
 
 The context provides the environment in which an operation occurs, in
 particular the following options are available:
@@ -305,49 +309,48 @@
 
 =item precision
 
-A positive I<precision> indicates that big floats are to be used, these cannot
-have more than I<precision> digits in their coefficient before or after any
-operation.  Arguments to operations with more than I<precision> digits will be
-truncated and rounded appropriately and results of operations will not have
-more than I<precision> digits in their coefficients, with any extra digits
-accumulated during the calculation of the operation being truncated and
-rounded as required.
-
-A I<precision> of zero indicates that integer operations are to be performed.
-Arguments to operations are rounded so that they have no fractional part, and
-the result of all operations will be rounded to be integers.
-
-A negative value of I<precision> indicates that a fixed number of fractional
-digits are to be provided, with arguments and results being truncated after
-those digits.
+A positive I<precision> requires the use of big floats. These cannot have more
+than I<precision> digits in their coefficient before or after any operation.
+Arguments to operations with more than I<precision> digits will be truncated
+and rounded appropriately.  Results of operations will not have more than
+I<precision> digits in their coefficients, with any extra digits accumulated
+during the calculation of the operation being truncated and rounded as
+required.
+
+A I<precision> of zero requires the use of integer operations.  Arguments to
+operations are rounded so that they have no fractional part, and the result of
+all operations will be rounded to be integers.
+
+A negative value of I<precision> requires the use of a fixed number of
+fractional digits, with arguments and results being truncated after those
+digits.
 
-With non-positive values of I<precision> the total number of digits in the
+With non-positive values of I<precision>, the total number of digits in the
 coefficient is limited only by available memory.
 
 =item rounding
 
-The rounding part of the context defines the rounding algorithm which is to be
-applied when truncating digits from a number's coefficient. The available
-rounding forms are outlined below.
+The rounding part of the context defines the rounding algorithm to apply when
+truncating digits from a number's coefficient. The available rounding forms
+are outlined below.
 
 =item traps and flags
 
-The I<traps> part of the context defines how exceptions are raised by the
-library.  Seven distinct classes of error can occur, if the corresponding trap
-is set (enabled) then an exception is raised by the library (and dispatched to
-Parrot) otherwise execution continues with the exception class being recorded
-in flags.  For more details see the extended decimal arithmetic standard.
+The I<traps> part of the context defines how the library raises exceptions.
+Seven distinct classes of error can occur. If the corresponding trap is set
+(enabled), the library raises an exception.  Otherwise, execution continues
+with the exception class recorded in flags.  For more details, see the
+extended decimal arithmetic standard.
 
 =back
 
-It is therefore the current I<context> which determines which numeric type is
-being considered during a particular operation, this makes it easy to upgrade
-from one numeric form to another, and also allows for considerable code-reuse
-within the library.
+The current I<context> determines the numeric type during a particular
+operation. This makes it easy to upgrade from one numeric form to another and
+also allows for considerable code-reuse within the library.
 
 =head2 Exception Classes
 
-The following exception classes are defined:
+The following exception classes are available:
 
 =over 4
 
@@ -367,9 +370,9 @@
 
 =item Invalid Operation
 
-An invalid operation was attempted, for instance a sNaN was provided as an
-argument to a function.  This also covers recoverable errors like 0/0, which
-signals Invalid Operation and can return NaN.
+An invalid operation was attempted, for instance when C<NaN> is present as an
+argument to a function.  This also covers recoverable errors such as 0/0,
+which signals Invalid Operation and can return C<NaN>.
 
 =item Overflow
 
@@ -387,8 +390,8 @@
 
 =head2 Rounding
 
-The rounding part of the context defines the rounding algorithm to be used,
-the following are provided (examples assume a precision of 5):
+The rounding part of the context defines the rounding algorithm to used.  The
+following contexts are available (examples assume a precision of 5):
 
 =over 4
 
@@ -401,8 +404,8 @@
 
 =item Round half up
 
-The first lost digit is examined, if this is in the range 0-4, the coefficient
-is truncated directly, if in the range 5-9, one is added to the final digit of
+The first lost digit is examined. If this is in the range 0-4, the coefficient
+is truncated directly. If in the range 5-9, one is added to the final digit of
 the coefficient.  If this leads to a coefficient with more than I<precision>
 digits, the number is rounded again, removing the trailing zero.  This is
 essentially rounding to nearest.
@@ -413,35 +416,35 @@
 
 =item Round half even
 
-The first lost digit is examined, if it lies in the range 0-4, the coefficient
-is truncated directly, if in the range 6-9, the coefficient is rounded up.  If
-the first lost digit is equal to 5, and the remaining lost digits in the
+The first lost digit is examined. If it lies in the range 0-4, the coefficient
+is truncated directly. If in the range 6-9, the coefficient is rounded up.  If
+the first lost digit is equal to 5 and the remaining lost digits in the
 coefficient are non-zero, the number is also rounded up.  If the lost digits
 are equal to exactly half, the number is rounded up if the least significant
 retained digit is odd, and rounded down if it is even.
 
 =item Round Floor
 
-If the digits to be discarded are non zero, and the number is negative, the
+If the digits to be discarded are non zero and the number is negative, the
 coefficient is rounded up, otherwise it remains the same.
 
-This is rounding towards -Infinity.
+This is rounding towards C<-Inf>.
 
 =item Round Ceiling
 
 If the digits to be discarded are non zero, and the number is positive, the
 coefficient is rounded up, otherwise it remains the same.
 
-This is rounding towards +Infinity.
+This is rounding towards C<Inf>.
 
 =back
 
 =head2 Operations
 
-The following operations are provided by the library, they function exactly as
-those described in the Standard Decimal Arithmetic (SDA) (see references
-below) with some extension to cope with integer and fixed fractional part
-numbers.  Only the deviations are outlined here.
+The library provides the following operations. They function exactly as those
+described in the Standard Decimal Arithmetic (SDA), with some extension to
+cope with integer and fixed fractional part numbers.  Only the deviations are
+outlined here.
 
 In all cases, the sequence of rounding and promotion to zero outlined by the
 SDA are followed, even where the context implies integer operations.
@@ -454,15 +457,16 @@
 
 =item Division
 
-Under integer conditions, division is halted once the first fractional digit
-is calculated, with the result then being rounded to an integer and returned.
-Under fixed-fraction conditions, one more digit than needed is calculated,
-with the coefficient then being rounded and returned.
+Under integer conditions, division halts once the first fractional digit is
+calculated, with the result rounded to an integer and returned.  Under
+fixed-fraction conditions, one more digit than needed is calculated, with the
+coefficient then rounded and returned.
 
 If a floating point value is required, or if inexact division by a very small
 number is attempted, it may be wise to follow big float arithmetic to limit
 the number of digits returned.  It is safe to chose a precision at least as
-big the largest number of digits of either argument to the division function.
+large as the largest number of digits of either argument to the division
+function.
 
 =item Integer division, Remainder
 
@@ -476,9 +480,9 @@
 
 =item Comparison
 
-Comparison returns a big number which is equal to 1, 0 or -1 if the first
-argument is larger, equal to or smaller than the second.  An alternative form
-which returns an INTVAL is also provided.
+Comparison returns a big number which is equal to 1, 0, or -1 if the first
+argument is larger, equal to, or smaller than the second.  An alternate form
+returns an INTVAL.
 
 =item Rescale
 
@@ -492,13 +496,13 @@
 
 A one to one conversion between the abstract representation above and a string
 is provided by the library, and acts as defined by the standard decimal
-arithmetic.  Other conversation operations may also be implemented, and these
-may not provide one to one mapping.
+arithmetic.  Other conversation operations may also be implemented; these may
+not provide one to one mapping.
 
 A pedantic error checking conversion is available within the library, but only
-works with native strings.  Versions which work with Parrot strings will also
-be provided, although in a separate file to the rest of the library (they will
-share a common private header file).
+works with native strings.  Versions which work with Parrot STRINGs will also
+be provided, although in a separate file to the rest of the library.  (They
+will share a common private header file).
 
 =head1 IMPLEMENTATION
 
@@ -508,56 +512,54 @@
 
 =head2 Big number representation
 
-A big number is represented by the following structure, this is capable of
-being allocated, tracked and destroyed by the Parrot garbage collection
-system.
+A big number is represented by the following structure, capable of being
+allocated, tracked, and destroyed by the Parrot garbage collection system.
 
  typedef struct {
-    BN_NIB* buffer; /* string of nibbles */
+    BN_NIB *buffer; /* string of nibbles */
     UINTVAL nibs;   /* nibs allocated, in sizeof(BN_NIB) */
     UINTVAL flags;  /* private flags store: 001 Inf,  010 qNAN, 110 sNAN */
-    INTVAL digits;  /* digits used */
-    int sign;       /* sign of number, 0=> positive or zero, 1 => negative */
-    INTVAL expn;    /* exponent of number */
+    INTVAL  digits; /* digits used */
+    INTVAL  expn;   /* exponent of number */
+    int     sign;   /* sign of number, 0 => positive or zero, 1 => negative */
  } parrot_bignum_t;
 
-Within the library, individual decimal digits can be accessed using macros,
-outside the library, access must be made via exported functions.  BN_NIB is
+Within the library, individual decimal digits can be accessed using macros.
+Outside the library, access must be made via exported functions.  BN_NIB is
 likely to be a UINTVAL, but this is not essential.
 
 Special values are represented by setting I<digits> to zero and setting
 appropriate private I<flags>, using internal macros.  Infinity has one flag
-field, NaN another flag field and sNaN a third.  In general the flags should
+field, NaN another flag field, and sNaN a third.  In general the flags should
 not be examined directly, even within the module.
 
 =head2 Context
 
  typedef struct {
-    INTVAL precision;     /* number of digs to retain */
-    BN_ROUNDING rounding; /* rounding type to perform */
-    BOOLVAL extended;     /* do we use extended or base semantics? */
-    unsigned char flags;       /* records possible errors */
-    unsigned char traps;       /* throw errors or not? */
+    INTVAL        precision;  /* number of digs to retain */
+    BN_ROUNDING   rounding;   /* rounding type to perform */
+    BOOLVAL       extended;   /* do we use extended or base semantics? */
+    unsigned char flags;      /* records possible errors */
+    unsigned char traps;      /* throw errors or not? */
  } parrot_bignum_context;
 
 I<BN_ROUNDING> is an enumeration of the possible rounding types as described
-above.  I<traps> is a bitmask of exception traps, 0 implies that a trap is
+earlier.  I<traps> is a bitmask of exception traps. 0 implies that a trap is
 disabled and 1 implies it is enabled.  I<flags> is a bitmask which records
 exceptional conditions and has the same fields at I<flags>.
 
-It is expected that language level types implement big floats using a global
-floating point context which is tagged onto an interpreter structure (and can
-thus be modified by called the right opcodes). That big integers and
-fixed-fraction number are provided by creating a context with an appropriate
-precision whenever a call into the library is made.
+Language level types should implement big floats using a global floating point
+context available in an interpreter structure (and accessible).  Big integers
+and fixed-fraction number are provided by creating a context with an
+appropriate precision whenever a call into the library is made.
 
 =head2 Exceptional Conditions
 
-When an exceptional condition is raised by the module, control is passed to
-C<BN_nonfatal()>, this examines the error which has occurred and the current
+When the module raises an exceptional condition, control passes to
+C<BN_nonfatal()>. this examines the error which has occurred and the current
 context to determine which class of error has occurred. If the corresponding
 trap handler is not enabled, the context's flags are updated and control is
-returned to the bignumber library, otherwise the exception becomes fatal.  How
+returned to the bignumber library. Otherwise the exception becomes fatal.  How
 this mechanism interacts with Parrot's own is yet to be decided.
 
 The possible exceptions are detailed in the extended decimal arithmetic.
@@ -565,9 +567,7 @@
 =head1 Tests
 
 The Standard Decimal Arithmetic provides a collection of tests for both its
-base and extended behavior.  Initially it is hoped that this library can pass
-all base tests, with extended tests to be included at a later date as it is
-extended to cope with values such as +Inf.
+base and extended behavior.
 
 =head1 TODO
 
@@ -582,8 +582,8 @@
 
 =head1 REFERENCES
 
-IBM's Standard Decimal Arithmetic, with tests
-L<http://www2.hursley.ibm.com/decimal/>
+IBM's Standard Decimal Arithmetic, with tests (sadly, link appears to have
+disappeared)
 
 The Perl modules Math::BigInt and Math::BigFloat.
 

Modified: branches/calling_conventions/docs/pdds/pdd19_pir.pod
==============================================================================
--- branches/calling_conventions/docs/pdds/pdd19_pir.pod	(original)
+++ branches/calling_conventions/docs/pdds/pdd19_pir.pod	Sat Dec 13 19:46:32 2008
@@ -359,9 +359,6 @@
 the PIR code is generated from some source PIR files, and error messages
 should print the source file's name, not the name of the generated file.
 
-{{ DEPRECATION NOTE: was C<<#line <integer> <string>>>. See [RT#45857],
-[RT#43269], and [RT#47141]. }}
-
 =item .annotate <key> <value>
 
 Makes an entry in the bytecode annotations table. This is used to store high
@@ -390,33 +387,6 @@
 
 Then you're asking for a bigger bytecode file as a result.
 
-=item .namespace <identifier> [deprecated: See RT #48737]
-
-{{ DEPRECATION NOTE: this variation of C<.namespace> and
-C<.endnamespace> are deprecated.  They were a hackish attempt at
-implementing scopes in Parrot, but didn't actually turn out to be
-useful.}}
-
-Open a new scope block. This "namespace" is not the same as the
-.namespace [ <identifier> ] syntax, which is used for storing subroutines
-in a particular namespace in the global symbol table.
-This directive is useful in cases such as (pseudocode):
-
-  local x = 1;
-  print(x);       # prints 1
-  do              # open a new namespace/scope block
-    local x = 2;  # this x hides the previous x
-    print(x);     # prints 2
-  end             # close the current namespace
-  print(x);       # prints 1 again
-
-All types of common language constructs such as if, for, while, repeat and
-such that have nested scopes, can use this directive.
-
-=item .endnamespace <identifier> [deprecated: RT #48737]
-
-Closes the scope block that was opened with .namespace <identifier>.
-
 =back
 
 =head3 Subroutine flags
@@ -480,7 +450,7 @@
 This code is run at compile time, and the returned C<tr_array> is stored
 in the bytecode file in place of the sub.  Other subs may then do:
 
-    .const .Sub tr_00 = 'tr_00_init'
+    .const 'Sub' tr_00 = 'tr_00_init'
 
 in order to fetch the constant.
 
@@ -812,10 +782,6 @@
 Note that this only works for opcodes that have have a leading C<OUT>
 parameter. [this restriction unimplemented: RT #36283]
 
-=item global "string" = <var> [deprecated: RT #48016]
-
-=item <var> = global "string" [deprecated: RT #48018]
-
 =item ([<var1> [:<flag1> ...], ...]) = <var2>([<arg1> [:<flag2> ...], ...])
 
 This is short for:
@@ -999,7 +965,7 @@
 
  EOS
 
-{{ NOTE: This is likely because the parsing of heredocs happens later than the
+{{ NOTE: This is because the parsing of heredocs happens later than the
 preprocessing of macros. Might be nice if we could parse heredocs at the macro
 level, but not a high priority. compilers/pirc/new can do this. }}
 
@@ -1170,7 +1136,7 @@
 
 =head2 Subroutine Call
 
-  .const .Sub $P0 = "_sub_label"
+  .const "Sub" $P0 = "_sub_label"
   $P1 = new 'Continuation'
   set_addr $P1, ret_addr
   ...
@@ -1212,7 +1178,7 @@
 a NCI sub, and on invocation will do the Right Thing.
 Instead of the label a subroutine object can be used too:
 
-   find_global $P0, "_sub_label"
+   get_global $P0, "_sub_label"
    $P0(args)
 
 
@@ -1312,7 +1278,28 @@
 =head1 IMPLEMENTATION
 
 There are multiple implementations of PIR, each of which will meet this
-specification for the syntax.
+specification for the syntax. Currently there are the following
+implementations:
+
+=over 4
+
+=item * compilers/imcc
+
+This is the current implementation being used in Parrot.
+
+=item * compilers/pirc
+
+This is a new implementation which will fix several of
+IMCC's shortcomings. It will replace IMCC in the not too
+distant future.
+
+=item * languages/PIR
+
+This is a PGE-based implementation, but needs to be updated
+and completed.
+
+=back
+
 
 =head1 ATTACHMENTS
 

Modified: branches/calling_conventions/docs/pdds/pdd22_io.pod
==============================================================================
--- branches/calling_conventions/docs/pdds/pdd22_io.pod	(original)
+++ branches/calling_conventions/docs/pdds/pdd22_io.pod	Sat Dec 13 19:46:32 2008
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2007, The Perl Foundation.
+# Copyright (C) 2001-2008, The Perl Foundation.
 # $Id$
 
 =head1 NAME

Modified: branches/calling_conventions/docs/project/cage_cleaners_guide.pod
==============================================================================
--- branches/calling_conventions/docs/project/cage_cleaners_guide.pod	(original)
+++ branches/calling_conventions/docs/project/cage_cleaners_guide.pod	Sat Dec 13 19:46:32 2008
@@ -373,8 +373,7 @@
 =head1 SEE ALSO
 
 F<docs/project/roles_responsibilities.pod>, F<RESPONSIBLE_PARTIES>
-Also look at F<docs/ROADMAP.pod> and the list of Cage items on RT:
+and the list of Cage items on RT:
 L<http://xrl.us/owsd> (Link to rt.perl.org)
 
-
 =cut

Modified: branches/calling_conventions/docs/project/debian_packaging_guide.pod
==============================================================================
--- branches/calling_conventions/docs/project/debian_packaging_guide.pod	(original)
+++ branches/calling_conventions/docs/project/debian_packaging_guide.pod	Sat Dec 13 19:46:32 2008
@@ -9,9 +9,9 @@
 (http://doc.ubuntu.com/ubuntu/packagingguide/C/).
 
 This guide assumes that you're running in a chroot environment set up as in:
-L<http://www.perlfoundation.org/parrot/index.cgi?debian_chroot_setup>.  For
-other configurations, see that page for a list of Debian packages you will need
-to install before building the Parrot packages.
+L<https://trac.parrot.org/parrot/wiki/ChrootSetup>. For other configurations,
+see that page for a list of Debian packages you will need to install before
+building the Parrot packages.
 
 To package Parrot for Debian:
 

Modified: branches/calling_conventions/docs/project/release_manager_guide.pod
==============================================================================
--- branches/calling_conventions/docs/project/release_manager_guide.pod	(original)
+++ branches/calling_conventions/docs/project/release_manager_guide.pod	Sat Dec 13 19:46:32 2008
@@ -85,16 +85,6 @@
 
 Enter the date of the Saturday before the next release.
 
-=item C<rt.tracking>
-
-Create a new RT-ticket for the next release.
-Please use the release month in the ticket, and *do not*
-use the release number. Releases are date-based, while release numbers are
-feature-based. Project team members agree on the release number near the
-actual release, based on the features available in trunk at the time.
-Mark the ticket for the next release as dependent on the current release. 
-Change the URL fragment in rt.tracking to use the number of the ticket for the next release.
-
 =item C<wiki.bugday>
 
 Update the date part of the link to the wiki page for the next bugday.
@@ -300,12 +290,18 @@
 
 =item 12.
 
-Close any release-related tickets in RT. If they are not yet resolved,
-migrate the critical ones to the next milestone release ticket.
-Non-critical unresolved tickets can be simply unlinked.
+Close any release-related tickets in trac. Migrate any critical tickets
+to the next milestone; non-critical tickets can have their milestone unset.
 
 =item 13.
 
+Add the version to trac so new bug reports can be filed against your
+buggy code. L<https://trac.parrot.org/parrot/admin/ticket/versions>
+
+Remove any sufficiently old versions listed there.
+
+=item 14.
+
 You're done! Help yourself to a beer, cola, or other celebratory drink.
 
 =back

Modified: branches/calling_conventions/docs/project/ticket_wrangler_guide.pod
==============================================================================
--- branches/calling_conventions/docs/project/ticket_wrangler_guide.pod	(original)
+++ branches/calling_conventions/docs/project/ticket_wrangler_guide.pod	Sat Dec 13 19:46:32 2008
@@ -14,6 +14,18 @@
 Wranglers" and is I<not> intended as advice or instruction for end users.  Ticket
 filing procedures for end users are documented in F<docs/submissions.pod>.
 
+=head1 WHAT ABOUT TRAC?
+
+Our preferred method of bug tracking at this point is trac:
+L<https://trac.parrot.org/>
+
+We still have several hundred tickets at the old RT system (see below), but
+our goal is to close out those tickets and (if necessary), replace them
+with trac tickets.
+
+Most of the document below still makes sense in terms of activities in trac,
+but the specifics are of course different with the new system.
+
 =head1 WHAT IS A TICKET WRANGLER?
 
 A developer with sufficient permissions to modify the tickets in Parrot's RT
@@ -206,7 +218,7 @@
 
     Hi,
 
-    Can you resubmit this patch different against SVN trunk?
+    Can you resubmit this patch against SVN trunk?
 
     Thanks,
 

Modified: branches/calling_conventions/examples/benchmarks/addit.pir
==============================================================================
--- branches/calling_conventions/examples/benchmarks/addit.pir	(original)
+++ branches/calling_conventions/examples/benchmarks/addit.pir	Sat Dec 13 19:46:32 2008
@@ -62,9 +62,7 @@
         add sum, a2
         add sum, a3
         add sum, a4
-        .begin_return
-    .return sum
-    .end_return
+    .return (sum)
 .end
 
 =head1 SEE ALSO

Modified: branches/calling_conventions/examples/benchmarks/fib.pir
==============================================================================
--- branches/calling_conventions/examples/benchmarks/fib.pir	(original)
+++ branches/calling_conventions/examples/benchmarks/fib.pir	Sat Dec 13 19:46:32 2008
@@ -54,9 +54,7 @@
     r2 = _fib(n2)
     n = r1 + r2
 ret:
-    .begin_return
-    .return n
-    .end_return
+    .return (n)
 .end
 
 =head1 SEE ALSO

Modified: branches/calling_conventions/examples/library/md5sum.pir
==============================================================================
--- branches/calling_conventions/examples/library/md5sum.pir	(original)
+++ branches/calling_conventions/examples/library/md5sum.pir	Sat Dec 13 19:46:32 2008
@@ -51,20 +51,12 @@
     # Get size of file
     size = stat file, .STAT_FILESIZE
     .local pmc pio, cl
-    cl = new "ParrotIO"
+    cl = new 'FileHandle'
     # slurp the file into memory
-    pio = cl."open"(file, "<", "mmap")
-    # pio = open file, "<"
-    defined $I2, pio
-    if $I2 goto found
-    printerr file
-    printerr ": Cannot find\n"
-    goto iter_cont
-found:
-    read $S1, pio, size
-    close pio
+    .local string contents
+    contents = cl.'readall'(file)
 
-    $I2 = length $S1
+    $I2 = length contents
     if $I2 == size goto size_ok
 
     printerr file
@@ -73,7 +65,7 @@
 
 size_ok:
 
-    $P0 = _md5sum ($S1)
+    $P0 = _md5sum (contents)
     _md5_print ($P0)
     print "\t"
     print file

Modified: branches/calling_conventions/examples/pir/euclid.pir
==============================================================================
--- branches/calling_conventions/examples/pir/euclid.pir	(original)
+++ branches/calling_conventions/examples/pir/euclid.pir	Sat Dec 13 19:46:32 2008
@@ -32,16 +32,16 @@
 =cut
 
 .sub 'example' :main
-        I1 = 96
-        I2 = 64
+        $I1 = 96
+        $I2 = 64
         print  "Algorithm E (Euclid's algorithm)\n"
-e1:     I4 = mod I1, I2
-e2:     unless I4 goto done
-e3:     I1 = I2
-        I2 = I4
+e1:     $I4 = mod $I1, $I2
+e2:     unless $I4 goto done
+e3:     $I1 = $I2
+        $I2 = $I4
         branch e1
 done:   print "The greatest common denominator of 96 and 64 is "
-        print  I2
+        print  $I2
         print  ".\n"
 .end
 

Modified: branches/calling_conventions/examples/pir/hanoi.pir
==============================================================================
--- branches/calling_conventions/examples/pir/hanoi.pir	(original)
+++ branches/calling_conventions/examples/pir/hanoi.pir	Sat Dec 13 19:46:32 2008
@@ -72,7 +72,7 @@
 
 =head1 TODO
 
-Replace I6 etc. with mnemonic register names.
+Replace $I6 etc. with mnemonic register names.
 
 =head1 HISTORY
 
@@ -106,8 +106,8 @@
         # Check number of command line arguments
         $I0 = argv
         if $I0 < 2 goto USE_DEFAULT_SIZE
-        S5 = argv[1]
-        size = S5
+        $S5 = argv[1]
+        size = $S5
         if size < 1 goto INVALID_SIZE
         print "Building a tower of size "
         print size
@@ -128,18 +128,18 @@
         .lex "towers", towers
         new towers, 'FixedPMCArray'
         set towers, 3
-        new P1, 'ResizableIntegerArray'
-        new P2, 'ResizableIntegerArray'
-        new P3, 'ResizableIntegerArray'
-        set towers[0], P1
-        set towers[1], P2
-        set towers[2], P3
+        new $P1, 'ResizableIntegerArray'
+        new $P2, 'ResizableIntegerArray'
+        new $P3, 'ResizableIntegerArray'
+        set towers[0], $P1
+        set towers[1], $P2
+        set towers[2], $P3
         ## towers = [[],[],[]]
 
         .local int i
         i = size
 loop_populate:
-        push P1, i
+        push $P1, i
         dec i
         if i > 0 goto loop_populate
         ## towers = [[...,3,2,1],[],[]]
@@ -177,12 +177,12 @@
         disk_size = stack[i]                 # disk_size = towers[j][i]
 print_it:
         n_spaces = tower_size - disk_size
-        repeat S0, " ", n_spaces
-        print S0
-        I6 = mul disk_size, 2                # I6 = disk_size * 2
-        repeat S1, "=", I6
-        print S1
-        print S0
+        repeat $S0, " ", n_spaces
+        print $S0
+        $I6 = mul disk_size, 2                # $I6 = disk_size * 2
+        repeat $S1, "=", $I6
+        print $S1
+        print $S0
 
         inc j
         if j == 3 goto done_loop

Modified: branches/calling_conventions/examples/pir/io.pir
==============================================================================
--- branches/calling_conventions/examples/pir/io.pir	(original)
+++ branches/calling_conventions/examples/pir/io.pir	Sat Dec 13 19:46:32 2008
@@ -20,25 +20,25 @@
 .sub 'example' :main
     .local string test_fn
     test_fn = "tmp_example_io.tmp"
-    P0 = open test_fn, ">"
-    seek P0, 300, 0
+    $P0 = open test_fn, ">"
+    seek $P0, 300, 0
     # 64bit version of seek with high 32bits = 0
-    #seek IO, P0, 0, 400, 0
-    print P0, "test1\n"
-    print P0, "test2\n"
-    print P0, "test3\n"
-    seek P0, 0, 0
-    print P0, "test4\n"
-    print P0, "test5\n"
-    close P0
-
-    P0 = open test_fn, "<"
-    S0 = read P0, 1024
-    print S0
+    #seek $IO, $P0, 0, 400, 0
+    print $P0, "test1\n"
+    print $P0, "test2\n"
+    print $P0, "test3\n"
+    seek $P0, 0, 0
+    print $P0, "test4\n"
+    print $P0, "test5\n"
+    close $P0
+
+    $P0 = open test_fn, "<"
+    $S0 = read $P0, 1024
+    print $S0
 
     # now clean up after ourselves.
-    P1 = new "OS"
-    P1."rm"(test_fn)
+    $P1 = new "OS"
+    $P1."rm"(test_fn)
 
 .end
 

Modified: branches/calling_conventions/examples/pir/life.pir
==============================================================================
--- branches/calling_conventions/examples/pir/life.pir	(original)
+++ branches/calling_conventions/examples/pir/life.pir	Sat Dec 13 19:46:32 2008
@@ -29,61 +29,61 @@
         .local int max_generations
 
 	# First the generation count
-        I15 = argv
-        if I15 < 2 goto USE_DEFAULT_MAX_GENERATIONS
-        S5 = argv[1]
-        I2 = S5
+        $I15 = argv
+        if $I15 < 2 goto USE_DEFAULT_MAX_GENERATIONS
+        $S5 = argv[1]
+        $I2 = $S5
         print "Running "
-        print I2
+        print $I2
         print " generations.\n"
         goto MAX_GENERATIONS_IS_NOW_KNOWN
 USE_DEFAULT_MAX_GENERATIONS:
         print "Running 5000 generations by default.\n"
-	set I2, 5000
+	set $I2, 5000
 MAX_GENERATIONS_IS_NOW_KNOWN:
         print "\n"
 
 	# Note the time
-	time N5
+	time $N5
 	# If true, we don't print
-	set I12, 0
-	set S0,  "               "
-	set S1,  "               "
-	set S2,  "               "
-        set S3,  "               "
-	set S4,  "   **          "
-	set S5,  " *    *        "
-	set S6,  "       *       "
-	set S7,  " *     *       "
-	set S8,  "  ******       "
-	set S9,  "               "
-	set S10, "               "
-	set S11, "               "
-	set S12, "               "
-	set S13, "               "
-	set S14, "               "
-	set S15, ""
-	concat S15, S0
-	concat S15, S1
-	concat S15, S2
-	concat S15, S3
-	concat S15, S4
-	concat S15, S5
-	concat S15, S6
-	concat S15, S7
-	concat S15, S8
-	concat S15, S9
-	concat S15, S10
-	concat S15, S11
-	concat S15, S12
-	concat S15, S13
-	concat S15, S14
+	set $I12, 0
+	set $S0,  "               "
+	set $S1,  "               "
+	set $S2,  "               "
+        set $S3,  "               "
+	set $S4,  "   **          "
+	set $S5,  " *    *        "
+	set $S6,  "       *       "
+	set $S7,  " *     *       "
+	set $S8,  "  ******       "
+	set $S9,  "               "
+	set $S10, "               "
+	set $S11, "               "
+	set $S12, "               "
+	set $S13, "               "
+	set $S14, "               "
+	set $S15, ""
+	concat $S15, $S0
+	concat $S15, $S1
+	concat $S15, $S2
+	concat $S15, $S3
+	concat $S15, $S4
+	concat $S15, $S5
+	concat $S15, $S6
+	concat $S15, $S7
+	concat $S15, $S8
+	concat $S15, $S9
+	concat $S15, $S10
+	concat $S15, $S11
+	concat $S15, $S12
+	concat $S15, $S13
+	concat $S15, $S14
 	bsr dump
-	set I0, 0
-loop:	ge I0, I2, getout
-	inc I0
-	mod I31,I0,100
-	if I31, skip
+	set $I0, 0
+loop:	ge $I0, $I2, getout
+	inc $I0
+	mod $I31,$I0,100
+	if $I31, skip
 	printerr "."
 skip:
 
@@ -91,180 +91,180 @@
 
 	bsr dump
 	branch loop
-getout:	time N6
-	sub N7, N6, N5
+getout:	time $N6
+	sub $N7, $N6, $N5
 	print "\n"
-	print I2
+	print $I2
 	print " generations in "
-	print N7
+	print $N7
  	print " seconds. "
-	set N8, I2
-	div N1, N8, N7
-	print N1
+	set $N8, $I2
+	div $N1, $N8, $N7
+	print $N1
 	print " generations/sec\n"
 
-	interpinfo I1, 1
+	interpinfo $I1, 1
 	print "A total of "
-	print I1
+	print $I1
 	print " bytes were allocated\n"
 
-	interpinfo I1, 2
+	interpinfo $I1, 2
 	print "A total of "
-	print I1
+	print $I1
 	print " DOD runs were made\n"
 
-	interpinfo I1, 3
+	interpinfo $I1, 3
 	print "A total of "
-	print I1
+	print $I1
 	print " collection runs were made\n"
 
-	interpinfo I1, 10
+	interpinfo $I1, 10
 	print "Copying a total of "
-	print I1
+	print $I1
 	print " bytes\n"
 
-	interpinfo I1, 5
+	interpinfo $I1, 5
 	print "There are "
-	print I1
+	print $I1
 	print " active Buffer structs\n"
 
-	interpinfo I1, 7
+	interpinfo $I1, 7
 	print "There are "
-	print I1
+	print $I1
 	print " total Buffer structs\n"
 
 
 	end
 
-# S15 has the incoming string, S0 is scratch, S1 is scratch, S2 is scratch
+# $S15 has the incoming string, $S0 is scratch, $S1 is scratch, $S2 is scratch
 #
-# I0 is the length of the string
-# I1 is the current cell we're checking
-# I2 is the count for that cell
-# I3 is the offset to the neighbor
+# $I0 is the length of the string
+# $I1 is the current cell we're checking
+# $I2 is the count for that cell
+# $I3 is the offset to the neighbor
 generate:
         .local int save_I0, save_I1, save_I2, save_I3
-	save_I0 = I0
-	save_I1 = I1
-	save_I2 = I2
-	save_I3 = I3
-	length I0, S15
-	set S1, ""
-	set I1, 0
+	save_I0 = $I0
+	save_I1 = $I1
+	save_I2 = $I2
+	save_I3 = $I3
+	length $I0, $S15
+	set $S1, ""
+	set $I1, 0
 genloop:
-	set I2, 0
+	set $I2, 0
 NW:
-	set I3, -16
-	add I3, I3, I0
-	add I3, I3, I1
-	mod I3, I3, I0
-	# S0 is always overwritten, so reuse it
-	substr_r S0, S15, I3, 1
-	ne S0, "*", North
-	inc I2
+	set $I3, -16
+	add $I3, $I3, $I0
+	add $I3, $I3, $I1
+	mod $I3, $I3, $I0
+	# $S0 is always overwritten, so reuse it
+	substr_r $S0, $S15, $I3, 1
+	ne $S0, "*", North
+	inc $I2
 North:
-	set I3, -15
-	add I3, I3, I0
-	add I3, I3, I1
-	mod I3, I3, I0
-	substr_r S0, S15, I3, 1
-	ne S0, "*", NE
-	inc I2
+	set $I3, -15
+	add $I3, $I3, $I0
+	add $I3, $I3, $I1
+	mod $I3, $I3, $I0
+	substr_r $S0, $S15, $I3, 1
+	ne $S0, "*", NE
+	inc $I2
 NE:
-	set I3, -14
-	add I3, I3, I0
-	add I3, I3, I1
-	mod I3, I3, I0
-	substr_r S0, S15, I3, 1
-	ne S0, "*", West
-	inc I2
+	set $I3, -14
+	add $I3, $I3, $I0
+	add $I3, $I3, $I1
+	mod $I3, $I3, $I0
+	substr_r $S0, $S15, $I3, 1
+	ne $S0, "*", West
+	inc $I2
 West:
-	set I3, -1
-	add I3, I3, I0
-	add I3, I3, I1
-	mod I3, I3, I0
-	substr_r S0, S15, I3, 1
-	ne S0, "*", East
-	inc I2
+	set $I3, -1
+	add $I3, $I3, $I0
+	add $I3, $I3, $I1
+	mod $I3, $I3, $I0
+	substr_r $S0, $S15, $I3, 1
+	ne $S0, "*", East
+	inc $I2
 East:
-	set I3, 1
-	add I3, I3, I0
-	add I3, I3, I1
-	mod I3, I3, I0
-	substr_r S0, S15, I3, 1
-	ne S0, "*", SW
-	inc I2
+	set $I3, 1
+	add $I3, $I3, $I0
+	add $I3, $I3, $I1
+	mod $I3, $I3, $I0
+	substr_r $S0, $S15, $I3, 1
+	ne $S0, "*", SW
+	inc $I2
 SW:
-	set I3, 14
-	add I3, I3, I0
-	add I3, I3, I1
-	mod I3, I3, I0
-	substr_r S0, S15, I3, 1
-	ne S0, "*", South
-	inc I2
+	set $I3, 14
+	add $I3, $I3, $I0
+	add $I3, $I3, $I1
+	mod $I3, $I3, $I0
+	substr_r $S0, $S15, $I3, 1
+	ne $S0, "*", South
+	inc $I2
 South:
-	set I3, 15
-	add I3, I3, I0
-	add I3, I3, I1
-	mod I3, I3, I0
-	substr_r S0, S15, I3, 1
-	ne S0, "*", SE
-	inc I2
+	set $I3, 15
+	add $I3, $I3, $I0
+	add $I3, $I3, $I1
+	mod $I3, $I3, $I0
+	substr_r $S0, $S15, $I3, 1
+	ne $S0, "*", SE
+	inc $I2
 SE:
-	set I3, 16
-	add I3, I3, I0
-	add I3, I3, I1
-	mod I3, I3, I0
-	substr_r S0, S15, I3, 1
-	ne S0, "*", check
-	inc I2
+	set $I3, 16
+	add $I3, $I3, $I0
+	add $I3, $I3, $I1
+	mod $I3, $I3, $I0
+	substr_r $S0, $S15, $I3, 1
+	ne $S0, "*", check
+	inc $I2
 check:
-	substr_r S0, S15, I1, 1
-	eq S0, "*", check_alive
+	substr_r $S0, $S15, $I1, 1
+	eq $S0, "*", check_alive
 
 # If eq 3, put a star in else a space
 check_dead:
-	eq I2, 3, star
+	eq $I2, 3, star
 	branch space
 
 check_alive:
-	lt I2, 2, space
-	gt I2, 3, space
+	lt $I2, 2, space
+	gt $I2, 3, space
 	branch star
 
 space:
-	concat S1, " "
+	concat $S1, " "
 	branch iter_done
 star:
-	concat S1, "*"
+	concat $S1, "*"
 iter_done:
-	inc I1
-	lt I1, I0, genloop
+	inc $I1
+	lt $I1, $I0, genloop
 done:
-	set S15, S1
-	I3 = save_I3
-	I2 = save_I2
-	I1 = save_I1
-	I0 = save_I0
+	set $S15, $S1
+	$I3 = save_I3
+	$I2 = save_I2
+	$I1 = save_I1
+	$I0 = save_I0
 	ret
 
-# S15 has the incoming string, S0 is scratch
+# $S15 has the incoming string, $S0 is scratch
 dump:
-	if I12, dumpend
+	if $I12, dumpend
 	print "\f"
 	print "\n\n\n\n\n\n\n\n\n\n\n"
 	print "------------- generation "
-	print I0
+	print $I0
 	print " -------------\n"
-	set I10, 0
-	set I11, 14
+	set $I10, 0
+	set $I11, 14
 printloop:
-	substr_r S0, S15, I10, 15
-	print S0
+	substr_r $S0, $S15, $I10, 15
+	print $S0
 	print "\n"
-	add I10, I10, 15
-	dec I11
-	ge I11, 0, printloop
+	add $I10, $I10, 15
+	dec $I11
+	ge $I11, 0, printloop
 	sleep 1
 dumpend:
 	ret

Modified: branches/calling_conventions/examples/pir/readline.pir
==============================================================================
--- branches/calling_conventions/examples/pir/readline.pir	(original)
+++ branches/calling_conventions/examples/pir/readline.pir	Sat Dec 13 19:46:32 2008
@@ -29,12 +29,12 @@
 
 AGAIN:
 	line = readline stdin
-	I1 = length line
-	if I1 <= 1 goto MAINLOOP
+	$I1 = length line
+	if $I1 <= 1 goto MAINLOOP
 	# test for multi-char newlines
-	if I1 >=3 goto CONCAT
-	I2 = is_cclass .CCLASS_NEWLINE, line, 0
-	if I2, MAINLOOP
+	if $I1 >=3 goto CONCAT
+	$I2 = is_cclass .CCLASS_NEWLINE, line, 0
+	if $I2, MAINLOOP
 
 CONCAT:
 	concat buffer, line

Modified: branches/calling_conventions/examples/pir/substr.pir
==============================================================================
--- branches/calling_conventions/examples/pir/substr.pir	(original)
+++ branches/calling_conventions/examples/pir/substr.pir	Sat Dec 13 19:46:32 2008
@@ -16,23 +16,23 @@
 =cut
 
 .sub "example" :main
-        I2 = 1
-        I1 = 0
-        S1 = "Hello World"
-        I3 = 0
-        I4 = 0
-        I5 = length S1
-WAX:    S2 = substr S1, I3, I4
-        print  S2
+        $I2 = 1
+        $I1 = 0
+        $S1 = "Hello World"
+        $I3 = 0
+        $I4 = 0
+        $I5 = length $S1
+WAX:    $S2 = substr $S1, $I3, $I4
+        print  $S2
         print  "\n"
-        I4 = I4 + I2
-        if I4 == I5 goto WANE
+        $I4 = $I4 + $I2
+        if $I4 == $I5 goto WANE
 	branch WAX
-WANE:   I1 = length S1
-        print  S1
+WANE:   $I1 = length $S1
+        print  $S1
         print  "\n"
-        chopn  S1, 1
-        unless I1 == I3 goto WANE
+        chopn  $S1, 1
+        unless $I1 == $I3 goto WANE
 DONE:
 .end
 

Modified: branches/calling_conventions/examples/pir/sudoku.pir
==============================================================================
--- branches/calling_conventions/examples/pir/sudoku.pir	(original)
+++ branches/calling_conventions/examples/pir/sudoku.pir	Sat Dec 13 19:46:32 2008
@@ -2112,7 +2112,7 @@
     .local pmc win, f
 
     win = getattribute self, "win"
-    f = global "ncurses::mvwaddstr"
+    f = get_global "ncurses::mvwaddstr"
     f(win, r, c, s)
 .end
 
@@ -2121,7 +2121,7 @@
     .local pmc win, f
 
     win = getattribute self, "win"
-    f = global "ncurses::waddstr"
+    f = get_global "ncurses::waddstr"
     f(win, s)
 .end
 
@@ -2132,14 +2132,14 @@
 
     s = i
     win = getattribute self, "win"
-    f = global "ncurses::waddstr"
+    f = get_global "ncurses::waddstr"
     f(win, s)
 .end
 
 .sub "wait" :method
     .local pmc f
     .local int key
-    f = global "ncurses::getch"
+    f = get_global "ncurses::getch"
     key = f()
 .end
 
@@ -2155,9 +2155,9 @@
 
 .sub nc_end
     .local pmc endwin, curs_set
-    curs_set = global "ncurses::curs_set"
+    curs_set = get_global "ncurses::curs_set"
     curs_set(1)
-    endwin = global "ncurses::endwin"
+    endwin = get_global "ncurses::endwin"
     endwin()
 .end
 
@@ -2171,14 +2171,14 @@
     .local pmc NODELAY
     .local pmc KEYPAD
     .local pmc STDSCR
-    INITSCR     = global "ncurses::initscr"
-    START_COLOR = global "ncurses::start_color"
-    INIT_PAIR   = global "ncurses::init_pair"
-    COLOR_PAIR  = global "ncurses::COLOR_PAIR"
-    WATTRON     = global "ncurses::wattron"
-    CURS_SET    = global "ncurses::curs_set"
-    NODELAY     = global "ncurses::nodelay"
-    KEYPAD      = global "ncurses::keypad"
+    INITSCR     = get_global "ncurses::initscr"
+    START_COLOR = get_global "ncurses::start_color"
+    INIT_PAIR   = get_global "ncurses::init_pair"
+    COLOR_PAIR  = get_global "ncurses::COLOR_PAIR"
+    WATTRON     = get_global "ncurses::wattron"
+    CURS_SET    = get_global "ncurses::curs_set"
+    NODELAY     = get_global "ncurses::nodelay"
+    KEYPAD      = get_global "ncurses::keypad"
     STDSCR = INITSCR()
     START_COLOR()
     # Color pair 1, dark green fg, black background

Modified: branches/calling_conventions/examples/pir/uniq.pir
==============================================================================
--- branches/calling_conventions/examples/pir/uniq.pir	(original)
+++ branches/calling_conventions/examples/pir/uniq.pir	Sat Dec 13 19:46:32 2008
@@ -57,32 +57,32 @@
 
 SOURCE:
   # set up flag registers
-  I10 = 0
-  I11 = 0
-  I12 = 0
+  $I10 = 0
+  $I11 = 0
+  $I12 = 0
   # do some simple option parsing
   .local string option
   option = shift argv
 
   ne option, "-c", NOTC
-  I10 = 1 # count mode
+  $I10 = 1 # count mode
   option = shift argv
 
 NOTC:
   ne option, "-d", NOTD
-  I11 = 1 # duplicate mode
+  $I11 = 1 # duplicate mode
   option = shift argv
 
 NOTD:
   ne option, "-u", GO
-  I12 = 1 # unique mode
+  $I12 = 1 # unique mode
   option = shift argv
 
 GO:
   .local string file_name
   file_name = option
 
-  I1 = 1 # count
+  $I1 = 1 # count
   .local pmc in_fh
   in_fh = open file_name, "<"
   unless in_fh, ERR
@@ -97,38 +97,38 @@
 
   # different line
 
-  unless I10, NOTC2
+  unless $I10, NOTC2
   # count mode
   # we go to some lengths to make the count pretty
-  set S3, I1
-  length I2, S3
-  sub I2, 7, I2
-  set S3, " "
-  repeat S3, S3, I2
-  print S3
-  print I1
+  set $S3, $I1
+  length $I2, $S3
+  sub $I2, 7, $I2
+  set $S3, " "
+  repeat $S3, $S3, $I2
+  print $S3
+  print $I1
   print " "
   print prev_line
   branch RESET
 
 NOTC2:
-  unless I11, NOTD2
+  unless $I11, NOTD2
 
   # show duplicates mode
-  eq 1, I1, RESET
+  eq 1, $I1, RESET
   print prev_line
   branch RESET
 
 ERR:
   print "Couldn't read "
-  print S0
+  print $S0
   exit 1
 
 NOTD2:
-  unless I12, NOTU2
+  unless $I12, NOTU2
 
   # don't show lines that are duplicated mode
-  ne 1, I1, RESET
+  ne 1, $I1, RESET
   print prev_line
   branch RESET
 
@@ -139,11 +139,11 @@
   branch RESET
 
 RESET:
-  set I1, 1
+  set $I1, 1
   branch LOOP
 
 MATCH:
-  inc I1
+  inc $I1
   # fall through
 
 LOOP:

Modified: branches/calling_conventions/examples/shootout/fasta.pir
==============================================================================
--- branches/calling_conventions/examples/shootout/fasta.pir	(original)
+++ branches/calling_conventions/examples/shootout/fasta.pir	Sat Dec 13 19:46:32 2008
@@ -162,7 +162,7 @@
 	.local int n
 	# stdout is linebuffered per default - make it block buffered
 	stdout = getstdout
-	stdout.'setbuf'(40960)
+	stdout.'buffer_size'(40960)
 	$I0 = argv
 	if $I0 > 1 goto argsok
 	n = 1000

Modified: branches/calling_conventions/examples/shootout/knucleotide.pir
==============================================================================
--- branches/calling_conventions/examples/shootout/knucleotide.pir	(original)
+++ branches/calling_conventions/examples/shootout/knucleotide.pir	Sat Dec 13 19:46:32 2008
@@ -80,7 +80,7 @@
 	goto iter_loop_1
 iter_end_1:
 
-	$P0 = global "sort"
+	$P0 = get_global "sort"
 	array."sort"($P0)
 
 	$I0 = array

Modified: branches/calling_conventions/examples/shootout/revcomp.pir
==============================================================================
--- branches/calling_conventions/examples/shootout/revcomp.pir	(original)
+++ branches/calling_conventions/examples/shootout/revcomp.pir	Sat Dec 13 19:46:32 2008
@@ -35,7 +35,7 @@
 	stdin = getstdin
 	stdout = getstdout
 	# stdout is linebuffered per default - make it block buffered
-	stdout.'setbuf'(8192)
+	stdout.'buffer_size'(8192)
 
 	seq = ''
 

Modified: branches/calling_conventions/examples/subs/single_retval.pir
==============================================================================
--- branches/calling_conventions/examples/subs/single_retval.pir	(original)
+++ branches/calling_conventions/examples/subs/single_retval.pir	Sat Dec 13 19:46:32 2008
@@ -26,16 +26,16 @@
   $I1 = 8
   .local string s
   s = "nine"
-  I2  = 10
+  $I2  = 10
 
   # subs accept locals and registers
-  $I0 = foo(i, $I1, s, I2)
+  $I0 = foo(i, $I1, s, $I2)
   print "return: "
   print $I0
   print "\n"
 
   # subs accept locals and registers
-  ( $I3 ) = foo(i, $I1, s, I2)
+  ( $I3 ) = foo(i, $I1, s, $I2)
   print "return: "
   print $I3
   print "\n"

Modified: branches/calling_conventions/languages/WMLScript/src/wmlsstdlibs.pir
==============================================================================
--- branches/calling_conventions/languages/WMLScript/src/wmlsstdlibs.pir	(original)
+++ branches/calling_conventions/languages/WMLScript/src/wmlsstdlibs.pir	Sat Dec 13 19:46:32 2008
@@ -120,11 +120,9 @@
     die "unable to load compilation unit"
   _handler:
     .local pmc e
-    .local string msg
     .get_results (e)
-    msg = e
-    say msg
-    $S0 = "verification failed (can't translate '"
+    $S0 = e
+    $S0 .= "\nverification failed (can't translate '"
     $S0 .= url
     $S0 .= "')"
     e = $S0
@@ -141,13 +139,13 @@
     pop_eh
     .return (content)
   _handler:
-    $S0 = err
-    print "Can't slurp '"
-    print filename
-    print "' ("
-    print $S0
-    print ")\n"
-  L1:
+    $S0 = "Can't slurp '"
+    $S0 .= filename
+    $S0 .= "' ("
+    $S1 = err
+    $S0 .= $S1
+    $S0 .= ")\n"
+    printerr $S0
     .return ('')
 .end
 
@@ -165,12 +163,16 @@
     fh.'close'()
     .return (output)
   _handler:
-    $S0 = err
-    print "Can't open '"
-    print output
-    print "' ("
-    print $S0
-    print ")\n"
+    .local pmc e
+    .get_results (e)
+    $S0 = "Can't open '"
+    $S0 .= output
+    $S0 .= "' ("
+    $S1 = err
+    $S0 .= $S1
+    $S0 .= ")\n"
+    e = $S0
+    rethrow e
 .end
 
 .sub 'save_pir'
@@ -187,12 +189,16 @@
     fh.'close'()
     .return ()
   _handler:
-    $S0 = err
-    print "Can't open '"
-    print output
-    print "' ("
-    print $S0
-    print ")\n"
+    .local pmc e
+    .get_results (e)
+    $S0 = "Can't open '"
+    $S0 .= output
+    $S0 .= "' ("
+    $S1 = err
+    $S0 .= $S1
+    $S0 .= ")\n"
+    e = $S0
+    rethrow e
 .end
 
 =back

Modified: branches/calling_conventions/languages/dotnet/t/args.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/args.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/args.t	Sat Dec 13 19:46:32 2008
@@ -50,7 +50,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.no_args()
+	$I0 = obj."no_args"()
 	print $I0
 	print "\n"
 .end
@@ -64,11 +64,11 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
 	$I0 = 42
-	$I1 = obj.one_arg($I0)
+	$I1 = obj."one_arg"($I0)
 	print $I1
 	print "\n"
 	$I0 = 7
-	$I1 = obj.one_arg($I0)
+	$I1 = obj."one_arg"($I0)
 	print $I1
 	print "\n"
 .end
@@ -82,7 +82,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.three_args(1,2,3)
+	$I0 = obj."three_args"(1,2,3)
 	print $I0
 	print "\n"
 .end
@@ -95,7 +95,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.ten_args(1,2,3,4,5,6,7,8,9,10)
+	$I0 = obj."ten_args"(1,2,3,4,5,6,7,8,9,10)
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/array.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/array.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/array.t	Sat Dec 13 19:46:32 2008
@@ -67,7 +67,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$P0 = obj.create_array()
+	$P0 = obj."create_array"()
 	print $P0
 	print "\n"
 .end
@@ -80,8 +80,8 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$P0 = obj.create_array()
-	$I1 = obj.array_length($P0)
+	$P0 = obj."create_array"()
+	$I1 = obj."array_length"($P0)
 	print $I1
 	print "\n"
 .end
@@ -94,7 +94,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.create_and_length()
+	$I0 = obj."create_and_length"()
 	print $I0
 	print "\n"
 .end
@@ -107,7 +107,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.loadstore_test()
+	$I0 = obj."loadstore_test"()
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/bitwise.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/bitwise.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/bitwise.t	Sat Dec 13 19:46:32 2008
@@ -59,7 +59,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.and(65, 1088)
+	$I0 = obj."and"(65, 1088)
 	print $I0
 	print "\n"
 .end
@@ -72,7 +72,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.or(65, 1024)
+	$I0 = obj."or"(65, 1024)
 	print $I0
 	print "\n"
 .end
@@ -85,7 +85,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.xor(0xF0, 0x77)
+	$I0 = obj."xor"(0xF0, 0x77)
 	print $I0
 	print "\n"
 .end
@@ -98,7 +98,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.not(0xFFFFFFF0)
+	$I0 = obj."not"(0xFFFFFFF0)
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/box.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/box.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/box.t	Sat Dec 13 19:46:32 2008
@@ -58,7 +58,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.box_1()
+	$I0 = obj."box_1"()
 	print $I0
     print "\n"
 .end
@@ -71,7 +71,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.box_2()
+	$I0 = obj."box_2"()
 	print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/branch.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/branch.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/branch.t	Sat Dec 13 19:46:32 2008
@@ -47,7 +47,7 @@
 				return 1;
 			else
 				return 0;
-        }		
+        }
     }
 }
 CSHARP
@@ -61,19 +61,19 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.lt(5,7)
+	$I0 = obj."lt"(5,7)
 	print $I0
 	print "\n"
-	$I0 = obj.lt(400,8)
+	$I0 = obj."lt"(400,8)
 	print $I0
 	print "\n"
-	$I0 = obj.lt(5,-7)
+	$I0 = obj."lt"(5,-7)
 	print $I0
 	print "\n"
-	$I0 = obj.lt(-400,8123)
+	$I0 = obj."lt"(-400,8123)
 	print $I0
 	print "\n"
-	$I0 = obj.lt(4,4)
+	$I0 = obj."lt"(4,4)
 	print $I0
 	print "\n"
 .end
@@ -90,19 +90,19 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.le(5,7)
+	$I0 = obj."le"(5,7)
 	print $I0
 	print "\n"
-	$I0 = obj.le(400,8)
+	$I0 = obj."le"(400,8)
 	print $I0
 	print "\n"
-	$I0 = obj.le(5,-7)
+	$I0 = obj."le"(5,-7)
 	print $I0
 	print "\n"
-	$I0 = obj.le(-400,8123)
+	$I0 = obj."le"(-400,8123)
 	print $I0
 	print "\n"
-	$I0 = obj.le(4,4)
+	$I0 = obj."le"(4,4)
 	print $I0
 	print "\n"
 .end
@@ -119,19 +119,19 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.gt(5,7)
+	$I0 = obj."gt"(5,7)
 	print $I0
 	print "\n"
-	$I0 = obj.gt(400,8)
+	$I0 = obj."gt"(400,8)
 	print $I0
 	print "\n"
-	$I0 = obj.gt(5,-7)
+	$I0 = obj."gt"(5,-7)
 	print $I0
 	print "\n"
-	$I0 = obj.gt(-400,8123)
+	$I0 = obj."gt"(-400,8123)
 	print $I0
 	print "\n"
-	$I0 = obj.gt(4,4)
+	$I0 = obj."gt"(4,4)
 	print $I0
 	print "\n"
 .end
@@ -148,19 +148,19 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.ge(5,7)
+	$I0 = obj."ge"(5,7)
 	print $I0
 	print "\n"
-	$I0 = obj.ge(400,8)
+	$I0 = obj."ge"(400,8)
 	print $I0
 	print "\n"
-	$I0 = obj.ge(5,-7)
+	$I0 = obj."ge"(5,-7)
 	print $I0
 	print "\n"
-	$I0 = obj.ge(-400,8123)
+	$I0 = obj."ge"(-400,8123)
 	print $I0
 	print "\n"
-	$I0 = obj.ge(4,4)
+	$I0 = obj."ge"(4,4)
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/calling.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/calling.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/calling.t	Sat Dec 13 19:46:32 2008
@@ -71,7 +71,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.call_no_args(29)
+	$I0 = obj."call_no_args"(29)
     print $I0
     print "\n"
 .end
@@ -84,7 +84,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.call_one_arg()
+	$I0 = obj."call_one_arg"()
     print $I0
     print "\n"
 .end
@@ -97,7 +97,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.call_many_args(2, 3)
+	$I0 = obj."call_many_args"(2, 3)
     print $I0
     print "\n"
 .end
@@ -110,7 +110,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.call_void()
+	$I0 = obj."call_void"()
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/callvirt.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/callvirt.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/callvirt.t	Sat Dec 13 19:46:32 2008
@@ -53,7 +53,7 @@
 	load_bytecode "t.pbc"
 	obj1 = new [ "Testing" ; "Test" ]
     obj2 = new [ "Testing" ; "mummy" ]
-	$I0 = obj1.test_call(obj2)
+	$I0 = obj1."test_call"(obj2)
     print $I0
     print "\n"
 .end
@@ -67,7 +67,7 @@
 	load_bytecode "t.pbc"
 	obj1 = new [ "Testing" ; "Test" ]
     obj2 = new [ "Testing" ; "baby" ]
-	$I0 = obj1.test_call(obj2)
+	$I0 = obj1."test_call"(obj2)
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/castclass.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/castclass.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/castclass.t	Sat Dec 13 19:46:32 2008
@@ -56,7 +56,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.pos()
+	$I0 = obj."pos"()
     print $I0
     print "\n"
 .end
@@ -70,7 +70,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh caught
-	$I0 = obj.neg()
+	$I0 = obj."neg"()
     print "not "
 caught:
     print "ok\n"

Modified: branches/calling_conventions/languages/dotnet/t/compare.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/compare.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/compare.t	Sat Dec 13 19:46:32 2008
@@ -60,16 +60,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.is_same(0, 0)
+	$I0 = obj."is_same"(0, 0)
 	print $I0
 	print "\n"
-    $I0 = obj.is_same(0, 1)
+    $I0 = obj."is_same"(0, 1)
 	print $I0
 	print "\n"
-    $I0 = obj.is_same(1, 0)
+    $I0 = obj."is_same"(1, 0)
 	print $I0
 	print "\n"
-    $I0 = obj.is_same(42, 42)
+    $I0 = obj."is_same"(42, 42)
 	print $I0
 	print "\n"
 .end
@@ -85,16 +85,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.is_lt(0, 0)
+	$I0 = obj."is_lt"(0, 0)
 	print $I0
 	print "\n"
-    $I0 = obj.is_lt(0, 1)
+    $I0 = obj."is_lt"(0, 1)
 	print $I0
 	print "\n"
-    $I0 = obj.is_lt(1, 0)
+    $I0 = obj."is_lt"(1, 0)
 	print $I0
 	print "\n"
-    $I0 = obj.is_lt(42, 42)
+    $I0 = obj."is_lt"(42, 42)
 	print $I0
 	print "\n"
 .end
@@ -110,16 +110,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.is_lt_un(0, 0)
+	$I0 = obj."is_lt_un"(0, 0)
 	print $I0
 	print "\n"
-    $I0 = obj.is_lt_un(0, 1)
+    $I0 = obj."is_lt_un"(0, 1)
 	print $I0
 	print "\n"
-    $I0 = obj.is_lt_un(1, 0)
+    $I0 = obj."is_lt_un"(1, 0)
 	print $I0
 	print "\n"
-    $I0 = obj.is_lt_un(42, 42)
+    $I0 = obj."is_lt_un"(42, 42)
 	print $I0
 	print "\n"
 .end
@@ -135,16 +135,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.is_gt(0, 0)
+	$I0 = obj."is_gt"(0, 0)
 	print $I0
 	print "\n"
-    $I0 = obj.is_gt(0, 1)
+    $I0 = obj."is_gt"(0, 1)
 	print $I0
 	print "\n"
-    $I0 = obj.is_gt(1, 0)
+    $I0 = obj."is_gt"(1, 0)
 	print $I0
 	print "\n"
-    $I0 = obj.is_gt(42, 42)
+    $I0 = obj."is_gt"(42, 42)
 	print $I0
 	print "\n"
 .end
@@ -160,16 +160,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.is_gt_un(0, 0)
+	$I0 = obj."is_gt_un"(0, 0)
 	print $I0
 	print "\n"
-    $I0 = obj.is_gt_un(0, 1)
+    $I0 = obj."is_gt_un"(0, 1)
 	print $I0
 	print "\n"
-    $I0 = obj.is_gt_un(1, 0)
+    $I0 = obj."is_gt_un"(1, 0)
 	print $I0
 	print "\n"
-    $I0 = obj.is_gt_un(42, 42)
+    $I0 = obj."is_gt_un"(42, 42)
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/conditional.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/conditional.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/conditional.t	Sat Dec 13 19:46:32 2008
@@ -58,19 +58,19 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.clip(0)
+	$I0 = obj."clip"(0)
 	print $I0
 	print "\n"
-	$I0 = obj.clip(1)
+	$I0 = obj."clip"(1)
 	print $I0
 	print "\n"
-	$I0 = obj.clip(-1)
+	$I0 = obj."clip"(-1)
 	print $I0
 	print "\n"
-	$I0 = obj.clip(-500)
+	$I0 = obj."clip"(-500)
 	print $I0
 	print "\n"
-	$I0 = obj.clip(42)
+	$I0 = obj."clip"(42)
 	print $I0
 	print "\n"
 .end
@@ -87,22 +87,22 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.band_pass(1)
+	$I0 = obj."band_pass"(1)
 	print $I0
 	print "\n"
-	$I0 = obj.band_pass(2)
+	$I0 = obj."band_pass"(2)
 	print $I0
 	print "\n"
-	$I0 = obj.band_pass(3)
+	$I0 = obj."band_pass"(3)
 	print $I0
 	print "\n"
-	$I0 = obj.band_pass(4)
+	$I0 = obj."band_pass"(4)
 	print $I0
 	print "\n"
-	$I0 = obj.band_pass(5)
+	$I0 = obj."band_pass"(5)
 	print $I0
 	print "\n"
-	$I0 = obj.band_pass(6)
+	$I0 = obj."band_pass"(6)
 	print $I0
 	print "\n"
 .end
@@ -120,16 +120,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.is_42(99)
+	$I0 = obj."is_42"(99)
 	print $I0
 	print "\n"
-	$I0 = obj.is_42(-2)
+	$I0 = obj."is_42"(-2)
 	print $I0
 	print "\n"
-	$I0 = obj.is_42(42)
+	$I0 = obj."is_42"(42)
 	print $I0
 	print "\n"
-	$I0 = obj.is_42(-42)
+	$I0 = obj."is_42"(-42)
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/constants.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/constants.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/constants.t	Sat Dec 13 19:46:32 2008
@@ -57,7 +57,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.zero2eight()
+	$I0 = obj."zero2eight"()
 	print $I0
 	print "\n"
 .end
@@ -70,7 +70,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.m1()
+	$I0 = obj."m1"()
 	print $I0
 	print "\n"
 .end
@@ -83,7 +83,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.bigger_consts()
+	$I0 = obj."bigger_consts"()
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/constructor.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/constructor.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/constructor.t	Sat Dec 13 19:46:32 2008
@@ -77,7 +77,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.cc_no_args()
+	$I0 = obj."cc_no_args"()
     print $I0
     print "\n"
 .end
@@ -90,7 +90,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.cc_args(10, 2.45)
+	$N0 = obj."cc_args"(10, 2.45)
     print $N0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/conv.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/conv.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/conv.t	Sat Dec 13 19:46:32 2008
@@ -22,7 +22,7 @@
 		{
 			return (sbyte) x;
 		}
-		
+
 		public sbyte conv_i1_f(float x)
 		{
 			return (sbyte) x;
@@ -32,7 +32,7 @@
 		{
 			return (byte) x;
 		}
-		
+
 		public byte conv_u1_f(float x)
 		{
 			return (byte) x;
@@ -42,7 +42,7 @@
 		{
 			return (short) x;
 		}
-		
+
 		public short conv_i2_f(float x)
 		{
 			return (short) x;
@@ -52,7 +52,7 @@
 		{
 			return (ushort) x;
 		}
-		
+
 		public ushort conv_u2_f(float x)
 		{
 			return (ushort) x;
@@ -62,7 +62,7 @@
 		{
 			return (int) x;
 		}
-		
+
 		public uint conv_u4_f(float x)
 		{
 			return (uint) x;
@@ -90,16 +90,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.conv_i1_i(42)
+	$I0 = obj."conv_i1_i"(42)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i1_i(-42)
+	$I0 = obj."conv_i1_i"(-42)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i1_i(258)
+	$I0 = obj."conv_i1_i"(258)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i1_i(-258)
+	$I0 = obj."conv_i1_i"(-258)
 	print $I0
 	print "\n"
 .end
@@ -115,16 +115,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.conv_i1_f(42.0)
+	$I0 = obj."conv_i1_f"(42.0)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i1_f(-42.0)
+	$I0 = obj."conv_i1_f"(-42.0)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i1_f(258.0)
+	$I0 = obj."conv_i1_f"(258.0)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i1_f(-258.0)
+	$I0 = obj."conv_i1_f"(-258.0)
 	print $I0
 	print "\n"
 .end
@@ -140,10 +140,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.conv_u1_i(42)
+	$I0 = obj."conv_u1_i"(42)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_u1_i(258)
+	$I0 = obj."conv_u1_i"(258)
 	print $I0
 	print "\n"
 .end
@@ -157,10 +157,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.conv_u1_f(42.0)
+	$I0 = obj."conv_u1_f"(42.0)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_u1_f(258.0)
+	$I0 = obj."conv_u1_f"(258.0)
 	print $I0
 	print "\n"
 .end
@@ -174,16 +174,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.conv_i2_i(42)
+	$I0 = obj."conv_i2_i"(42)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i2_i(-42)
+	$I0 = obj."conv_i2_i"(-42)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i2_i(70000)
+	$I0 = obj."conv_i2_i"(70000)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i2_i(-70000)
+	$I0 = obj."conv_i2_i"(-70000)
 	print $I0
 	print "\n"
 .end
@@ -199,16 +199,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.conv_i2_f(42.0)
+	$I0 = obj."conv_i2_f"(42.0)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i2_f(-42.0)
+	$I0 = obj."conv_i2_f"(-42.0)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i2_f(70000.0)
+	$I0 = obj."conv_i2_f"(70000.0)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i2_f(-70000.0)
+	$I0 = obj."conv_i2_f"(-70000.0)
 	print $I0
 	print "\n"
 .end
@@ -224,10 +224,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.conv_u2_i(42)
+	$I0 = obj."conv_u2_i"(42)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_u2_i(70000)
+	$I0 = obj."conv_u2_i"(70000)
 	print $I0
 	print "\n"
 .end
@@ -241,10 +241,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.conv_u2_f(42.0)
+	$I0 = obj."conv_u2_f"(42.0)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_u2_f(70000.0)
+	$I0 = obj."conv_u2_f"(70000.0)
 	print $I0
 	print "\n"
 .end
@@ -258,10 +258,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.conv_i4_f(42.0)
+	$I0 = obj."conv_i4_f"(42.0)
 	print $I0
 	print "\n"
-	$I0 = obj.conv_i4_f(-42.0)
+	$I0 = obj."conv_i4_f"(-42.0)
 	print $I0
 	print "\n"
 .end
@@ -275,7 +275,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.conv_u4_f(42.0)
+	$I0 = obj."conv_u4_f"(42.0)
 	print $I0
 	print "\n"
 .end
@@ -288,10 +288,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.conv_r4_i(42)
+	$N0 = obj."conv_r4_i"(42)
 	print $N0
 	print "\n"
-	$N0 = obj.conv_r4_i(-42)
+	$N0 = obj."conv_r4_i"(-42)
 	print $N0
 	print "\n"
 .end
@@ -305,10 +305,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.conv_r8_i(42)
+	$N0 = obj."conv_r8_i"(42)
 	print $N0
 	print "\n"
-	$N0 = obj.conv_r8_i(-42)
+	$N0 = obj."conv_r8_i"(-42)
 	print $N0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/convovf.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/convovf.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/convovf.t	Sat Dec 13 19:46:32 2008
@@ -105,7 +105,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.u1(200)
+	$I0 = obj."u1"(200)
 	print $I0
 	print "\n"
 .end
@@ -119,7 +119,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.u1(300)
+	$I0 = obj."u1"(300)
 	print "failed\n"
     end
 handler:
@@ -136,7 +136,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.u1(-5)
+	$I0 = obj."u1"(-5)
 	print "failed\n"
     end
 handler:
@@ -152,7 +152,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.i1(100)
+	$I0 = obj."i1"(100)
 	print $I0
 	print "\n"
 .end
@@ -165,7 +165,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.i1(-5)
+	$I0 = obj."i1"(-5)
 	print $I0
     print "\n"
     end
@@ -180,7 +180,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.i1(128)
+	$I0 = obj."i1"(128)
 	print "failed\n"
     end
 handler:
@@ -197,7 +197,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.i1(-129)
+	$I0 = obj."i1"(-129)
 	print "failed\n"
     end
 handler:
@@ -213,7 +213,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.u2(33000)
+	$I0 = obj."u2"(33000)
 	print $I0
 	print "\n"
 .end
@@ -227,7 +227,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.u2(68000)
+	$I0 = obj."u2"(68000)
 	print "failed\n"
     end
 handler:
@@ -244,7 +244,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.u2(-5)
+	$I0 = obj."u2"(-5)
 	print "failed\n"
     end
 handler:
@@ -260,7 +260,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.i2(10000)
+	$I0 = obj."i2"(10000)
 	print $I0
 	print "\n"
 .end
@@ -273,7 +273,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.i2(-5)
+	$I0 = obj."i2"(-5)
 	print $I0
     print "\n"
     end
@@ -288,7 +288,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.i2(32768)
+	$I0 = obj."i2"(32768)
 	print "failed\n"
     end
 handler:
@@ -305,7 +305,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.i2(-32769)
+	$I0 = obj."i2"(-32769)
 	print "failed\n"
     end
 handler:
@@ -321,7 +321,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.u4(5000000)
+	$I0 = obj."u4"(5000000)
 	print $I0
 	print "\n"
 .end
@@ -335,7 +335,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.u4(-5)
+	$I0 = obj."u4"(-5)
 	print "failed\n"
     end
 handler:
@@ -351,7 +351,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.u1_un(200)
+	$I0 = obj."u1_un"(200)
 	print $I0
 	print "\n"
 .end
@@ -365,7 +365,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.u1_un(300)
+	$I0 = obj."u1_un"(300)
 	print "failed\n"
     end
 handler:
@@ -381,7 +381,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.i1_un(100)
+	$I0 = obj."i1_un"(100)
 	print $I0
 	print "\n"
 .end
@@ -395,7 +395,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.i1_un(128)
+	$I0 = obj."i1_un"(128)
 	print "failed\n"
     end
 handler:
@@ -412,7 +412,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.i1_un(-1)
+	$I0 = obj."i1_un"(-1)
 	print "failed\n"
     end
 handler:
@@ -428,7 +428,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.u2_un(33000)
+	$I0 = obj."u2_un"(33000)
 	print $I0
 	print "\n"
 .end
@@ -442,7 +442,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.u2_un(68000)
+	$I0 = obj."u2_un"(68000)
 	print "failed\n"
     end
 handler:
@@ -458,7 +458,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.i2_un(10000)
+	$I0 = obj."i2_un"(10000)
 	print $I0
 	print "\n"
 .end
@@ -472,7 +472,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.i2_un(32768)
+	$I0 = obj."i2_un"(32768)
 	print "failed\n"
     end
 handler:
@@ -489,7 +489,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.i2_un(-1)
+	$I0 = obj."i2_un"(-1)
 	print "failed\n"
     end
 handler:
@@ -505,7 +505,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.i4_un(5000000)
+	$I0 = obj."i4_un"(5000000)
 	print $I0
 	print "\n"
 .end
@@ -519,7 +519,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.i4_un(-5)
+	$I0 = obj."i4_un"(-5)
 	print "failed\n"
     end
 handler:
@@ -535,7 +535,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.u1_f(200.0)
+	$N0 = obj."u1_f"(200.0)
 	print $N0
 	print "\n"
 .end
@@ -549,7 +549,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$N0 = obj.u1_f(300.0)
+	$N0 = obj."u1_f"(300.0)
 	print "failed\n"
     end
 handler:
@@ -566,7 +566,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$N0 = obj.u1_f(-5.0)
+	$N0 = obj."u1_f"(-5.0)
 	print "failed\n"
     end
 handler:
@@ -582,7 +582,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.i1_f(100.0)
+	$N0 = obj."i1_f"(100.0)
 	print $N0
 	print "\n"
 .end
@@ -595,7 +595,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.i1_f(-5.0)
+	$N0 = obj."i1_f"(-5.0)
 	print $N0
     print "\n"
     end
@@ -610,7 +610,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$N0 = obj.i1_f(128.0)
+	$N0 = obj."i1_f"(128.0)
 	print "failed\n"
     end
 handler:
@@ -627,7 +627,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$N0 = obj.i1_f(-129.0)
+	$N0 = obj."i1_f"(-129.0)
 	print "failed\n"
     end
 handler:
@@ -643,7 +643,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.u2_f(33000.0)
+	$N0 = obj."u2_f"(33000.0)
 	print $N0
 	print "\n"
 .end
@@ -657,7 +657,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$N0 = obj.u2_f(68000.0)
+	$N0 = obj."u2_f"(68000.0)
 	print "failed\n"
     end
 handler:
@@ -674,7 +674,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$N0 = obj.u2_f(-5.0)
+	$N0 = obj."u2_f"(-5.0)
 	print "failed\n"
     end
 handler:
@@ -690,7 +690,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.i2_f(10000.0)
+	$N0 = obj."i2_f"(10000.0)
 	print $N0
 	print "\n"
 .end
@@ -703,7 +703,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.i2_f(-5.0)
+	$N0 = obj."i2_f"(-5.0)
 	print $N0
     print "\n"
     end
@@ -718,7 +718,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$N0 = obj.i2_f(32768.0)
+	$N0 = obj."i2_f"(32768.0)
 	print "failed\n"
     end
 handler:
@@ -735,7 +735,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$N0 = obj.i2_f(-32769.0)
+	$N0 = obj."i2_f"(-32769.0)
 	print "failed\n"
     end
 handler:

Modified: branches/calling_conventions/languages/dotnet/t/enum.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/enum.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/enum.t	Sat Dec 13 19:46:32 2008
@@ -97,7 +97,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.value()
+	$I0 = obj."value"()
 	print $I0
     print "\n"
 .end
@@ -110,7 +110,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.or()
+	$I0 = obj."or"()
 	print $I0
     print "\n"
 .end
@@ -123,7 +123,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.or_int()
+	$I0 = obj."or_int"()
 	print $I0
     print "\n"
 .end
@@ -136,10 +136,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.cond_1(0)
+	$I0 = obj."cond_1"(0)
 	print $I0
     print "\n"
-    $I0 = obj.cond_1(42)
+    $I0 = obj."cond_1"(42)
 	print $I0
     print "\n"
 .end
@@ -153,10 +153,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.cond_2(2)
+	$I0 = obj."cond_2"(2)
 	print $I0
     print "\n"
-    $I0 = obj.cond_2(0)
+    $I0 = obj."cond_2"(0)
 	print $I0
     print "\n"
 .end
@@ -170,10 +170,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.argument(1)
+	$I0 = obj."argument"(1)
 	print $I0
     print "\n"
-    $I0 = obj.argument(0)
+    $I0 = obj."argument"(0)
 	print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/exceptions.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/exceptions.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/exceptions.t	Sat Dec 13 19:46:32 2008
@@ -182,7 +182,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.simple(0)
+	$I0 = obj."simple"(0)
     print $I0
     print "\n"
 .end
@@ -195,7 +195,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.simple(1)
+	$I0 = obj."simple"(1)
     print $I0
     print "\n"
 .end
@@ -208,10 +208,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.typed(1)
+	$I0 = obj."typed"(1)
     print $I0
     print "\n"
-    $I0 = obj.typed(0)
+    $I0 = obj."typed"(0)
     print $I0
     print "\n"
 .end
@@ -225,10 +225,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.nested1(0)
+	$I0 = obj."nested1"(0)
     print $I0
     print "\n"
-    $I0 = obj.nested1(1)
+    $I0 = obj."nested1"(1)
     print $I0
     print "\n"
 .end
@@ -242,10 +242,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.nested2(0)
+	$I0 = obj."nested2"(0)
     print $I0
     print "\n"
-    $I0 = obj.nested2(1)
+    $I0 = obj."nested2"(1)
     print $I0
     print "\n"
 .end
@@ -259,10 +259,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.nested3(0)
+	$I0 = obj."nested3"(0)
     print $I0
     print "\n"
-    $I0 = obj.nested3(1)
+    $I0 = obj."nested3"(1)
     print $I0
     print "\n"
 .end
@@ -276,10 +276,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.nested4(0)
+	$I0 = obj."nested4"(0)
     print $I0
     print "\n"
-    $I0 = obj.nested4(1)
+    $I0 = obj."nested4"(1)
     print $I0
     print "\n"
 .end
@@ -293,10 +293,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.nested5(0)
+	$I0 = obj."nested5"(0)
     print $I0
     print "\n"
-    $I0 = obj.nested5(1)
+    $I0 = obj."nested5"(1)
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/external.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/external.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/external.t	Sat Dec 13 19:46:32 2008
@@ -68,7 +68,7 @@
     load_bytecode "external.pbc"
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$P0 = obj.create_monkey()
+	$P0 = obj."create_monkey"()
     unless null $P0 goto IS_OK
     print "busted\n"
 IS_OK:
@@ -84,8 +84,8 @@
     load_bytecode "external.pbc"
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$P0 = obj.create_monkey()
-    $I0 = obj.monkey_age_doubled($P0)
+	$P0 = "obj.create_monkey"()
+    $I0 = obj."monkey_age_doubled"($P0)
     print $I0
     print "\n"
 .end
@@ -99,8 +99,8 @@
     load_bytecode "external.pbc"
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$P0 = obj.create_monkey()
-    $S0 = obj.monkey_talk($P0)
+	$P0 = obj."create_monkey"()
+    $S0 = obj."monkey_talk"($P0)
     print $S0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/field.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/field.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/field.t	Sat Dec 13 19:46:32 2008
@@ -48,7 +48,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	obj.set_x(28)
+	obj."set_x"(28)
     $P0 = new 'Integer'
     $P0 = getattribute obj, "x"
 	print $P0
@@ -63,7 +63,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	obj.set_y(14)
+	obj."set_y"(14)
     $P0 = new 'Integer'
     $P0 = getattribute obj, "y"
 	print $P0
@@ -78,8 +78,8 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	obj.set_x(28)
-	obj.set_y(14)
+	obj."set_x"(28)
+	obj."set_y"(14)
     $I0 = obj.add()
 	print $I0
 	print "\n"

Modified: branches/calling_conventions/languages/dotnet/t/finally.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/finally.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/finally.t	Sat Dec 13 19:46:32 2008
@@ -184,7 +184,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.unwind_over()
+	$I0 = obj."unwind_over"()
     print $I0
     print "\n"
 .end
@@ -197,7 +197,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.unwind_over_2()
+	$I0 = obj."unwind_over_2"()
     print $I0
     print "\n"
 .end
@@ -210,7 +210,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.try_finally()
+	$I0 = obj."try_finally"()
     print $I0
     print "\n"
 .end
@@ -223,7 +223,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.mixed()
+	$I0 = obj."mixed"()
     print $I0
     print "\n"
 .end
@@ -236,10 +236,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.nested_1(0)
+	$I0 = obj."nested_1"(0)
     print $I0
     print "\n"
-    $I0 = obj.nested_1(1)
+    $I0 = obj."nested_1"(1)
     print $I0
     print "\n"
 .end
@@ -253,10 +253,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.nested_2(0)
+	$I0 = obj."nested_2"(0)
     print $I0
     print "\n"
-    $I0 = obj.nested_2(1)
+    $I0 = obj."nested_2"(1)
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/floatarray.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/floatarray.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/floatarray.t	Sat Dec 13 19:46:32 2008
@@ -54,7 +54,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.test_float()
+	$N0 = obj."test_float"()
 	print $N0
 	print "\n"
 .end
@@ -67,7 +67,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.test_double()
+	$N0 = obj."test_double"()
 	print $N0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/hierachy.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/hierachy.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/hierachy.t	Sat Dec 13 19:46:32 2008
@@ -61,7 +61,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-    $I0 = obj.check_it_works()
+    $I0 = obj."check_it_works"()
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/i8.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/i8.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/i8.t	Sat Dec 13 19:46:32 2008
@@ -36,11 +36,11 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$P0 = obj.set_long()
-    $I0 = $P0.get_high_bits()
+	$P0 = obj."set_long"()
+    $I0 = $P0."get_high_bits"()
 	print $I0
 	print "\n"
-    $I0 = $P0.get_low_bits()
+    $I0 = $P0."get_low_bits"()
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/inheritance.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/inheritance.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/inheritance.t	Sat Dec 13 19:46:32 2008
@@ -92,7 +92,7 @@
 	load_bytecode "t.pbc"
 	obj1 = new [ "Testing" ; "Test" ]
     obj2 = new [ "Testing" ; "baby" ]
-	$I0 = obj1.test_2_up(obj2)
+	$I0 = obj1."test_2_up"(obj2)
     print $I0
     print "\n"
 .end
@@ -106,7 +106,7 @@
 	load_bytecode "t.pbc"
 	obj1 = new [ "Testing" ; "Test" ]
     obj2 = new [ "Testing" ; "baby" ]
-	$I0 = obj1.test_1_up(obj2)
+	$I0 = obj1."test_1_up"(obj2)
     print $I0
     print "\n"
 .end
@@ -120,7 +120,7 @@
 	load_bytecode "t.pbc"
 	obj1 = new [ "Testing" ; "Test" ]
     obj2 = new [ "Testing" ; "baby" ]
-	$I0 = obj1.test_cur(obj2)
+	$I0 = obj1."test_cur"(obj2)
     print $I0
     print "\n"
 .end
@@ -134,7 +134,7 @@
 	load_bytecode "t.pbc"
 	obj1 = new [ "Testing" ; "Test" ]
     obj2 = new [ "Testing" ; "mummy" ]
-	$I0 = obj1.test(obj2)
+	$I0 = obj1."test"(obj2)
     print $I0
     print "\n"
 .end
@@ -148,7 +148,7 @@
 	load_bytecode "t.pbc"
 	obj1 = new [ "Testing" ; "Test" ]
     obj2 = new [ "Testing" ; "baby" ]
-	$I0 = obj1.test(obj2)
+	$I0 = obj1."test"(obj2)
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/initializer.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/initializer.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/initializer.t	Sat Dec 13 19:46:32 2008
@@ -42,7 +42,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.get_x()
+	$I0 = obj."get_x"()
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/intarray.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/intarray.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/intarray.t	Sat Dec 13 19:46:32 2008
@@ -90,7 +90,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.test_sbyte()
+	$I0 = obj."test_sbyte"()
 	print $I0
 	print "\n"
 .end
@@ -103,7 +103,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.test_byte()
+	$I0 = obj."test_byte"()
 	print $I0
 	print "\n"
 .end
@@ -116,7 +116,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.test_short()
+	$I0 = obj."test_short"()
 	print $I0
 	print "\n"
 .end
@@ -129,7 +129,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.test_ushort()
+	$I0 = obj."test_ushort"()
 	print $I0
 	print "\n"
 .end
@@ -142,7 +142,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.test_int()
+	$I0 = obj."test_int"()
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/interface.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/interface.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/interface.t	Sat Dec 13 19:46:32 2008
@@ -130,7 +130,7 @@
     addparent cls, prt
 	obj = new "badness"
     push_eh handler
-    obj.kick()
+    obj."kick"()
     print "not "
 handler:
     print "ok\n"
@@ -144,9 +144,9 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-    obj.setup()
-    obj.kick_da_brother(10)
-    $I0 = obj.ready_to_sell()
+    obj."setup"()
+    obj."kick_da_brother"(10)
+    $I0 = obj."ready_to_sell"()
     print $I0
     print "\n"
 .end
@@ -159,9 +159,9 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-    obj.setup()
-    obj.kick_da_brother(1000) # ouch!
-    $I0 = obj.ready_to_sell()
+    obj."setup"()
+    obj."kick_da_brother"(1000) # ouch!
+    $I0 = obj."ready_to_sell"()
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/isinst.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/isinst.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/isinst.t	Sat Dec 13 19:46:32 2008
@@ -59,7 +59,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.pos()
+	$I0 = obj."pos"()
     print $I0
     print "\n"
 .end
@@ -72,7 +72,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.neg()
+	$I0 = obj."neg"()
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/locals.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/locals.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/locals.t	Sat Dec 13 19:46:32 2008
@@ -67,7 +67,7 @@
         .local pmc obj
         load_bytecode "t.pbc"
         obj = new [ "Testing" ; "Test" ]
-        $I0 = obj.no_locals()
+        $I0 = obj."no_locals"()
         print $I0
         print "\n"
 .end
@@ -80,7 +80,7 @@
         .local pmc obj
         load_bytecode "t.pbc"
         obj = new [ "Testing" ; "Test" ]
-        $I0 = obj.few_locals()
+        $I0 = obj."few_locals"()
         print $I0
         print "\n"
 .end
@@ -93,7 +93,7 @@
         .local pmc obj
         load_bytecode "t.pbc"
         obj = new [ "Testing" ; "Test" ]
-        $I0 = obj.fib_locals()
+        $I0 = obj."fib_locals"()
         print $I0
         print "\n"
 .end
@@ -106,7 +106,7 @@
         .local pmc obj
         load_bytecode "t.pbc"
         obj = new [ "Testing" ; "Test" ]
-        $I0 = obj.locals_with_args(2,3)
+        $I0 = obj."locals_with_args"(2,3)
         print $I0
         print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/loop.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/loop.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/loop.t	Sat Dec 13 19:46:32 2008
@@ -57,19 +57,19 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.add_hundred(0)
+	$I0 = obj."add_hundred"(0)
 	print $I0
 	print "\n"
-	$I0 = obj.add_hundred(21)
+	$I0 = obj."add_hundred"(21)
 	print $I0
 	print "\n"
-	$I0 = obj.add_hundred(-1)
+	$I0 = obj."add_hundred"(-1)
 	print $I0
 	print "\n"
-	$I0 = obj.add_hundred(-500)
+	$I0 = obj."add_hundred"(-500)
 	print $I0
 	print "\n"
-	$I0 = obj.add_hundred(42)
+	$I0 = obj."add_hundred"(42)
 	print $I0
 	print "\n"
 .end
@@ -86,16 +86,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.multiply(4,5)
+	$I0 = obj."multiply"(4,5)
 	print $I0
 	print "\n"
-	$I0 = obj.multiply(6,3)
+	$I0 = obj."multiply"(6,3)
 	print $I0
 	print "\n"
-	$I0 = obj.multiply(0,1)
+	$I0 = obj."multiply"(0,1)
 	print $I0
 	print "\n"
-	$I0 = obj.multiply(9,0)
+	$I0 = obj."multiply"(9,0)
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/math.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/math.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/math.t	Sat Dec 13 19:46:32 2008
@@ -37,7 +37,7 @@
         {
             return x / y;
         }
-		
+
 		public int rem(int x, int y)
         {
             return x % y;
@@ -60,10 +60,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.add(500,72)
+	$I0 = obj."add"(500,72)
 	print $I0
 	print "\n"
-	$I0 = obj.add(500,-72)
+	$I0 = obj."add"(500,-72)
 	print $I0
 	print "\n"
 .end
@@ -94,10 +94,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.mul(50,7)
+	$I0 = obj."mul"(50,7)
 	print $I0
 	print "\n"
-	$I0 = obj.mul(-7,-6)
+	$I0 = obj."mul"(-7,-6)
 	print $I0
 	print "\n"
 .end
@@ -111,13 +111,13 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.div(12,3)
+	$I0 = obj."div"(12,3)
 	print $I0
 	print "\n"
-	$I0 = obj.div(15,14)
+	$I0 = obj."div"(15,14)
 	print $I0
 	print "\n"
-	$I0 = obj.div(-121,11)
+	$I0 = obj."div"(-121,11)
 	print $I0
 	print "\n"
 .end
@@ -132,10 +132,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.rem(13,3)
+	$I0 = obj."rem"(13,3)
 	print $I0
 	print "\n"
-	$I0 = obj.rem(-15,13)
+	$I0 = obj."rem"(-15,13)
 	print $I0
 	print "\n"
 .end
@@ -149,10 +149,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.neg(100)
+	$I0 = obj."neg"(100)
 	print $I0
 	print "\n"
-	$I0 = obj.neg(-15)
+	$I0 = obj."neg"(-15)
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/mathovf.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/mathovf.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/mathovf.t	Sat Dec 13 19:46:32 2008
@@ -60,7 +60,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.add(500,72)
+	$I0 = obj."add"(500,72)
 	print $I0
 	print "\n"
 .end
@@ -74,7 +74,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.add(2147483640, 100)
+	$I0 = obj."add"(2147483640, 100)
 	print "failed\n"
     end
 handler:
@@ -90,7 +90,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.add_un(500,72)
+	$I0 = obj."add_un"(500,72)
 	print $I0
 	print "\n"
 .end
@@ -103,9 +103,9 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.add_un(2147483647, 2147483647)
+	$I0 = obj."add_un"(2147483647, 2147483647)
     push_eh handler
-    $I0 = obj.add_un($I0, 10)
+    $I0 = obj."add_un"($I0, 10)
 	print "failed\n"
     end
 handler:
@@ -185,7 +185,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.mul(500,20)
+	$I0 = obj."mul"(500,20)
 	print $I0
 	print "\n"
 .end
@@ -199,7 +199,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
     push_eh handler
-	$I0 = obj.mul(214748364, 100)
+	$I0 = obj."mul"(214748364, 100)
 	print "failed\n"
     end
 handler:
@@ -215,7 +215,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.mul_un(500,20)
+	$I0 = obj."mul_un"(500,20)
 	print $I0
 	print "\n"
 .end
@@ -229,7 +229,7 @@
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
 	push_eh handler
-	$I0 = obj.mul_un(214748364, 214748364)
+	$I0 = obj."mul_un"(214748364, 214748364)
 	print "failed\n"
     end
 handler:

Modified: branches/calling_conventions/languages/dotnet/t/mp.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/mp.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/mp.t	Sat Dec 13 19:46:32 2008
@@ -106,7 +106,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.local_ints()
+	$I0 = obj."local_ints"()
 	print $I0
 	print "\n"
 .end
@@ -119,7 +119,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.local_floats()
+	$N0 = obj."local_floats"()
 	print $N0
 	print "\n"
 .end
@@ -132,7 +132,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.param_ints(5, 10, 20, 40, 80, 160)
+	$I0 = obj."param_ints"(5, 10, 20, 40, 80, 160)
 	print $I0
 	print "\n"
 .end
@@ -145,7 +145,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$N0 = obj.param_floats(5.5, 7.5)
+	$N0 = obj."param_floats"(5.5, 7.5)
 	print $N0
 	print "\n"
 .end
@@ -158,7 +158,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.element()
+	$I0 = obj."element"()
 	print $I0
 	print "\n"
 .end
@@ -171,7 +171,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.field()
+	$I0 = obj."field"()
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/mp_pmc.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/mp_pmc.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/mp_pmc.t	Sat Dec 13 19:46:32 2008
@@ -39,7 +39,7 @@
     .local int tmp
 
     # Get register's value indirectly, increment it and store back indirectly.
-    tmp = ptr.load_int()
+    tmp = ptr."load_int"()
     inc tmp
     ptr.store_int(tmp)
 .end
@@ -71,9 +71,9 @@
     .local num tmp
 
     # Get register's value indirectly, increment it and store back indirectly.
-    tmp = ptr.load_float()
+    tmp = ptr."load_float"()
     tmp = tmp * 2
-    ptr.store_float(tmp)
+    ptr."store_float"(tmp)
 .end
 PIR
 4.800000
@@ -87,7 +87,7 @@
     $P0 = loadlib "dotnet_runtime"
 
     # Get the pointer.
-    the_test = new Float
+    the_test = new 'Float'
     the_test = 42.2
     ptr = net_reg_ptr the_test
 
@@ -109,7 +109,7 @@
     tmp2 = tmp
     tmp = new 'Integer'
     tmp = tmp2
-    ptr.store_pmc(tmp)
+    ptr."store_pmc"(tmp)
 .end
 PIR
 42
@@ -123,7 +123,7 @@
     $P0 = loadlib "dotnet_runtime"
 
     # Set up an array.
-    arr = new FixedIntegerArray
+    arr = new 'FixedIntegerArray'
     arr = 3
     arr[0] = 40
     arr[1] = 41
@@ -133,11 +133,11 @@
     ptr = net_ldelema arr, 1
 
     # Use the pointer to get value, increment it, store it again.
-    the_test = ptr.load_int()
+    the_test = ptr."load_int"()
     print the_test
     print "\n"
     inc the_test
-    ptr.store_int(the_test)
+    ptr."store_int"(the_test)
 
     # Print array element.
     the_test = arr[1]
@@ -157,7 +157,7 @@
     $P0 = loadlib "dotnet_runtime"
 
     # Set up an array.
-    arr = new FixedFloatArray
+    arr = new 'FixedFloatArray'
     arr = 3
     arr[0] = 14.2
     arr[1] = 5.9
@@ -167,11 +167,11 @@
     ptr = net_ldelema arr, 1
 
     # Use the pointer to get value, increment it, store it again.
-    the_test = ptr.load_float()
+    the_test = ptr."load_float"()
     print the_test
     print "\n"
     the_test = the_test * 2
-    ptr.store_float(the_test)
+    ptr."store_float"(the_test)
 
     # Print array element.
     the_test = arr[1]
@@ -190,15 +190,15 @@
     $P0 = loadlib "dotnet_runtime"
 
     # Set up an array.
-    arr = new FixedFloatArray
+    arr = new 'FixedFloatArray'
     arr = 3
-    the_test = new Float
+    the_test = new 'Float'
     the_test = 14.2
     arr[0] = the_test
-    the_test = new Float
+    the_test = new 'Float'
     the_test = 5.9
     arr[1] = the_test
-    the_test = new Float
+    the_test = new 'Float'
     the_test = 18.7
     arr[2] = the_test
 
@@ -206,12 +206,12 @@
     ptr = net_ldelema arr, 1
 
     # Use the pointer to get value, increment it, store it again.
-    the_test = ptr.load_pmc()
+    the_test = ptr."load_pmc"()
     print the_test
     print "\n"
-    the_test = new Float
+    the_test = new 'Float'
     the_test = 11.8
-    ptr.store_float(the_test)
+    ptr."store_float"(the_test)
 
     # Print array element.
     the_test = arr[1]
@@ -242,12 +242,12 @@
     ptr = net_ldflda obj, "age"
 
     # Use the pointer to get the age attribute and change it.
-    the_test = ptr.load_int()
+    the_test = ptr."load_int"()
     print "The monkey was "
     print the_test
     print " years old.\n"
     inc the_test
-    ptr.store_int(the_test)
+    ptr."store_int"(the_test)
 
     # Print attribute.
     $P1 = getattribute obj, "age"
@@ -271,7 +271,7 @@
     $P0 = newclass "monkey"
     addattribute $P0, "height"
     obj = new "monkey"
-    $P1 = new Float
+    $P1 = new 'Float'
     $P1 = 1.79
     setattribute obj, "height", $P1
 
@@ -279,12 +279,12 @@
     ptr = net_ldflda obj, "height"
 
     # Use the pointer to get the height attribute and change it.
-    the_test = ptr.load_float()
+    the_test = ptr."load_float"()
     print "The monkey was "
     print the_test
     print " meters tall.\n"
     the_test = 1.82
-    ptr.store_float(the_test)
+    ptr."store_float"(the_test)
 
     # Print attribute.
     $P1 = getattribute obj, "height"
@@ -307,7 +307,7 @@
     $P0 = newclass "monkey"
     addattribute $P0, "name"
     obj = new "monkey"
-    $P1 = new String
+    $P1 = new 'String'
     $P1 = "Derek"
     setattribute obj, "name", $P1
 
@@ -319,9 +319,9 @@
     print "The monkey was called "
     print the_test
     print ".\n"
-    $P1 = new String
+    $P1 = new 'String'
     $P1 = "Bradley"
-    ptr.store_pmc($P1)
+    ptr."store_pmc"($P1)
 
     # Print attribute.
     the_test = getattribute obj, "name"

Modified: branches/calling_conventions/languages/dotnet/t/null.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/null.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/null.t	Sat Dec 13 19:46:32 2008
@@ -40,7 +40,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$P0 = obj.ret_null()
+	$P0 = obj."ret_null"()
     if null $P0 goto IS_NULL
 	print "not null\n"
 IS_NULL:
@@ -55,8 +55,8 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-    $P0 = obj.ret_null()
-	$I0 = obj.comp_null($P0)
+    $P0 = obj."ret_null"()
+	$I0 = obj."comp_null"($P0)
     print $I0
     print "\n"
 .end
@@ -69,7 +69,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.comp_null(obj)
+	$I0 = obj."comp_null"(obj)
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/overloading.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/overloading.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/overloading.t	Sat Dec 13 19:46:32 2008
@@ -94,7 +94,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.one_arg_i()
+	$I0 = obj."one_arg_i"()
     print $I0
     print "\n"
 .end
@@ -107,7 +107,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.two_args_ii()
+	$I0 = obj."two_args_ii"()
     print $I0
     print "\n"
 .end
@@ -120,7 +120,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.two_args_if()
+	$I0 = obj."two_args_if"()
     print $I0
     print "\n"
 .end
@@ -133,7 +133,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.test_obj_1()
+	$I0 = obj."test_obj_1"()
     print $I0
     print "\n"
 .end
@@ -146,7 +146,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.test_obj_2()
+	$I0 = obj."test_obj_2"()
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/overloadprimitives.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/overloadprimitives.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/overloadprimitives.t	Sat Dec 13 19:46:32 2008
@@ -118,7 +118,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.m_int()
+	$I0 = obj."m_int"()
     print $I0
     print "\n"
 .end
@@ -131,7 +131,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.m_uint()
+	$I0 = obj."m_uint"()
     print $I0
     print "\n"
 .end
@@ -144,7 +144,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.m_sbyte()
+	$I0 = obj."m_sbyte"()
     print $I0
     print "\n"
 .end
@@ -157,7 +157,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.m_byte()
+	$I0 = obj."m_byte"()
     print $I0
     print "\n"
 .end
@@ -170,7 +170,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.m_short()
+	$I0 = obj."m_short"()
     print $I0
     print "\n"
 .end
@@ -183,7 +183,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.m_ushort()
+	$I0 = obj."m_ushort"()
     print $I0
     print "\n"
 .end
@@ -196,7 +196,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.m_float()
+	$I0 = obj."m_float"()
     print $I0
     print "\n"
 .end
@@ -209,7 +209,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.m_double()
+	$I0 = obj."m_double"()
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/recursion.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/recursion.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/recursion.t	Sat Dec 13 19:46:32 2008
@@ -38,16 +38,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.factorial(0)
+	$I0 = obj."factorial"(0)
     print $I0
     print "\n"
-    $I0 = obj.factorial(1)
+    $I0 = obj."factorial"(1)
     print $I0
     print "\n"
-    $I0 = obj.factorial(2)
+    $I0 = obj."factorial"(2)
     print $I0
     print "\n"
-    $I0 = obj.factorial(10)
+    $I0 = obj."factorial"(10)
     print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/staticfield.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/staticfield.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/staticfield.t	Sat Dec 13 19:46:32 2008
@@ -49,7 +49,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	obj.set_x(26)
+	obj."set_x"(26)
     $P0 = new 'Integer'
     $P0 = get_hll_global [ "Testing" ; "Test" ], "x"
 	print $P0
@@ -65,7 +65,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	obj.set_y(16)
+	obj."set_y"(16)
     $P0 = new 'Integer'
     $P0 = get_hll_global [ "Testing" ; "Test" ], "y"
 	print $P0
@@ -80,9 +80,9 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	obj.set_x(26)
-	obj.set_y(16)
-    $I0 = obj.add()
+	obj."set_x"(26)
+	obj."set_y"(16)
+    $I0 = obj."add"()
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/staticmethod.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/staticmethod.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/staticmethod.t	Sat Dec 13 19:46:32 2008
@@ -66,7 +66,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	obj.test_no_args()
+	obj."test_no_args"()
     $P0 = new 'Integer'
     $P0 = get_hll_global [ "Testing" ; "Test" ], "x"
 	print $P0
@@ -82,7 +82,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	obj.test_args(10)
+	obj."test_args"(10)
     $P0 = new 'Integer'
     $P0 = get_hll_global [ "Testing" ; "Test" ], "y"
 	print $P0
@@ -97,7 +97,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-    $I0 = obj.test_ret()
+    $I0 = obj."test_ret"()
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/string.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/string.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/string.t	Sat Dec 13 19:46:32 2008
@@ -45,7 +45,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$S0 = obj.ret_string()
+	$S0 = obj."ret_string"()
 	print $S0
 .end
 PIR
@@ -57,7 +57,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$S0 = obj.ret_string_with_quotes()
+	$S0 = obj."ret_string_with_quotes"()
 	print $S0
 .end
 PIR
@@ -69,7 +69,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$S0 = obj.ret_string_with_quotes_s()
+	$S0 = obj."ret_string_with_quotes_s"()
 	print $S0
 .end
 PIR

Modified: branches/calling_conventions/languages/dotnet/t/switch.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/switch.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/switch.t	Sat Dec 13 19:46:32 2008
@@ -42,16 +42,16 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.test(0)
+	$I0 = obj."test"(0)
 	print $I0
 	print "\n"
-    $I0 = obj.test(1)
+    $I0 = obj."test"(1)
 	print $I0
 	print "\n"
-    $I0 = obj.test(2)
+    $I0 = obj."test"(2)
 	print $I0
 	print "\n"
-    $I0 = obj.test(3)
+    $I0 = obj."test"(3)
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/unsigned.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/unsigned.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/unsigned.t	Sat Dec 13 19:46:32 2008
@@ -72,19 +72,19 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.uge(500, 800)
+	$I0 = obj."uge"(500, 800)
 	print $I0
 	print "\n"
-	$I0 = obj.uge(42, -20202)
+	$I0 = obj."uge"(42, -20202)
 	print $I0
 	print "\n"
-	$I0 = obj.uge(800, 500)
+	$I0 = obj."uge"(800, 500)
 	print $I0
 	print "\n"
-	$I0 = obj.uge(-20202, 42)
+	$I0 = obj."uge"(-20202, 42)
 	print $I0
 	print "\n"
-	$I0 = obj.uge(5, 5)
+	$I0 = obj."uge"(5, 5)
 	print $I0
 	print "\n"
 .end
@@ -101,19 +101,19 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.ugt(500, 800)
+	$I0 = obj."ugt"(500, 800)
 	print $I0
 	print "\n"
-	$I0 = obj.ugt(42, -20202)
+	$I0 = obj."ugt"(42, -20202)
 	print $I0
 	print "\n"
-	$I0 = obj.ugt(800, 500)
+	$I0 = obj."ugt"(800, 500)
 	print $I0
 	print "\n"
-	$I0 = obj.ugt(-20202, 42)
+	$I0 = obj."ugt"(-20202, 42)
 	print $I0
 	print "\n"
-	$I0 = obj.ugt(5, 5)
+	$I0 = obj."ugt"(5, 5)
 	print $I0
 	print "\n"
 .end
@@ -130,19 +130,19 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.ule(500, 800)
+	$I0 = obj."ule"(500, 800)
 	print $I0
 	print "\n"
-	$I0 = obj.ule(42, -20202)
+	$I0 = obj."ule"(42, -20202)
 	print $I0
 	print "\n"
-	$I0 = obj.ule(800, 500)
+	$I0 = obj."ule"(800, 500)
 	print $I0
 	print "\n"
-	$I0 = obj.ule(-20202, 42)
+	$I0 = obj."ule"(-20202, 42)
 	print $I0
 	print "\n"
-	$I0 = obj.ule(5, 5)
+	$I0 = obj."ule"(5, 5)
 	print $I0
 	print "\n"
 .end
@@ -159,19 +159,19 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.ult(500, 800)
+	$I0 = obj."ult"(500, 800)
 	print $I0
 	print "\n"
-	$I0 = obj.ult(42, -20202)
+	$I0 = obj."ult"(42, -20202)
 	print $I0
 	print "\n"
-	$I0 = obj.ult(800, 500)
+	$I0 = obj."ult"(800, 500)
 	print $I0
 	print "\n"
-	$I0 = obj.ult(-20202, 42)
+	$I0 = obj."ult"(-20202, 42)
 	print $I0
 	print "\n"
-	$I0 = obj.ult(5, 5)
+	$I0 = obj."ult"(5, 5)
 	print $I0
 	print "\n"
 .end
@@ -188,10 +188,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.udiv(84,2)
+	$I0 = obj."udiv"(84,2)
 	print $I0
 	print "\n"
-	$I0 = obj.udiv(5,3)
+	$I0 = obj."udiv"(5,3)
 	print $I0
 	print "\n"
 .end
@@ -205,10 +205,10 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.urem(84,2)
+	$I0 = obj."urem"(84,2)
 	print $I0
 	print "\n"
-	$I0 = obj.urem(5,3)
+	$I0 = obj."urem"(5,3)
 	print $I0
 	print "\n"
 .end

Modified: branches/calling_conventions/languages/dotnet/t/valuetypes.t
==============================================================================
--- branches/calling_conventions/languages/dotnet/t/valuetypes.t	(original)
+++ branches/calling_conventions/languages/dotnet/t/valuetypes.t	Sat Dec 13 19:46:32 2008
@@ -104,7 +104,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.locals_1()
+	$I0 = obj."locals_1"()
 	print $I0
     print "\n"
 .end
@@ -117,7 +117,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.locals_2()
+	$I0 = obj."locals_2"()
 	print $I0
     print "\n"
 .end
@@ -130,7 +130,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.locals_3()
+	$I0 = obj."locals_3"()
 	print $I0
     print "\n"
 .end
@@ -143,7 +143,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.pass()
+	$I0 = obj."pass"()
 	print $I0
     print "\n"
 .end
@@ -156,7 +156,7 @@
 	.local pmc obj
 	load_bytecode "t.pbc"
 	obj = new [ "Testing" ; "Test" ]
-	$I0 = obj.pass_ref()
+	$I0 = obj."pass_ref"()
 	print $I0
     print "\n"
 .end

Modified: branches/calling_conventions/languages/ecmascript/src/parser/actions.pm
==============================================================================
--- branches/calling_conventions/languages/ecmascript/src/parser/actions.pm	(original)
+++ branches/calling_conventions/languages/ecmascript/src/parser/actions.pm	Sat Dec 13 19:46:32 2008
@@ -395,6 +395,10 @@
     make $( $/{$key} );
 }
 
+method regular_expression_literal ($/) {
+    make PAST::Val.new( :value( ~$<regular_expression_literal> ), :node($/) );
+}
+
 method this($/) {
     ## XXX wait for PAST support for 'self'
     ## load 'self' into a register; when this PAST node is used as a child somewhere
@@ -430,7 +434,7 @@
     make $( $/{$key} );
 }
 
-method assignment_expression($/) {
+method assignment_expression_X($/) {
     my $past := $( $<conditional_expression> );
 
     ## get number of lhs_expressions
@@ -546,8 +550,8 @@
     make $( $/{$key} );
 }
 
-method member_expression($/) {
-    my $member := $( $<member> );
+method member_expressionX($/) {
+    my $member := $( $<member_prefix> );
 
     ## if there are any arguments, $member is invoked with these arguments.
     if $<arguments> {
@@ -563,14 +567,14 @@
     }
 }
 
-method member($/) {
+method member_expression($/) {
     my $past := $( $<member_prefix> );
 
     ## for each index, $past acts as the invocant or main object on
     ## which some operation is executed; therefore $past must be the
     ## first child, so unshift it. Then, $past is assigned this result
     ## preparing for either the next index or as argument for 'make'.
-    for $<index> {
+    for $<member_suffix> {
         my $idx := $( $_ );
         $idx.unshift($past);
         $past := $idx;
@@ -583,7 +587,7 @@
     make $( $/{$key} );
 }
 
-method index($/, $key) {
+method member_suffix($/, $key) {
     ## get the index expression
     my $idx := $( $/{$key} );
 
@@ -681,7 +685,7 @@
     my $key  := $( $<property_name> );
 
     ## XXX my $key  := PAST::Val.new( $prop, :returns('String'), :node($/) );
-    my $val  := $( $<expression> );
+    my $val  := $( $<assignment_expression> );
 
     $val.named($key);
     make $val;
@@ -737,7 +741,8 @@
     make $( $/{$key} );
 }
 
-method logical_or_expression($/, $key) {
+#method logical_or_expression($/, $key) {
+method assignment_expression($/, $key) {
     ## Handle the operator table
     ##
     if ($key eq 'end') {

Modified: branches/calling_conventions/languages/ecmascript/src/parser/grammar.pg
==============================================================================
--- branches/calling_conventions/languages/ecmascript/src/parser/grammar.pg	(original)
+++ branches/calling_conventions/languages/ecmascript/src/parser/grammar.pg	Sat Dec 13 19:46:32 2008
@@ -51,6 +51,8 @@
 ##
 
 rule statement {
+##tewk  added function_expression, don't know if it should go here though
+    | <function_expression> {*}   #= function_expression
     | <expression_statement> {*}  #= expression_statement
     | <block> {*}                 #= block
     | <variable_statement> {*}    #= variable_statement
@@ -59,9 +61,9 @@
     | <while_statement> {*}       #= while_statement
     | <do_while_statement> {*}    #= do_while_statement
     | <for1_statement> {*}        #= for1_statement
-    #| <for2_statement> {*}        #= for2_statement
-    #| <for3_statement> {*}        #= for3_statement
-    #| <for4_statement> {*}        #= for4_statement
+    | <for2_statement> {*}        #= for2_statement
+    | <for3_statement> {*}        #= for3_statement
+    | <for4_statement> {*}        #= for4_statement
     | <continue_statement> {*}    #= continue_statement
     | <break_statement> {*}       #= break_statement
     | <return_statement> {*}      #= return_statement
@@ -171,6 +173,11 @@
     {*}
 }
 
+rule variable_declaration_list {
+    <variable_declaration> [',' <variable_declaration>]*
+    {*}
+}
+
 rule variable_declaration {
     <identifier> ['=' <assignment_expression>]?
     {*}
@@ -182,12 +189,14 @@
 
 rule expression_statement {
     ##<!['{'|'function']> ## is this necessary? isn't this fixed automatically by PGE?
+    #<!before \w>
+    #<!['{'|'function']>
     <expression> ';'
     {*}
 }
 
 token return_statement {
-    'return' \N <expression>?  ';'
+    'return' [\N <expression>]?  ';'
     {*}
 }
 
@@ -239,27 +248,73 @@
     | <identifier> {*}          #= identifier
     | <object_literal> {*}      #= object_literal
     | '(' <expression> ')' {*}  #= expression
+    | <regular_expression_literal> {*} #= regular_expression_literal
+}
+
+#RegularExpressionLiteral :: See section 7.8.5
+#/ RegularExpressionBody / RegularExpressionFlags
+token regular_expression_literal {
+  '/' <regular_expression_body> '/' <regular_expression_flags>? {*}
+}
+#RegularExpressionBody :: See section 7.8.5
+#RegularExpressionFirstChar RegularExpressionChars
+token regular_expression_body {
+  <regular_expression_first_char> <regular_expression_char>*
+}
+
+#RegularExpressionChars :: See section 7.8.5
+#[empty]
+#RegularExpressionChars RegularExpressionChar
+
+#RegularExpressionFirstChar :: See section 7.8.5
+#NonTerminator but not * or \ or /
+#BackslashSequence
+token regular_expression_first_char {
+  | <-[\n*\\/]>
+  | '\\' \N
+}
+
+#RegularExpressionChar :: See section 7.8.5
+#NonTerminator but not \ or /
+#BackslashSequence
+token regular_expression_char {
+  | <-[\n\\/]>
+  | '\\' \N
+}
+
+#BackslashSequence :: See section 7.8.5
+#\ NonTerminator
+#token backslash_sequence {
+#  '\\' \N
+#}
+#
+#token NonTerminator :: See section 7.8.5
+#SourceCharacter but not LineTerminator
+#token non_terminator {
+#  \N
+#}
+
+#RegularExpressionFlags :: See section 7.8.5
+#[empty]
+#RegularExpressionFlags IdentifierPart
+token regular_expression_flags {
+  <identifier_part>+
 }
 
 token this { 'this' {*} }
 
 rule array_literal {
-    '['
-    [
-    | <elision>
-    | <element_list> [',' <elision>]?
-    ]
-    ']'
+    '[' <elision>? <element_list>? [',' <elision>]?  ']'
     {*}
 }
 
 rule element_list {
-    <elision> <assignment_expression> [',' <elision> <assignment_expression>]*
+    <elision>? <assignment_expression> [',' <elision>? <assignment_expression>]*
     {*}
 }
 
 rule elision {
-    [$<comma>=',']* {*}
+    [$<comma>=',']+ {*}
 }
 
 token identifier {
@@ -268,6 +323,10 @@
     {*}
 }
 
+token <identifier_part> {
+    [<alpha>|<digit>|_]
+}
+
 token literal {
     | <str_literal> {*}            #= str_literal
     | <numeric_literal> {*}        #= numeric_literal
@@ -286,12 +345,12 @@
 token null { 'null' {*} }
 
 rule object_literal {
-    '{' [<property> [',' <property>]* ]? '}'
+    '{' [ <property> [',' <property> ]* ]? '}'
     {*}
 }
 
 rule property {
-    <property_name> ':' <expression>
+    <property_name> ':' <assignment_expression>
     {*}
 }
 
@@ -302,8 +361,8 @@
 }
 
 token numeric_literal {
-    | <decimal_literal> {*}        #= decimal_literal
     | <hex_integer_literal> {*}    #= hex_integer_literal
+    | <decimal_literal> {*}        #= decimal_literal
 }
 
 token hex_integer_literal {
@@ -313,13 +372,13 @@
 token hex_digits { <[0..9 a..f A..F]> }
 
 token decimal_literal {
-    | <integer_number> {*}         #= integer_number
     | <floating_point_number> {*}  #= floating_point_number
+    | <integer_number> {*}         #= integer_number
 }
 
 token floating_point_number {
     [
-    | <decimal_integer_literal> '.' <digit>+? <exponent_part>?
+    | <decimal_integer_literal> '.' <digit>* <exponent_part>?
     | '.' <digit>+ <exponent_part>?
     ]
     {*}
@@ -369,6 +428,23 @@
     <keyword> | <future_reserved_word>
 }
 
+token singlelinecomment { '//' \N* }    # end of line comment like Unix shell and C++
+
+token multilinecomment  { '/*' .*?  '*/' }         # C-like multiline comment
+
+token ws_all {
+    | \h
+    | \v
+    | <singlelinecomment>
+    | <multilinecomment>
+}
+
+# whitespace rule used implicity by rules
+token ws {
+    | <!ww> <ws_all>+
+    | <ws_all>*
+}
+
 #### whitespace
 #token ws {
 #    | <.whitespace>
@@ -390,43 +466,59 @@
 
 #token comment {
 #    <.singlelinecomment>
+#    <.multilinecomment>
 #}
 
 
 ## comments
 
-token multilinecomment {
-    '/*' .*? '*/'
-}
+#token multilinecomment {
+#    '/*' .*? '*/'
+#}
 
-token singlelinecomment {
-    '//' \N* \n
-}
+#token singlelinecomment {
+#    '//' \N* \n
+#}
 
 rule expression {
     <assignment_expression> [',' <assignment_expression>]*
     {*}
 }
 
-rule assignment_expression {
-    [<lhs_expression> <assignop>]* <conditional_expression>
-    {*}
-}
+#rule assignment_expression {
+#   [<lhs_expression> <assignop>]* <conditional_expression>
+#    {*}
+#}
 
-token assignop {
-    $<op>=['='|'*='|'/='|'%='|'+='|'-='|'<<='|'>>='|'>>>='|'&='|'^='|'|=']
-}
+#token assignop {
+#    $<op>=['='|'*='|'/='|'%='|'+='|'-='|'<<='|'>>='|'>>>='|'&='|'^='|'|=']
+#}
 
-rule conditional_expression {
-    <logical_or_expression>
-    ['?' $<then>=<assignment_expression>
-     ':' $<else>=<assignment_expression>]?
-    {*}
-}
+#rule conditional_expression {
+#    <logical_or_expression>
+#    ['?' $<then>=<assignment_expression>
+#     ':' $<else>=<assignment_expression>]?
+#    {*}
+#}
+
+rule 'assignment_expression' is optable { ... }
+
+proto 'infix:=' is precedence('1') is pasttype('copy') is lvalue(1)     { ... }
 
-rule 'logical_or_expression' is optable { ... }
+proto 'infix:+=' is equiv('infix:=') { ... } 
+proto 'infix:-=' is equiv('infix:=') { ... } 
+proto 'infix:/=' is equiv('infix:=') is pirop('div')        { ... } 
+proto 'infix:*=' is equiv('infix:=') is pirop('mul')        { ... } 
+proto 'infix:%=' is equiv('infix:=') is pirop('mul')        { ... } 
+proto 'infix:|=' is equiv('infix:=')    { ... } 
+proto 'infix:&=' is equiv('infix:=')    { ... } 
+proto 'infix:~=' is equiv('infix:=')    { ... } 
+proto infix:«>>=» is equiv('infix:=') is pirop('rsh')       { ... } 
+proto infix:«<<=» is equiv('infix:=') is pirop('lsh')       { ... } 
+proto infix:«>>>=» is equiv('infix:=') is pirop('rsh')       { ... } 
+proto 'ternary:? :' is tighter('infix:=') is pirop('if')      { ... } 
 
-proto 'infix:||'  is precedence('1') is pasttype('unless') { ... }
+proto 'infix:||'  is tighter('ternary:? :') is pasttype('unless') { ... }
 
 proto 'infix:&&'  is tighter('infix:||') is pasttype('if') { ... }
 
@@ -436,28 +528,28 @@
 
 proto 'infix:&'   is tighter('infix:^')  { ... }
 
-proto 'infix:=='  is tighter('infix:&')  { ... }
-proto 'infix:!='  is equiv('infix:==')   { ... }
-proto 'infix:===' is equiv('infix:==')   { ... }
-proto 'infix:!==' is equiv('infix:==')   { ... }
-
-proto 'infix:<'   is tighter('infix:==') { ... }
-proto 'infix:>'   is equiv('infix:<')    { ... }
-proto 'infix:<='  is equiv('infix:<')    { ... }
-proto 'infix:>='  is equiv('infix:<')    { ... }
-proto 'infix:instanceof' is equiv('infix:<') { ... }
-proto 'infix:in'  is equiv('infix:<')    { ... }
-
-proto 'infix:<<'  is tighter('infix:<')  { ... }
-proto 'infix:>>'  is equiv('infix:<<')   { ... }
-proto 'infix:>>>' is equiv('infix:<<')   { ... }
-
-proto 'infix:+' is tighter('infix:<<') is pirop('n_add') { ... }
-proto 'infix:-' is equiv('infix:+')    is pirop('n_sub') { ... }
-
-proto 'infix:*' is tighter('infix:+')  is pirop('n_mul') { ... }
-proto 'infix:/' is equiv('infix:*')    is pirop('n_div') { ... }
-proto 'infix:%' is equiv('infix:*')    is pirop('n_mod') { ... }
+proto 'infix:!='  is tighter('infix:&')  { ... }
+proto 'infix:=='  is equiv('infix:!=')   { ... }
+proto 'infix:===' is equiv('infix:!=')   { ... }
+proto 'infix:!==' is equiv('infix:!=')   { ... }
+
+proto infix:«<»   is tighter('infix:!=') { ... }
+proto infix:«>»   is equiv(infix:«<»)    { ... }
+proto infix:«<=»  is equiv(infix:«<»)    { ... }
+proto infix:«>=»  is equiv(infix:«<»)    { ... }
+proto 'infix:instanceof' is equiv(infix:«<») { ... }
+proto 'infix:in'  is equiv(infix:«<»)    { ... }
+
+proto infix:«<<»  is tighter(infix:«<»)  { ... }
+proto infix:«>>»  is equiv(infix:«<<»)   { ... }
+proto infix:«>>>» is equiv(infix:«<<»)   { ... }
+
+proto 'infix:+' is tighter(infix:«<<») is pirop('add') { ... }
+proto 'infix:-' is equiv('infix:+')    is pirop('sub') { ... }
+
+proto 'infix:*' is tighter('infix:+')  is pirop('mul') { ... }
+proto 'infix:/' is equiv('infix:*')    is pirop('div') { ... }
+proto 'infix:%' is equiv('infix:*')    is pirop('mod') { ... }
 
 
 rule unary_expression {
@@ -482,18 +574,20 @@
 }
 
 rule new_expression {
-    [$<sym>='new']* <member_expression>
+    [$<sym>='new']* <member_expression> <arguments>?
     {*}
 }
 
 rule member_expression {
-    [ 'new' <member> <arguments>
-    | <member>
-    ]
-    {*}
+    <member_prefix> <member_suffix>* {*}
+}
+
+rule member_prefix {
+    | <primary_expression> {*}      #= primary_expression
+    | <function_expression> {*}     #= function_expression
 }
 
-rule index {
+rule member_suffix {
     | '[' <expression> ']' {*} #= expression
     | <identifier_field> {*}   #= identifier_field
 }
@@ -502,24 +596,14 @@
     '.' <identifier> {*}
 }
 
-rule member {
-    <member_prefix> <index>*
-    {*}
-}
-
-rule member_prefix {
-    | <primary_expression> {*}      #= primary_expression
-    | <function_expression> {*}     #= function_expression
-}
-
 rule call_expression {
     <member_expression> <arguments> <post_call_expr>*
     {*}
 }
 
 rule post_call_expr {
-    | <arguments> {*}   #= arguments
-    | <index> {*}       #= index
+    | <arguments>     {*}   #= arguments
+    | <member_suffix> {*}   #= member_suffix
 }
 
 

Modified: branches/calling_conventions/languages/jako/lib/Jako/Construct/Declaration/Variable.pm
==============================================================================
--- branches/calling_conventions/languages/jako/lib/Jako/Construct/Declaration/Variable.pm	(original)
+++ branches/calling_conventions/languages/jako/lib/Jako/Construct/Declaration/Variable.pm	Sat Dec 13 19:46:32 2008
@@ -144,7 +144,7 @@
         my $reg = $compiler->temp_pmc();
 
         $compiler->emit("  $reg = new '$pmc_type'");
-        $compiler->emit("  global \"$name\" = $reg");
+        $compiler->emit("  set_global \"$name\", $reg");
     }
     else {
         $compiler->emit("  .local $type $name");

Modified: branches/calling_conventions/languages/jako/lib/Jako/Construct/Expression/Call.pm
==============================================================================
--- branches/calling_conventions/languages/jako/lib/Jako/Construct/Expression/Call.pm	(original)
+++ branches/calling_conventions/languages/jako/lib/Jako/Construct/Expression/Call.pm	Sat Dec 13 19:46:32 2008
@@ -158,7 +158,7 @@
         $compiler->emit("  $temp_pmc = $dest");
 
         my $dest_name = $dest_ident->value;
-        $compiler->emit("  global \"$dest_name\" = $temp_pmc");
+        $compiler->emit("  set_global \"$dest_name\", $temp_pmc");
     }
 
     return 1;

Modified: branches/calling_conventions/languages/jako/lib/Jako/Construct/Expression/Value/Identifier.pm
==============================================================================
--- branches/calling_conventions/languages/jako/lib/Jako/Construct/Expression/Value/Identifier.pm	(original)
+++ branches/calling_conventions/languages/jako/lib/Jako/Construct/Expression/Value/Identifier.pm	Sat Dec 13 19:46:32 2008
@@ -67,7 +67,7 @@
         my $temp_pmc = $compiler->temp_pmc();
 
         $compiler->emit("  $temp_pmc = new '$pmc_type'");
-        $compiler->emit("  $temp_pmc = global \"$ident_name\"");
+        $compiler->emit("  $temp_pmc = get_global \"$ident_name\"");
         $compiler->emit("  $temp_reg = $temp_pmc");
 
         return $temp_reg;

Modified: branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Arithmetic.pm
==============================================================================
--- branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Arithmetic.pm	(original)
+++ branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Arithmetic.pm	Sat Dec 13 19:46:32 2008
@@ -164,7 +164,7 @@
 
         $compiler->emit("  $pmc_reg = new '$pmc_type'");
         $compiler->emit("  $pmc_reg = $dest");
-        $compiler->emit("  global \"$dest_name\" = $pmc_reg");
+        $compiler->emit("  set_global \"$dest_name\", $pmc_reg");
     }
 
     return 1;

Modified: branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Assign.pm
==============================================================================
--- branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Assign.pm	(original)
+++ branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Assign.pm	Sat Dec 13 19:46:32 2008
@@ -60,7 +60,7 @@
 
         $compiler->emit("  $temp_pmc = new '$pmc_type'");
         $compiler->emit("  $temp_pmc = $right");
-        $compiler->emit("  global \"$left\" = $temp_pmc");
+        $compiler->emit("  set_global \"$left\", $temp_pmc");
     }
     else {
         $compiler->emit("  $left = $right");

Modified: branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Concat.pm
==============================================================================
--- branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Concat.pm	(original)
+++ branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Concat.pm	Sat Dec 13 19:46:32 2008
@@ -113,7 +113,7 @@
 
         $compiler->emit("  $pmc_reg = new '$pmc_type'");
         $compiler->emit("  $pmc_reg = $dest");
-        $compiler->emit("  global \"$dest_name\" = $pmc_reg");
+        $compiler->emit("  set_global \"$dest_name\", $pmc_reg");
     }
 
     return 1;

Modified: branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Decrement.pm
==============================================================================
--- branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Decrement.pm	(original)
+++ branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Decrement.pm	Sat Dec 13 19:46:32 2008
@@ -57,7 +57,7 @@
         my $pmc_reg  = $compiler->temp_pmc();
         $compiler->emit("  $pmc_reg = new '$pmc_type'");
         $compiler->emit("  $pmc_reg = $ident");
-        $compiler->emit("  global \"$ident_name\" = $pmc_reg");
+        $compiler->emit("  set_global \"$ident_name\", $pmc_reg");
     }
 
     return 1;

Modified: branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Increment.pm
==============================================================================
--- branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Increment.pm	(original)
+++ branches/calling_conventions/languages/jako/lib/Jako/Construct/Statement/Increment.pm	Sat Dec 13 19:46:32 2008
@@ -57,7 +57,7 @@
         my $pmc_reg  = $compiler->temp_pmc();
         $compiler->emit("  $pmc_reg = new '$pmc_type'");
         $compiler->emit("  $pmc_reg = $ident");
-        $compiler->emit("  global \"$ident_name\" = $pmc_reg");
+        $compiler->emit("  set_global \"$ident_name\", $pmc_reg");
     }
 
     return 1;

Modified: branches/calling_conventions/languages/lisp/system.pir
==============================================================================
--- branches/calling_conventions/languages/lisp/system.pir	(original)
+++ branches/calling_conventions/languages/lisp/system.pir	Sat Dec 13 19:46:32 2008
@@ -413,7 +413,7 @@
   .CAR(fname2,args)
    fname1 = fname2
 
-   open fd, fname1, "<"
+   open fd, fname1, "r"
    unless fd, OPEN_FAILED
 
   .STREAM(stream, fd)

Modified: branches/calling_conventions/languages/lua/luac2pir.pir
==============================================================================
--- branches/calling_conventions/languages/lua/luac2pir.pir	(original)
+++ branches/calling_conventions/languages/lua/luac2pir.pir	Sat Dec 13 19:46:32 2008
@@ -35,10 +35,9 @@
     if argc != 2 goto USAGE
     progname = shift argv
     filename = shift argv
+    push_eh _handler
     content = load_file(filename)
-    unless content goto L1
     .local pmc script
-    push_eh _handler
     new $P0, 'LuaBytecode'
     script = $P0.'undump'(content)
     .local string gen_pir
@@ -46,18 +45,16 @@
     save_pir(gen_pir, filename)
     pop_eh
     end
+  USAGE:
+    printerr "Usage: parrot luac2pir.pir filename\n"
+    exit -1
   _handler:
     .local pmc e
     .local string msg
     .get_results (e)
     msg = e
-    print msg
-    print "\n"
-  L1:
+    say msg
     end
-  USAGE:
-    printerr "Usage: parrot luad.pir filename\n"
-    exit -1
 .end
 
 .sub 'load_file' :anon
@@ -68,37 +65,44 @@
     push_eh _handler
     content = fh.'readall'(filename)
     pop_eh
-    if content goto L1
-    $S0 = err
-    print "Can't slurp '"
-    print filename
-    print "' ("
-    print $S0
-    print ")\n"
-  L1:
-  _handler:
     .return (content)
+  _handler:
+    .local pmc e
+    .get_results (e)
+    $S0 = "Can't slurp '"
+    $S0 .= filename
+    $S0 .= "' ("
+    $S1 = err
+    $S0 .= $S1
+    $S0 .= ")\n"
+    e = $S0
+    rethrow e
 .end
 
-.sub 'save_pir' :anon
+.sub 'save_pir'
     .param string gen_pir
     .param string filename
     .local string output
     .local pmc fh
+    fh = new 'FileHandle'
     output = concat filename, '.pir'
-    fh = open output, '>'
-    if fh goto L1
-    $S0 = err
-    print "Can't open '"
-    print output
-    print "' ("
-    print $S0
-    print ")\n"
-    goto L2
-  L1:
-    print fh, gen_pir
-    close fh
-  L2:
+    push_eh _handler
+    fh.'open'(output, 'w')
+    pop_eh
+    fh.'print'(gen_pir)
+    fh.'close'()
+    .return ()
+  _handler:
+    .local pmc e
+    .get_results (e)
+    $S0 = "Can't open '"
+    $S0 .= output
+    $S0 .= "' ("
+    $S1 = err
+    $S0 .= $S1
+    $S0 .= ")\n"
+    e = $S0
+    rethrow e
 .end
 
 .include 'languages/lua/src/lib/luabytecode.pir'

Modified: branches/calling_conventions/languages/lua/luad.pir
==============================================================================
--- branches/calling_conventions/languages/lua/luad.pir	(original)
+++ branches/calling_conventions/languages/lua/luad.pir	Sat Dec 13 19:46:32 2008
@@ -35,10 +35,9 @@
     if argc != 2 goto USAGE
     progname = shift argv
     filename = shift argv
+    push_eh _handler
     content = load_file(filename)
-    unless content goto L1
     .local pmc script
-    push_eh _handler
     new $P0, 'LuaBytecode'
     script = $P0.'undump'(content)
     .local string basename
@@ -49,18 +48,15 @@
     script.'brief'(basename)
     pop_eh
     end
+  USAGE:
+    printerr "Usage: parrot luad.pir filename\n"
+    exit -1
   _handler:
     .local pmc e
     .local string msg
     .get_results (e)
     msg = e
-    print msg
-    print "\n"
-  L1:
-    end
-  USAGE:
-    printerr "Usage: parrot luad.pir filename\n"
-    exit -1
+    say msg
 .end
 
 .sub 'load_file'
@@ -71,16 +67,16 @@
     push_eh _handler
     content = fh.'readall'(filename)
     pop_eh
-    if content goto L1
-    $S0 = err
-    print "Can't slurp '"
-    print filename
-    print "' ("
-    print $S0
-    print ")\n"
-  L1:
-  _handler:
     .return (content)
+  _handler:
+    $S0 = "Can't slurp '"
+    $S0 .= filename
+    $S0 .= "' ("
+    $S1 = err
+    $S0 .= $S1
+    $S0 .= ")\n"
+    printerr $S0
+    .return ('')
 .end
 
 .include 'languages/lua/src/lib/luabytecode.pir'

Modified: branches/calling_conventions/languages/lua/src/lib/complex.pir
==============================================================================
--- branches/calling_conventions/languages/lua/src/lib/complex.pir	(original)
+++ branches/calling_conventions/languages/lua/src/lib/complex.pir	Sat Dec 13 19:46:32 2008
@@ -221,8 +221,9 @@
     .param pmc z :optional
     .param pmc extra :slurpy
     $P1 = get(1, z)
-    $P0 = new $P1
-    .tailcall newcomplex($P0)
+    $P0 = neg $P1
+    $P0 = newcomplex($P0)
+    .return ($P0)
 .end
 
 

Modified: branches/calling_conventions/languages/lua/src/lib/lfs.pir
==============================================================================
--- branches/calling_conventions/languages/lua/src/lib/lfs.pir	(original)
+++ branches/calling_conventions/languages/lua/src/lib/lfs.pir	Sat Dec 13 19:46:32 2008
@@ -81,7 +81,7 @@
     .param pmc fh
     .param string funcname
     .local pmc res
-    res = lua_checkudata(narg, fh, 'ParrotIO')
+    res = lua_checkudata(narg, fh, 'FileHandle')
     unless null res goto L1
     lua_error(funcname, ": closed file")
   L1:
@@ -495,10 +495,12 @@
     .return (res)
   _handler:
     .local pmc e
-    .local string s
+    .local string msg
     .get_results (e)
-    s = e
-    lua_error("cannot open ", $S0, ": ", s)
+    msg = e
+    $S0 = lua_x_error("cannot open ", $S0, ": ", msg)
+    e = $S0
+    rethrow e
 .end
 
 .sub 'dir_aux' :anon :lex :outer(dir)

Modified: branches/calling_conventions/languages/lua/src/lib/luaaux.pir
==============================================================================
--- branches/calling_conventions/languages/lua/src/lib/luaaux.pir	(original)
+++ branches/calling_conventions/languages/lua/src/lib/luaaux.pir	Sat Dec 13 19:46:32 2008
@@ -27,15 +27,24 @@
 
 This function never returns.
 
+CAUTION: don't used it in an exception handler, but lua_x_argerror & rethrow.
+
 =cut
 
 .sub 'lua_argerror'
     .param int narg
     .param pmc extramsg :slurpy
+    $S0 = lua_x_argerror(narg, extramsg :flat)
+    lua_error($S0)
+.end
+
+.sub 'lua_x_argerror'
+    .param int narg
+    .param pmc extramsg :slurpy
     $S1 = narg
     new $P0, 'Lua'
     $S0 = $P0.'caller'()
-    lua_error("bad argument #", $S1, " to '", $S0, "' (", extramsg :flat, ")")
+    .tailcall lua_x_error("bad argument #", $S1, " to '", $S0, "' (", extramsg :flat, ")")
 .end
 
 
@@ -199,14 +208,21 @@
 
 This function never returns.
 
+CAUTION: don't used it in an exception handler, but lua_x_error & rethrow.
+
 =cut
 
 .sub 'lua_error'
     .param pmc message :slurpy
-    $S0 = join '', message
+    $S0 = lua_x_error(message :flat)
     die $S0
 .end
 
+.sub 'lua_x_error'
+    .param pmc message :slurpy
+    $S0 = join '', message
+    .return ($S0)
+.end
 
 =item C<lua_findtable (t, fname)>
 
@@ -651,21 +667,22 @@
     goto L2
   L1:
     chunkname = filename
-    f = open filename, '<'
-    unless f goto L3
+    f = new 'FileHandle'
+    push_eh _handler
+    f.'open'(filename, 'r')
+    pop_eh
   L2:
     $S0 = f.'readall'()
     if filename == '' goto L4
-    close f
+    f.'close'()
   L4:
     .tailcall lua_load($S0, chunkname)
-  L3:
+  _handler:
     $S0 = 'cannot open '
     $S0 .= filename
     $S0 .= ': '
     $S1 = err
     $S0 .= $S1
-  L5:
     null $P0
     .return ($P0, $S0)
 .end
@@ -970,14 +987,14 @@
     .return (0, $P0)
   _handler:
     .local pmc ex
-    .local string msg
     .get_results (ex)
-    msg = ex
     $P0 = getattribute ex, 'severity'
     if null $P0 goto L1
     $I0 = $P0
     if $I0 == .EXCEPT_EXIT goto L2
   L1:
+    .local string msg
+    msg = ex
     .local int lineno
     .local string traceback, where
     (traceback, where) = 'traceback'()
@@ -992,6 +1009,9 @@
 .end
 
 .sub 'traceback'
+    # dummy implementation
+    .return ("stack traceback:\n\tdummy\n", "_._:0:")
+    # previous one that segfaults (see RT #60206)
     .local pmc obj
     .local string traceback, where
     new obj, 'Lua'

Modified: branches/calling_conventions/languages/lua/src/lib/luabasic.pir
==============================================================================
--- branches/calling_conventions/languages/lua/src/lib/luabasic.pir	(original)
+++ branches/calling_conventions/languages/lua/src/lib/luabasic.pir	Sat Dec 13 19:46:32 2008
@@ -291,7 +291,11 @@
   L2:
     .return (f)
   _handler:
-    lua_argerror(1, "invalid level")
+    .local pmc e
+    .get_results (e)
+    $S0 = lua_x_argerror(1, "invalid level")
+    e = $S0
+    rethrow e
 .end
 
 =item C<getmetatable (object)>

Modified: branches/calling_conventions/languages/lua/src/lib/luabytecode.pir
==============================================================================
--- branches/calling_conventions/languages/lua/src/lib/luabytecode.pir	(original)
+++ branches/calling_conventions/languages/lua/src/lib/luabytecode.pir	Sat Dec 13 19:46:32 2008
@@ -331,9 +331,7 @@
     pir = "    .local pmc k_"
     $S0 = i
     pir .= $S0
-    pir .= "\n    new k_"
-    pir .= $S0
-    pir .= ", 'LuaNumber'\n    set k_"
+    pir .= "\n    box k_"
     pir .= $S0
     pir .= ", "
     $S0 = self
@@ -362,9 +360,7 @@
     pir = "    .local pmc k_"
     $S0 = i
     pir .= $S0
-    pir .= "\n    new k_"
-    pir .= $S0
-    pir .= ", 'LuaString'\n    set k_"
+    pir .= "\n    box k_"
     pir .= $S0
     pir .= ", \""
     $S0 = self

Modified: branches/calling_conventions/languages/lua/src/lib/luabytecode.rules
==============================================================================
--- branches/calling_conventions/languages/lua/src/lib/luabytecode.rules	(original)
+++ branches/calling_conventions/languages/lua/src/lib/luabytecode.rules	Sat Dec 13 19:46:32 2008
@@ -986,8 +986,7 @@
         format => 'ABC',
         synopsis => 'R(A)[(C-1)*FPF+i] := R(A+i), 1 <= i <= B',
         pir => <<'PIR',
-    ${INS} = concat "  new ${PTEMP}0, 'LuaNumber'\n"
-    ${INS} = concat "  set ${PTEMP}0, "
+    ${INS} = concat "  box ${PTEMP}0, "
     $I0 = ${C} - 1
     $I0 *= ${FPF}
     inc $I0

Modified: branches/calling_conventions/languages/lua/src/lib/luafile.pir
==============================================================================
--- branches/calling_conventions/languages/lua/src/lib/luafile.pir	(original)
+++ branches/calling_conventions/languages/lua/src/lib/luafile.pir	Sat Dec 13 19:46:32 2008
@@ -24,7 +24,7 @@
     _lua__GLOBAL = get_hll_global '_G'
 
     .local pmc _file
-    _file = lua_newmetatable('ParrotIO')
+    _file = lua_newmetatable('FileHandle')
 
     new $P1, 'LuaString'
     set $P1, '__index'

Modified: branches/calling_conventions/languages/lua/src/lib/luaio.pir
==============================================================================
--- branches/calling_conventions/languages/lua/src/lib/luaio.pir	(original)
+++ branches/calling_conventions/languages/lua/src/lib/luaio.pir	Sat Dec 13 19:46:32 2008
@@ -150,60 +150,10 @@
 .end
 
 
-.sub 'getmode' :anon
-    .param string mode
-    .local string res
-    unless mode == 'r' goto L1
-    res = '<'
-    goto L9
-  L1:
-    unless mode == 'w' goto L2
-    res = '>'
-    goto L9
-  L2:
-    unless mode == 'a' goto L3
-    res = '>>'
-    goto L9
-  L3:
-    unless mode == 'r+' goto L4
-    res = '+<'
-    goto L9
-  L4:
-    unless mode == 'w+' goto L5
-    res = '+>'
-    goto L9
-  L5:
-    unless mode == 'a+' goto L6
-    res = '+>>'
-    goto L9
-  L6:
-    res = ''
-  L9:
-    .return (res)
-.end
-
-
-.sub 'pgetmode' :anon
-    .param string mode
-    .local string res
-    unless mode == 'r' goto L1
-    res = '-|'
-    goto L9
-  L1:
-    unless mode == 'w' goto L2
-    res = '|-'
-    goto L9
-  L2:
-    res = ''
-  L9:
-    .return (res)
-.end
-
-
 .sub 'newfile' :anon
     .param pmc f
     .local pmc file
-    $P0 = lua_getmetatable('ParrotIO')
+    $P0 = lua_getmetatable('FileHandle')
     file = lua_newuserdata(f, $P0)
     .return (file)
 .end
@@ -309,7 +259,7 @@
     mt = file.'get_metatable'()
     .local pmc _lua__REGISTRY
     _lua__REGISTRY = get_hll_global '_REGISTRY'
-    .const 'LuaString' key = 'ParrotIO'
+    .const 'LuaString' key = 'FileHandle'
     mt_file = _lua__REGISTRY[key]
     unless mt == mt_file goto L1
     res = getattribute file, 'data'
@@ -359,7 +309,8 @@
     unless $I0 goto L1
     .local pmc toclose
     toclose = find_lex 'upvar_toclose'
-    unless toclose goto L1
+    $I0 = toclose
+    unless $I0 goto L1
     aux_close(file)
   L1:
     .return (res)
@@ -423,10 +374,10 @@
     $I1 = isa file, 'LuaString'
     unless $I1 goto L2
     $S1 = file
-    f = open $S1, '<'
-    unless null f goto L3
-    lua_argerror(1, file)
-  L3:
+    f = new 'FileHandle'
+    push_eh _handler
+    f.'open'($S1, 'r')
+    pop_eh
     $P0 = newfile(f)
     setiofile(IO_INPUT, $P0)
     goto L1
@@ -437,6 +388,12 @@
   L1:
     res = getiofile(IO_INPUT)
     .return (res)
+  _handler:
+    .local pmc e
+    .get_results (e)
+    $S0 = lua_x_argerror(1, file)
+    e = $S0
+    rethrow e
 .end
 
 
@@ -470,12 +427,18 @@
     .tailcall $P0(file)
   L1:
     $S1 = lua_checkstring(1, filename)
-    f = open $S1, '<'
-    unless null f goto L2
-    lua_argerror(1, $S1)
-  L2:
+    f = new 'FileHandle'
+    push_eh _handler
+    f.'open'($S1, 'r')
+    pop_eh
     file = newfile(f)
     .tailcall aux_lines(file, 1)
+  _handler:
+    .local pmc e
+    .get_results (e)
+    $S0 = lua_x_argerror(1, $S1)
+    e = $S0
+    rethrow e
 .end
 
 
@@ -529,13 +492,13 @@
     .local pmc res
     $S1 = lua_checkstring(1, filename)
     $S2 = lua_optstring(2, mode, 'r')
-    $S0 = getmode($S2)
-    if $S0 == '' goto L1
-    f = open $S1, $S0
-    unless f goto L1
+    f = new 'FileHandle'
+    push_eh _handler
+    f.'open'($S1, $S2)
+    pop_eh
     res = newfile(f)
     .return (res)
-  L1:
+  _handler:
     new res, 'LuaNil'
     .local pmc msg
     new msg, 'LuaString'
@@ -563,10 +526,10 @@
     $I1 = isa file, 'LuaString'
     unless $I1 goto L2
     $S1 = file
-    f = open $S1, '>'
-    unless null f goto L3
-    lua_argerror(1, file)
-  L3:
+    f = new 'FileHandle'
+    push_eh _handler
+    f.'open'($S1, 'w')
+    pop_eh
     $P0 = newfile(f)
     setiofile(IO_OUTPUT, $P0)
     goto L1
@@ -576,6 +539,12 @@
   L1:
     res = getiofile(IO_OUTPUT)
     .return (res)
+  _handler:
+    .local pmc e
+    .get_results (e)
+    $S0 = lua_x_argerror(1, file)
+    e = $S0
+    rethrow e
 .end
 
 
@@ -587,6 +556,8 @@
 
 This function is system dependent and is not available on all platforms.
 
+NOT YET IMPLEMENTED.
+
 =cut
 
 .sub 'popen'
@@ -597,13 +568,12 @@
     .local pmc res
     $S1 = lua_checkstring(1, prog)
     $S2 = lua_optstring(2, mode, 'r')
-    $S0 = pgetmode($S2)
-    if $S0 == '' goto L1
-    f = open $S1, $S0
-    unless f goto L1
+    not_implemented()
+#    f = open $S1, $S0
+#    unless f goto L1
     res = newfile(f)
     .return (res)
-  L1:
+  _handler:
     new res, 'LuaNil'
     .local pmc msg
     new msg, 'LuaString'
@@ -636,6 +606,8 @@
 Returns a handle for a temporary file. This file is open in update mode and
 it is automatically removed when the program ends.
 
+TODO: rewrite with a StringHandle
+
 =cut
 
 .sub 'tmpfile'
@@ -644,13 +616,15 @@
     .local pmc res
     new $P0, 'Lua'
     $S0 = $P0.'tmpname'()
-    f = open $S0, '+>'
-    unless f goto L1
+    f = new 'FileHandle'
+    push_eh _handler
+    f.'open'($S0, 'w+')
+    pop_eh
     res = newfile(f)
     new $P0, 'OS'
     $P0.'rm'($S0)
     .return (res)
-  L1:
+  _handler:
     new res, 'LuaNil'
     .local pmc msg
     new msg, 'LuaString'
@@ -681,7 +655,7 @@
     mt = obj.'get_metatable'()
     .local pmc _lua__REGISTRY
     _lua__REGISTRY = get_hll_global '_REGISTRY'
-    .const 'LuaString' key = 'ParrotIO'
+    .const 'LuaString' key = 'FileHandle'
     mt_file = _lua__REGISTRY[key]
     if mt == mt_file goto L1
     new res, 'LuaNil'
@@ -733,7 +707,7 @@
     .local pmc f
     .local pmc res
     f = tofilep(file)
-    close f
+    f.'close'()
     null f
     setattribute file, 'data', f
     new res, 'LuaBoolean'

Modified: branches/calling_conventions/languages/lua/src/lib/luaperl.pir
==============================================================================
--- branches/calling_conventions/languages/lua/src/lib/luaperl.pir	(original)
+++ branches/calling_conventions/languages/lua/src/lib/luaperl.pir	Sat Dec 13 19:46:32 2008
@@ -53,43 +53,49 @@
     .param string code
     .param string filename
     .local pmc fh
-    fh = open filename, '>'
-    if fh goto L1
-    $S0 = err
-    print "Can't open '"
-    print filename
-    print "' ("
-    print $S0
-    print ")\n"
-    goto L2
-  L1:
-    print fh, code
-    close fh
-  L2:
+    fh = new 'FileHandle'
+    push_eh _handler
+    fh.'open'(filename, 'w')
+    pop_eh
+    fh.'print'(code)
+    fh.'close'()
+    .return ()
+  _handler:
+    .local pmc e
+    .get_results (e)
+    $S0 = "Can't open '"
+    $S0 .= filename
+    $S0 .= "' ("
+    $S1 = err
+    $S0 .= $S1
+    $S0 .= ")\n"
+    e = $S0
+    rethrow e
 .end
 
 
 .sub 'load_script' :anon
     .param string filename
-    .local pmc pio
+    .local pmc fh
     .local string content
-    pio = new 'ParrotIO'
+    fh = new 'FileHandle'
     push_eh _handler
-    content = pio.'readall'(filename)
+    content = fh.'readall'(filename)
     pop_eh
-    if content goto L1
-    $S0 = err
-    print "Can't slurp '"
-    print filename
-    print "' ("
-    print $S0
-    print ")\n"
-  L1:
-  _handler:
     .return (content)
+  _handler:
+    .local pmc e
+    .get_results (e)
+    $S0 = "Can't slurp '"
+    $S0 .= filename
+    $S0 .= "' ("
+    $S1 = err
+    $S0 .= $S1
+    $S0 .= ")\n"
+    e = $S0
+    rethrow e
 .end
 
-
 .sub 'compile_file' :anon
     .param string filename
     .const string out = 'luac.out'
@@ -105,18 +111,22 @@
     $S0 .= out
     $I0 = spawnw $S0
     .local string pir
+    push_eh _handler
     pir = load_script($S1)
-    if pir goto L1
-    $P0 = new 'ParrotIO'
-    $S0 = $P0.'readall'(out)
-    unlink(out)  # cleaning up the temporary file
-    die $S0
-  L1:
+    pop_eh
     unlink(out)  # cleaning up the temporary file
     .local pmc pir_comp
     pir_comp = compreg 'PIR'
     $P0 = pir_comp(pir)
     .return ($P0)
+  _handler:
+    .local pmc e
+    .get_results (e)
+    $P0 = new 'FileHandle'
+    $S0 = $P0.'readall'(out)
+    printerr $S0
+    unlink(out)  # cleaning up the temporary file
+    rethrow e
 .end
 
 

Modified: branches/calling_conventions/languages/lua/src/pmc/luauserdata.pmc
==============================================================================
--- branches/calling_conventions/languages/lua/src/pmc/luauserdata.pmc	(original)
+++ branches/calling_conventions/languages/lua/src/pmc/luauserdata.pmc	Sat Dec 13 19:46:32 2008
@@ -204,7 +204,7 @@
 =cut
 
 */
-    MULTI INTVAL is_equal(LuaUserdate value) {
+    MULTI INTVAL is_equal(LuaUserdata value) {
         PMC *meth = find_meth(INTERP, SELF, "__eq");
         if (meth) {
             PMC *retval = Parrot_runops_fromc_args(INTERP, meth, "PPP",

Modified: branches/calling_conventions/languages/lua/t/basic.t
==============================================================================
--- branches/calling_conventions/languages/lua/t/basic.t	(original)
+++ branches/calling_conventions/languages/lua/t/basic.t	Sat Dec 13 19:46:32 2008
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2005-2007, The Perl Foundation.
+# Copyright (C) 2005-2008, The Perl Foundation.
 # $Id$
 
 =head1 NAME

Modified: branches/calling_conventions/languages/lua/t/complex.t
==============================================================================
--- branches/calling_conventions/languages/lua/t/complex.t	(original)
+++ branches/calling_conventions/languages/lua/t/complex.t	Sat Dec 13 19:46:32 2008
@@ -22,7 +22,7 @@
 use FindBin;
 use lib "$FindBin::Bin";
 
-use Parrot::Test tests => 25;
+use Parrot::Test tests => 26;
 use Parrot::Config;
 use Test::More;
 use Parrot::Test::Lua;
@@ -85,6 +85,14 @@
 /^[^:]+: [^:]+:\d+: bad argument #1 to 'real' \(number expected, got string\)\nstack traceback:\n/
 OUTPUT
 
+language_output_is( 'lua', << 'CODE', << 'OUTPUT', 'complex __unm' );
+require 'complex'
+z = complex.new(3, 4)
+print(-z)
+CODE
+-3-4i
+OUTPUT
+
 language_output_is( 'lua', << 'CODE', << 'OUTPUT', 'function abs' );
 require 'complex'
 z = complex.new(3, 4)

Modified: branches/calling_conventions/languages/lua/t/io.t
==============================================================================
--- branches/calling_conventions/languages/lua/t/io.t	(original)
+++ branches/calling_conventions/languages/lua/t/io.t	Sat Dec 13 19:46:32 2008
@@ -184,7 +184,7 @@
 DATA
 close $Y;
 
-language_output_is( 'lua', << 'CODE', << 'OUTPUT', 'io:read *number', params => '< number.txt' );
+language_output_is( 'lua', << 'CODE', << 'OUTPUT', 'io:read *number', params => '< number.txt', todo => 'can\'t peek stdin, see RT #61290');
 while true do
     local n1, n2, n3 = io.read("*number", "*number", "*number")
     if not n1 then break end

Modified: branches/calling_conventions/languages/lua/t/mathx.t
==============================================================================
--- branches/calling_conventions/languages/lua/t/mathx.t	(original)
+++ branches/calling_conventions/languages/lua/t/mathx.t	Sat Dec 13 19:46:32 2008
@@ -292,10 +292,8 @@
 language_output_is( 'lua', << 'CODE', << 'OUTPUT', 'function signbit' );
 require 'mathx'
 print(math.signbit(3.14))
-print(math.signbit(-3.14))
 CODE
 0
-1
 OUTPUT
 
 language_output_like( 'lua', << 'CODE', << 'OUTPUT', 'function trunc' );

Modified: branches/calling_conventions/languages/lua/t/package.t
==============================================================================
--- branches/calling_conventions/languages/lua/t/package.t	(original)
+++ branches/calling_conventions/languages/lua/t/package.t	Sat Dec 13 19:46:32 2008
@@ -213,7 +213,7 @@
 .sub 'luaopen_mod_foo'
 #    print "luaopen_mod_foo\n"
     .local pmc _lua__GLOBAL
-    _lua__GLOBAL = global '_G'
+    _lua__GLOBAL = get_hll_global '_G'
     new $P1, 'LuaString'
     .local pmc _mod_foo
     new _mod_foo, 'LuaTable'

Modified: branches/calling_conventions/languages/ook/ook.pasm
==============================================================================
--- branches/calling_conventions/languages/ook/ook.pasm	(original)
+++ branches/calling_conventions/languages/ook/ook.pasm	Sat Dec 13 19:46:32 2008
@@ -9,7 +9,7 @@
 # First, read the file.
         get_params "0", P5
         set S20, P5[1]      # Name of the Ook source.
-        open P20, S20, "<"  # P20 = file descriptor
+        open P20, S20, "r"  # P20 = file descriptor
         set S21, ""         # S21 = accumulator
 READ:
         read S22, P20, 256

Modified: branches/calling_conventions/languages/perl6/Test.pm
==============================================================================
--- branches/calling_conventions/languages/perl6/Test.pm	(original)
+++ branches/calling_conventions/languages/perl6/Test.pm	Sat Dec 13 19:46:32 2008
@@ -147,12 +147,12 @@
 
 multi sub is_deeply($this, $that, $reason) {
     my $val = _is_deeply( $this, $that );
-    proclaim( $val, $reason, $this.perl, $that.perl );
+    proclaim($val, $reason);
 }
 
 multi sub is_deeply($this, $that) {
     my $val = _is_deeply( $this, $that );
-    proclaim( $val, '', $this.perl, $that.perl );
+    proclaim($val, '');
 }
 
 sub _is_deeply( $this, $that) {

Modified: branches/calling_conventions/languages/perl6/config/makefiles/root.in
==============================================================================
--- branches/calling_conventions/languages/perl6/config/makefiles/root.in	(original)
+++ branches/calling_conventions/languages/perl6/config/makefiles/root.in	Sat Dec 13 19:46:32 2008
@@ -51,6 +51,7 @@
 
 BUILTINS_PIR = \
   src/classes/Object.pir \
+  src/classes/Abstraction.pir \
   src/classes/Protoobject.pir \
   src/classes/Positional.pir \
   src/classes/Any.pir \

Modified: branches/calling_conventions/languages/perl6/docs/spectest-progress.csv
==============================================================================
--- branches/calling_conventions/languages/perl6/docs/spectest-progress.csv	(original)
+++ branches/calling_conventions/languages/perl6/docs/spectest-progress.csv	Sat Dec 13 19:46:32 2008
@@ -1,203 +1,207 @@
-"date","revision","files","test","pass","fail","todo","skip","specplan"
-"2008-05-22 00:00",27739,31,564,223,0,0,341,2905
-"2008-05-23 00:00",27763,32,569,228,0,0,341,2905
-"2008-05-24 00:00",27775,32,569,228,0,0,341,2915
-"2008-05-25 00:00",27796,39,666,310,0,0,356,2915
-"2008-05-26 00:00",27812,39,666,310,0,0,356,2915
-"2008-05-27 00:00",27839,39,666,310,0,0,356,2956
-"2008-05-28 00:00",27868,39,666,317,0,0,349,2964
-"2008-05-29 00:00",27910,43,774,394,4,15,361,3011
-"2008-05-30 00:00",27933,43,775,415,0,15,345,3012
-"2008-05-31 00:00",27953,43,775,415,0,15,345,3014
-"2008-06-01 00:00",27986,52,892,518,0,15,359,3014
-"2008-06-02 00:00",28021,55,1012,623,0,15,374,3014
-"2008-06-03 00:00",28042,55,1012,623,0,15,374,3014
-"2008-06-04 00:00",28058,55,1012,624,0,14,374,3014
-"2008-06-05 00:00",28084,58,1107,668,0,15,424,3063
-"2008-06-06 00:00",28127,58,1110,674,0,14,422,3068
-"2008-06-07 00:00",28161,59,1139,682,0,16,441,3068
-"2008-06-08 00:00",28174,59,1139,697,0,17,425,3078
-"2008-06-09 00:00",28192,59,1139,699,0,15,425,3079
-"2008-06-10 00:00",28223,59,1139,699,0,15,425,3079
-"2008-06-11 00:00",28229,59,1145,705,0,15,425,3104
-"2008-06-12 00:00",28248,59,1145,705,0,15,425,3125
-"2008-06-13 00:00",28298,60,1148,707,0,15,426,3129
-"2008-06-14 00:00",28331,60,1148,711,0,15,422,3129
-"2008-06-15 00:00",28372,63,1201,754,0,15,432,3153
-"2008-06-16 00:00",28412,64,1226,779,0,15,432,3189
-"2008-06-17 00:00",28454,64,1230,781,0,15,434,3200
-"2008-06-18 00:00",28506,64,1230,781,0,15,434,3200
-"2008-06-19 00:00",28535,64,1230,781,0,15,434,3405
-"2008-06-20 00:00",28570,65,1241,792,0,15,434,3452
-"2008-06-21 00:00",28591,65,1240,794,0,15,431,3451
-"2008-06-22 00:00",28627,66,1249,843,0,15,391,3494
-"2008-06-23 00:00",28658,66,1253,849,0,20,384,3505
-"2008-06-24 00:00",28672,66,1253,849,0,20,384,3510
-"2008-06-25 00:00",28693,70,1311,891,0,31,389,4218
-"2008-06-26 00:00",28701,73,1414,944,0,38,432,4292
-"2008-06-27 00:00",28737,75,1429,1080,1,38,310,4311
-"2008-06-28 00:00",28767,75,1441,1072,17,38,314,4338
-"2008-06-29 00:00",28810,75,1475,1077,74,38,286,4380
-"2008-06-30 00:00",28840,74,1471,1126,0,38,307,4484
-"2008-07-01 00:00",28858,75,1522,1172,0,36,314,4484
-"2008-07-02 00:00",28928,80,1705,1290,0,47,368,4788
-"2008-07-03 00:00",28991,83,1830,1365,0,47,418,4814
-"2008-07-04 00:00",29042,86,2068,1473,0,56,539,5096
-"2008-07-05 00:00",29065,87,2079,1587,0,59,433,5097
-"2008-07-06 00:00",29090,87,2079,1587,0,59,433,5115
-"2008-07-07 00:00",29114,90,2164,1618,0,84,462,5240
-"2008-07-08 00:00",29144,94,2252,1662,0,86,504,5283
-"2008-07-09 00:00",29181,94,2257,1677,0,82,498,5288
-"2008-07-10 00:00",29220,94,2284,1679,0,85,520,5328
-"2008-07-11 00:00",29277,95,2296,1691,0,85,520,5340
-"2008-07-12 00:00",29323,95,2296,1691,0,85,520,5340
-"2008-07-13 00:00",29376,95,2296,1691,0,85,520,5340
-"2008-07-14 00:00",29418,95,2296,1691,0,85,520,5350
-"2008-07-15 00:00",29468,95,2296,1695,0,85,516,5350
-"2008-07-16 00:00",29503,96,2338,1736,0,81,521,5389
-"2008-07-17 00:00",29544,96,2338,1736,0,81,521,5401
-"2008-07-18 00:00",29575,97,2383,1770,0,84,529,5429
-"2008-07-19 00:00",29607,98,2426,1763,0,87,576,5492
-"2008-07-20 00:00",29628,98,2426,1763,0,87,576,5540
-"2008-07-21 00:00",29642,98,2426,1763,0,87,576,5555
-"2008-07-22 00:00",29666,102,2499,1799,0,94,606,5578
-"2008-07-23 00:00",29691,102,2500,1799,0,95,606,5589
-"2008-07-24 00:00",29719,104,2519,1815,0,98,606,5610
-"2008-07-25 00:00",29733,107,2573,1845,56,103,569,5694
-"2008-07-26 00:00",29749,110,2590,1885,0,105,600,5694
-"2008-07-27 00:00",29786,112,2599,1896,0,104,599,5703
-"2008-07-28 00:00",29822,113,2617,1902,0,103,612,5770
-"2008-07-29 00:00",29837,113,2617,1902,0,103,612,5803
-"2008-07-30 00:00",29869,114,2631,1861,79,108,583,5845
-"2008-07-31 00:00",29902,115,2632,5,2627,0,0,5846
-"2008-08-01 00:00",29917,116,2735,1998,3,105,629,5877
-"2008-08-02 00:00",29933,116,2735,1998,3,105,629,5877
-"2008-08-03 00:00",29963,116,2735,2003,12,105,615,6055
-"2008-08-04 00:00",29990,116,2735,2003,12,105,615,6055
-"2008-08-05 00:00",30019,118,3081,2102,12,140,827,6055
-"2008-08-06 00:00",30052,118,3081,2102,12,140,827,6055
-"2008-08-07 00:00",30081,118,3081,2102,12,140,827,6055
-"2008-08-08 00:00",30120,121,3205,2198,3,135,869,6065
-"2008-08-09 00:00",30136,121,3205,2200,3,135,867,6065
-"2008-08-10 00:00",30154,121,3205,2200,3,135,867,6065
-"2008-08-11 00:00",30161,121,3205,2196,0,131,878,6065
-"2008-08-12 00:00",30179,121,3205,0,3205,0,0,6075
-"2008-08-13 00:00",30201,121,3205,2196,0,131,878,6075
-"2008-08-14 00:00",30217,121,3205,2196,0,131,878,6075
-"2008-08-15 00:00",30243,121,3205,2196,0,131,878,6075
-"2008-08-16 00:00",30256,121,3268,2220,0,134,914,6138
-"2008-08-17 00:00",30275,121,3268,2220,0,134,914,6170
-"2008-08-18 00:00",30292,121,3268,2220,0,134,914,6170
-"2008-08-19 00:00",30322,121,3268,2220,0,134,914,6242
-"2008-08-20 00:00",30370,123,3320,2249,0,133,938,6235
-"2008-08-21 00:00",30419,123,3316,2256,0,248,812,6249
-"2008-08-22 00:00",30434,123,3316,2256,0,248,812,6253
-"2008-08-23 00:00",30465,125,3335,2263,0,258,814,6278
-"2008-08-24 00:00",30499,126,3347,2267,0,258,822,6288
-"2008-08-25 00:00",30527,127,3356,2278,0,262,816,6309
-"2008-08-26 00:00",30556,127,3356,2278,0,262,816,6309
-"2008-08-27 00:00",30584,127,3359,2278,0,262,819,6312
-"2008-08-28 00:00",30609,131,3442,2344,0,263,835,6400
-"2008-08-29 00:00",30631,132,3455,2351,0,264,840,6413
-"2008-08-30 00:00",30650,132,3455,2352,0,263,840,6435
-"2008-08-31 00:00",30668,132,3455,2352,0,262,841,6473
-"2008-09-01 00:00",30680,140,3508,2389,0,269,850,6473
-"2008-09-02 00:00",30694,141,3524,2383,13,269,859,6519
-"2008-09-03 00:00",30717,150,3872,2620,49,273,930,6888
-"2008-09-04 00:00",30745,153,3927,2707,0,275,945,7066
-"2008-09-05 00:00",30771,157,4793,3129,0,386,1278,7246
-"2008-09-06 00:00",30806,156,4055,2798,0,281,976,8002
-"2008-09-07 00:00",30848,158,4818,3287,0,285,1246,8002
-"2008-09-08 00:00",30881,158,4818,3288,0,284,1246,8003
-"2008-09-09 00:00",30915,158,4818,3288,0,284,1246,8003
-"2008-09-10 00:00",30946,158,4818,3288,0,284,1246,8071
-"2008-09-11 00:00",30979,159,4859,3296,0,296,1267,8164
-"2008-09-12 00:00",31010,159,4871,3310,0,289,1272,8237
-"2008-09-13 00:00",31050,161,4906,3332,4,292,1278,8237
-"2008-09-14 00:00",31098,161,4906,3332,4,292,1278,8237
-"2008-09-15 00:00",31140,162,5036,3361,0,293,1382,8243
-"2008-09-16 00:00",31173,163,5051,3370,0,296,1385,8245
-"2008-09-17 00:00",31198,165,5076,3377,0,296,1403,8251
-"2008-09-18 00:00",31220,165,5082,3380,4,295,1403,8257
-"2008-09-19 00:00",31249,166,5084,3399,0,282,1403,8259
-"2008-09-20 00:00",31282,166,5084,3399,0,317,1368,8259
-"2008-09-21 00:00",31292,167,5102,3418,0,306,1378,8277
-"2008-09-22 00:00",31329,167,5102,3418,0,306,1378,8277
-"2008-09-23 00:00",31355,167,5114,3434,0,306,1374,8289
-"2008-09-24 00:00",31376,177,5506,3779,0,326,1401,8296
-"2008-09-25 00:00",31400,179,5593,3815,0,328,1450,8309
-"2008-09-26 00:00",31428,180,5686,3897,0,332,1457,8393
-"2008-09-27 00:00",31451,187,5939,4090,0,379,1470,8495
-"2008-09-28 00:00",31470,188,5986,4121,0,388,1477,8505
-"2008-09-29 00:00",31485,188,5990,4121,0,392,1477,8509
-"2008-09-30 00:00",31503,193,6222,4381,0,388,1453,8743
-"2008-10-01 00:00",31537,194,6229,4381,7,388,1453,8743
-"2008-10-02 00:00",31561,198,6256,4406,0,390,1460,8779
-"2008-10-03 00:00",31578,200,6295,4437,0,394,1464,8773
-"2008-10-04 00:00",31609,200,6297,4437,0,394,1466,8775
-"2008-10-05 00:00",31645,200,6297,4437,0,394,1466,8775
-"2008-10-06 00:00",31687,205,6270,4363,74,397,1436,8826
-"2008-10-07 00:00",31743,205,6270,4363,74,397,1436,8850
-"2008-10-08 00:00",31780,205,6270,4363,74,397,1436,8850
-"2008-10-09 00:00",31813,205,6274,4366,11,398,1499,8861
-"2008-10-10 00:00",31846,204,6265,4373,0,397,1495,8871
-"2008-10-11 00:00",31875,203,6256,4366,0,396,1494,8871
-"2008-10-12 00:00",31893,203,6260,4370,0,396,1494,8877
-"2008-10-13 00:00",31918,204,6268,4380,0,396,1492,8884
-"2008-10-14 00:00",31932,204,6268,4380,0,396,1492,8884
-"2008-10-15 00:00",31968,204,6276,4390,0,398,1488,8892
-"2008-10-16 00:00",31992,204,6290,4409,0,393,1488,8909
-"2008-10-17 00:00",32000,204,6290,4409,0,393,1488,8910
-"2008-10-18 00:00",32008,204,6290,4409,0,393,1488,8910
-"2008-10-19 00:00",32032,204,6290,4409,0,393,1488,8910
-"2008-10-20 00:00",32045,204,6290,4409,0,393,1488,8910
-"2008-10-21 00:00",32065,204,6296,4413,0,393,1490,8916
-"2008-10-22 00:00",32096,204,6296,4413,0,393,1490,8916
-"2008-10-23 00:00",32122,206,6317,4429,0,394,1494,8937
-"2008-10-24 00:00",32144,206,6317,4429,0,394,1494,8937
-"2008-10-25 00:00",32151,206,6317,4429,0,394,1494,8937
-"2008-10-26 00:00",32162,206,6317,4429,0,394,1494,8956
-"2008-10-27 00:00",32192,206,6319,4429,2,394,1494,8958
-"2008-10-28 00:00",32211,206,6319,4433,2,392,1492,8958
-"2008-10-29 00:00",32225,206,6319,4433,2,392,1492,8958
-"2008-10-30 00:00",32239,206,6319,4433,0,392,1494,8958
-"2008-10-31 00:00",32245,206,6319,4435,0,392,1492,8958
-"2008-11-01 00:00",32261,206,6319,4435,0,392,1492,8958
-"2008-11-02 00:00",32278,206,6319,4435,0,392,1492,8958
-"2008-11-03 00:00",32312,206,6319,4440,0,392,1487,8958
-"2008-11-04 00:00",32324,206,6320,4436,5,392,1487,8959
-"2008-11-05 00:00",32357,211,6374,4472,10,392,1500,8989
-"2008-11-06 00:00",32372,211,6314,4409,0,396,1509,8992
-"2008-11-07 00:00",32415,211,6314,4413,0,405,1496,8993
-"2008-11-08 00:00",32444,210,6344,4439,4,407,1494,8995
-"2008-11-09 00:00",32460,211,6354,4458,7,398,1491,9006
-"2008-11-10 00:00",32478,211,6310,4435,58,387,1430,9032
-"2008-11-11 00:00",32512,212,6375,4199,473,389,1314,9032
-"2008-11-12 00:00",32568,216,6408,4528,8,391,1481,9035
-"2008-11-13 00:00",32593,219,6484,4590,0,398,1496,9036
-"2008-11-14 00:00",32632,220,6487,4601,0,396,1490,9039
-"2008-11-15 00:00",32656,220,6487,4601,0,396,1490,9039
-"2008-11-16 00:00",32686,220,6487,4601,0,396,1490,9039
-"2008-11-17 00:00",32761,220,6416,4506,41,386,1483,9039
-"2008-11-18 00:00",32796,220,6488,4576,41,386,1485,9040
-"2008-11-19 00:00",32864,220,6488,4578,41,386,1483,9040
-"2008-11-20 00:00",32924,221,6496,4585,41,387,1483,9048
-"2008-11-21 00:00",32971,221,6496,4585,41,387,1483,9048
-"2008-11-22 00:00",32998,222,6516,4599,41,387,1489,9055
-"2008-11-23 00:00",33032,221,6507,4594,41,383,1489,9055
-"2008-11-24 00:00",33130,224,6535,4616,41,384,1494,9075
-"2008-11-25 00:00",33180,224,6535,4616,41,384,1494,9075
-"2008-11-26 00:00",33212,225,6556,4648,41,386,1481,9096
-"2008-11-27 00:00",33257,227,6352,5,6347,0,0,9105
-"2008-11-28 00:00",33295,227,6576,4634,89,382,1471,9106
-"2008-11-29 00:00",33322,227,6559,4653,48,382,1476,9106
-"2008-11-30 00:00",33359,227,6559,4653,48,382,1476,9106
-"2008-12-01 00:00",33411,227,6563,4689,10,382,1482,9110
-"2008-12-02 00:00",33436,227,6565,4689,10,382,1484,9112
-"2008-12-03 00:00",33449,227,6565,4689,10,382,1484,9112
-"2008-12-04 00:00",33477,227,6569,4703,0,384,1482,9116
-"2008-12-05 00:00",33499,228,6577,4710,0,384,1483,9121
-"2008-12-06 00:00",33539,228,6579,4708,0,370,1501,9123
-"2008-12-07 00:00",33590,231,6596,4717,0,373,1506,9140
-"2008-12-08 00:00",33645,233,6704,4779,0,385,1540,9330
-"2008-12-09 00:00",33696,236,6785,4805,13,387,1580,9341
+"date","revision","pass","fail","todo","skip","regr","spec","files"
+"2008-05-22 00:00",27739,223,0,0,341,564,2905,31
+"2008-05-23 00:00",27763,228,0,0,341,569,2905,32
+"2008-05-24 00:00",27775,228,0,0,341,569,2915,32
+"2008-05-25 00:00",27796,310,0,0,356,666,2915,39
+"2008-05-26 00:00",27812,310,0,0,356,666,2915,39
+"2008-05-27 00:00",27839,310,0,0,356,666,2956,39
+"2008-05-28 00:00",27868,317,0,0,349,666,2964,39
+"2008-05-29 00:00",27910,394,4,15,361,774,3011,43
+"2008-05-30 00:00",27933,415,0,15,345,775,3012,43
+"2008-05-31 00:00",27953,415,0,15,345,775,3014,43
+"2008-06-01 00:00",27986,518,0,15,359,892,3014,52
+"2008-06-02 00:00",28021,623,0,15,374,1012,3014,55
+"2008-06-03 00:00",28042,623,0,15,374,1012,3014,55
+"2008-06-04 00:00",28058,624,0,14,374,1012,3014,55
+"2008-06-05 00:00",28084,668,0,15,424,1107,3063,58
+"2008-06-06 00:00",28127,674,0,14,422,1110,3068,58
+"2008-06-07 00:00",28161,682,0,16,441,1139,3068,59
+"2008-06-08 00:00",28174,697,0,17,425,1139,3078,59
+"2008-06-09 00:00",28192,699,0,15,425,1139,3079,59
+"2008-06-10 00:00",28223,699,0,15,425,1139,3079,59
+"2008-06-11 00:00",28229,705,0,15,425,1145,3104,59
+"2008-06-12 00:00",28248,705,0,15,425,1145,3125,59
+"2008-06-13 00:00",28298,707,0,15,426,1148,3129,60
+"2008-06-14 00:00",28331,711,0,15,422,1148,3129,60
+"2008-06-15 00:00",28372,754,0,15,432,1201,3153,63
+"2008-06-16 00:00",28412,779,0,15,432,1226,3189,64
+"2008-06-17 00:00",28454,781,0,15,434,1230,3200,64
+"2008-06-18 00:00",28506,781,0,15,434,1230,3200,64
+"2008-06-19 00:00",28535,781,0,15,434,1230,3405,64
+"2008-06-20 00:00",28570,792,0,15,434,1241,3452,65
+"2008-06-21 00:00",28591,794,0,15,431,1240,3451,65
+"2008-06-22 00:00",28627,843,0,15,391,1249,3494,66
+"2008-06-23 00:00",28658,849,0,20,384,1253,3505,66
+"2008-06-24 00:00",28672,849,0,20,384,1253,3510,66
+"2008-06-25 00:00",28693,891,0,31,389,1311,4218,70
+"2008-06-26 00:00",28701,944,0,38,432,1414,4292,73
+"2008-06-27 00:00",28737,1080,1,38,310,1429,4311,75
+"2008-06-28 00:00",28767,1072,17,38,314,1441,4338,75
+"2008-06-29 00:00",28810,1077,74,38,286,1475,4380,75
+"2008-06-30 00:00",28840,1126,0,38,307,1471,4484,74
+"2008-07-01 00:00",28858,1172,0,36,314,1522,4484,75
+"2008-07-02 00:00",28928,1290,0,47,368,1705,4788,80
+"2008-07-03 00:00",28991,1365,0,47,418,1830,4814,83
+"2008-07-04 00:00",29042,1473,0,56,539,2068,5096,86
+"2008-07-05 00:00",29065,1587,0,59,433,2079,5097,87
+"2008-07-06 00:00",29090,1587,0,59,433,2079,5115,87
+"2008-07-07 00:00",29114,1618,0,84,462,2164,5240,90
+"2008-07-08 00:00",29144,1662,0,86,504,2252,5283,94
+"2008-07-09 00:00",29181,1677,0,82,498,2257,5288,94
+"2008-07-10 00:00",29220,1679,0,85,520,2284,5328,94
+"2008-07-11 00:00",29277,1691,0,85,520,2296,5340,95
+"2008-07-12 00:00",29323,1691,0,85,520,2296,5340,95
+"2008-07-13 00:00",29376,1691,0,85,520,2296,5340,95
+"2008-07-14 00:00",29418,1691,0,85,520,2296,5350,95
+"2008-07-15 00:00",29468,1695,0,85,516,2296,5350,95
+"2008-07-16 00:00",29503,1736,0,81,521,2338,5389,96
+"2008-07-17 00:00",29544,1736,0,81,521,2338,5401,96
+"2008-07-18 00:00",29575,1770,0,84,529,2383,5429,97
+"2008-07-19 00:00",29607,1763,0,87,576,2426,5492,98
+"2008-07-20 00:00",29628,1763,0,87,576,2426,5540,98
+"2008-07-21 00:00",29642,1763,0,87,576,2426,5555,98
+"2008-07-22 00:00",29666,1799,0,94,606,2499,5578,102
+"2008-07-23 00:00",29691,1799,0,95,606,2500,5589,102
+"2008-07-24 00:00",29719,1815,0,98,606,2519,5610,104
+"2008-07-25 00:00",29733,1845,56,103,569,2573,5694,107
+"2008-07-26 00:00",29749,1885,0,105,600,2590,5694,110
+"2008-07-27 00:00",29786,1896,0,104,599,2599,5703,112
+"2008-07-28 00:00",29822,1902,0,103,612,2617,5770,113
+"2008-07-29 00:00",29837,1902,0,103,612,2617,5803,113
+"2008-07-30 00:00",29869,1861,79,108,583,2631,5845,114
+"2008-07-31 00:00",29902,5,2627,0,0,2632,5846,115
+"2008-08-01 00:00",29917,1998,3,105,629,2735,5877,116
+"2008-08-02 00:00",29933,1998,3,105,629,2735,5877,116
+"2008-08-03 00:00",29963,2003,12,105,615,2735,6055,116
+"2008-08-04 00:00",29990,2003,12,105,615,2735,6055,116
+"2008-08-05 00:00",30019,2102,12,140,827,3081,6055,118
+"2008-08-06 00:00",30052,2102,12,140,827,3081,6055,118
+"2008-08-07 00:00",30081,2102,12,140,827,3081,6055,118
+"2008-08-08 00:00",30120,2198,3,135,869,3205,6065,121
+"2008-08-09 00:00",30136,2200,3,135,867,3205,6065,121
+"2008-08-10 00:00",30154,2200,3,135,867,3205,6065,121
+"2008-08-11 00:00",30161,2196,0,131,878,3205,6065,121
+"2008-08-12 00:00",30179,0,3205,0,0,3205,6075,121
+"2008-08-13 00:00",30201,2196,0,131,878,3205,6075,121
+"2008-08-14 00:00",30217,2196,0,131,878,3205,6075,121
+"2008-08-15 00:00",30243,2196,0,131,878,3205,6075,121
+"2008-08-16 00:00",30256,2220,0,134,914,3268,6138,121
+"2008-08-17 00:00",30275,2220,0,134,914,3268,6170,121
+"2008-08-18 00:00",30292,2220,0,134,914,3268,6170,121
+"2008-08-19 00:00",30322,2220,0,134,914,3268,6242,121
+"2008-08-20 00:00",30370,2249,0,133,938,3320,6235,123
+"2008-08-21 00:00",30419,2256,0,248,812,3316,6249,123
+"2008-08-22 00:00",30434,2256,0,248,812,3316,6253,123
+"2008-08-23 00:00",30465,2263,0,258,814,3335,6278,125
+"2008-08-24 00:00",30499,2267,0,258,822,3347,6288,126
+"2008-08-25 00:00",30527,2278,0,262,816,3356,6309,127
+"2008-08-26 00:00",30556,2278,0,262,816,3356,6309,127
+"2008-08-27 00:00",30584,2278,0,262,819,3359,6312,127
+"2008-08-28 00:00",30609,2344,0,263,835,3442,6400,131
+"2008-08-29 00:00",30631,2351,0,264,840,3455,6413,132
+"2008-08-30 00:00",30650,2352,0,263,840,3455,6435,132
+"2008-08-31 00:00",30668,2352,0,262,841,3455,6473,132
+"2008-09-01 00:00",30680,2389,0,269,850,3508,6473,140
+"2008-09-02 00:00",30694,2383,13,269,859,3524,6519,141
+"2008-09-03 00:00",30717,2620,49,273,930,3872,6888,150
+"2008-09-04 00:00",30745,2707,0,275,945,3927,7066,153
+"2008-09-05 00:00",30771,3129,0,386,1278,4793,7246,157
+"2008-09-06 00:00",30806,2798,0,281,976,4055,8002,156
+"2008-09-07 00:00",30848,3287,0,285,1246,4818,8002,158
+"2008-09-08 00:00",30881,3288,0,284,1246,4818,8003,158
+"2008-09-09 00:00",30915,3288,0,284,1246,4818,8003,158
+"2008-09-10 00:00",30946,3288,0,284,1246,4818,8071,158
+"2008-09-11 00:00",30979,3296,0,296,1267,4859,8164,159
+"2008-09-12 00:00",31010,3310,0,289,1272,4871,8237,159
+"2008-09-13 00:00",31050,3332,4,292,1278,4906,8237,161
+"2008-09-14 00:00",31098,3332,4,292,1278,4906,8237,161
+"2008-09-15 00:00",31140,3361,0,293,1382,5036,8243,162
+"2008-09-16 00:00",31173,3370,0,296,1385,5051,8245,163
+"2008-09-17 00:00",31198,3377,0,296,1403,5076,8251,165
+"2008-09-18 00:00",31220,3380,4,295,1403,5082,8257,165
+"2008-09-19 00:00",31249,3399,0,282,1403,5084,8259,166
+"2008-09-20 00:00",31282,3399,0,317,1368,5084,8259,166
+"2008-09-21 00:00",31292,3418,0,306,1378,5102,8277,167
+"2008-09-22 00:00",31329,3418,0,306,1378,5102,8277,167
+"2008-09-23 00:00",31355,3434,0,306,1374,5114,8289,167
+"2008-09-24 00:00",31376,3779,0,326,1401,5506,8296,177
+"2008-09-25 00:00",31400,3815,0,328,1450,5593,8309,179
+"2008-09-26 00:00",31428,3897,0,332,1457,5686,8393,180
+"2008-09-27 00:00",31451,4090,0,379,1470,5939,8495,187
+"2008-09-28 00:00",31470,4121,0,388,1477,5986,8505,188
+"2008-09-29 00:00",31485,4121,0,392,1477,5990,8509,188
+"2008-09-30 00:00",31503,4381,0,388,1453,6222,8743,193
+"2008-10-01 00:00",31537,4381,7,388,1453,6229,8743,194
+"2008-10-02 00:00",31561,4406,0,390,1460,6256,8779,198
+"2008-10-03 00:00",31578,4437,0,394,1464,6295,8773,200
+"2008-10-04 00:00",31609,4437,0,394,1466,6297,8775,200
+"2008-10-05 00:00",31645,4437,0,394,1466,6297,8775,200
+"2008-10-06 00:00",31687,4363,74,397,1436,6270,8826,205
+"2008-10-07 00:00",31743,4363,74,397,1436,6270,8850,205
+"2008-10-08 00:00",31780,4363,74,397,1436,6270,8850,205
+"2008-10-09 00:00",31813,4366,11,398,1499,6274,8861,205
+"2008-10-10 00:00",31846,4373,0,397,1495,6265,8871,204
+"2008-10-11 00:00",31875,4366,0,396,1494,6256,8871,203
+"2008-10-12 00:00",31893,4370,0,396,1494,6260,8877,203
+"2008-10-13 00:00",31918,4380,0,396,1492,6268,8884,204
+"2008-10-14 00:00",31932,4380,0,396,1492,6268,8884,204
+"2008-10-15 00:00",31968,4390,0,398,1488,6276,8892,204
+"2008-10-16 00:00",31992,4409,0,393,1488,6290,8909,204
+"2008-10-17 00:00",32000,4409,0,393,1488,6290,8910,204
+"2008-10-18 00:00",32008,4409,0,393,1488,6290,8910,204
+"2008-10-19 00:00",32032,4409,0,393,1488,6290,8910,204
+"2008-10-20 00:00",32045,4409,0,393,1488,6290,8910,204
+"2008-10-21 00:00",32065,4413,0,393,1490,6296,8916,204
+"2008-10-22 00:00",32096,4413,0,393,1490,6296,8916,204
+"2008-10-23 00:00",32122,4429,0,394,1494,6317,8937,206
+"2008-10-24 00:00",32144,4429,0,394,1494,6317,8937,206
+"2008-10-25 00:00",32151,4429,0,394,1494,6317,8937,206
+"2008-10-26 00:00",32162,4429,0,394,1494,6317,8956,206
+"2008-10-27 00:00",32192,4429,2,394,1494,6319,8958,206
+"2008-10-28 00:00",32211,4433,2,392,1492,6319,8958,206
+"2008-10-29 00:00",32225,4433,2,392,1492,6319,8958,206
+"2008-10-30 00:00",32239,4433,0,392,1494,6319,8958,206
+"2008-10-31 00:00",32245,4435,0,392,1492,6319,8958,206
+"2008-11-01 00:00",32261,4435,0,392,1492,6319,8958,206
+"2008-11-02 00:00",32278,4435,0,392,1492,6319,8958,206
+"2008-11-03 00:00",32312,4440,0,392,1487,6319,8958,206
+"2008-11-04 00:00",32324,4436,5,392,1487,6320,8959,206
+"2008-11-05 00:00",32357,4472,10,392,1500,6374,8989,211
+"2008-11-06 00:00",32372,4409,0,396,1509,6314,8992,211
+"2008-11-07 00:00",32415,4413,0,405,1496,6314,8993,211
+"2008-11-08 00:00",32444,4439,4,407,1494,6344,8995,210
+"2008-11-09 00:00",32460,4458,7,398,1491,6354,9006,211
+"2008-11-10 00:00",32478,4435,58,387,1430,6310,9032,211
+"2008-11-11 00:00",32512,4199,473,389,1314,6375,9032,212
+"2008-11-12 00:00",32568,4528,8,391,1481,6408,9035,216
+"2008-11-13 00:00",32593,4590,0,398,1496,6484,9036,219
+"2008-11-14 00:00",32632,4601,0,396,1490,6487,9039,220
+"2008-11-15 00:00",32656,4601,0,396,1490,6487,9039,220
+"2008-11-16 00:00",32686,4601,0,396,1490,6487,9039,220
+"2008-11-17 00:00",32761,4506,41,386,1483,6416,9039,220
+"2008-11-18 00:00",32796,4576,41,386,1485,6488,9040,220
+"2008-11-19 00:00",32864,4578,41,386,1483,6488,9040,220
+"2008-11-20 00:00",32924,4585,41,387,1483,6496,9048,221
+"2008-11-21 00:00",32971,4585,41,387,1483,6496,9048,221
+"2008-11-22 00:00",32998,4599,41,387,1489,6516,9055,222
+"2008-11-23 00:00",33032,4594,41,383,1489,6507,9055,221
+"2008-11-24 00:00",33130,4616,41,384,1494,6535,9075,224
+"2008-11-25 00:00",33180,4616,41,384,1494,6535,9075,224
+"2008-11-26 00:00",33212,4648,41,386,1481,6556,9096,225
+"2008-11-27 00:00",33257,5,6347,0,0,6352,9105,227
+"2008-11-28 00:00",33295,4634,89,382,1471,6576,9106,227
+"2008-11-29 00:00",33322,4653,48,382,1476,6559,9106,227
+"2008-11-30 00:00",33359,4653,48,382,1476,6559,9106,227
+"2008-12-01 00:00",33411,4689,10,382,1482,6563,9110,227
+"2008-12-02 00:00",33436,4689,10,382,1484,6565,9112,227
+"2008-12-03 00:00",33449,4689,10,382,1484,6565,9112,227
+"2008-12-04 00:00",33477,4703,0,384,1482,6569,9116,227
+"2008-12-05 00:00",33499,4710,0,384,1483,6577,9121,228
+"2008-12-06 00:00",33539,4708,0,370,1501,6579,9123,228
+"2008-12-07 00:00",33590,4717,0,373,1506,6596,9140,231
+"2008-12-08 00:00",33645,4779,0,385,1540,6704,9330,233
+"2008-12-09 00:00",33696,4805,13,387,1580,6785,9341,236
+"2008-12-10 00:00",33741,4884,0,350,1572,6806,9358,235
+"2008-12-11 00:00",33793,4916,0,350,1561,6827,9325,235
+"2008-12-12 00:00",33823,5004,1,401,1489,6895,9356,240
+"2008-12-13 00:00",33823,5005,0,410,1480,6895,9356,240

Modified: branches/calling_conventions/languages/perl6/src/builtins/any-list.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/builtins/any-list.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/builtins/any-list.pir	Sat Dec 13 19:46:32 2008
@@ -53,8 +53,7 @@
     list = self.'list'()
     $I0 = list.'elems'()
     dec $I0
-    $P0 = list[$I0]
-    .return ($P0)
+    .return ($I0)
 .end
 
 =item join
@@ -311,26 +310,62 @@
     by = get_hll_global 'infix:cmp'
   have_by:
 
+    ##  prepare self and FPA for sorting
     .local pmc list, fpa
     .local int elems
-
     list = self.'list'()
-    list.'!flatten'()
     elems = list.'elems'()
     fpa = new 'FixedPMCArray'
-    fpa = elems
-
-    .local int i
-    i = 0
+    assign fpa, elems
+    $I0 = by.'arity'()
+    if $I0 < 2 goto by_value_cmp
+
+    ##  normal compare function, build fpa from list
+    .local pmc it
+    elems = 0
+    it = iter list
   fpa_loop:
-    unless i < elems goto fpa_end
-    $P0 = list[i]
-    fpa[i] = $P0
-    inc i
+    unless it goto fpa_done
+    $P0 = shift it
+    fpa[elems] = $P0
+    inc elems
     goto fpa_loop
-  fpa_end:
+  fpa_done:
     fpa.'sort'(by)
     .tailcall 'list'(fpa)
+
+  by_value_cmp:
+    ##  Algorithm as Perl 6:
+    ##      my @v     = @list.map($by);
+    ##      my @slice = (0..^@list).sort: { @v[$^a] cmp @v[$^b]};
+    ##      return @list[ @slice ];
+
+    .local pmc values
+    values = list.'map'(by)
+    set_global '@!sort_values', values
+    ##  fill fpa with values 0..elems-1
+    $I0 = 0
+  fpa_range_loop:
+    unless $I0 < elems goto fpa_range_done
+    fpa[$I0] = $I0
+    inc $I0
+    goto fpa_range_loop
+  fpa_range_done:
+    .const 'Sub' sbv = '!sort_by_value'
+    fpa.'sort'(sbv)
+    ##  return sorted slice of original list
+    .tailcall list.'postcircumfix:[ ]'(fpa)
+.end
+
+.sub '!sort_by_value' :anon
+    .param pmc a
+    .param pmc b
+    .local pmc values
+    values = get_global '@!sort_values'
+    $P0 = values[a]
+    $P1 = values[b]
+    $I0 = 'infix:cmp'($P0, $P1)
+    .return ($I0)
 .end
 
 =back

Modified: branches/calling_conventions/languages/perl6/src/builtins/assign.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/builtins/assign.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/builtins/assign.pir	Sat Dec 13 19:46:32 2008
@@ -334,10 +334,10 @@
     $P0 = new 'ObjectRef', $P0
     push result, $P0
     goto loop
-  
-  loop_end:    
+
+  loop_end:
     .return (result)
-    
+
   incompatible:
     'die'("Non-dwimmy hyperoperator cannot be used on arrays of different sizes or dimensions.")
 .end

Modified: branches/calling_conventions/languages/perl6/src/builtins/control.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/builtins/control.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/builtins/control.pir	Sat Dec 13 19:46:32 2008
@@ -145,27 +145,26 @@
 
 =cut
 
-.sub 'die'
+.sub 'die' :multi('Exception')
+    .param pmc ex
+    set_global '$!', ex
+    throw ex
+    .return ()
+.end
+
+.sub 'die' :multi(_)
     .param pmc list            :slurpy
-    .local pmc iter
     .local string message
+    .local pmc ex
 
-    message = ''
-    iter = new 'Iterator', list
-  iter_loop:
-    unless iter goto iter_end
-    $P0 = shift iter
-    $S0 = $P0
-    message .= $S0
-    goto iter_loop
-  iter_end:
+    message = list.'join'('')
     if message > '' goto have_message
     message = "Died\n"
   have_message:
-    $P0 = new 'Exception'
-    $P0 = message
-    set_global '$!', $P0
-    throw $P0
+    ex = new 'Exception'
+    ex = message
+    set_global '$!', ex
+    throw ex
     .return ()
 .end
 
@@ -292,6 +291,23 @@
     .return (res)
 .end
 
+=item warn
+
+=cut
+
+.sub 'warn'
+    .param pmc list            :slurpy
+    .local pmc it
+    .local string message
+
+    message = list.'join'('')
+    if message > '' goto have_message
+    message = "Warning!  Something's wrong\n"
+  have_message:
+    printerr message
+    .return ()
+.end
+
 
 =back
 
@@ -311,6 +327,12 @@
 
 B<TODO>: Research the exception handling system.
 
+=item warn
+
+B<TODO>: Throw a resumable exception when Rakudo supports top-level exception
+handlers.  Note that the default exception handler should print the message of
+this exception to standard error.
+
 
 =back
 

Modified: branches/calling_conventions/languages/perl6/src/builtins/enums.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/builtins/enums.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/builtins/enums.pir	Sat Dec 13 19:46:32 2008
@@ -79,7 +79,7 @@
     $P48 = "prefix:~"($P47)
     .return ($P48)
 .end
-.sub "bool_class_number" :method :subid("26")
+.sub "bool_class_number" :method
     getattribute $P52, self, "$!bool"
     $P53 = "prefix:+"($P52)
     .return ($P53)

Modified: branches/calling_conventions/languages/perl6/src/builtins/guts.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/builtins/guts.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/builtins/guts.pir	Sat Dec 13 19:46:32 2008
@@ -315,12 +315,12 @@
 .sub '!SETUP_ARGS'
     .param pmc args_str
     .param int strip_program_name
-    .local pmc args, iter
+    .local pmc args, it
     args = new 'List'
-    iter = new 'Iterator', args_str
+    it = iter args_str
   args_loop:
-    unless iter goto args_end
-    $P0 = shift iter
+    unless it goto args_end
+    $P0 = shift it
     push args, $P0
     goto args_loop
   args_end:
@@ -341,7 +341,7 @@
 .sub '!keyword_class'
     .param string name   :optional
     .param int have_name :opt_flag
-    .local pmc class, resolve_list, methods, iter
+    .local pmc class, resolve_list, methods, it
 
     # Create class.
     if have_name goto named
@@ -354,11 +354,11 @@
 
     # Set resolve list to include all methods of the class.
     methods = inspect class, 'methods'
-    iter = new 'Iterator', methods
+    it = iter methods
     resolve_list = new 'ResizableStringArray'
   resolve_loop:
-    unless iter goto resolve_loop_end
-    $P0 = shift iter
+    unless it goto resolve_loop_end
+    $P0 = shift it
     push resolve_list, $P0
     goto resolve_loop
   resolve_loop_end:

Modified: branches/calling_conventions/languages/perl6/src/builtins/io.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/builtins/io.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/builtins/io.pir	Sat Dec 13 19:46:32 2008
@@ -14,13 +14,16 @@
 
 .sub 'print'
     .param pmc args            :slurpy
-    .local pmc iter
+    .local pmc it
     args.'!flatten'()
-    iter = new 'Iterator', args
+    it = iter args
   iter_loop:
-    unless iter goto iter_end
-    $S0 = shift iter
-    print $S0
+    unless it goto iter_end
+    $P0 = shift it
+    unless null $P0 goto iter_nonull
+    $P0 = new 'Failure'
+  iter_nonull:
+    print $P0
     goto iter_loop
   iter_end:
     .return (1)

Modified: branches/calling_conventions/languages/perl6/src/builtins/math.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/builtins/math.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/builtins/math.pir	Sat Dec 13 19:46:32 2008
@@ -166,7 +166,7 @@
     .param num    exp          :optional
     .param int    has_exp      :opt_flag
     .local num    result, fracdivisor, magnitude
-    .local pmc     iter
+    .local pmc    it
 
     if radix <= 1 goto err_range
     if radix > 36 goto err_range
@@ -175,11 +175,11 @@
     fracdivisor = 1.0
 
     $P0 = split '', intpart
-    iter = new 'Iterator', $P0
+    it = iter $P0
 
   lp1: # Accumulate over decimal part
-    unless iter goto ex1
-    $S0 = shift iter
+    unless it goto ex1
+    $S0 = shift it
     $S0 = downcase $S0
     if $S0 == "_" goto lp1
     $I0 = index "0123456789abcdefghijklmnopqrstuvwxyz", $S0
@@ -197,8 +197,8 @@
     $P99 = shift $P0                             # remove the radix point
 
   lp2: # Accumulate over fractional part, keep length
-    unless iter goto ex2
-    $S0 = shift iter
+    unless it goto ex2
+    $S0 = shift it
     $S0 = downcase $S0
     if $S0 == "_" goto lp2
     $I0 = index "0123456789abcdefghijklmnopqrstuvwxyz", $S0

Modified: branches/calling_conventions/languages/perl6/src/builtins/op.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/builtins/op.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/builtins/op.pir	Sat Dec 13 19:46:32 2008
@@ -2,7 +2,7 @@
 
 =head1 NAME
 
-src/builtins/op.pir - Perl6 builtin operators
+src/builtins/op.pir - Perl 6 builtin operators
 
 =head1 Functions
 
@@ -400,7 +400,7 @@
     if $I0 goto one_role
     $I0 = isa role, 'List'
     if $I0 goto many_roles
-    'die'("'does' expcts a role or a list of roles")
+    'die'("'does' expects a role or a list of roles")
 
   one_role:
     '!keyword_does'(derived, role)

Modified: branches/calling_conventions/languages/perl6/src/classes/Code.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/classes/Code.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/classes/Code.pir	Sat Dec 13 19:46:32 2008
@@ -127,6 +127,35 @@
     .return ($P0)
 .end
 
+=item assumming()
+
+Returns a curried version of self.
+
+=cut
+
+.sub 'assuming' :method :subid('assuming')
+    .param pmc args :slurpy
+    .param pmc named_args :slurpy :named
+    .local pmc curried
+    .lex '@args', args
+    .lex '%args', named_args
+    .lex '$obj', self
+    .const 'Sub' curried = 'assuming_helper'
+    capture_lex curried
+    .return (curried)
+.end
+
+.sub 'assuming_helper' :outer('assuming')
+    .param pmc args :slurpy
+    .param pmc named_args :slurpy :named
+    .local pmc obj, assumed_args, assumed_named_args, result
+    find_lex obj, '$obj'
+    find_lex assumed_args, '@args'
+    find_lex assumed_named_args, '%args'
+    result = obj(assumed_args :flat, args :flat, assumed_named_args :flat :named, named_args :flat :named)
+    .return (result)
+.end
+
 =back
 
 =cut

Modified: branches/calling_conventions/languages/perl6/src/classes/Failure.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/classes/Failure.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/classes/Failure.pir	Sat Dec 13 19:46:32 2008
@@ -1,36 +1,73 @@
-.namespace []
+# $Id$
+
 
 .namespace [ 'Failure' ]
 
-.sub 'onload' :anon :init :load
+.sub '' :anon :init :load
     .local pmc p6meta, failureproto, exceptionproto
     p6meta = get_hll_global ['Perl6Object'], '$!P6META'
     failureproto = p6meta.'new_class'('Failure', 'parent'=>'Undef Any', 'attr'=>'$!exception')
     p6meta.'register'('Undef', 'parent'=>failureproto, 'protoobject'=>failureproto)
-    exceptionproto = p6meta.'new_class'('Perl6Exception', 'parent'=>'Any', 'attr'=>'$!exception')
+    exceptionproto = p6meta.'new_class'('Perl6Exception', 'parent'=>'Any Exception', 'attr'=>'$!exception', 'name'=>'Exception')
     p6meta.'register'('Exception', 'protoobject'=>exceptionproto)
 
     $P0 = box 1
     set_hll_global '$WARNINGS', $P0
 .end
 
+=head2 Methods
 
-.sub '' :method :vtable('get_integer')
-    self.'!throw_unhandled'()
-    .return (0)
+=cut
+
+.sub 'ACCEPTS' :method
+    .param pmc topic
+    $I0 = defined topic
+    if $I0 goto defined
+    .return(1)
+  defined:
+    .return(0)
 .end
 
-.sub '' :method :vtable('get_number')
-    self.'!throw_unhandled'()
-    .return (0.0)
+
+.sub 'defined' :method
+    $P0 = self.'!exception'()
+    $P0['handled'] = 1
+    $P1 = get_hll_global ['Bool'], 'False'
+    .return ($P1)
 .end
 
-.sub '' :method :vtable('get_string')
-    self.'!throw_unhandled'()
-    .return ('')
+
+.sub 'handled' :method
+    .local pmc exception
+    exception = self.'!exception'()
+    $I0 = exception['handled']
+    .return ($I0)
 .end
 
 
+.sub 'perl' :method
+    .return ('undef')
+.end
+
+
+.namespace []
+.sub 'undef'
+    .param pmc x               :slurpy
+    ## 0-argument test, RT#56366
+    ## but see also C<< term:sym<undef> >> in STD.pm
+    unless x goto no_args
+    die "Obsolete use of undef; in Perl 6 please use undefine instead"
+  no_args:
+    $P0 = new 'Failure'
+    .return ($P0)
+.end
+
+
+=head2 Private methods
+
+=cut
+
+.namespace ['Failure']
 .sub '!exception' :method
     .local pmc exception
     exception = getattribute self, '$!exception'
@@ -58,49 +95,38 @@
   done:
 .end
 
-.sub 'ACCEPTS' :method
-    .param pmc topic
-    $I0 = defined topic
-    if $I0 goto defined
-    .return(1)
-  defined:
-    .return(0)
-.end
-
 
-.sub 'defined' :method
-    $P0 = self.'!exception'()
-    $P0['handled'] = 1
-    $P1 = get_hll_global ['Bool'], 'False'
-    .return ($P1)
-.end
+=head2 Vtable functions
 
+=cut
 
-.sub 'handled' :method
-    .local pmc exception
-    exception = self.'!exception'()
-    $I0 = exception['handled']
-    .return ($I0)
+.namespace ['Failure']
+.sub '' :vtable('get_integer') :method
+    self.'!throw_unhandled'()
+    .return (0)
 .end
 
+.sub '' :vtable('get_number') :method
+    self.'!throw_unhandled'()
+    .return (0.0)
+.end
 
-.sub 'perl' :method
-    .return ('undef')
+.sub '' :vtable('get_string') :method
+    self.'!throw_unhandled'()
+    .return ('')
 .end
 
+.sub '' :vtable('get_pmc_keyed') :method
+    .param pmc key
+    .return (self)
+.end
 
-.namespace []
-.sub 'undef'
-    .param pmc x               :slurpy
-    ## 0-argument test, RT#56366
-    ## but see also C<< term:sym<undef> >> in STD.pm
-    unless x goto no_args
-    die "Obsolete use of undef; in Perl 6 please use undefine instead"
-  no_args:
-    $P0 = new 'Failure'
-    .return ($P0)
+.sub '' :vtable('get_pmc_keyed_int') :method
+    .param int key
+    .return (self)
 .end
 
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/calling_conventions/languages/perl6/src/classes/IO.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/classes/IO.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/classes/IO.pir	Sat Dec 13 19:46:32 2008
@@ -61,14 +61,14 @@
 
 .sub 'print' :method
     .param pmc args            :slurpy
-    .local pmc iter
+    .local pmc it
     .local pmc PIO
     PIO = getattribute self, "$!PIO"
     args = 'list'(args)
-    iter = new 'Iterator', args
+    it = iter args
   iter_loop:
-    unless iter goto iter_end
-    $S0 = shift iter
+    unless it goto iter_end
+    $S0 = shift it
     print PIO, $S0
     goto iter_loop
   iter_end:

Modified: branches/calling_conventions/languages/perl6/src/classes/List.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/classes/List.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/classes/List.pir	Sat Dec 13 19:46:32 2008
@@ -64,7 +64,7 @@
 .namespace ['List']
 .sub 'Iterator' :method
     self.'!flatten'()
-    $P0 = new 'Iterator', self
+    $P0 = iter self
     .return ($P0)
 .end
 
@@ -601,28 +601,22 @@
     $P0 = get_hll_global 'List'
     ulist = $P0.'new'()
 
-    .local int lelems, uelems, l, u
-    lelems = self.'elems'()
-    uelems = 0
-    l = 0
+    .local pmc it_inner, it_outer, val
+    it_outer = iter self
   outer_loop:
-    unless l < lelems goto outer_done
-    .local pmc val
-    val = self[l]
-    u = 0
+    unless it_outer goto outer_done
+    val = shift it_outer
+    it_inner = iter ulist
   inner_loop:
-    unless u < uelems goto inner_done
-    $P0 = ulist[u]
-    $P0 = comparer(val, $P0)
-    if $P0 goto outer_next
-    inc u
+    unless it_inner goto inner_done
+    $P0 = shift it_inner
+    $P1 = comparer(val, $P0)
+    if $P1 goto outer_loop
     goto inner_loop
   inner_done:
     ulist.'push'(val)
-    inc uelems
-  outer_next:
-    inc l
     goto outer_loop
+
   outer_done:
     .return (ulist)
 .end
@@ -632,11 +626,13 @@
 .sub 'uniq' :multi(Sub)
     .param pmc comparer
     .param pmc values :slurpy
+    values.'!flatten'()
     .tailcall values.'uniq'(comparer)
 .end
 
 .sub 'uniq' :multi()
     .param pmc values :slurpy
+    values.'!flatten'()
     .tailcall values.'uniq'()
 .end
 
@@ -815,18 +811,15 @@
 have_args:
 
     # Find minimum.
-    .local pmc cur_min
-    .local int i
+    .local pmc cur_min, it
     cur_min = args[0]
-    i = 1
+    it = iter args
 find_min_loop:
-    if i >= elems goto find_min_loop_end
-    $P0 = args[i]
+    unless it goto find_min_loop_end
+    $P0 = shift it
     $I0 = 'infix:cmp'($P0, cur_min)
-    if $I0 != -1 goto not_min
+    unless $I0 < 0 goto find_min_loop
     set cur_min, $P0
-not_min:
-    inc i
     goto find_min_loop
 find_min_loop_end:
 
@@ -852,18 +845,15 @@
 have_args:
 
     # Find maximum.
-    .local pmc cur_max
-    .local int i
+    .local pmc cur_max, it
     cur_max = args[0]
-    i = 1
+    it = iter args
 find_max_loop:
-    if i >= elems goto find_max_loop_end
-    $P0 = args[i]
+    unless it goto find_max_loop_end
+    $P0 = shift it
     $I0 = 'infix:cmp'($P0, cur_max)
-    if $I0 != 1 goto not_max
+    unless $I0 > 0 goto find_max_loop
     set cur_max, $P0
-not_max:
-    inc i
     goto find_max_loop
 find_max_loop_end:
 

Modified: branches/calling_conventions/languages/perl6/src/classes/Mapping.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/classes/Mapping.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/classes/Mapping.pir	Sat Dec 13 19:46:32 2008
@@ -52,12 +52,12 @@
 
 .sub 'get_string' :method :vtable
     $S0 = ''
-    .local pmc iter
-    iter = new 'Iterator', self
+    .local pmc it
+    it = iter self
   loop:
-    unless iter goto end
-    $S1 = shift iter
-    $S2 = iter[$S1]
+    unless it goto end
+    $S1 = shift it
+    $S2 = it[$S1]
     $S0 = concat $S0, $S1
     concat $S0, "\t"
     concat $S0, $S2
@@ -75,12 +75,12 @@
 =cut
 
 .sub 'hash' :method
-    .local pmc result, iter
+    .local pmc result, it
     result = new 'Perl6Hash'
-    iter = new 'Iterator', self
+    it = iter self
   iter_loop:
-    unless iter goto iter_end
-    $S0 = shift iter
+    unless it goto iter_end
+    $S0 = shift it
     $P0 = self[$S0]
     result[$S0] = $P0
     goto iter_loop
@@ -89,6 +89,17 @@
 .end
 
 
+=item list()
+
+Return invocant as a List of Pairs.
+
+=cut
+
+.sub 'list' :method
+    .tailcall self.'pairs'()
+.end
+
+
 =item perl()
 
 Return perl representation of the invocant.
@@ -126,15 +137,15 @@
 =cut
 
 .sub 'kv' :method :multi('Hash')
-    .local pmc iter
+    .local pmc it
     .local pmc rv
-    iter = new 'Iterator', self
+    it = iter self
     rv   = new 'List'
   loop:
-    unless iter goto end
-    $S1 = shift iter
+    unless it goto end
+    $S1 = shift it
     push rv, $S1
-    $P1 = iter[$S1]
+    $P1 = it[$S1]
     push rv, $P1
     goto loop
   end:
@@ -148,15 +159,16 @@
 =cut
 
 .sub 'pairs' :method :multi('Hash')
-    .local pmc iter
+    .local pmc it
     .local pmc rv
-    iter = new 'Iterator', self
-    rv   = 'list'()
+    it = iter self
+    $P0 = get_hll_global 'list'
+    rv  = $P0()
     $P3 = get_hll_global 'Perl6Pair'
   loop:
-    unless iter goto end
-    $P1 = shift iter
-    $P2 = iter[$P1]
+    unless it goto end
+    $P1 = shift it
+    $P2 = it[$P1]
     $P4 = $P3.'new'('key' => $P1, 'value' => $P2)
     push rv, $P4
     goto loop
@@ -210,13 +222,13 @@
 
 
 .sub 'keys' :method :multi('Hash')
-    .local pmc iter
+    .local pmc it
     .local pmc rv
-    iter = new 'Iterator', self
+    it = iter self
     rv   = new 'List'
   loop:
-    unless iter goto end
-    $S1 = shift iter
+    unless it goto end
+    $S1 = shift it
     push rv, $S1
     goto loop
   end:
@@ -228,12 +240,12 @@
 =cut
 
 .sub 'reverse' :method :multi('Hash')
-    .local pmc result, iter
+    .local pmc result, it
     result = new 'Perl6Hash'
-    iter = new 'Iterator', self
+    it = iter self
   iter_loop:
-    unless iter goto iter_end
-    $S0 = shift iter
+    unless it goto iter_end
+    $S0 = shift it
     $S1 = self[$S0]
     result[$S1] = $S0
     goto iter_loop
@@ -243,14 +255,14 @@
 
 
 .sub 'values' :method :multi('Hash')
-    .local pmc iter
+    .local pmc it
     .local pmc rv
-    iter = new 'Iterator', self
+    it = iter self
     rv   = new 'List'
   loop:
-    unless iter goto end
-    $S1 = shift iter
-    $P1 = iter[$S1]
+    unless it goto end
+    $S1 = shift it
+    $P1 = it[$S1]
     push rv, $P1
     goto loop
   end:

Modified: branches/calling_conventions/languages/perl6/src/classes/Object.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/classes/Object.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/classes/Object.pir	Sat Dec 13 19:46:32 2008
@@ -215,7 +215,7 @@
     whence = self.'WHENCE'()
     unless whence goto no_whence
     .local pmc this_whence_iter
-    this_whence_iter = new 'Iterator', whence
+    this_whence_iter = iter whence
   this_whence_iter_loop:
     unless this_whence_iter goto no_whence
     $S0 = shift this_whence_iter
@@ -231,7 +231,7 @@
     # the all_parents list includes ourself.
     .local pmc all_parents, class_iter
     all_parents = inspect $P0, "all_parents"
-    class_iter = new 'Iterator', all_parents
+    class_iter = iter all_parents
   class_iter_loop:
     unless class_iter goto class_iter_loop_end
     .local pmc cur_class
@@ -251,7 +251,7 @@
     # Go through the provided init_parents to see if we have anything that
     # matches.
     .local pmc ip_iter, cur_ip
-    ip_iter = new 'Iterator', init_parents
+    ip_iter = iter init_parents
   ip_iter_loop:
     unless ip_iter goto ip_iter_loop_end
     cur_ip = shift ip_iter
@@ -282,12 +282,12 @@
   found_init_attribs:
 
     # Now go through attributes of the current class and iternate over them.
-    .local pmc attribs, iter
+    .local pmc attribs, it
     attribs = inspect cur_class, "attributes"
-    iter = new 'Iterator', attribs
+    it = iter attribs
   iter_loop:
-    unless iter goto iter_end
-    $S0 = shift iter
+    unless it goto iter_end
+    $S0 = shift it
 
     # See if we have an init value; use Undef if not.
     .local int got_init_value

Modified: branches/calling_conventions/languages/perl6/src/parser/actions.pm
==============================================================================
--- branches/calling_conventions/languages/perl6/src/parser/actions.pm	(original)
+++ branches/calling_conventions/languages/perl6/src/parser/actions.pm	Sat Dec 13 19:46:32 2008
@@ -381,6 +381,28 @@
     make $past;
 }
 
+method catch_statement($/) {
+    my $past := $( $<block> );
+    $past.blocktype('immediate');
+    $past := PAST::Stmts.new(
+        PAST::Op.new(
+            :pasttype('bind'),
+            PAST::Var.new( :name('$_'), :scope('lexical') ),
+            PAST::Var.new( :name('exception'), :scope('register') )
+        ),
+        $past
+    );
+    our $?BLOCK;
+    my $eh := PAST::Control.new( $past );
+    my @handlers;
+    if $?BLOCK.handlers() {
+        @handlers := $?BLOCK.handlers();
+    }
+    @handlers.unshift($eh);
+    $?BLOCK.handlers(@handlers);
+    make PAST::Stmts.new();
+}
+
 method statement_mod_loop($/) {
     my $expr := $( $<EXPR> );
     my $sym := ~$<sym>;
@@ -479,6 +501,11 @@
         create_sub($/, $past);
     }
 
+    # If we have an only, proto or multi, we must have a name.
+    if $<sym> ne "" && $past.name() eq "" {
+        $/.panic("'" ~ $<sym> ~ "' can only be used on named routines");
+    }
+
     # If it was multi or a proto, then emit a :multi.
     if $<sym> eq 'multi' || $<sym> eq 'proto' {
         # For now, if this is a multi we need to add code to transform the sub's
@@ -578,6 +605,7 @@
             my $descriptor := sig_descriptor_create();
             sig_descriptor_set($descriptor, 'name', PAST::Val.new( :value('$') ));
             sig_descriptor_set($descriptor, 'invocant', 1);
+            sig_descriptor_set($descriptor, 'multi_invocant', 1);
             sig_descriptor_set($descriptor, 'constraints',
                 PAST::Op.new(
                     :pasttype('call'),
@@ -588,6 +616,9 @@
             $signature.unshift($obj);
         }
     }
+    elsif $key eq 'submethod' {
+        $/.panic('submethod declarations not yet implemented');
+    }
     $past.node($/);
     if (+@($past[1])) {
         declare_implicit_routine_vars($past);
@@ -2330,7 +2361,7 @@
         # the declaration evaluate to the signature object, thus allowing an
         # assignment to it.
         my @declare := sig_extract_declarables($/, $past);
-        $past := PAST::Stmts.new($past);
+        $past := PAST::Op.new(:name('list'), :node($/) );
         for @declare {
             # Work out sigil and twigil.
             my $sigil := substr($_, 0, 1);
@@ -2354,7 +2385,7 @@
                 else {
                     $scope := 'package';
                 }
-                $past.unshift(PAST::Var.new(
+                $past.push(PAST::Var.new(
                     :name($_),
                     :isdecl(1),
                     :scope($scope),
@@ -3236,7 +3267,7 @@
             $block[0].push( PAST::Var.new( :name($_),
                                            :scope('lexical'),
                                            :isdecl(1),
-                                           :viviself('Perl6Scalar') ) );
+                                           :viviself('Failure') ) );
             $block.symbol($_, :scope('lexical') );
         }
     }

Modified: branches/calling_conventions/languages/perl6/src/parser/grammar.pg
==============================================================================
--- branches/calling_conventions/languages/perl6/src/parser/grammar.pg	(original)
+++ branches/calling_conventions/languages/perl6/src/parser/grammar.pg	Sat Dec 13 19:46:32 2008
@@ -240,6 +240,7 @@
     | <use_statement> {*}                        #= use_statement
     | <begin_statement> {*}                      #= begin_statement
     | <end_statement> {*}                        #= end_statement
+    | <catch_statement> {*}                      #= catch_statement
 }
 
 rule if_statement {
@@ -323,6 +324,12 @@
     {*}
 }
 
+rule catch_statement {
+    $<sym>=[CATCH]
+    <block>
+    {*}
+}
+
 rule statement_mod_loop {
     $<sym>=[while|until|for|given] <EXPR> {*}
 }
@@ -350,6 +357,7 @@
 token routine_declarator {
     | $<sym>='sub' <routine_def> {*}             #= sub
     | $<sym>='method' <method_def> {*}           #= method
+    | $<sym>='submethod' <method_def> {*}        #= submethod
 }
 
 rule routine_def {

Modified: branches/calling_conventions/languages/perl6/src/parser/quote_expression.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/parser/quote_expression.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/parser/quote_expression.pir	Sat Dec 13 19:46:32 2008
@@ -51,13 +51,13 @@
     action = options['action']
 
     ##  set up options based on flags
-    .local pmc flagarray, iter
+    .local pmc flagarray, it
     flagarray = split ' ', flags
-    iter = new 'Iterator', flagarray
+    it = iter flagarray
   iter_loop:
-    unless iter goto iter_end
+    unless it goto iter_end
     .local string oname
-    oname = shift iter
+    oname = shift it
     oname = substr oname, 1
     options[oname] = 1
     if oname == 'ww' goto opt_ww
@@ -154,11 +154,11 @@
     ##  using an iterator to do it.
     ##  wwdoubleopts = clone options
             wwdoubleopts = new 'Hash'
-            .local pmc iter2
-            iter2 = new 'Iterator', options
+            .local pmc it2
+            it2 = iter options
           iter2_loop:
-            unless iter2 goto iter2_end
-            $S0 = shift iter2
+            unless it2 goto iter2_end
+            $S0 = shift it2
             $P0 = options[$S0]
             wwdoubleopts[$S0] = $P0
             goto iter2_loop

Modified: branches/calling_conventions/languages/perl6/src/pmc/perl6multisub.pmc
==============================================================================
--- branches/calling_conventions/languages/perl6/src/pmc/perl6multisub.pmc	(original)
+++ branches/calling_conventions/languages/perl6/src/pmc/perl6multisub.pmc	Sat Dec 13 19:46:32 2008
@@ -327,15 +327,18 @@
         info->types = mem_allocate_n_zeroed_typed(sig_elems + 1, PMC*);
         info->constraints = mem_allocate_n_zeroed_typed(sig_elems + 1, PMC*);
         for (j = 0; j < sig_elems; j++) {
-            PMC *param = VTABLE_get_pmc_keyed_int(interp, params, j);
-            PMC *type = VTABLE_get_pmc_keyed_str(interp, param,
+            PMC *param       = VTABLE_get_pmc_keyed_int(interp, params, j);
+            PMC *type        = VTABLE_get_pmc_keyed_str(interp, param,
                     CONST_STRING(interp, "type"));
             PMC *constraints = VTABLE_get_pmc_keyed_str(interp, param,
                     CONST_STRING(interp, "constraints"));
+            PMC *multi_inv   = VTABLE_get_pmc_keyed_str(interp, param,
+                    CONST_STRING(interp, "multi_invocant"));
             info->types[j] = type;
             info->constraints[j] = constraints;
+            if (!PMC_IS_NULL(multi_inv) && VTABLE_get_bool(interp, multi_inv))
+                info->num_types++;
         }
-        info->num_types = sig_elems;
 
         /* Add it to graph node, and initialize list of edges. */
         graph[insert_pos] = mem_allocate_zeroed_typed(candidate_graph_node);

Modified: branches/calling_conventions/languages/perl6/src/utils/perl6doc.pir
==============================================================================
--- branches/calling_conventions/languages/perl6/src/utils/perl6doc.pir	(original)
+++ branches/calling_conventions/languages/perl6/src/utils/perl6doc.pir	Sat Dec 13 19:46:32 2008
@@ -97,12 +97,12 @@
     ##  coming directly from Parrot, but currently Parrot provides
     ##  it as a ResizableStringArray and we need Undefs for
     ##  non-existent elements (RSA gives empty strings).
-    .local pmc args, iter
+    .local pmc args, it
     args = new 'ResizableStringArray'
-    iter = new 'Iterator', args_str
+    it = iter args_str
   args_loop:
-    unless iter goto args_end
-    $P0 = shift iter
+    unless it goto args_end
+    $P0 = shift it
     push args, $P0
     goto args_loop
   args_end:

Modified: branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-arity.t
==============================================================================
--- branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-arity.t	(original)
+++ branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-arity.t	Sat Dec 13 19:46:32 2008
@@ -148,8 +148,10 @@
     .param int num_params
 
     # Get Any type.
-    .local pmc any
+    .local pmc any, true
     any = get_hll_global "Any"
+    true = new 'Integer'
+    true = 1
     
     # Make signature.
     $P0 = new 'Signature'
@@ -160,6 +162,7 @@
     if $I0 == num_params goto param_loop_end
     $P2 = new 'Perl6Hash'
     $P2["type"] = any
+    $P2["multi_invocant"] = true
     push $P1, $P2
     inc $I0
     goto param_loop

Modified: branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-tiebreak.t
==============================================================================
--- branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-tiebreak.t	(original)
+++ branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-tiebreak.t	Sat Dec 13 19:46:32 2008
@@ -66,8 +66,10 @@
     .param pmc constraints :slurpy
     
     # Make signature.
-    .local pmc any
+    .local pmc any, true
     any = get_hll_global 'Any'
+    true = new 'Integer'
+    true = 1
     $P0 = new 'Signature'
     $P1 = new 'Perl6Array'
     setattribute $P0, "@!params", $P1
@@ -79,6 +81,7 @@
     $P2 = new 'Perl6Hash'
     $P2["type"] = any
     $P2["constraints"] = con
+    $P2["multi_invocant"] = true
     push $P1, $P2
     goto param_loop
   param_loop_end:

Modified: branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-type.t
==============================================================================
--- branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-type.t	(original)
+++ branches/calling_conventions/languages/perl6/t/pmc/perl6multisub-type.t	Sat Dec 13 19:46:32 2008
@@ -172,6 +172,9 @@
     .param pmc types :slurpy
     
     # Make signature.
+    .local pmc true
+    true = new 'Integer'
+    true = 1
     $P0 = new 'Signature'
     $P1 = new 'Perl6Array'
     setattribute $P0, "@!params", $P1
@@ -184,6 +187,7 @@
     type = get_hll_global $S0
     $P2 = new 'Perl6Hash'
     $P2["type"] = type
+    $P2["multi_invocant"] = true
     push $P1, $P2
     goto param_loop
   param_loop_end:

Modified: branches/calling_conventions/languages/perl6/t/spectest.data
==============================================================================
--- branches/calling_conventions/languages/perl6/t/spectest.data	(original)
+++ branches/calling_conventions/languages/perl6/t/spectest.data	Sat Dec 13 19:46:32 2008
@@ -16,6 +16,7 @@
 S02-builtin_data_types/flattening.t
 S02-builtin_data_types/hash_ref.t
 S02-builtin_data_types/hash.t
+S02-builtin_data_types/lists.t
 S02-builtin_data_types/mixed_multi_dimensional.t
 S02-builtin_data_types/multi_dimensional_array.t
 S02-builtin_data_types/nested_arrays.t
@@ -41,6 +42,7 @@
 S02-magicals/dollar-underscore.t
 S02-names_and_variables/fmt.t
 S02-names_and_variables/varnames.t
+S02-one-pass-parsing/less-than.t
 S02-polymorphic_types/subset.t
 S02-whitespace_and_comments/minimal-whitespace.t
 S02-whitespace_and_comments/one-pass-parsing.t
@@ -135,6 +137,7 @@
 S06-signature/named-parameters.t
 S06-signature/named-placeholders.t
 S06-signature/passing-arrays.t
+S06-signature/passing-hashes.t
 S06-signature/positional-placeholders.t
 S06-signature/slurpy-params.t
 S06-signature/slurpy-placeholders.t
@@ -143,6 +146,7 @@
 S06-traits/is-copy.t
 S06-traits/is-rw.t
 S06-traits/misc.t
+S09-subscript_slice/slice.t
 S11-modules/export.t
 S12-attributes/class.t
 S12-attributes/delegation.t
@@ -150,7 +154,6 @@
 S12-class/anonymous.t
 S12-class/attributes.t
 S12-class/basic.t
-S12-class/declaration-order.t
 S12-class/inheritance-class-methods.t
 S12-class/inheritance.t
 S12-class/instantiate.t
@@ -178,6 +181,7 @@
 S12-subset/multi-dispatch.t
 S12-subset/subtypes.t
 S16-io/basic-open.t
+S16-filehandles/io_in_while_loops.t
 S16-io/say.t
 S29-any/cmp.t
 S29-array/delete.t

Modified: branches/calling_conventions/languages/perl6/tools/progress-graph.pl
==============================================================================
--- branches/calling_conventions/languages/perl6/tools/progress-graph.pl	(original)
+++ branches/calling_conventions/languages/perl6/tools/progress-graph.pl	Sat Dec 13 19:46:32 2008
@@ -37,13 +37,13 @@
 # column names
 use constant DATE       => 0;
 use constant REVISION   => 1;
-use constant FILES      => 2;
-use constant TESTS      => 3;
-use constant PASS       => 4;
-use constant FAIL       => 5;
-use constant TODO       => 6;
-use constant SKIP       => 7;
-use constant SPECPLAN   => 8;
+use constant PASS       => 2;
+use constant FAIL       => 3;
+use constant TODO       => 4;
+use constant SKIP       => 5;
+use constant REGR       => 6;
+use constant SPEC       => 7;
+use constant FILES      => 8;
 use constant SPECSKIP   => 9;
 
 use constant MAX_COL    => 9;
@@ -73,7 +73,7 @@
     $csv->parse($_);
     my @cols = $csv->fields();
     push @{$data[0]}, substr $cols[0], 0, 10;
-    $cols[SPECSKIP] = $cols[SPECPLAN] - sum @cols[PASS, FAIL, TODO, SKIP];
+    $cols[SPECSKIP] = $cols[SPEC] - sum @cols[PASS, FAIL, TODO, SKIP];
     for (1..MAX_COL){
         push @{$data[$_]}, $cols[$_];
     }
@@ -97,7 +97,7 @@
         dclrs               => [qw(#00FF00 #FF0000 #0000FF #FFFF00 #DDDDDD)]
     ) or die $p->error;
 
-$p->set_legend('Pass', 'Fail', 'Todo', 'RSkip', 'SSkip');
+$p->set_legend('Pass', 'Fail', 'Todo', 'Regr', 'Spec');
 $p->set_x_axis_font(gdSmallFont);
 $p->set_y_axis_font(gdSmallFont);
 

Modified: branches/calling_conventions/languages/perl6/tools/test_summary.pl
==============================================================================
--- branches/calling_conventions/languages/perl6/tools/test_summary.pl	(original)
+++ branches/calling_conventions/languages/perl6/tools/test_summary.pl	Sat Dec 13 19:46:32 2008
@@ -47,10 +47,20 @@
     $tname{$tfile} = $tname;
 }
 
-$| = 1;
-printf "%s  plan test pass fail todo skip\n", ' ' x $max;
-my %sum;
+my @syn = qw(S02 S03 S04 S05 S06 S09 S10 S12 S13 S16 S17 S29);
+my @col = qw(pass fail todo skip plan spec);
 my %syn;
+my %sum;
+for my $syn (@syn) {
+    $syn{$syn}++;
+    for my $col (@col) {
+        $sum{"$syn-$col"} = 0;
+    }
+}
+
+$| = 1;
+printf "%s  pass fail todo skip test plan\n", ' ' x $max;
+
 my @fail;
 for my $tfile (@tfiles) {
     my $th;
@@ -62,7 +72,7 @@
     close($th);
     my $tname = $tname{$tfile};
     my $syn = substr($tname, 0, 3); $syn{$syn}++;
-    printf "%s%s..%4d", $tname, '.' x ($max - length($tname)), $plan;
+    printf "%s%s..", $tname, '.' x ($max - length($tname));
     my $cmd = "../../parrot perl6.pbc $tfile";
     my @results = split "\n", `$cmd`;
     my ($test, $pass, $fail, $todo, $skip) = (0,0,0,0,0);
@@ -90,13 +100,14 @@
         push @fail, "$tname aborted $abort test(s)";
         $test += $abort;
     }
-    printf " %4d %4d %4d %4d %4d\n", $test, $pass, $fail, $todo, $skip;
-    $sum{'plan'} += $plan;  $sum{"$syn-plan"} += $plan;
-    $sum{'test'} += $test;  $sum{"$syn-test"} += $test;
+    printf "%4d %4d %4d %4d %4d %4d\n",
+        $pass, $fail, $todo, $skip, $test, $plan;
     $sum{'pass'} += $pass;  $sum{"$syn-pass"} += $pass;
     $sum{'fail'} += $fail;  $sum{"$syn-fail"} += $fail;
     $sum{'todo'} += $todo;  $sum{"$syn-todo"} += $todo;
     $sum{'skip'} += $skip;  $sum{"$syn-skip"} += $skip;
+    $sum{'test'} += $test;  $sum{"$syn-test"} += $test;
+    $sum{'plan'} += $plan;  $sum{"$syn-plan"} += $plan;
     for (keys %skip) {
         printf "    %2d skipped: %s\n", $skip{$_}, $_;
     }
@@ -108,27 +119,37 @@
     }
 }
 
+for my $syn (sort keys %syn) {
+    my $ackcmd = "ack plan t/spec/$syn* -wh";
+    my @results = `$ackcmd`;
+    my $spec = 0;
+    for (@results) {
+        $spec += $1 if /^\s*plan\s+(\d+)/;
+    }
+    $sum{"$syn-spec"} = $spec;
+    $sum{'spec'} += $spec;
+}
+
+my $sumfmt = qq(%-9.9s %6s,%6s,%6s,%6s,%6s,%6s\n);
 print "----------------\n";
-print "Synopsis summary:\n";
-printf "%s  plan test pass fail todo skip\n", ' ' x $max;
+print qq("Synopsis","pass","fail","todo","skip","regr","spec"\n);
 for my $syn (sort keys %syn) {
-    printf "%s%s..%4d %4d %4d %4d %4d %4d\n",
-        $syn, '.' x ($max - length($syn)),
-        $sum{"$syn-plan"},
-        $sum{"$syn-test"},
-        $sum{"$syn-pass"},
-        $sum{"$syn-fail"},
-        $sum{"$syn-todo"},
-        $sum{"$syn-skip"};
+    printf $sumfmt, qq("$syn",), map { $sum{"$syn-$_"} } @col;
 }
 
+my $total = scalar(@tfiles).' regression files';
+printf $sumfmt, qq("total",), map { $sum{$_} } @col;
+
 print "----------------\n";
+my $rev = $ENV{'REV'};
+if ($rev) {
+    my $file = scalar(@tfiles);
+    print join(',', $rev, (map { $sum{$_} } @col), $file), "\n";
+    print "[rakudo]: spectest-progress.csv update: ",
+          "$file files, $sum{'pass'} passing, $sum{'fail'} failing\n";
+}
+
 if (@fail) {
     print "Failure summary:\n";
     foreach (@fail) { print "    $_\n"; }
 }
-my $total = scalar(@tfiles)." test files";
-$total .= ' ' x ($max-length($total));
-printf "%s  %4d %4d %4d %4d %4d %4d\n",
-    $total, $sum{'plan'}, $sum{'test'}, $sum{'pass'},
-    $sum{'fail'}, $sum{'todo'}, $sum{'skip'};

Modified: branches/calling_conventions/languages/pipp/README
==============================================================================
--- branches/calling_conventions/languages/pipp/README	(original)
+++ branches/calling_conventions/languages/pipp/README	Sat Dec 13 19:46:32 2008
@@ -1,5 +1,11 @@
 # $Id$
 
 Pipp is Parrot's PHP.
+Pipp is an implementation of the language PHP that runs on Parrot
+and uses the Parrot Compiler Toolkit.
 
-For more information see docs/overview.pod.
+Run 'make test' for building and running the tests in F<t>.
+Run 'make smolder_test' for testing and submitting the test result to
+http://smolder.plusthree.com/app/public_projects/smoke_reports/10
+
+For more information see F<docs/pipp.pod> or visit L<http://pipp.org>.

Modified: branches/calling_conventions/languages/pipp/src/common/php_API.pir
==============================================================================
--- branches/calling_conventions/languages/pipp/src/common/php_API.pir	(original)
+++ branches/calling_conventions/languages/pipp/src/common/php_API.pir	Sat Dec 13 19:46:32 2008
@@ -429,8 +429,20 @@
     .param string mode
     .param int options
     .param pmc context :optional
-    $P0 = open path, mode
+
+    # for now ignore failures
+    push_eh catch
+
+    $P0 = new 'FileHandle'
+    $P0.'open'( path, mode )
+
+    pop_eh
+
     .return ($P0)
+
+catch:
+    .RETURN_FALSE()
+
 .end
 
 =item C<stream_passthru>

Modified: branches/calling_conventions/languages/pipp/src/common/php_file.pir
==============================================================================
--- branches/calling_conventions/languages/pipp/src/common/php_file.pir	(original)
+++ branches/calling_conventions/languages/pipp/src/common/php_file.pir	Sat Dec 13 19:46:32 2008
@@ -13,7 +13,7 @@
 
 =cut
 
-.const string STREAM_PMC = 'ParrotIO'
+.const string STREAM_PMC = 'FileHandle'
 
 .const int SEEK_SET = 0
 .const int SEEK_CUR = 1
@@ -124,12 +124,14 @@
   L1:
     $P1 = shift args
     .local pmc stream
+    push_eh L3
     stream = fetch_resource($P1, STREAM_PMC)
-    unless null stream goto L2
-    .RETURN_FALSE()
+    pop_eh
   L2:
     close stream
     .RETURN_TRUE()
+  L3:
+    .RETURN_FALSE()
 .end
 
 =item C<bool feof(resource fp)>
@@ -226,6 +228,7 @@
 
 .sub 'file_get_contents'
     .param pmc args :slurpy
+
     .local string filename
     .local int use_include_path
     .local pmc context
@@ -249,13 +252,21 @@
     unless use_include_path goto L3
     $I0 |= USE_PATH
   L3:
-    stream = stream_open(filename, '<', $I0, context)
-    if stream goto L4
-    .RETURN_FALSE()
+    stream = stream_open(filename, 'r', $I0, context)
   L4:
-    $S0 = stream.'slurp'('')
+    # for now ignore failures
+    push_eh catch
+
+    $S0 = stream.'readall'()
     close stream
+
+    pop_eh
+
     .RETURN_STRING($S0)
+
+catch:
+    .RETURN_FALSE()
+
 .end
 
 =item C<int file_put_contents(string file, mixed data [, int flags [, resource context]])>
@@ -319,11 +330,13 @@
     $I0 |= USE_PATH
   L2:
     $S0 = _getmode(mode)
+    push_eh L4
     stream = stream_open(filename, $S0, $I0, context)
-    if stream goto L3
-    .RETURN_FALSE()
+    pop_eh
   L3:
     .RETURN_RESOURCE(stream)
+  L4:
+    .RETURN_FALSE()
 .end
 
 .sub '_getmode' :anon

Modified: branches/calling_conventions/languages/pipp/src/common/php_md5.pir
==============================================================================
--- branches/calling_conventions/languages/pipp/src/common/php_md5.pir	(original)
+++ branches/calling_conventions/languages/pipp/src/common/php_md5.pir	Sat Dec 13 19:46:32 2008
@@ -85,7 +85,7 @@
   L1:
     .local pmc f, md, res
     $I0 = REPORT_ERRORS | ENFORCE_SAFE_MODE
-    f = stream_open(filename, '<', $I0)
+    f = stream_open(filename, 'r', $I0)
     unless f goto L2
     new md, 'MD5'
     md.'Init'()

Modified: branches/calling_conventions/languages/pipp/src/common/php_sha1.pir
==============================================================================
--- branches/calling_conventions/languages/pipp/src/common/php_sha1.pir	(original)
+++ branches/calling_conventions/languages/pipp/src/common/php_sha1.pir	Sat Dec 13 19:46:32 2008
@@ -85,7 +85,7 @@
   L1:
     .local pmc f, md, res
     $I0 = REPORT_ERRORS | ENFORCE_SAFE_MODE
-    f = stream_open(filename, '<', $I0)
+    f = stream_open(filename, 'r', $I0)
     unless f goto L2
     new md, 'SHA1'
     md.'Init'()

Modified: branches/calling_conventions/languages/pipp/t/php/builtin.t
==============================================================================
--- branches/calling_conventions/languages/pipp/t/php/builtin.t	(original)
+++ branches/calling_conventions/languages/pipp/t/php/builtin.t	Sat Dec 13 19:46:32 2008
@@ -34,7 +34,7 @@
   echo get_resource_type($fp);
 ?>
 CODE
-/^(stream|ParrotIO)$/
+/^(stream|FileHandle)$/
 OUT
 
 unlink 'pipp/file.txt' if (-f 'pipp/file.txt');

Modified: branches/calling_conventions/languages/pipp/t/php/file.t
==============================================================================
--- branches/calling_conventions/languages/pipp/t/php/file.t	(original)
+++ branches/calling_conventions/languages/pipp/t/php/file.t	Sat Dec 13 19:46:32 2008
@@ -78,7 +78,7 @@
 resource
 OUT
 
-language_output_is( 'Pipp', <<'CODE', <<'OUT', 'fopen(nofile)' );
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'fopen(nofile)', todo => 'currently broken' );
 <?php
   $fp = fopen('nofile.txt', 'r');
   echo gettype($fp), "\n";
@@ -98,15 +98,15 @@
 1
 OUT
 
-language_output_like( 'Pipp', <<'CODE', <<'OUT', 'fclose() bad arg' );
+language_output_like( 'Pipp', <<'CODE', <<'OUT', 'fclose() bad arg', todo => 'currently broken' );
 <?php
   fclose('bad');
 ?>
 CODE
-/fclose\(\): supplied argument is not a valid (stream|ParrotIO) resource/
+/fclose\(\): supplied argument is not a valid (stream|FileHandle) resource/
 OUT
 
-language_output_is( 'Pipp', <<'CODE', <<'OUT', 'fpassthru()' );
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'fpassthru()', todo => 'currently broken' );
 <?php
   $fp = fopen('file.txt', 'r');
   fpassthru($fp);
@@ -118,7 +118,7 @@
 line 3
 OUT
 
-language_output_is( 'Pipp', <<'CODE', <<'OUT', 'readfile(file)' );
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'readfile(file)', todo => 'currently broken' );
 <?php
   echo readfile('file.txt'), "\n";
 ?>

Modified: branches/calling_conventions/languages/pipp/t/php/string.t
==============================================================================
--- branches/calling_conventions/languages/pipp/t/php/string.t	(original)
+++ branches/calling_conventions/languages/pipp/t/php/string.t	Sat Dec 13 19:46:32 2008
@@ -24,8 +24,7 @@
 use FindBin;
 use lib "$FindBin::Bin/../../../../lib", "$FindBin::Bin/../../lib";
 
-use Test::More     tests => 14;
-use Parrot::Test;
+use Parrot::Test tests => 35;
 
 
 language_output_is( 'Pipp', <<'CODE', <<'OUT', 'bin2hex' );
@@ -168,9 +167,315 @@
 Abc
 OUT
 
+language_output_is( 'Pipp', <<'CODE', <<'OUT', '== for equal strings' );
+<?php
+if ( 'asdf' == 'asdf' )
+{
+  echo "== for equal strings\n";
+}
+?>
+CODE
+== for equal strings
+OUT
+
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', '== for unequal strings' );
+<?php
+if ( 'asdf' == 'jklö' )
+{
+  echo "wrong turn\n";
+}
+else
+{
+  echo "== for unequal strings\n";
+}
+?>
+CODE
+== for unequal strings
+OUT
+
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', '!= for equal strings' );
+<?php
+if ( 'asdf' != 'asdf' )
+{
+  echo "dummy";
+}
+else
+{
+  echo "!= for equal strings\n";
+}
+?>
+CODE
+!= for equal strings
+OUT
+
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', '!= for unequal strings' );
+<?php
+if ( 'asdf' != 'jklö' )
+{
+  echo "!= for unequal strings\n";
+}
+?>
+CODE
+!= for unequal strings
+OUT
+
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'var_dump()' );
+<?php
+var_dump( 'asdf' );
+?>
+CODE
+string(4) "asdf"
+OUT
+
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'string interpolation, simple syntax' );
+<?php
+$var1 = "VAR1";
+$var2 = "VAR2";
+echo "$var1 $var2\n";
+?>
+CODE
+VAR1 VAR2
+OUT
+
+SKIP: {
+    skip 'runaway process', 1;
+
+    language_output_is( 'Pipp', <<'CODE', <<'OUT', 'dollar followed by a space' );
+<?php
+ 
+echo ";$ ;", "\n";
+
+?>
+CODE
+;$ ;
+OUT
+}
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'curly string interpolation, one var' );
+<?php
+$var1 = "VAR1";
+echo "{$var1}\n";
+?>
+CODE
+VAR1
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'curly string interpolation, two vars', todo => 'broken' );
+<?php
+$var1 = "VAR1";
+$var2 = "VAR2";
+echo "{$var1} {$var2}\n";
+?>
+CODE
+VAR1 VAR2
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'print a pair of curlies' );
+<?php
+echo "curlies: {}\n";
+?>
+CODE
+curlies: {}
+OUT
+
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'single quoted string' );
+<?php
+
+$dummy = 'INTERPOLATED';
+
+echo 'no variable expansion: $dummy', "\n";
+echo 'no variable expansion in twiddles: {$dummy}', "\n";
+echo 'backslash at end: \\', "\n";
+echo 'backslash not at end: \dummy', "\n";
+echo 'backslash before a space: \ ', "\n";
+echo 'escaped backslash before a space: \\ ', "\n";
+echo 'not a newline: \n', "\n";
+echo 'not a carriage return: \r', "\n";
+echo 'not a tab: \t', "\n";
+echo 'not a vertical tab: \v', "\n";
+echo 'not a form feed: \f', "\n";
+echo 'not an octal: \101', "\n";
+echo 'not an hex: \x41', "\n";
+echo 'single quote: \'', "\n";
+echo 'double quote: "', "\n";
+echo 'backslash and double quote: \"', "\n";
+echo 'escaped backslash and double quote: \\"', "\n";
+echo 'backslash and single quote: \\\'', "\n";
+echo 'two backslashes and a single quote: \\\\\'', "\n";
+echo 'backslash and a dollar: \$dummy', "\n";
+echo 'backslash and twiddles: \{$dummy}', "\n";
+
+?>
+CODE
+no variable expansion: $dummy
+no variable expansion in twiddles: {$dummy}
+backslash at end: \
+backslash not at end: \dummy
+backslash before a space: \ 
+escaped backslash before a space: \ 
+not a newline: \n
+not a carriage return: \r
+not a tab: \t
+not a vertical tab: \v
+not a form feed: \f
+not an octal: \101
+not an hex: \x41
+single quote: '
+double quote: "
+backslash and double quote: \"
+escaped backslash and double quote: \"
+backslash and single quote: \'
+two backslashes and a single quote: \\'
+backslash and a dollar: \$dummy
+backslash and twiddles: \{$dummy}
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'double quoted string' );
+<?php
+
+$dummy = 'INTERPOLATED';
+
+echo "variable expansion: $dummy", "\n";
+echo "backslash at end: \\", "\n";
+echo "backslash not at end: \dummy", "\n";
+echo "backslash before a space: \ ", "\n";
+echo "escaped backslash before a space: \\ ", "\n";
+echo "a newline: \n", "\n";
+echo "a tab: \t", "\n";
+echo "an octal: \101", "\n";
+echo "an hex: \x41", "\n";
+echo "single quote: '", "\n";
+echo "double quote: \"", "\n";
+echo "backslash and double quote: \\\"", "\n";
+echo "backslash and single quote: \\'", "\n";
+echo "two backslashes and a single quote: \\\\'", "\n";
+echo "backslash and a dollar: \\\$dummy", "\n";
+echo "backslash and twiddles: \{$dummy}", "\n";
+
+?>
+CODE
+variable expansion: INTERPOLATED
+backslash at end: \
+backslash not at end: \dummy
+backslash before a space: \ 
+escaped backslash before a space: \ 
+a newline: 
+
+a tab: 	
+an octal: A
+an hex: A
+single quote: '
+double quote: "
+backslash and double quote: \"
+backslash and single quote: \'
+two backslashes and a single quote: \\'
+backslash and a dollar: \$dummy
+backslash and twiddles: \{INTERPOLATED}
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<'OUT', 'curly quotes in double quoted string' );
+<?php
+
+echo ";{;", "\n";
+echo ";\{;", "\n";
+
+?>
+CODE
+;{;
+;\{;
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<"OUT", 'vertical tab, new in PHP 5.3' );
+<?php
+
+echo "a vertical tab: \v", "\n";
+
+?>
+CODE
+a vertical tab: \013
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<"OUT", 'form feed, new in PHP 5.3' );
+<?php
+
+echo "a form feed: \f", "\n";
+
+?>
+CODE
+a form feed: \f
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<"OUT", 'carriage return' );
+<?php
+
+echo "a carriage return: \r<--", "\n";
+
+?>
+CODE
+a carriage return: \r<--
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<"OUT", 'hex escapes' );
+<?php
+
+echo "ABC \x41\x42\x43", "\n";
+
+?>
+CODE
+ABC ABC
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<"OUT", 'octal escapes' );
+<?php
+
+echo "ABC \101\102\103", "\n";
+
+?>
+CODE
+ABC ABC
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<"OUT", 'octals ge \400 escapes', todo => 'not implemented yet' );
+<?php
+
+echo "ABC \501\502\503", "\n";
+
+?>
+CODE
+ABC ABC
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<"OUT", 'hex escapes followed by a digit' );
+<?php
+
+echo "A1B2C3 \x411\x422\x433", "\n";
+
+?>
+CODE
+A1B2C3 A1B2C3
+OUT
+
+language_output_is( 'Pipp', <<'CODE', <<"OUT", 'octal escapes followed by a digit' );
+<?php
+
+echo "A1B2C3 \1011\1022\1033", "\n";
+
+?>
+CODE
+A1B2C3 A1B2C3
+OUT
+
 # Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4:
+# Copyright (C) 2008, The Perl Foundation.
+# $Id$

Modified: branches/calling_conventions/languages/unlambda/unl.pir
==============================================================================
--- branches/calling_conventions/languages/unlambda/unl.pir	(original)
+++ branches/calling_conventions/languages/unlambda/unl.pir	Sat Dec 13 19:46:32 2008
@@ -41,7 +41,7 @@
     $P0."recursion_limit"(50000)
     prog = parse(in)
     cchar = new 'String'
-    global "cchar" = cchar
+    set_global "cchar", cchar
     # _dumper( prog, "prog" )
     ev(prog)
 .end
@@ -66,63 +66,63 @@
 loop:
     ch = read io, 1
     unless ch == '`' goto not_bq
-	op = parse(io)
-	arg = parse(io)
-	pair = new 'FixedPMCArray'
-	pair = 2
-	pair[0] = op
-	pair[1] = arg
-	.return (pair)
+        op = parse(io)
+        arg = parse(io)
+        pair = new 'FixedPMCArray'
+        pair = 2
+        pair[0] = op
+        pair[1] = arg
+        .return (pair)
 not_bq:
     unless ch == '.' goto not_dot
-	$S0 = read io, 1
-	arg = new 'String'
-	arg = $S0
-	.tailcall clos_pr(arg)
+        $S0 = read io, 1
+        arg = new 'String'
+        arg = $S0
+        .tailcall clos_pr(arg)
 not_dot:
     unless ch == '@' goto not_rd
-	.return (rd)
+        .return (rd)
 not_rd:
     unless ch == '|' goto not_pc
-	.return (pc)
+        .return (pc)
 not_pc:
     unless ch == '?' goto not_rc
-	$S0 = read io, 1
-	arg = new 'String'
-	arg = $S0
-	.tailcall clos_rc(arg)
+        $S0 = read io, 1
+        arg = new 'String'
+        arg = $S0
+        .tailcall clos_rc(arg)
 not_rc:
     unless ch == 'r' goto not_r
-	arg = new 'String'
-	arg = "\n"
-	.tailcall clos_pr(arg)
+        arg = new 'String'
+        arg = "\n"
+        .tailcall clos_pr(arg)
 not_r:
     unless ch == 'i' goto not_i
-	.return (i)
+        .return (i)
 not_i:
     unless ch == 'k' goto not_k
-	.return (k)
+        .return (k)
 not_k:
     unless ch == 's' goto not_s
-	.return (s)
+        .return (s)
 not_s:
     unless ch == 'v' goto not_v
-	.return (v)
+        .return (v)
 not_v:
     unless ch == 'c' goto not_c
-	.return (c)
+        .return (c)
 not_c:
     unless ch == 'd' goto not_d
-	.return (d)
+        .return (d)
 not_d:
     unless ch == 'e' goto not_e
-	.return (e)
+        .return (e)
 not_e:
     unless ch == '#' goto not_comment
     swallow:
-	ch = read io, 1
-	if ch != "\n" goto swallow
-	goto loop
+        ch = read io, 1
+        if ch != "\n" goto swallow
+        goto loop
 not_comment:
     if ch == ' ' goto loop
     if ch == "\t" goto loop
@@ -139,15 +139,15 @@
     .param pmc exp
     $I0 = isa exp, 'FixedPMCArray'
     unless $I0 goto no_ar
-	$I1 = elements exp
-	if $I1 != 2 goto no_ar
-	.local pmc car, cdr
-	print "`"
-	car = exp[0]
-	cdr = exp[1]
-	unparse(car)
-	unparse(cdr)
-	.return()
+        $I1 = elements exp
+        if $I1 != 2 goto no_ar
+        .local pmc car, cdr
+        print "`"
+        car = exp[0]
+        cdr = exp[1]
+        unparse(car)
+        unparse(cdr)
+        .return()
 no_ar:
     $S0 = exp
     print $S0
@@ -168,22 +168,22 @@
     ## unparse_all(exp)
     $I0 = isa exp, 'FixedPMCArray'
     unless $I0 goto no_ar
-	$I1 = elements exp
-	if $I1 != 2 goto no_pair
-	.local pmc car, cdr, op, arg
-	.const 'Sub' d  = "d"
-	car = exp[0]
-	cdr = exp[1]
-	# this is tricky - we have to apply car
-	# but discard it if it's delayed
-	# else this doesn't play together with call/cc
-	op = ev(car)
-	if car != d goto not_d
-	.tailcall clos_d1(cdr)
+        $I1 = elements exp
+        if $I1 != 2 goto no_pair
+        .local pmc car, cdr, op, arg
+        .const 'Sub' d  = "d"
+        car = exp[0]
+        cdr = exp[1]
+        # this is tricky - we have to apply car
+        # but discard it if it's delayed
+        # else this doesn't play together with call/cc
+        op = ev(car)
+        if car != d goto not_d
+        .tailcall clos_d1(cdr)
 
     not_d:
-	arg = ev(cdr)
-	.tailcall op(arg)
+        arg = ev(cdr)
+        .tailcall op(arg)
 no_ar:
     .return (exp)
 no_pair:
@@ -371,7 +371,7 @@
     ch = ''
     unless io goto void
     ch = read io, 1
-    cchar = global "cchar"
+    cchar = get_global "cchar"
     cchar = ch
     if ch == '' goto void
        .const 'Sub' i = "i"
@@ -395,7 +395,7 @@
     .param pmc x
     .local pmc cchar, i, v
     .local string ch
-    cchar = global "cchar"
+    cchar = get_global "cchar"
     ch = cchar
     if ch == '' goto void
        .const 'Sub' i = "i"
@@ -413,10 +413,10 @@
     .param pmc x
     .local pmc cchar, i, v, pr, p, s
     .local string ch
-    cchar = global "cchar"
+    cchar = get_global "cchar"
     ch = cchar
     if ch == '' goto void
-	s = clone cchar
+        s = clone cchar
         p = clos_pr(s)
         .tailcall x(p)
 void:

Modified: branches/calling_conventions/lib/Parrot/Docs/Section/Info.pm
==============================================================================
--- branches/calling_conventions/lib/Parrot/Docs/Section/Info.pm	(original)
+++ branches/calling_conventions/lib/Parrot/Docs/Section/Info.pm	Sat Dec 13 19:46:32 2008
@@ -53,7 +53,6 @@
                 'Instructions for Parrot in a Win32 environment.', 'README_win32.pod'
             ),
             $self->new_item( 'This file lists what\'s new in each version.', 'NEWS' ),
-            $self->new_item( 'A plan for Parrot.',                           'docs/ROADMAP.pod' ),
             $self->new_item( 'Where to find or put things that need doing in Parrot.', 'TODO' ),
             $self->new_item(
 'This is a description of the steps someone should follow when they have to prepare a new version for release.',

Modified: branches/calling_conventions/lib/Parrot/Manifest.pm
==============================================================================
--- branches/calling_conventions/lib/Parrot/Manifest.pm	(original)
+++ branches/calling_conventions/lib/Parrot/Manifest.pm	Sat Dec 13 19:46:32 2008
@@ -151,7 +151,6 @@
         RESPONSIBLE_PARTIES                             [main]doc
         TODO                                            [main]doc
         parrot-config                                   [main]bin
-        docs/ROADMAP.pod                                [devel]doc
         docs/compiler_faq.pod                           [devel]doc
         docs/configuration.pod                          [devel]doc
         docs/debug.pod                                  [devel]doc

Modified: branches/calling_conventions/lib/Parrot/Test.pm
==============================================================================
--- branches/calling_conventions/lib/Parrot/Test.pm	(original)
+++ branches/calling_conventions/lib/Parrot/Test.pm	Sat Dec 13 19:46:32 2008
@@ -200,7 +200,7 @@
 =item C<example_output_isnt( $example_f, $expected, @todo )>
 
 Determines the language, PIR or PASM, from the extension of C<$example_f> and runs
-the appropriate C<^language_output_(is|kike|isnt)> sub.
+the appropriate C<^language_output_(is|like|isnt)> sub.
 C<$example_f> is used as a description, so don't pass one.
 
 =item C<skip($why, $how_many)>
@@ -303,37 +303,10 @@
 sub run_command {
     my ( $command, %options ) = @_;
 
-    # To run the command in a different directory.
-    my $chdir = delete $options{CD};
+    my ( $out, $err, $chdir ) = _handle_test_options( \%options );
 
-    while ( my ( $key, $value ) = each %options ) {
-        $key =~ m/^STD(OUT|ERR)$/
-            or die "I don't know how to redirect '$key' yet!";
-        my $strvalue = "$value";        # filehandle `eq' string will fail
-        $value = File::Spec->devnull()  # on older perls, so stringify it
-            if $strvalue eq '/dev/null';
-    }
-
-    my $out = $options{'STDOUT'} || '';
-    my $err = $options{'STDERR'} || '';
-
-    local $ENV;
     if ($PConfig{parrot_is_shared}) {
-        my $blib_path = File::Spec->catfile( $PConfig{build_dir}, 'blib', 'lib' );
-        if ($^O eq 'cygwin') {
-            $ENV{PATH} = $blib_path . ':' . $ENV{PATH};
-        }
-        elsif ($^O eq 'MSWin32') {
-            $ENV{PATH} = $blib_path . ';' . $ENV{PATH};
-        }
-        else {
-            $ENV{LD_RUN_PATH} = $blib_path;
-        }
-    }
-
-    ##  File::Temp overloads 'eq' here, so we need the quotes. RT #58840
-    if ( $out and $err and "$out" eq "$err" ) {
-        $err = '&STDOUT';
+        _handle_blib_path();
     }
 
     local *OLDOUT if $out;    ## no critic Variables::ProhibitConditionalDeclarations
@@ -357,11 +330,7 @@
     # If $command isn't already an arrayref (because of a multi-command
     # test), make it so now so the code below can treat everybody the
     # same.
-    $command = [$command] unless ( ref $command );
-
-    if ( defined $ENV{VALGRIND} ) {
-        $_ = "$ENV{VALGRIND} $_" for (@$command);
-    }
+    $command = _handle_command( $command );
 
     my $orig_dir;
     if ($chdir) {
@@ -382,7 +351,7 @@
         chdir $orig_dir;
     }
 
-    my $exit_code = $?;
+    my $exit_message = _prepare_exit_message();
 
     close STDOUT or die "Can't close    stdout" if $out;
     close STDERR or die "Can't close    stderr" if $err;
@@ -390,11 +359,7 @@
     open STDOUT, ">&", \*OLDOUT or die "Can't restore  stdout" if $out;
     open STDERR, ">&", \*OLDERR or die "Can't restore  stderr" if $err;
 
-    return (
-          ( $exit_code < 0 )    ? $exit_code
-        : ( $exit_code & 0xFF ) ? "[SIGNAL $exit_code]"
-        : ( $? >> 8 )
-    );
+    return $exit_message;
 }
 
 sub per_test {
@@ -408,7 +373,6 @@
     return $t;
 }
 
-
 sub write_code_to_file {
     my ( $code, $code_f ) = @_;
 
@@ -537,8 +501,8 @@
     }
 }
 
-# The following methods are private.
-# They should not be used by modules inheriting from Parrot::Test.
+# The following methods are private.  They should not be used by modules
+# inheriting from Parrot::Test.
 
 sub _handle_error_output {
     my ( $builder, $real_output, $expected, $desc ) = @_;
@@ -554,21 +518,13 @@
 }
 
 sub _run_test_file {
-    local $SIG{__WARN__} = \&_report_odd_hash;
     my ( $func, $code, $expected, $desc, %extra ) = @_;
-
     my $path_to_parrot = path_to_parrot();
     my $parrot = File::Spec->join( File::Spec->curdir(), 'parrot' . $PConfig{exe} );
 
     # Strange Win line endings
     convert_line_endings($expected);
 
-    # set up default description
-    unless ($desc) {
-        ( undef, my $file, my $line ) = caller();
-        $desc = "($file line $line)";
-    }
-
     # $test_no will be part of temporary file
     my $test_no = $builder->current_test() + 1;
 
@@ -672,29 +628,16 @@
     return ( $out_f, $cmd, $exit_code );
 }
 
-sub _report_odd_hash {
-    my $warning = shift;
-    if ( $warning =~ m/Odd number of elements in hash assignment/ ) {
-        require Carp;
-        my @args = DB::uplevel_args();
-        shift @args;
-        my $func = ( caller() )[2];
-
-        Carp::carp("Odd $func invocation; probably missing description for TODO test");
-    }
-    else {
-        warn $warning;
-    }
-}
-
 sub _generate_test_functions {
 
     my $package        = 'Parrot::Test';
     my $path_to_parrot = path_to_parrot();
-    my $parrot         = File::Spec->join( File::Spec->curdir(), 'parrot' . $PConfig{exe} );
+    my $parrot         = File::Spec->join( File::Spec->curdir(),
+                            'parrot' . $PConfig{exe} );
     my $pirc           = File::Spec->join( File::Spec->curdir(),
                             qw( compilers pirc ), "pirc$PConfig{exe}" );
 
+    ##### 1: Parrot test map #####
     my %parrot_test_map = map {
         $_ . '_output_is'           => 'is_eq',
         $_ . '_error_output_is'     => 'is_eq',
@@ -713,6 +656,10 @@
             my ( $code, $expected, $desc, %extra ) = @_;
             my $args                               = $ENV{TEST_PROG_ARGS} || '';
 
+            # Due to ongoing changes in PBC format, all tests in
+            # t/native_pbc/*.t are currently being SKIPped.  This means we
+            # have no tests on which to model tests of the following block.
+            # Hence, test coverage will be lacking.
             if ( $func =~ /^pbc_output_/ && $args =~ /-r / ) {
                 # native tests with --run-pbc don't make sense
                 return $builder->skip("no native tests with -r");
@@ -723,7 +670,7 @@
             my $meth        = $parrot_test_map{$func};
             my $real_output = slurp_file($out_f);
 
-            unlink $out_f unless $ENV{POSTMORTEM};
+            _unlink_or_retain( $out_f );
 
             # set a todo-item for Test::Builder to find
             my $call_pkg = $builder->exported_to() || '';
@@ -741,14 +688,11 @@
                 $builder->ok( 0, $desc );
                 $builder->diag( "Exited with error code: $exit_code\n"
                         . "Received:\n$real_output\nExpected:\n$expected\n" );
-
                 return 0;
             }
-
             my $pass = $builder->$meth( $real_output, $expected, $desc );
             $builder->diag("'$cmd' failed with exit code $exit_code")
                 if not $pass and $exit_code;
-
             return $pass;
         };
 
@@ -757,6 +701,7 @@
         *{ $package . '::' . $func } = $test_sub;
     }
 
+    ##### 2: PIR-to-PASM test map #####
     my %pir_2_pasm_test_map = (
         pir_2_pasm_is      => 'is_eq',
         pir_2_pasm_isnt    => 'isnt_eq',
@@ -840,9 +785,7 @@
             $builder->diag("'$cmd' failed with exit code $exit_code")
                 if $exit_code and not $pass;
 
-            if ( !$ENV{POSTMORTEM} ) {
-                unlink $out_f;
-            }
+            _unlink_or_retain( $out_f );
 
             return $pass;
         };
@@ -852,6 +795,7 @@
         *{ $package . '::' . $func } = $test_sub;
     }
 
+    ##### 3: Language test map #####
     my %builtin_language_prefix = (
         PIR_IMCC  => 'pir',
         PASM_IMCC => 'pasm',
@@ -917,10 +861,14 @@
         *{ $package . '::' . $func } = $test_sub;
     }
 
+    ##### 4:  Example test map #####
     my %example_test_map = (
         example_output_is   => 'language_output_is',
         example_output_like => 'language_output_like',
         example_output_isnt => 'language_output_isnt',
+        example_error_output_is     => 'language_error_output_is',
+        example_error_output_isnt   => 'language_error_output_is',
+        example_error_output_like   => 'language_error_output_like',
     );
 
     foreach my $func ( keys %example_test_map ) {
@@ -938,7 +886,7 @@
             my ($extension) = $example_f =~ m{ [.]                    # introducing extension
                                                ( pasm | pir )         # match and capture the extension
                                                \z                     # at end of string
-                                             }ixms or Usage();
+                                             }ixms;
             if ( defined $extension ) {
                 my $code = slurp_file($example_f);
                 my $test_func = join( '::', $package, $example_test_map{$func} );
@@ -951,7 +899,7 @@
                 );
             }
             else {
-                fail( defined $extension, "no extension recognized for $example_f" );
+                $builder->diag("no extension recognized for $example_f");
             }
         };
 
@@ -960,10 +908,12 @@
         *{ $package . '::' . $func } = $test_sub;
     }
 
+    ##### 5: C test map #####
     my %c_test_map = (
-        c_output_is   => 'is_eq',
-        c_output_isnt => 'isnt_eq',
-        c_output_like => 'like'
+        c_output_is     => 'is_eq',
+        c_output_isnt   => 'isnt_eq',
+        c_output_like   => 'like',
+        c_output_unlike => 'unlike',
     );
 
     foreach my $func ( keys %c_test_map ) {
@@ -1072,11 +1022,11 @@
                 }
             }
 
-            unless ( $ENV{POSTMORTEM} ) {
-                unlink $out_f, $build_f, $exe_f, $obj_f;
-                unlink per_test( '.ilk', $test_no );
-                unlink per_test( '.pdb', $test_no );
-            }
+            _unlink_or_retain(
+                $out_f, $build_f, $exe_f, $obj_f,
+                per_test( '.ilk', $test_no ),
+                per_test( '.pdb', $test_no ),
+            );
 
             return $pass;
         };
@@ -1089,21 +1039,69 @@
     return;
 }
 
-=head1 SEE ALSO
+sub _handle_test_options {
+    my $options = shift;
+    # To run the command in a different directory.
+    my $chdir = delete $options->{CD} || '';
 
-=over 4
+    while ( my ( $key, $value ) = each %{ $options } ) {
+        $key =~ m/^STD(OUT|ERR)$/
+            or die "I don't know how to redirect '$key' yet!";
+        my $strvalue = "$value";        # filehandle `eq' string will fail
+        $value = File::Spec->devnull()  # on older perls, so stringify it
+            if $strvalue eq '/dev/null';
+    }
 
-=item F<t/harness>
+    my $out = $options->{'STDOUT'} || '';
+    my $err = $options->{'STDERR'} || '';
+    ##  File::Temp overloads 'eq' here, so we need the quotes. RT #58840
+    if ( $out and $err and "$out" eq "$err" ) {
+        $err = '&STDOUT';
+    }
+    return ( $out, $err, $chdir );
+}
 
-=item F<docs/tests.pod>
+sub _handle_blib_path {
+    my $blib_path =
+        File::Spec->catfile( $PConfig{build_dir}, 'blib', 'lib' );
+    if ($^O eq 'cygwin') {
+        $ENV{PATH} = $blib_path . ':' . $ENV{PATH};
+    }
+    elsif ($^O eq 'MSWin32') {
+        $ENV{PATH} = $blib_path . ';' . $ENV{PATH};
+    }
+    else {
+        $ENV{LD_RUN_PATH} = $blib_path;
+    }
+}
 
-=item L<Test/More>
+sub _handle_command {
+    my $command = shift;
+    $command = [$command] unless ( ref $command );
 
-=item L<Test/Builder>
+    if ( defined $ENV{VALGRIND} ) {
+        $_ = "$ENV{VALGRIND} $_" for (@$command);
+    }
+    return $command;
+}
 
-=back
+sub _prepare_exit_message {
+    my $exit_code = $?;
+    return (
+          ( $exit_code < 0 )    ? $exit_code
+        : ( $exit_code & 0xFF ) ? "[SIGNAL $exit_code]"
+        : ( $? >> 8 )
+    );
+}
 
-=cut
+sub _unlink_or_retain {
+    my @deletables = @_;
+    my $deleted = 0;
+    unless ( $ENV{POSTMORTEM} ) {
+        $deleted = unlink @deletables;
+    }
+    return $deleted;
+}
 
 package DB;
 
@@ -1115,6 +1113,22 @@
 
 1;
 
+=head1 SEE ALSO
+
+=over 4
+
+=item F<t/harness>
+
+=item F<docs/tests.pod>
+
+=item L<Test/More>
+
+=item L<Test/Builder>
+
+=back
+
+=cut
+
 # Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4

Modified: branches/calling_conventions/runtime/parrot/library/Config/JSON.pir
==============================================================================
--- branches/calling_conventions/runtime/parrot/library/Config/JSON.pir	(original)
+++ branches/calling_conventions/runtime/parrot/library/Config/JSON.pir	Sat Dec 13 19:46:32 2008
@@ -20,17 +20,17 @@
 
     # Slurp in the file
     .local string text
-    .local pmc pio
+    .local pmc fh
 
-    pio = open filename, '<'
-    if pio goto slurp_file
+    fh = open filename, '<'
+    if fh goto slurp_file
     $P0 = new 'Exception'
     $S0 = concat "can't open file: ", filename
     $P0 = $S0
     throw $P0
 
   slurp_file:
-    text = pio.'slurp'(filename)
+    text = fh.'readall'()
 
     # convert the text to an object and return it.
     load_bytecode 'compilers/json/JSON.pbc'

Modified: branches/calling_conventions/runtime/parrot/library/P6object.pir
==============================================================================
--- branches/calling_conventions/runtime/parrot/library/P6object.pir	(original)
+++ branches/calling_conventions/runtime/parrot/library/P6object.pir	Sat Dec 13 19:46:32 2008
@@ -655,7 +655,7 @@
 
 Written and maintained by Patrick R. Michaud, C<< pmichaud at pobox.com >>.
 Please send patches, feedback, and suggestions to the parrot-porters
-mailing list or to C< parrotbug@perl.org >.
+mailing list or to C< parrotbug@parrotcode.org >.
 
 =head1 COPYRIGHT
 

Modified: branches/calling_conventions/src/debug.c
==============================================================================
--- branches/calling_conventions/src/debug.c	(original)
+++ branches/calling_conventions/src/debug.c	Sat Dec 13 19:46:32 2008
@@ -2881,6 +2881,8 @@
         }
     }
 
+    fclose(file);
+
     pdb->state |= PDB_SRC_LOADED;
     pdb->file   = pfile;
 

Modified: branches/calling_conventions/src/packfile/pf_items.c
==============================================================================
--- branches/calling_conventions/src/packfile/pf_items.c	(original)
+++ branches/calling_conventions/src/packfile/pf_items.c	Sat Dec 13 19:46:32 2008
@@ -541,8 +541,7 @@
 size_t
 PF_size_integer(void)
 {
-    const size_t s = sizeof (INTVAL) / sizeof (opcode_t);
-    return s ? s : 1;
+    return sizeof (INTVAL) / sizeof (opcode_t);
 }
 
 /*

Modified: branches/calling_conventions/src/pmc/capture.pmc
==============================================================================
--- branches/calling_conventions/src/pmc/capture.pmc	(original)
+++ branches/calling_conventions/src/pmc/capture.pmc	Sat Dec 13 19:46:32 2008
@@ -68,6 +68,31 @@
 
 /*
 
+=item C<PMC *clone()>
+
+Creates an identical copy of the Capture.
+
+=cut
+
+*/
+
+    VTABLE PMC *clone() {
+        PMC *array, *hash;
+        PMC *dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        GET_ATTR_array(INTERP, SELF, array);
+        GET_ATTR_hash(INTERP, SELF, hash);
+        if (array)
+             array = VTABLE_clone(INTERP, array);
+        if (hash)
+             hash = VTABLE_clone(INTERP, hash);
+        SET_ATTR_array(INTERP, dest, array);
+        SET_ATTR_hash(INTERP, dest, hash);
+
+        return dest;
+    }
+
+/*
+
 =item C<void set_number_keyed_int(INTVAL key, FLOATVAL value)>
 
 =item C<void set_integer_keyed_int(INTVAL key, INTVAL value)>

Modified: branches/calling_conventions/src/pmc/exceptionhandler.pmc
==============================================================================
--- branches/calling_conventions/src/pmc/exceptionhandler.pmc	(original)
+++ branches/calling_conventions/src/pmc/exceptionhandler.pmc	Sat Dec 13 19:46:32 2008
@@ -26,6 +26,7 @@
 pmclass ExceptionHandler extends Continuation need_ext {
 
     ATTR PMC    *handled_types;
+    ATTR PMC    *handled_types_except;
     ATTR INTVAL min_severity;
     ATTR INTVAL max_severity;
 
@@ -51,6 +52,7 @@
         core_struct->min_severity  = 0;
         core_struct->max_severity  = 0;
         core_struct->handled_types = PMCNULL;
+        core_struct->handled_types_except = PMCNULL;
 
         /* an exception handler has no separate context; it's only a snapshot
          * of an "earlier" context, which is contained in the interpreter's
@@ -74,6 +76,8 @@
             PARROT_EXCEPTIONHANDLER(SELF);
         if (core_struct->handled_types)
             pobject_lives(interp, (PObj *)core_struct->handled_types);
+        if (core_struct->handled_types_except)
+            pobject_lives(interp, (PObj *)core_struct->handled_types_except);
     }
 
     /*
@@ -198,11 +202,11 @@
             if (severity < core_struct->min_severity) {
                 RETURN(INTVAL 0);
             }
-            else if (core_struct->max_severity > 0
+            if (core_struct->max_severity > 0
                  &&  severity                  > core_struct->max_severity) {
                 RETURN(INTVAL 0);
             }
-            else if (core_struct->handled_types != PMCNULL) {
+            if (core_struct->handled_types != PMCNULL) {
                 INTVAL elems = VTABLE_elements(interp, core_struct->handled_types);
                 INTVAL type  = VTABLE_get_integer_keyed_str(interp, exception, CONST_STRING(interp, "type"));
                 INTVAL i;
@@ -216,6 +220,20 @@
 
                 RETURN(INTVAL 0);
             }
+            if (core_struct->handled_types_except != PMCNULL) {
+                INTVAL elems = VTABLE_elements(interp, core_struct->handled_types_except);
+                INTVAL type  = VTABLE_get_integer_keyed_str(interp, exception, CONST_STRING(interp, "type"));
+                INTVAL i;
+
+                for (i = 0; i < elems; i++) {
+                    INTVAL handled_type = VTABLE_get_integer_keyed_int(interp,
+                            core_struct->handled_types_except, i);
+                    if (handled_type == type)
+                        RETURN(INTVAL 0);
+                }
+
+                RETURN(INTVAL 1);
+            }
             else if (core_struct->max_severity > 0 ||
                     core_struct->min_severity > 0) {
                 RETURN(INTVAL 1);
@@ -290,6 +308,25 @@
                 : PMCNULL;
     }
 
+/*
+
+=item C<METHOD handle_types_except(PMC *types :slurpy)>
+
+Set the exception types that the ExceptionHandler will not handle.
+
+=cut
+
+*/
+
+    METHOD handle_types_except(PMC *types :slurpy) {
+        Parrot_ExceptionHandler_attributes * const core_struct =
+                    PARROT_EXCEPTIONHANDLER(SELF);
+        core_struct->handled_types_except =
+            VTABLE_elements(interp, types) > 0
+                ? types
+                : PMCNULL;
+    }
+
 }
 
 /*

Modified: branches/calling_conventions/src/pmc/filehandle.pmc
==============================================================================
--- branches/calling_conventions/src/pmc/filehandle.pmc	(original)
+++ branches/calling_conventions/src/pmc/filehandle.pmc	Sat Dec 13 19:46:32 2008
@@ -228,6 +228,18 @@
 
 /*
 
+=item C<METHOD isatty()>
+
+=cut
+
+*/
+    METHOD isatty() {
+        INTVAL isatty = (PARROT_FILEHANDLE(SELF)->flags & PIO_F_CONSOLE) == PIO_F_CONSOLE;
+        RETURN(INTVAL isatty);
+    }
+
+/*
+
 =item C<METHOD close()>
 
 Close the filehandle.
@@ -399,6 +411,20 @@
 
 /*
 
+=item C<METHOD flush()>
+
+Flushes the filehandle.
+
+=cut
+
+*/
+
+    METHOD flush() {
+        Parrot_io_flush(interp, SELF);
+    }
+
+/*
+
 =item C<METHOD print([INTVAL|FLOATVAL|STRING *|PMC*] value)>
 
 Print the passed in integer, number, string, or PMC to the filehandle.

Modified: branches/calling_conventions/t/compilers/imcc/syn/subflags.t
==============================================================================
--- branches/calling_conventions/t/compilers/imcc/syn/subflags.t	(original)
+++ branches/calling_conventions/t/compilers/imcc/syn/subflags.t	Sat Dec 13 19:46:32 2008
@@ -108,7 +108,7 @@
   subid4_done:
     pop_eh
     $I0 = isa $P70, 'Sub'
-    todo($I0, 'subid4 in another ns found w/.const')
+    ok($I0, 'subid4 in another ns found w/.const')
 
     ## find multis via subid
     .const 'Sub' $P0 = 'above'

Modified: branches/calling_conventions/t/perl/Parrot_Test.t
==============================================================================
--- branches/calling_conventions/t/perl/Parrot_Test.t	(original)
+++ branches/calling_conventions/t/perl/Parrot_Test.t	Sat Dec 13 19:46:32 2008
@@ -19,6 +19,11 @@
 use strict;
 use warnings;
 use Test::More;
+use Carp;
+use File::Spec;
+use lib qw( lib );
+use Parrot::Config;
+use IO::CaptureOutput qw| capture |;
 
 BEGIN {
     eval "use Test::Builder::Tester;";
@@ -26,7 +31,7 @@
         plan( skip_all => "Test::Builder::Tester not installed\n" );
         exit 0;
     }
-    plan( tests => 66 );
+    plan( tests => 120 );
 }
 
 use lib qw( . lib ../lib ../../lib );
@@ -46,9 +51,11 @@
 
 can_ok( 'Parrot::Test', $_ ) for qw/
     c_output_is                     c_output_isnt
-    c_output_like
+    c_output_like                   c_output_unlike
     example_output_is               example_output_isnt
     example_output_like
+    example_error_output_is         example_error_output_isnt
+    example_error_output_like
     language_error_output_is        language_error_output_isnt
     language_error_output_like
     language_output_is              language_output_isnt
@@ -76,8 +83,6 @@
     write_code_to_file
     /;
 
-# RT#46891 test run_command()
-
 # per_test
 is( Parrot::Test::per_test(), undef, 'per_test() no args' );
 is( Parrot::Test::per_test( undef, 0 ),     undef, 'per_test() invalid first arg' );
@@ -120,6 +125,7 @@
 OUTPUT
 test_test($desc);
 
+
 $desc = 'pasm_output_isnt: success';
 test_out("ok 1 - $desc");
 pasm_output_isnt( <<'CODE', <<"OUTPUT", $desc );
@@ -131,9 +137,10 @@
 test_test($desc);
 
 
-# The exact error output for pasm_output_isnt() depends on the version of Test::Builder.
-# So, in order to avoid version dependent failures, be content with checking the
-# standard output.
+# The exact error output for pasm_output_isnt() depends on the version of
+# Test::Builder.  So, in order to avoid version dependent failures, be content
+# with checking the standard output.
+
 $desc = 'pasm_output_isnt: failure';
 test_out("not ok 1 - $desc");
 test_fail(+10);
@@ -226,9 +233,9 @@
 OUTPUT
 test_test($desc);
 
-# The exact error output for pir_output_isnt() depends on the version of Test::Builder.
-# So, in order to avoid version dependent failures, be content with checking the
-# standard output.
+# The exact error output for pir_output_isnt() depends on the version of
+# Test::Builder.  So, in order to avoid version dependent failures, be content
+# with checking the standard output.
 $desc = 'pir_output_isnt: failure';
 test_out("not ok 1 - $desc");
 test_fail(+10);
@@ -316,6 +323,366 @@
     test_test($desc);
 }
 
+##### PIR-to-PASM output test functions #####
+
+my $pir_2_pasm_code = <<'ENDOFCODE';
+.sub _test
+   noop
+   end
+.end
+ENDOFCODE
+
+pir_2_pasm_is( <<CODE, <<'OUT', "pir_2_pasm:  added return - end" );
+$pir_2_pasm_code
+CODE
+# IMCC does produce b0rken PASM files
+# see http://guest@rt.perl.org/rt3/Ticket/Display.html?id=32392
+_test:
+  noop
+  end
+OUT
+
+pir_2_pasm_isnt( <<CODE, <<'OUT', "pir_2_pasm:  added return - end" );
+$pir_2_pasm_code
+CODE
+_test:
+  noop
+  bend
+OUT
+
+pir_2_pasm_like( <<CODE, <<'OUT', "pir_2_pasm:  added return - end" );
+$pir_2_pasm_code
+CODE
+/noop\s+end/s
+OUT
+
+pir_2_pasm_unlike( <<CODE, <<'OUT', "pir_2_pasm:  added return - end" );
+$pir_2_pasm_code
+CODE
+/noop\s+bend/s
+OUT
+
+my $file = q{t/perl/testlib/hello.pasm};
+my $expected = qq{Hello World\n};
+example_output_is( $file, $expected );
+
+$expected = qq{Goodbye World\n};
+example_output_isnt( $file, $expected );
+
+$expected = qr{Hello World};
+example_output_like( $file, $expected );
+
+$file = q{t/perl/testlib/answer.pir};
+$expected = <<EXPECTED;
+The answer is
+42
+says Parrot!
+EXPECTED
+example_output_is( $file, $expected );
+
+# next is dying at _unlink_or_retain
+$expected = <<EXPECTED;
+The answer is
+769
+says Parrot!
+EXPECTED
+example_output_isnt( $file, $expected );
+
+$expected = qr/answer.*42.*Parrot!/s;
+example_output_like( $file, $expected );
+
+$file = q{t/perl/testlib/hello};
+$expected = qq{no extension recognized for $file};
+example_error_output_is( $file, $expected );
+
+$expected = qq{some extension recognized for $file};
+example_error_output_isnt( $file, $expected );
+
+$expected = qr{no extension recognized for $file};
+example_error_output_like( $file, $expected );
+
+##### C-output test functions #####
+
+my $c_code = <<'ENDOFCODE';
+    #include <stdio.h>
+    #include <stdlib.h>
+
+    int
+    main(int argc, char* argv[])
+    {
+        printf("Hello, World!\n");
+        exit(0);
+    }
+ENDOFCODE
+
+$desc = 'C:  is hello world';
+test_out("ok 1 - $desc");
+c_output_is( <<CODE, <<'OUTPUT', $desc );
+$c_code
+CODE
+Hello, World!
+OUTPUT
+test_test($desc);
+
+$desc = 'C:  isnt hello world';
+test_out("ok 1 - $desc");
+c_output_isnt( <<CODE, <<'OUTPUT', $desc );
+$c_code
+CODE
+Is Not Hello, World!
+OUTPUT
+test_test($desc);
+
+$desc = 'C:  like hello world';
+test_out("ok 1 - $desc");
+c_output_like( <<CODE, <<'OUTPUT', $desc );
+$c_code
+CODE
+/Hello, World/
+OUTPUT
+test_test($desc);
+
+$desc = 'C:  unlike hello world';
+test_out("ok 1 - $desc");
+c_output_unlike( <<CODE, <<'OUTPUT', $desc );
+$c_code
+CODE
+/foobar/
+OUTPUT
+test_test($desc);
+
+##### Tests for Parrot::Test internal subroutines #####
+
+# _handle_test_options()
+my ( $out, $chdir );
+( $out, $err, $chdir ) = Parrot::Test::_handle_test_options( {
+    STDOUT  => '/tmp/captureSTDOUT',
+    STDERR  => '/tmp/captureSTDERR',
+    CD      => '/tmp',
+} );
+is($out, '/tmp/captureSTDOUT', "Got expected value for STDOUT");
+is($err, '/tmp/captureSTDERR', "Got expected value for STDERR");
+is($chdir, '/tmp', "Got expected value for working directory");
+
+( $out, $err, $chdir ) = Parrot::Test::_handle_test_options( {
+    STDOUT  => '/tmp/captureSTDOUT',
+    STDERR  => '',
+    CD      => '/tmp',
+} );
+is($out, '/tmp/captureSTDOUT', "Got expected value for STDOUT");
+is($err, '', "Got expected value for STDERR");
+is($chdir, '/tmp', "Got expected value for working directory");
+
+( $out, $err, $chdir ) = Parrot::Test::_handle_test_options( {
+    STDOUT  => '',
+    STDERR  => '',
+    CD      => '',
+} );
+is($out, '', "Got expected value for STDOUT");
+is($err, '', "Got expected value for STDERR");
+is($chdir, '', "Got expected value for working directory");
+
+eval {
+    ( $out, $err, $chdir ) = Parrot::Test::_handle_test_options( {
+        STDJ    => '',
+        STDERR  => '',
+        CD      => '',
+    } );
+};
+like($@, qr/I don't know how to redirect 'STDJ' yet!/,
+    "Got expected error message for bad option");
+
+my $dn = File::Spec->devnull();
+( $out, $err, $chdir ) = Parrot::Test::_handle_test_options( {
+    STDOUT  => '',
+    STDERR  => '/dev/null',
+    CD      => '',
+} );
+is($out, '', "Got expected value for STDOUT");
+is($err, $dn, "Got expected value for STDERR using /dev/null");
+is($chdir, '', "Got expected value for working directory");
+
+( $out, $err, $chdir ) = Parrot::Test::_handle_test_options( {
+    STDOUT  => '/tmp/foobar',
+    STDERR  => '/tmp/foobar',
+    CD      => '',
+} );
+is($out, '/tmp/foobar', "Got expected value for STDOUT");
+is($err, '&STDOUT', "Got expected value for STDERR when same as STDOUT");
+is($chdir, '', "Got expected value for working directory");
+
+{
+    my $oldpath = $ENV{PATH};
+    my $oldldrunpath = $ENV{LD_RUN_PATH};
+    local $PConfig{build_dir} = 'foobar';
+    my $blib_path = File::Spec->catfile( $PConfig{build_dir}, 'blib', 'lib' );
+    {
+        local $^O = 'cygwin';
+        Parrot::Test::_handle_blib_path();
+        is( $ENV{PATH}, $blib_path . ':' . $oldpath,
+            "\$ENV{PATH} reset as expected for $^O");
+        $ENV{PATH} = $oldpath;
+    }
+    {
+        local $^O = 'MSWin32';
+        Parrot::Test::_handle_blib_path();
+        is( $ENV{PATH}, $blib_path . ';' . $oldpath,
+            "\$ENV{PATH} reset as expected for $^O");
+        $ENV{PATH} = $oldpath;
+    }
+    {
+        local $^O = 'not_cygwin_not_MSWin32';
+        Parrot::Test::_handle_blib_path();
+        is( $ENV{LD_RUN_PATH}, $blib_path,
+            "\$ENV{LD_RUN_PATH} reset as expected for $^O");
+        $ENV{LD_RUN_PATH} = $oldldrunpath;
+    }
+}
+
+my $command_orig;
+$command_orig = 'ls';
+is_deeply( Parrot::Test::_handle_command($command_orig), [ qw( ls ) ],
+    "Scalar command transformed into array ref as expected");
+$command_orig = [ qw( ls -l ) ];
+is( Parrot::Test::_handle_command($command_orig), $command_orig,
+    "Array ref holding multiple commands unchanged as expected");
+
+{
+    my $oldvalgrind = $ENV{VALGRIND};
+    $command_orig = 'ls';
+    my $foo = 'foobar';
+    local $ENV{VALGRIND} = $foo;
+    my $ret = Parrot::Test::_handle_command($command_orig);
+    is( $ret->[0], "$foo $command_orig",
+        "Got expected value in Valgrind environment");
+    $ENV{VALGRIND} = $oldvalgrind;
+}
+
+{
+    local $? = -1;
+    my $exit_message = Parrot::Test::_prepare_exit_message();
+    is( $exit_message, -1, "Got expected exit message" );
+}
+
+{
+    local $? = 0;
+    my $exit_message = Parrot::Test::_prepare_exit_message();
+    is( $exit_message, 0, "Got expected exit message" );
+}
+
+{
+    local $? = 1;
+    my $exit_message = Parrot::Test::_prepare_exit_message();
+    is( $exit_message, q{[SIGNAL 1]}, "Got expected exit message" );
+}
+
+{
+    local $? = 255;
+    my $exit_message = Parrot::Test::_prepare_exit_message();
+    is( $exit_message, q{[SIGNAL 255]}, "Got expected exit message" );
+}
+
+{
+    local $? = 256;
+    my $exit_message = Parrot::Test::_prepare_exit_message();
+    is( $exit_message, 1, "Got expected exit message" );
+}
+
+{
+    local $? = 512;
+    my $exit_message = Parrot::Test::_prepare_exit_message();
+    is( $exit_message, 2, "Got expected exit message" );
+}
+
+{
+    my $text = q{Hello, world};
+    my $cmd = "$^X -e 'print qq{$text\n};'";
+    my $exit_message;
+    my ($stdout, $stderr);
+    capture(
+        sub {
+            $exit_message = run_command(
+            $cmd,
+            'CD' => '',
+        ); },
+        \$stdout,
+        \$stderr,
+    );
+    like($stdout, qr/$text/, "Captured STDOUT");
+    is($exit_message, 0, "Got 0 as exit message");
+}
+undef $out;
+undef $err;
+undef $chdir;
+
+
+SKIP: {
+    skip 'feature not DWIMming even though test passes',
+    1;
+$desc = '';
+test_out("ok 1 - $desc");
+pasm_output_is( <<'CODE', <<'OUTPUT', $desc );
+    print "foo\n"
+    end
+CODE
+foo
+OUTPUT
+test_test($desc);
+}
+
+my $outfile = File::Spec->catfile( qw| t perl Parrot_Test_1.out | );
+{
+    unlink $outfile;
+    local $ENV{POSTMORTEM} = 1;
+    $desc = 'pir_output_is: success';
+    test_out("ok 1 - $desc");
+    pir_output_is( <<'CODE', <<'OUTPUT', $desc );
+.sub 'test' :main
+    print "foo\n"
+.end
+CODE
+foo
+OUTPUT
+    test_test($desc);
+    ok( -f $outfile,
+        "file created during test preserved due to \$ENV{POSTMORTEM}");
+    unlink $outfile;
+    ok( ! -f $outfile,
+        "file created during test has been deleted");
+}
+
+{
+    unlink $outfile;
+    local $ENV{POSTMORTEM} = 0;
+    $desc = 'pir_output_is: success';
+    test_out("ok 1 - $desc");
+    pir_output_is( <<'CODE', <<'OUTPUT', $desc );
+.sub 'test' :main
+    print "foo\n"
+.end
+CODE
+foo
+OUTPUT
+    test_test($desc);
+    ok( ! -f $outfile,
+        "file created during test was not retained");
+}
+
+
+# Cleanup t/perl/
+
+unless ( $ENV{POSTMORTEM} ) {
+    my $tdir = q{t/perl};
+    opendir my $DIRH, $tdir or croak "Unable to open $tdir for reading: $!";
+    my @need_cleanup =
+        grep { m/Parrot_Test_\d+\.(?:pir|pasm|out|c|o|build)$/ }
+        readdir $DIRH;
+    closedir $DIRH or croak "Unable to close $tdir after reading: $!";
+    for my $f (@need_cleanup) {
+        unlink qq{$tdir/$f} or croak "Unable to remove $f: $!";
+    }
+}
+
 # Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4

Modified: branches/calling_conventions/t/pmc/exceptionhandler.t
==============================================================================
--- branches/calling_conventions/t/pmc/exceptionhandler.t	(original)
+++ branches/calling_conventions/t/pmc/exceptionhandler.t	Sat Dec 13 19:46:32 2008
@@ -115,8 +115,9 @@
     ok($I0, 'Exception Handler subclass popped')
     $I0 = subclass_handler_catches_can(myhandlercan)
     ok($I0, 'Exception Handler subclass with can_handle method catch exception')
-    $I0 = subclass_handler_catches(myhandler)
-    todo($I0, 'Exception Handler subclass catch exception')
+    skip(1,'Exception Handler subclass causes segfault')
+    #$I0 = subclass_handler_catches(myhandler)
+    #todo($I0, 'Exception Handler subclass catch exception')
 .end
 
 .sub subclass_exception_handler

Modified: branches/calling_conventions/t/pmc/key.t
==============================================================================
--- branches/calling_conventions/t/pmc/key.t	(original)
+++ branches/calling_conventions/t/pmc/key.t	Sat Dec 13 19:46:32 2008
@@ -24,7 +24,8 @@
     traverse_key_chain()
     extract_int_from_string_keys()
     extract_string_from_int_keys()
-    do_not_collect_string_keys_early_rt_60128()
+    #do_not_collect_string_keys_early_rt_60128()
+    todo(0, 'register and non-register string keys should be COW (RT #60128)' )
 .end
 
 .sub traverse_key_chain

Modified: branches/calling_conventions/tools/util/release.json
==============================================================================
--- branches/calling_conventions/tools/util/release.json	(original)
+++ branches/calling_conventions/tools/util/release.json	Sat Dec 13 19:46:32 2008
@@ -13,9 +13,6 @@
     "bugday.day"       : "Saturday",
     "bugday.date"      : "13 Dec 2008",
 
-    "rt.root"          : "https://rt.perl.org/rt3/",
-    "rt.tracking"      : "Ticket/Display.html?id=60656",
-
     "wiki.root"        : "http://www.perlfoundation.org/parrot/index.cgi?",
     "wiki.bugday"      : "bug_day_2008_12_13",
 

Modified: branches/calling_conventions/tools/util/templates.json
==============================================================================
--- branches/calling_conventions/tools/util/templates.json	(original)
+++ branches/calling_conventions/tools/util/templates.json	Sat Dec 13 19:46:32 2008
@@ -59,20 +59,20 @@
 No experience with parrot necessary.
 
 --From: @wiki.root@@wiki.bugday@--
-There's a milestone ticket here:
 
-@rt.root@@rt.tracking@
+Check the list at:
 
-Which contains all the tickets I'd like to see resolved in @version@. If
-you just want to view the unresolved tickets, you can use this saved
-search:
+https://trac.parrot.org/parrot/report/3
 
-@rt.saved_search@
+Which contains all the tickets I'd like to see resolved in @version@. To
+see all the open tickets, use:
+
+https://trac.parrot.org/parrot/report
 
 If you've got something you're working on that you think you'll be
 getting done before the release, please
 - add a ticket for it (if necessary);
-- add it as a dependency for this ticket
+- set its milestone to this release.
 
 Thanks in advance for your patches and commits. ^_^
 



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About