diff options
author | Luke Kanies <luke@puppetlabs.com> | 2010-04-28 21:52:06 -0700 |
---|---|---|
committer | test branch <puppet-dev@googlegroups.com> | 2010-02-17 06:50:53 -0800 |
commit | d61a69a0e5a87a95846a4d39115eac80e4984cac (patch) | |
tree | 4d611b0b6280e8ccbb3702dcfe619f22d5e3ecd2 /lib | |
parent | f66095d35bc5f9645eb19bbb8cefa342c0181d2d (diff) | |
download | puppet-d61a69a0e5a87a95846a4d39115eac80e4984cac.tar.gz puppet-d61a69a0e5a87a95846a4d39115eac80e4984cac.tar.xz puppet-d61a69a0e5a87a95846a4d39115eac80e4984cac.zip |
Fixing #3668 - fixed autoloading classes from modules
This involved essentially moving all of the importing and loading
code out of the Parser and into a new 'TypeLoader' class.
The parser and the ResourceTypeCollection classes now delegate
to that class for all file handling. Most of the code paths are
also now much cleaner, and a bit of redundancy was removed.
Signed-off-by: Luke Kanies <luke@puppetlabs.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/parser/grammar.ra | 9 | ||||
-rw-r--r-- | lib/puppet/parser/parser.rb | 1433 | ||||
-rw-r--r-- | lib/puppet/parser/parser_support.rb | 154 | ||||
-rw-r--r-- | lib/puppet/parser/type_loader.rb | 144 | ||||
-rw-r--r-- | lib/puppet/resource/type_collection.rb | 27 |
5 files changed, 895 insertions, 872 deletions
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra index 5b9a60959..e125e327f 100644 --- a/lib/puppet/parser/grammar.ra +++ b/lib/puppet/parser/grammar.ra @@ -633,12 +633,11 @@ selectlhand: name | regex # These are only used for importing, and we don't interpolate there. -qtexts: quotedtext { result = [val[0].value] } - | qtexts COMMA quotedtext { - results = val[0] << val[2].value -} +string: STRING { result = [val[0][:value]] } +strings: string + | strings COMMA string { result = val[0] += val[2] } -import: IMPORT qtexts { +import: IMPORT strings { val[1].each do |file| import(file) end diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb index 5fecc54fc..8937fe17d 100644 --- a/lib/puppet/parser/parser.rb +++ b/lib/puppet/parser/parser.rb @@ -21,7 +21,7 @@ module Puppet module Parser class Parser < Racc::Parser -module_eval(<<'...end grammar.ra/module_eval...', 'grammar.ra', 851) +module_eval(<<'...end grammar.ra/module_eval...', 'grammar.ra', 850) # It got too annoying having code in a file that needs to be compiled. require 'puppet/parser/parser_support' @@ -36,600 +36,606 @@ require 'puppet/parser/parser_support' ##### State transition tables begin ### racc_action_table = [ - 60, 65, 60, 65, 95, 120, 95, 215, 97, 186, - 71, 113, 107, 186, 108, 46, 284, -157, 324, 46, - 185, 60, 65, 149, 185, 190, 325, 109, 153, 190, - 121, 46, 287, 59, 280, 59, 314, 72, 132, 72, - 75, 80, 279, 80, 277, 278, 130, 169, 68, 221, - 77, 105, 77, 51, 59, 160, 53, 51, 72, 75, - 53, 52, 80, 52, 60, 65, 66, 68, 215, 51, - 238, 77, 53, 326, 60, 65, 52, 166, 170, 288, - 52, 153, 52, 172, 156, 157, 158, 159, 161, 289, - 166, 170, 52, 60, 65, 60, 65, 185, 277, 278, - 290, 72, 236, 166, 170, 80, 186, 185, 222, 43, - 130, 72, 236, 291, 77, 80, 243, 185, 41, 42, - 130, 223, 190, 215, 77, 52, 59, 292, 185, 169, - 72, 75, 72, 236, 80, 52, 80, 160, 66, 68, - 34, 130, 186, 77, 36, 77, 60, 65, 60, 65, - 95, 11, 97, 185, 52, 181, 52, 201, 190, 143, - 60, 65, 202, -158, 71, 172, 156, 157, 158, 159, - 161, 232, 166, 170, 34, 230, 231, 267, 36, 59, - 266, 294, 62, 72, 75, 11, 180, 80, 60, 65, - 60, 65, 68, 59, 298, 320, 77, 72, 75, 282, - -159, 80, -154, 230, 231, 66, 68, 52, 60, 65, - 77, 34, 95, 34, 97, 36, 196, 36, 230, 347, - 201, 52, 11, 16, 11, 202, 180, 60, 65, 302, - 88, 95, 265, 97, 60, 65, 230, 264, 95, 196, - 97, 59, 157, 158, 143, 72, 75, 166, 170, 80, - 305, 157, 158, 107, 68, 93, 166, 170, 77, -156, - 59, 83, 60, 65, 72, 75, 308, 59, 80, 52, - -153, 72, 75, 68, 275, 80, -155, 77, 277, 278, - 68, 60, 65, 311, 77, 95, 153, 97, 52, 172, - 156, 157, 158, 159, 161, 52, 166, 170, 152, 268, - 60, 65, -153, 88, 95, 52, 97, 60, 65, -156, - -154, 95, 182, 97, 59, 52, 149, -171, 72, 75, - -155, 146, 80, 43, -157, 60, 65, 68, 93, 88, - 183, 77, -158, 59, 83, 317, 194, 72, 75, 318, - 59, 80, 52, 196, 72, 75, 68, 143, 80, 199, - 77, 200, 206, 68, 93, 209, 216, 77, 185, 108, - 83, 52, 72, 236, 219, 337, 80, 113, 52, 110, - 212, 130, 60, 65, -155, 77, 95, 55, 97, 54, - 172, 156, 157, 158, 216, 45, 52, 166, 170, 214, - 317, 60, 65, 351, 88, 95, -153, 97, 60, 65, - 353, -158, 95, -155, 97, 59, -153, -156, -154, 72, - 75, 354, 216, 80, -206, -156, 60, 65, 68, 93, - 88, 357, 77, 219, 59, 83, 37, 218, 72, 75, - -154, 59, 80, 52, nil, 72, 75, 68, nil, 80, - nil, 77, nil, nil, 68, 93, nil, nil, 77, 185, - nil, 83, 52, 72, 236, nil, nil, 80, nil, 52, - nil, nil, 130, 60, 65, nil, 77, 95, nil, 97, - nil, 172, 156, 157, 158, 159, 161, 52, 166, 170, - nil, 60, 65, nil, nil, 88, nil, nil, 323, nil, - 172, 156, 157, 158, nil, nil, 59, 166, 170, nil, - 72, 75, nil, nil, 80, nil, nil, nil, nil, 68, - 93, 60, 65, 77, 185, 95, 83, 97, 72, 236, - nil, nil, 80, nil, 52, nil, nil, 130, nil, nil, - nil, 77, nil, 88, nil, nil, nil, 60, 65, nil, - nil, 95, 52, 97, 59, nil, nil, nil, 72, 75, - nil, nil, 80, nil, nil, nil, nil, 68, 93, 60, - 65, 77, nil, 95, 83, 97, nil, nil, nil, nil, - 59, nil, 52, nil, 72, 75, nil, nil, 80, nil, - nil, 88, nil, 68, nil, 60, 65, 77, nil, 95, - nil, 97, 59, nil, nil, nil, 72, 75, 52, nil, - 80, nil, nil, nil, nil, 68, 93, 88, nil, 77, - nil, nil, 83, nil, nil, 60, 65, nil, 59, 95, - 52, 97, 72, 75, nil, nil, 80, nil, nil, nil, - nil, 68, 93, nil, nil, 77, nil, 88, 83, nil, - 60, 65, nil, nil, nil, nil, 52, nil, 59, nil, + 60, 65, 60, 65, 95, 121, 95, 216, 97, 187, + 71, 113, 108, 187, 109, 46, 285, 217, 281, 46, + 186, 60, 65, 216, 186, 191, 280, 110, 154, 191, + 122, 46, 144, 59, 325, 59, 154, 72, 133, 72, + 75, 80, 326, 80, 278, 279, 131, 170, 68, 222, + 77, 106, 77, 50, 59, 161, 53, 50, 72, 75, + 53, 52, 80, 52, 60, 65, 66, 68, 150, 50, + 239, 77, 53, 327, 60, 65, 52, 167, 171, 286, + 52, 315, 52, 173, 157, 158, 159, 160, 162, 287, + 167, 171, 52, 60, 65, 60, 65, 186, 278, 279, + 223, 72, 237, 231, 348, 80, 187, 186, 289, 43, + 131, 72, 237, 224, 77, 80, 244, 186, 41, 42, + 131, 290, 191, 288, 77, 52, 59, 105, 186, 170, + 72, 75, 72, 237, 80, 52, 80, 161, 66, 68, + 34, 131, 187, 77, 36, 77, 60, 65, 60, 65, + 95, 11, 97, 186, 52, 182, 52, 201, 191, -157, + 60, 65, 202, 293, 71, 173, 157, 158, 159, 160, + 162, 283, 167, 171, 34, 231, 232, 268, 36, 59, + 267, 296, 62, 72, 75, 11, 181, 80, 60, 65, + 167, 171, 68, 59, -155, 321, 77, 72, 75, 233, + -158, 80, 299, 231, 232, 66, 68, 52, 60, 65, + 77, 34, 95, 34, 97, 36, -159, 36, -154, 197, + 201, 52, 11, 16, 11, 202, 181, 60, 65, 303, + 88, 95, 276, 97, 60, 65, 278, 279, 95, 197, + 97, 59, 158, 159, 144, 72, 75, 167, 171, 80, + 306, 108, -156, 309, 68, 93, 88, -153, 77, 269, + 59, 83, 312, 154, 72, 75, 153, 59, 80, 52, + -153, 72, 75, 68, 266, 80, 52, 77, 231, 265, + 68, 93, -156, -154, 77, 60, 65, 83, 52, 95, + 183, 97, 158, 159, 52, 52, 184, 167, 171, 150, + -172, -155, 147, 43, 60, 65, -157, 88, 95, 195, + 97, 60, 65, -158, 318, 95, 197, 97, 59, 319, + 200, 144, 72, 75, 206, 207, 80, 210, 213, 60, + 65, 68, 93, 216, 109, 77, 220, 59, 83, 338, + 113, 72, 75, 111, 59, 80, 52, -155, 72, 75, + 68, 105, 80, 55, 77, 54, 217, 68, 45, 215, + 318, 77, 186, 352, -153, 52, 72, 237, 354, -158, + 80, -155, 52, -153, -156, 131, 60, 65, -154, 77, + 95, 355, 97, 217, 173, 157, 158, 159, -207, -156, + 52, 167, 171, 358, 220, 60, 65, 37, 88, 95, + 219, 97, 60, 65, -154, nil, 95, nil, 97, 59, + nil, nil, nil, 72, 75, nil, nil, 80, nil, nil, + 60, 65, 68, 93, 88, nil, 77, nil, 59, 83, + nil, nil, 72, 75, nil, 59, 80, 52, nil, 72, + 75, 68, nil, 80, nil, 77, nil, nil, 68, 93, + nil, nil, 77, 186, nil, 83, 52, 72, 237, nil, + nil, 80, nil, 52, nil, nil, 131, 60, 65, nil, + 77, 95, nil, 97, nil, 173, 157, 158, 159, 160, + 162, 52, 167, 171, nil, 60, 65, nil, nil, 88, + nil, nil, 324, nil, 173, 157, 158, 159, nil, nil, + 59, 167, 171, nil, 72, 75, nil, nil, 80, nil, + nil, nil, nil, 68, 93, 60, 65, 77, 186, 95, + 83, 97, 72, 237, nil, nil, 80, nil, 52, nil, + nil, 131, nil, nil, nil, 77, nil, 88, nil, nil, + nil, 60, 65, nil, nil, 95, 52, 97, 59, nil, nil, nil, 72, 75, nil, nil, 80, nil, nil, nil, - nil, 68, 93, 144, nil, 77, 60, 65, 83, nil, - 95, nil, 97, 59, nil, nil, 52, 72, 75, nil, - nil, 80, nil, nil, nil, 66, 68, nil, 88, nil, - 77, nil, 60, 65, nil, nil, 95, nil, 97, 59, + nil, 68, 93, 60, 65, 77, nil, 95, 83, 97, + nil, nil, nil, nil, 59, nil, 52, nil, 72, 75, + nil, nil, 80, nil, nil, 88, nil, 68, nil, 60, + 65, 77, nil, 95, nil, 97, 59, nil, nil, nil, + 72, 75, 52, nil, 80, nil, nil, nil, nil, 68, + 93, 88, nil, 77, nil, nil, 83, nil, nil, 60, + 65, nil, 59, 95, 52, 97, 72, 75, nil, nil, + 80, nil, nil, nil, nil, 68, 93, nil, nil, 77, + nil, 88, 83, nil, 60, 65, nil, nil, nil, nil, + 52, nil, 59, nil, nil, nil, 72, 75, nil, nil, + 80, nil, nil, nil, nil, 68, 93, 145, nil, 77, + 60, 65, 83, nil, 95, nil, 97, 59, nil, nil, + 52, 72, 75, nil, nil, 80, nil, nil, nil, 66, + 68, nil, 88, nil, 77, nil, 60, 65, nil, nil, + 95, nil, 97, 59, nil, 52, nil, 72, 75, nil, + nil, 80, nil, nil, nil, nil, 68, 93, 88, nil, + 77, 60, 65, 83, nil, 95, nil, 97, nil, 59, nil, 52, nil, 72, 75, nil, nil, 80, nil, nil, - nil, nil, 68, 93, 88, nil, 77, 60, 65, 83, - nil, 95, nil, 97, nil, 59, nil, 52, nil, 72, - 75, nil, nil, 80, nil, nil, nil, nil, 68, 93, - nil, nil, 77, 60, 65, 83, nil, 95, nil, 97, - 59, nil, nil, 52, 72, 75, nil, nil, 80, nil, - nil, nil, nil, 68, nil, 88, nil, 77, nil, 60, - 65, nil, nil, 95, nil, 97, 59, nil, 52, nil, - 72, 75, nil, nil, 80, nil, nil, 60, 65, 68, - 93, 88, nil, 77, 60, 65, 83, nil, 95, nil, - 97, nil, 59, nil, 52, nil, 72, 75, 60, 65, - 80, nil, 95, nil, 97, 68, 93, nil, nil, 77, - 185, nil, 83, nil, 72, 236, nil, 59, 80, nil, - 52, 72, 75, 130, nil, 80, nil, 77, 60, 65, - 68, 59, nil, nil, 77, 72, 75, nil, 52, 80, - nil, nil, nil, nil, 68, 52, 60, 65, 77, nil, - 95, 307, 97, nil, nil, nil, nil, nil, nil, 52, - nil, 59, nil, nil, nil, 72, 75, nil, 88, 80, - nil, 60, 65, 66, 68, 95, nil, 97, 77, 59, - nil, nil, nil, 72, 75, nil, nil, 80, nil, 52, nil, nil, 68, 93, nil, nil, 77, 60, 65, 83, nil, 95, nil, 97, 59, nil, nil, 52, 72, 75, - nil, nil, 80, nil, nil, nil, nil, 68, 60, 65, - nil, 77, 95, nil, 97, nil, nil, nil, nil, nil, + nil, nil, 80, nil, nil, nil, nil, 68, nil, 88, + nil, 77, nil, 60, 65, nil, nil, 95, nil, 97, 59, nil, 52, nil, 72, 75, nil, nil, 80, nil, - 88, nil, nil, 68, 60, 65, nil, 77, 95, nil, - nil, 59, nil, nil, nil, 72, 75, nil, 52, 80, - nil, nil, nil, nil, 68, 93, 60, 65, 77, nil, - 95, 83, 97, nil, nil, nil, nil, 59, nil, 52, - nil, 72, 236, nil, nil, 80, nil, nil, 88, nil, - 130, nil, 60, 65, 77, nil, 95, nil, 97, 59, - nil, nil, nil, 72, 75, 52, nil, 80, nil, nil, - nil, nil, 68, 93, 88, nil, 77, nil, nil, 83, - nil, nil, 60, 65, nil, 59, 95, 52, 97, 72, - 75, nil, nil, 80, nil, nil, nil, nil, 68, 93, - nil, nil, 77, nil, 88, 83, nil, nil, 60, 65, - nil, nil, 95, 52, 97, 59, nil, nil, nil, 72, - 75, nil, nil, 80, nil, nil, 60, 65, 68, 93, - 88, nil, 77, nil, nil, 83, nil, nil, nil, nil, - nil, 59, nil, 52, nil, 72, 75, nil, nil, 80, - nil, nil, nil, nil, 68, 93, 60, 65, 77, 185, - 95, 83, 97, 72, 236, 171, nil, 80, nil, 52, - nil, nil, 130, nil, 164, 169, 77, nil, 88, nil, - nil, nil, nil, 160, 162, 165, 168, 52, nil, 59, - nil, nil, nil, 72, 75, 60, 65, 80, nil, 95, - 174, 97, 68, 93, nil, nil, 77, 163, 167, 83, - nil, 172, 156, 157, 158, 159, 161, 52, 166, 170, - 60, 65, nil, nil, 95, nil, 97, nil, 59, nil, - nil, nil, 72, 75, nil, nil, 80, nil, nil, nil, - nil, 68, 88, nil, nil, 77, 60, 65, nil, nil, - 95, nil, 97, 59, nil, nil, 52, 72, 75, nil, + nil, 60, 65, 68, 93, 88, nil, 77, 60, 65, + 83, nil, 95, nil, 97, nil, 59, nil, 52, nil, + 72, 75, 60, 65, 80, nil, 95, nil, 97, 68, + 93, nil, nil, 77, 186, nil, 83, nil, 72, 237, + nil, 59, 80, nil, 52, 72, 75, 131, nil, 80, + nil, 77, 60, 65, 68, 59, nil, nil, 77, 72, + 75, nil, 52, 80, nil, nil, nil, nil, 68, 52, + 60, 65, 77, nil, 95, 308, 97, nil, nil, nil, + nil, nil, nil, 52, nil, 59, nil, nil, nil, 72, + 75, nil, 88, 80, nil, 60, 65, 66, 68, 95, + nil, 97, 77, 59, nil, nil, nil, 72, 75, nil, + nil, 80, nil, 52, nil, nil, 68, 93, nil, nil, + 77, 60, 65, 83, nil, 95, nil, 97, 59, nil, + nil, 52, 72, 75, nil, nil, 80, nil, nil, nil, + nil, 68, 60, 65, nil, 77, 95, nil, 97, nil, + nil, nil, nil, nil, 59, nil, 52, nil, 72, 75, + nil, nil, 80, nil, 88, nil, nil, 68, 60, 65, + nil, 77, 95, nil, nil, 59, nil, nil, nil, 72, + 75, nil, 52, 80, nil, nil, nil, nil, 68, 93, + 60, 65, 77, nil, 95, 83, 97, nil, nil, nil, + nil, 59, nil, 52, nil, 72, 237, nil, nil, 80, + nil, nil, 88, nil, 131, nil, 60, 65, 77, nil, + 95, nil, 97, 59, nil, nil, nil, 72, 75, 52, nil, 80, nil, nil, nil, nil, 68, 93, 88, nil, - 77, nil, nil, 83, nil, nil, nil, nil, nil, 59, - nil, 52, nil, 72, 75, nil, nil, 80, 226, 227, - nil, nil, 68, 93, nil, nil, 77, nil, nil, 83, - nil, 164, 169, nil, nil, nil, nil, 52, nil, nil, - 160, 162, 165, 168, 164, 169, nil, nil, nil, nil, - nil, nil, 245, 160, 162, 165, 168, nil, nil, nil, - nil, nil, nil, nil, 163, 167, nil, nil, 172, 156, - 157, 158, 159, 161, nil, 166, 170, 163, 167, nil, - nil, 172, 156, 157, 158, 159, 161, nil, 166, 170, - 164, 169, nil, nil, nil, nil, nil, nil, nil, 160, - 162, 165, 168, 164, 169, nil, nil, nil, nil, nil, - nil, nil, 160, 162, 165, 168, nil, nil, nil, nil, - nil, nil, nil, 163, 167, nil, nil, 172, 156, 157, - 158, 159, 161, nil, 166, 170, 163, 167, nil, nil, - 172, 156, 157, 158, 159, 161, nil, 166, 170, 164, - 169, nil, nil, nil, nil, nil, nil, nil, 160, 162, - 165, 168, 164, 169, nil, nil, nil, nil, nil, nil, - nil, 160, 162, 165, 168, nil, nil, nil, nil, nil, - nil, nil, nil, 167, nil, nil, 172, 156, 157, 158, - 159, 161, nil, 166, 170, nil, nil, nil, nil, 172, - 156, 157, 158, 159, 161, nil, 166, 170, 164, 169, - nil, nil, nil, nil, nil, nil, nil, 160, 162, 165, - 168, 169, nil, nil, nil, nil, nil, nil, nil, 160, - 169, nil, nil, nil, nil, nil, nil, nil, 160, nil, - nil, 163, 167, nil, nil, 172, 156, 157, 158, 159, - 161, nil, 166, 170, 262, nil, nil, 172, 156, 157, - 158, 159, 161, nil, 166, 170, 172, 156, 157, 158, - 159, 161, nil, 166, 170, 26, 338, 30, 1, nil, - 8, 12, nil, 19, nil, 24, nil, 28, nil, 2, - nil, nil, 11, 16, nil, 315, nil, 26, nil, 30, - 1, nil, 8, 12, nil, 19, nil, 24, nil, 28, - nil, 2, nil, nil, 11, 16, 26, 343, 30, 1, - nil, 8, 12, nil, 19, nil, 24, nil, 28, nil, - 2, nil, nil, 11, 16, nil, 344, nil, 26, nil, - 30, 1, nil, 8, 12, nil, 19, nil, 24, nil, - 28, nil, 2, nil, nil, 11, 16, 26, 297, 30, - 1, nil, 8, 12, nil, 19, nil, 24, nil, 28, - nil, 2, nil, nil, 11, 16, nil, 355, nil, 26, - nil, 30, 1, nil, 8, 12, nil, 19, nil, 24, - nil, 28, nil, 2, nil, nil, 11, 16, 26, 359, - 30, 1, nil, 8, 12, nil, 19, nil, 24, nil, - 28, nil, 2, nil, nil, 11, 16, nil, 361, nil, - 26, nil, 30, 1, nil, 8, 12, nil, 19, nil, - 24, nil, 28, nil, 2, nil, nil, 11, 16, 26, - 286, 30, 1, nil, 8, 12, nil, 19, nil, 24, - nil, 28, nil, 2, nil, nil, 11, 16, nil, 362, + 77, nil, nil, 83, nil, nil, 60, 65, nil, 59, + 95, 52, 97, 72, 75, nil, nil, 80, nil, nil, + nil, nil, 68, 93, nil, nil, 77, nil, 88, 83, + nil, nil, 60, 65, nil, nil, 95, 52, 97, 59, + nil, nil, nil, 72, 75, nil, nil, 80, nil, nil, + 60, 65, 68, 93, 88, nil, 77, nil, nil, 83, + nil, nil, nil, nil, nil, 59, nil, 52, nil, 72, + 75, nil, nil, 80, nil, nil, nil, nil, 68, 93, + 60, 65, 77, 186, 95, 83, 97, 72, 237, 172, + nil, 80, nil, 52, nil, nil, 131, nil, 165, 170, + 77, nil, 88, nil, nil, nil, nil, 161, 163, 166, + 169, 52, nil, 59, nil, nil, nil, 72, 75, 60, + 65, 80, nil, 95, 175, 97, 68, 93, nil, nil, + 77, 164, 168, 83, nil, 173, 157, 158, 159, 160, + 162, 52, 167, 171, 60, 65, nil, nil, 95, nil, + 97, nil, 59, nil, nil, nil, 72, 75, nil, nil, + 80, nil, nil, nil, nil, 68, 88, nil, nil, 77, + 60, 65, nil, nil, 95, nil, 97, 59, nil, nil, + 52, 72, 75, nil, nil, 80, nil, nil, nil, nil, + 68, 93, 88, nil, 77, nil, nil, 83, nil, nil, + nil, nil, nil, 59, nil, 52, nil, 72, 75, nil, + nil, 80, 227, 228, nil, nil, 68, 93, nil, nil, + 77, nil, nil, 83, nil, 165, 170, nil, nil, nil, + nil, 52, nil, nil, 161, 163, 166, 169, 165, 170, + nil, nil, nil, nil, nil, nil, 246, 161, 163, 166, + 169, nil, nil, nil, nil, nil, nil, nil, 164, 168, + nil, nil, 173, 157, 158, 159, 160, 162, nil, 167, + 171, 164, 168, nil, nil, 173, 157, 158, 159, 160, + 162, nil, 167, 171, 165, 170, nil, nil, nil, nil, + nil, nil, nil, 161, 163, 166, 169, 165, 170, nil, + nil, nil, nil, nil, nil, nil, 161, 163, 166, 169, + nil, nil, nil, nil, nil, nil, nil, 164, 168, nil, + nil, 173, 157, 158, 159, 160, 162, nil, 167, 171, + 164, 168, nil, nil, 173, 157, 158, 159, 160, 162, + nil, 167, 171, 165, 170, nil, nil, nil, nil, nil, + nil, nil, 161, 163, 166, 169, 165, 170, nil, nil, + nil, nil, nil, nil, nil, 161, 163, 166, 169, nil, + nil, 173, 157, 158, 159, 160, 162, 168, 167, 171, + 173, 157, 158, 159, 160, 162, nil, 167, 171, nil, + nil, nil, nil, 173, 157, 158, 159, 160, 162, nil, + 167, 171, 165, 170, nil, nil, nil, nil, nil, nil, + nil, 161, 163, 166, 169, 170, nil, nil, nil, nil, + nil, nil, nil, 161, 170, nil, nil, nil, nil, nil, + nil, nil, 161, nil, nil, 164, 168, nil, nil, 173, + 157, 158, 159, 160, 162, nil, 167, 171, 263, nil, + nil, 173, 157, 158, 159, 160, 162, nil, 167, 171, + 173, 157, 158, 159, 160, 162, nil, 167, 171, 26, + 342, 30, 1, nil, 8, 12, nil, 19, nil, 24, + nil, 28, nil, 2, nil, nil, 11, 16, nil, 316, nil, 26, nil, 30, 1, nil, 8, 12, nil, 19, nil, 24, nil, 28, nil, 2, nil, nil, 11, 16, - 26, 363, 30, 1, nil, 8, 12, nil, 19, nil, + 26, 344, 30, 1, nil, 8, 12, nil, 19, nil, 24, nil, 28, nil, 2, nil, nil, 11, 16, nil, - nil, nil, 26, nil, 30, 1, nil, 8, 12, nil, + 345, nil, 26, nil, 30, 1, nil, 8, 12, nil, 19, nil, 24, nil, 28, nil, 2, nil, nil, 11, - 16, 26, nil, 30, 1, nil, 8, 12, nil, 19, + 16, 26, 298, 30, 1, nil, 8, 12, nil, 19, nil, 24, nil, 28, nil, 2, nil, nil, 11, 16, - 26, nil, 30, 1, nil, 8, 12, nil, 19, nil, - 24, nil, 28, nil, 2, nil, nil, 11, 16 ] + nil, 356, nil, 26, nil, 30, 1, nil, 8, 12, + nil, 19, nil, 24, nil, 28, nil, 2, nil, nil, + 11, 16, 26, 360, 30, 1, nil, 8, 12, nil, + 19, nil, 24, nil, 28, nil, 2, nil, nil, 11, + 16, nil, 362, nil, 26, nil, 30, 1, nil, 8, + 12, nil, 19, nil, 24, nil, 28, nil, 2, nil, + nil, 11, 16, 26, 292, 30, 1, nil, 8, 12, + nil, 19, nil, 24, nil, 28, nil, 2, nil, nil, + 11, 16, nil, 363, nil, 26, nil, 30, 1, nil, + 8, 12, nil, 19, nil, 24, nil, 28, nil, 2, + nil, nil, 11, 16, 26, 364, 30, 1, nil, 8, + 12, nil, 19, nil, 24, nil, 28, nil, 2, nil, + nil, 11, 16, nil, nil, nil, 26, nil, 30, 1, + nil, 8, 12, nil, 19, nil, 24, nil, 28, nil, + 2, nil, nil, 11, 16, 26, nil, 30, 1, nil, + 8, 12, nil, 19, nil, 24, nil, 28, nil, 2, + nil, nil, 11, 16, 26, nil, 30, 1, nil, 8, + 12, nil, 19, nil, 24, nil, 28, nil, 2, nil, + nil, 11, 16 ] racc_action_check = [ - 54, 54, 146, 146, 54, 48, 146, 143, 146, 105, - 75, 44, 31, 276, 31, 19, 198, 86, 271, 121, - 105, 149, 149, 244, 276, 105, 271, 31, 75, 276, - 48, 120, 201, 54, 191, 146, 244, 54, 54, 146, - 146, 54, 191, 146, 198, 198, 54, 255, 146, 143, - 54, 31, 146, 19, 149, 255, 19, 121, 149, 149, - 121, 54, 149, 146, 152, 152, 149, 149, 132, 120, - 152, 149, 120, 274, 348, 348, 19, 248, 248, 202, - 121, 132, 149, 255, 255, 255, 255, 255, 255, 203, - 255, 255, 120, 153, 153, 324, 324, 152, 274, 274, - 204, 152, 152, 247, 247, 152, 186, 348, 145, 8, - 152, 348, 348, 204, 152, 348, 153, 186, 8, 8, - 348, 145, 186, 196, 348, 152, 153, 208, 324, 258, - 153, 153, 324, 324, 153, 348, 324, 258, 153, 153, - 12, 324, 109, 153, 12, 324, 311, 311, 97, 97, - 311, 12, 311, 109, 153, 97, 324, 113, 109, 194, - 24, 24, 113, 85, 24, 258, 258, 258, 258, 258, - 258, 151, 258, 258, 209, 151, 151, 176, 209, 311, - 176, 209, 24, 311, 311, 209, 97, 311, 266, 266, - 30, 30, 311, 24, 213, 266, 311, 24, 24, 195, - 84, 24, 82, 195, 195, 24, 24, 311, 26, 26, - 24, 5, 26, 1, 26, 5, 216, 1, 313, 313, - 290, 24, 5, 5, 1, 290, 266, 28, 28, 217, - 26, 28, 175, 28, 288, 288, 175, 175, 288, 218, - 288, 26, 246, 246, 219, 26, 26, 246, 246, 26, - 220, 263, 263, 81, 26, 26, 263, 263, 26, 79, - 28, 26, 183, 183, 28, 28, 224, 288, 28, 26, - 78, 288, 288, 28, 187, 288, 91, 28, 187, 187, - 288, 156, 156, 235, 288, 156, 236, 156, 28, 250, - 250, 250, 250, 250, 250, 288, 250, 250, 74, 178, - 287, 287, 98, 156, 287, 170, 287, 157, 157, 99, - 101, 157, 102, 157, 156, 166, 70, 68, 156, 156, - 67, 63, 156, 59, 58, 280, 280, 156, 156, 157, - 103, 156, 57, 287, 156, 262, 106, 287, 287, 264, - 157, 287, 156, 108, 157, 157, 287, 55, 157, 110, - 287, 112, 116, 157, 157, 117, 197, 157, 280, 40, - 157, 287, 280, 280, 281, 283, 280, 35, 157, 33, - 122, 280, 41, 41, 127, 280, 41, 23, 41, 20, - 251, 251, 251, 251, 303, 13, 280, 251, 251, 131, - 315, 43, 43, 317, 41, 43, 133, 43, 42, 42, - 325, 328, 42, 330, 42, 41, 331, 333, 334, 41, - 41, 336, 134, 41, 347, 135, 279, 279, 41, 41, - 42, 349, 41, 139, 43, 41, 2, 138, 43, 43, - 137, 42, 43, 41, nil, 42, 42, 43, nil, 42, - nil, 43, nil, nil, 42, 42, nil, nil, 42, 279, - nil, 42, 43, 279, 279, nil, nil, 279, nil, 42, - nil, nil, 279, 45, 45, nil, 279, 45, nil, 45, - nil, 259, 259, 259, 259, 259, 259, 279, 259, 259, - nil, 269, 269, nil, nil, 45, nil, nil, 269, nil, - 249, 249, 249, 249, nil, nil, 45, 249, 249, nil, - 45, 45, nil, nil, 45, nil, nil, nil, nil, 45, - 45, 158, 158, 45, 269, 158, 45, 158, 269, 269, - nil, nil, 269, nil, 45, nil, nil, 269, nil, nil, - nil, 269, nil, 158, nil, nil, nil, 268, 268, nil, - nil, 268, 269, 268, 158, nil, nil, nil, 158, 158, - nil, nil, 158, nil, nil, nil, nil, 158, 158, 159, - 159, 158, nil, 159, 158, 159, nil, nil, nil, nil, - 268, nil, 158, nil, 268, 268, nil, nil, 268, nil, - nil, 159, nil, 268, nil, 160, 160, 268, nil, 160, - nil, 160, 159, nil, nil, nil, 159, 159, 268, nil, - 159, nil, nil, nil, nil, 159, 159, 160, nil, 159, - nil, nil, 159, nil, nil, 161, 161, nil, 160, 161, - 159, 161, 160, 160, nil, nil, 160, nil, nil, nil, - nil, 160, 160, nil, nil, 160, nil, 161, 160, nil, - 62, 62, nil, nil, nil, nil, 160, nil, 161, nil, - nil, nil, 161, 161, nil, nil, 161, nil, nil, nil, - nil, 161, 161, 62, nil, 161, 162, 162, 161, nil, - 162, nil, 162, 62, nil, nil, 161, 62, 62, nil, - nil, 62, nil, nil, nil, 62, 62, nil, 162, nil, - 62, nil, 65, 65, nil, nil, 65, nil, 65, 162, - nil, 62, nil, 162, 162, nil, nil, 162, nil, nil, - nil, nil, 162, 162, 65, nil, 162, 107, 107, 162, - nil, 107, nil, 107, nil, 65, nil, 162, nil, 65, - 65, nil, nil, 65, nil, nil, nil, nil, 65, 65, - nil, nil, 65, 163, 163, 65, nil, 163, nil, 163, - 107, nil, nil, 65, 107, 107, nil, nil, 107, nil, - nil, nil, nil, 107, nil, 163, nil, 107, nil, 169, - 169, nil, nil, 169, nil, 169, 163, nil, 107, nil, - 163, 163, nil, nil, 163, nil, nil, 238, 238, 163, - 163, 169, nil, 163, 71, 71, 163, nil, 71, nil, - 71, nil, 169, nil, 163, nil, 169, 169, 233, 233, - 169, nil, 233, nil, 233, 169, 169, nil, nil, 169, - 238, nil, 169, nil, 238, 238, nil, 71, 238, nil, - 169, 71, 71, 238, nil, 71, nil, 238, 222, 222, - 71, 233, nil, nil, 71, 233, 233, nil, 238, 233, - nil, nil, nil, nil, 233, 71, 226, 226, 233, nil, - 226, 222, 226, nil, nil, nil, nil, nil, nil, 233, - nil, 222, nil, nil, nil, 222, 222, nil, 226, 222, - nil, 221, 221, 222, 222, 221, nil, 221, 222, 226, - nil, nil, nil, 226, 226, nil, nil, 226, nil, 222, - nil, nil, 226, 226, nil, nil, 226, 215, 215, 226, - nil, 215, nil, 215, 221, nil, nil, 226, 221, 221, - nil, nil, 221, nil, nil, nil, nil, 221, 83, 83, - nil, 221, 83, nil, 83, nil, nil, nil, nil, nil, - 215, nil, 221, nil, 215, 215, nil, nil, 215, nil, - 83, nil, nil, 215, 214, 214, nil, 215, 214, nil, - nil, 83, nil, nil, nil, 83, 83, nil, 215, 83, - nil, nil, nil, nil, 83, 83, 165, 165, 83, nil, - 165, 83, 165, nil, nil, nil, nil, 214, nil, 83, - nil, 214, 214, nil, nil, 214, nil, nil, 165, nil, - 214, nil, 167, 167, 214, nil, 167, nil, 167, 165, - nil, nil, nil, 165, 165, 214, nil, 165, nil, nil, - nil, nil, 165, 165, 167, nil, 165, nil, nil, 165, - nil, nil, 88, 88, nil, 167, 88, 165, 88, 167, - 167, nil, nil, 167, nil, nil, nil, nil, 167, 167, - nil, nil, 167, nil, 88, 167, nil, nil, 168, 168, - nil, nil, 168, 167, 168, 88, nil, nil, nil, 88, - 88, nil, nil, 88, nil, nil, 182, 182, 88, 88, - 168, nil, 88, nil, nil, 88, nil, nil, nil, nil, - nil, 168, nil, 88, nil, 168, 168, nil, nil, 168, - nil, nil, nil, nil, 168, 168, 93, 93, 168, 182, - 93, 168, 93, 182, 182, 89, nil, 182, nil, 168, - nil, nil, 182, nil, 89, 89, 182, nil, 93, nil, - nil, nil, nil, 89, 89, 89, 89, 182, nil, 93, - nil, nil, nil, 93, 93, 95, 95, 93, nil, 95, - 95, 95, 93, 93, nil, nil, 93, 89, 89, 93, - nil, 89, 89, 89, 89, 89, 89, 93, 89, 89, - 172, 172, nil, nil, 172, nil, 172, nil, 95, nil, - nil, nil, 95, 95, nil, nil, 95, nil, nil, nil, - nil, 95, 172, nil, nil, 95, 164, 164, nil, nil, - 164, nil, 164, 172, nil, nil, 95, 172, 172, nil, - nil, 172, nil, nil, nil, nil, 172, 172, 164, nil, - 172, nil, nil, 172, nil, nil, nil, nil, nil, 164, - nil, 172, nil, 164, 164, nil, nil, 164, 148, 148, - nil, nil, 164, 164, nil, nil, 164, nil, nil, 164, - nil, 148, 148, nil, nil, nil, nil, 164, nil, nil, - 148, 148, 148, 148, 155, 155, nil, nil, nil, nil, - nil, nil, 155, 155, 155, 155, 155, nil, nil, nil, - nil, nil, nil, nil, 148, 148, nil, nil, 148, 148, - 148, 148, 148, 148, nil, 148, 148, 155, 155, nil, - nil, 155, 155, 155, 155, 155, 155, nil, 155, 155, - 114, 114, nil, nil, nil, nil, nil, nil, nil, 114, - 114, 114, 114, 118, 118, nil, nil, nil, nil, nil, - nil, nil, 118, 118, 118, 118, nil, nil, nil, nil, - nil, nil, nil, 114, 114, nil, nil, 114, 114, 114, - 114, 114, 114, nil, 114, 114, 118, 118, nil, nil, - 118, 118, 118, 118, 118, 118, nil, 118, 118, 253, - 253, nil, nil, nil, nil, nil, nil, nil, 253, 253, - 253, 253, 257, 257, nil, nil, nil, nil, nil, nil, - nil, 257, 257, 257, 257, nil, nil, nil, nil, nil, - nil, nil, nil, 253, nil, nil, 253, 253, 253, 253, - 253, 253, nil, 253, 253, nil, nil, nil, nil, 257, - 257, 257, 257, 257, 257, nil, 257, 257, 115, 115, - nil, nil, nil, nil, nil, nil, nil, 115, 115, 115, - 115, 254, nil, nil, nil, nil, nil, nil, nil, 254, - 252, nil, nil, nil, nil, nil, nil, nil, 252, nil, - nil, 115, 115, nil, nil, 115, 115, 115, 115, 115, - 115, nil, 115, 115, 171, nil, nil, 254, 254, 254, - 254, 254, 254, nil, 254, 254, 252, 252, 252, 252, - 252, 252, nil, 252, 252, 171, 285, 171, 171, nil, - 171, 171, nil, 171, nil, 171, nil, 171, nil, 171, - nil, nil, 171, 171, nil, 261, nil, 285, nil, 285, - 285, nil, 285, 285, nil, 285, nil, 285, nil, 285, - nil, 285, nil, nil, 285, 285, 261, 292, 261, 261, - nil, 261, 261, nil, 261, nil, 261, nil, 261, nil, - 261, nil, nil, 261, 261, nil, 296, nil, 292, nil, - 292, 292, nil, 292, 292, nil, 292, nil, 292, nil, - 292, nil, 292, nil, nil, 292, 292, 296, 212, 296, - 296, nil, 296, 296, nil, 296, nil, 296, nil, 296, - nil, 296, nil, nil, 296, 296, nil, 342, nil, 212, - nil, 212, 212, nil, 212, 212, nil, 212, nil, 212, - nil, 212, nil, 212, nil, nil, 212, 212, 342, 351, - 342, 342, nil, 342, 342, nil, 342, nil, 342, nil, - 342, nil, 342, nil, nil, 342, 342, nil, 353, nil, - 351, nil, 351, 351, nil, 351, 351, nil, 351, nil, - 351, nil, 351, nil, 351, nil, nil, 351, 351, 353, - 200, 353, 353, nil, 353, 353, nil, 353, nil, 353, - nil, 353, nil, 353, nil, nil, 353, 353, nil, 358, - nil, 200, nil, 200, 200, nil, 200, 200, nil, 200, - nil, 200, nil, 200, nil, 200, nil, nil, 200, 200, - 358, 360, 358, 358, nil, 358, 358, nil, 358, nil, - 358, nil, 358, nil, 358, nil, nil, 358, 358, nil, - nil, nil, 360, nil, 360, 360, nil, 360, 360, nil, - 360, nil, 360, nil, 360, nil, 360, nil, nil, 360, - 360, 4, nil, 4, 4, nil, 4, 4, nil, 4, - nil, 4, nil, 4, nil, 4, nil, nil, 4, 4, - 0, nil, 0, 0, nil, 0, 0, nil, 0, nil, - 0, nil, 0, nil, 0, nil, nil, 0, 0 ] + 54, 54, 147, 147, 54, 48, 147, 144, 147, 110, + 75, 44, 31, 106, 31, 19, 199, 198, 192, 122, + 110, 150, 150, 133, 106, 110, 192, 31, 75, 106, + 48, 121, 195, 54, 272, 147, 133, 54, 54, 147, + 147, 54, 272, 147, 199, 199, 54, 256, 147, 144, + 54, 31, 147, 19, 150, 256, 19, 122, 150, 150, + 122, 54, 150, 147, 153, 153, 150, 150, 245, 121, + 153, 150, 121, 275, 349, 349, 19, 249, 249, 201, + 122, 245, 150, 256, 256, 256, 256, 256, 256, 202, + 256, 256, 121, 154, 154, 325, 325, 153, 275, 275, + 146, 153, 153, 314, 314, 153, 187, 349, 204, 8, + 153, 349, 349, 146, 153, 349, 154, 187, 8, 8, + 349, 204, 187, 203, 349, 153, 154, 184, 325, 259, + 154, 154, 325, 325, 154, 349, 325, 259, 154, 154, + 12, 325, 277, 154, 12, 325, 312, 312, 97, 97, + 312, 12, 312, 277, 154, 97, 325, 113, 277, 86, + 24, 24, 113, 209, 24, 259, 259, 259, 259, 259, + 259, 196, 259, 259, 210, 196, 196, 177, 210, 312, + 177, 210, 24, 312, 312, 210, 97, 312, 267, 267, + 248, 248, 312, 24, 91, 267, 312, 24, 24, 152, + 85, 24, 214, 152, 152, 24, 24, 312, 26, 26, + 24, 5, 26, 1, 26, 5, 84, 1, 82, 217, + 289, 24, 5, 5, 1, 289, 267, 28, 28, 218, + 26, 28, 188, 28, 157, 157, 188, 188, 157, 219, + 157, 26, 247, 247, 220, 26, 26, 247, 247, 26, + 221, 81, 79, 225, 26, 26, 157, 78, 26, 180, + 28, 26, 236, 237, 28, 28, 74, 157, 28, 26, + 98, 157, 157, 28, 176, 157, 171, 28, 176, 176, + 157, 157, 99, 101, 157, 158, 158, 157, 28, 158, + 102, 158, 264, 264, 167, 157, 104, 264, 264, 70, + 68, 67, 63, 59, 287, 287, 58, 158, 287, 107, + 287, 286, 286, 57, 263, 286, 109, 286, 158, 265, + 111, 55, 158, 158, 114, 117, 158, 118, 123, 281, + 281, 158, 158, 197, 40, 158, 282, 287, 158, 284, + 35, 287, 287, 33, 286, 287, 158, 128, 286, 286, + 287, 30, 286, 23, 287, 20, 304, 286, 13, 132, + 316, 286, 281, 318, 134, 287, 281, 281, 326, 329, + 281, 331, 286, 332, 334, 281, 41, 41, 335, 281, + 41, 337, 41, 135, 252, 252, 252, 252, 348, 136, + 281, 252, 252, 350, 140, 43, 43, 2, 41, 43, + 139, 43, 42, 42, 138, nil, 42, nil, 42, 41, + nil, nil, nil, 41, 41, nil, nil, 41, nil, nil, + 280, 280, 41, 41, 42, nil, 41, nil, 43, 41, + nil, nil, 43, 43, nil, 42, 43, 41, nil, 42, + 42, 43, nil, 42, nil, 43, nil, nil, 42, 42, + nil, nil, 42, 280, nil, 42, 43, 280, 280, nil, + nil, 280, nil, 42, nil, nil, 280, 45, 45, nil, + 280, 45, nil, 45, nil, 251, 251, 251, 251, 251, + 251, 280, 251, 251, nil, 270, 270, nil, nil, 45, + nil, nil, 270, nil, 250, 250, 250, 250, nil, nil, + 45, 250, 250, nil, 45, 45, nil, nil, 45, nil, + nil, nil, nil, 45, 45, 159, 159, 45, 270, 159, + 45, 159, 270, 270, nil, nil, 270, nil, 45, nil, + nil, 270, nil, nil, nil, 270, nil, 159, nil, nil, + nil, 269, 269, nil, nil, 269, 270, 269, 159, nil, + nil, nil, 159, 159, nil, nil, 159, nil, nil, nil, + nil, 159, 159, 160, 160, 159, nil, 160, 159, 160, + nil, nil, nil, nil, 269, nil, 159, nil, 269, 269, + nil, nil, 269, nil, nil, 160, nil, 269, nil, 161, + 161, 269, nil, 161, nil, 161, 160, nil, nil, nil, + 160, 160, 269, nil, 160, nil, nil, nil, nil, 160, + 160, 161, nil, 160, nil, nil, 160, nil, nil, 162, + 162, nil, 161, 162, 160, 162, 161, 161, nil, nil, + 161, nil, nil, nil, nil, 161, 161, nil, nil, 161, + nil, 162, 161, nil, 62, 62, nil, nil, nil, nil, + 161, nil, 162, nil, nil, nil, 162, 162, nil, nil, + 162, nil, nil, nil, nil, 162, 162, 62, nil, 162, + 163, 163, 162, nil, 163, nil, 163, 62, nil, nil, + 162, 62, 62, nil, nil, 62, nil, nil, nil, 62, + 62, nil, 163, nil, 62, nil, 65, 65, nil, nil, + 65, nil, 65, 163, nil, 62, nil, 163, 163, nil, + nil, 163, nil, nil, nil, nil, 163, 163, 65, nil, + 163, 108, 108, 163, nil, 108, nil, 108, nil, 65, + nil, 163, nil, 65, 65, nil, nil, 65, nil, nil, + nil, nil, 65, 65, nil, nil, 65, 164, 164, 65, + nil, 164, nil, 164, 108, nil, nil, 65, 108, 108, + nil, nil, 108, nil, nil, nil, nil, 108, nil, 164, + nil, 108, nil, 170, 170, nil, nil, 170, nil, 170, + 164, nil, 108, nil, 164, 164, nil, nil, 164, nil, + nil, 239, 239, 164, 164, 170, nil, 164, 71, 71, + 164, nil, 71, nil, 71, nil, 170, nil, 164, nil, + 170, 170, 234, 234, 170, nil, 234, nil, 234, 170, + 170, nil, nil, 170, 239, nil, 170, nil, 239, 239, + nil, 71, 239, nil, 170, 71, 71, 239, nil, 71, + nil, 239, 223, 223, 71, 234, nil, nil, 71, 234, + 234, nil, 239, 234, nil, nil, nil, nil, 234, 71, + 227, 227, 234, nil, 227, 223, 227, nil, nil, nil, + nil, nil, nil, 234, nil, 223, nil, nil, nil, 223, + 223, nil, 227, 223, nil, 222, 222, 223, 223, 222, + nil, 222, 223, 227, nil, nil, nil, 227, 227, nil, + nil, 227, nil, 223, nil, nil, 227, 227, nil, nil, + 227, 216, 216, 227, nil, 216, nil, 216, 222, nil, + nil, 227, 222, 222, nil, nil, 222, nil, nil, nil, + nil, 222, 83, 83, nil, 222, 83, nil, 83, nil, + nil, nil, nil, nil, 216, nil, 222, nil, 216, 216, + nil, nil, 216, nil, 83, nil, nil, 216, 215, 215, + nil, 216, 215, nil, nil, 83, nil, nil, nil, 83, + 83, nil, 216, 83, nil, nil, nil, nil, 83, 83, + 166, 166, 83, nil, 166, 83, 166, nil, nil, nil, + nil, 215, nil, 83, nil, 215, 215, nil, nil, 215, + nil, nil, 166, nil, 215, nil, 168, 168, 215, nil, + 168, nil, 168, 166, nil, nil, nil, 166, 166, 215, + nil, 166, nil, nil, nil, nil, 166, 166, 168, nil, + 166, nil, nil, 166, nil, nil, 88, 88, nil, 168, + 88, 166, 88, 168, 168, nil, nil, 168, nil, nil, + nil, nil, 168, 168, nil, nil, 168, nil, 88, 168, + nil, nil, 169, 169, nil, nil, 169, 168, 169, 88, + nil, nil, nil, 88, 88, nil, nil, 88, nil, nil, + 183, 183, 88, 88, 169, nil, 88, nil, nil, 88, + nil, nil, nil, nil, nil, 169, nil, 88, nil, 169, + 169, nil, nil, 169, nil, nil, nil, nil, 169, 169, + 93, 93, 169, 183, 93, 169, 93, 183, 183, 89, + nil, 183, nil, 169, nil, nil, 183, nil, 89, 89, + 183, nil, 93, nil, nil, nil, nil, 89, 89, 89, + 89, 183, nil, 93, nil, nil, nil, 93, 93, 95, + 95, 93, nil, 95, 95, 95, 93, 93, nil, nil, + 93, 89, 89, 93, nil, 89, 89, 89, 89, 89, + 89, 93, 89, 89, 173, 173, nil, nil, 173, nil, + 173, nil, 95, nil, nil, nil, 95, 95, nil, nil, + 95, nil, nil, nil, nil, 95, 173, nil, nil, 95, + 165, 165, nil, nil, 165, nil, 165, 173, nil, nil, + 95, 173, 173, nil, nil, 173, nil, nil, nil, nil, + 173, 173, 165, nil, 173, nil, nil, 173, nil, nil, + nil, nil, nil, 165, nil, 173, nil, 165, 165, nil, + nil, 165, 149, 149, nil, nil, 165, 165, nil, nil, + 165, nil, nil, 165, nil, 149, 149, nil, nil, nil, + nil, 165, nil, nil, 149, 149, 149, 149, 156, 156, + nil, nil, nil, nil, nil, nil, 156, 156, 156, 156, + 156, nil, nil, nil, nil, nil, nil, nil, 149, 149, + nil, nil, 149, 149, 149, 149, 149, 149, nil, 149, + 149, 156, 156, nil, nil, 156, 156, 156, 156, 156, + 156, nil, 156, 156, 115, 115, nil, nil, nil, nil, + nil, nil, nil, 115, 115, 115, 115, 119, 119, nil, + nil, nil, nil, nil, nil, nil, 119, 119, 119, 119, + nil, nil, nil, nil, nil, nil, nil, 115, 115, nil, + nil, 115, 115, 115, 115, 115, 115, nil, 115, 115, + 119, 119, nil, nil, 119, 119, 119, 119, 119, 119, + nil, 119, 119, 254, 254, nil, nil, nil, nil, nil, + nil, nil, 254, 254, 254, 254, 258, 258, nil, nil, + nil, nil, nil, nil, nil, 258, 258, 258, 258, nil, + nil, 260, 260, 260, 260, 260, 260, 254, 260, 260, + 254, 254, 254, 254, 254, 254, nil, 254, 254, nil, + nil, nil, nil, 258, 258, 258, 258, 258, 258, nil, + 258, 258, 116, 116, nil, nil, nil, nil, nil, nil, + nil, 116, 116, 116, 116, 255, nil, nil, nil, nil, + nil, nil, nil, 255, 253, nil, nil, nil, nil, nil, + nil, nil, 253, nil, nil, 116, 116, nil, nil, 116, + 116, 116, 116, 116, 116, nil, 116, 116, 172, nil, + nil, 255, 255, 255, 255, 255, 255, nil, 255, 255, + 253, 253, 253, 253, 253, 253, nil, 253, 253, 172, + 291, 172, 172, nil, 172, 172, nil, 172, nil, 172, + nil, 172, nil, 172, nil, nil, 172, 172, nil, 262, + nil, 291, nil, 291, 291, nil, 291, 291, nil, 291, + nil, 291, nil, 291, nil, 291, nil, nil, 291, 291, + 262, 293, 262, 262, nil, 262, 262, nil, 262, nil, + 262, nil, 262, nil, 262, nil, nil, 262, 262, nil, + 297, nil, 293, nil, 293, 293, nil, 293, 293, nil, + 293, nil, 293, nil, 293, nil, 293, nil, nil, 293, + 293, 297, 213, 297, 297, nil, 297, 297, nil, 297, + nil, 297, nil, 297, nil, 297, nil, nil, 297, 297, + nil, 343, nil, 213, nil, 213, 213, nil, 213, 213, + nil, 213, nil, 213, nil, 213, nil, 213, nil, nil, + 213, 213, 343, 352, 343, 343, nil, 343, 343, nil, + 343, nil, 343, nil, 343, nil, 343, nil, nil, 343, + 343, nil, 354, nil, 352, nil, 352, 352, nil, 352, + 352, nil, 352, nil, 352, nil, 352, nil, 352, nil, + nil, 352, 352, 354, 206, 354, 354, nil, 354, 354, + nil, 354, nil, 354, nil, 354, nil, 354, nil, nil, + 354, 354, nil, 359, nil, 206, nil, 206, 206, nil, + 206, 206, nil, 206, nil, 206, nil, 206, nil, 206, + nil, nil, 206, 206, 359, 361, 359, 359, nil, 359, + 359, nil, 359, nil, 359, nil, 359, nil, 359, nil, + nil, 359, 359, nil, nil, nil, 361, nil, 361, 361, + nil, 361, 361, nil, 361, nil, 361, nil, 361, nil, + 361, nil, nil, 361, 361, 4, nil, 4, 4, nil, + 4, 4, nil, 4, nil, 4, nil, 4, nil, 4, + nil, nil, 4, 4, 0, nil, 0, 0, nil, 0, + 0, nil, 0, nil, 0, nil, 0, nil, 0, nil, + nil, 0, 0 ] racc_action_pointer = [ - 1730, 177, 382, nil, 1711, 175, nil, nil, 103, nil, - nil, nil, 104, 370, nil, nil, nil, nil, nil, 13, - 371, nil, nil, 369, 158, nil, 206, nil, 225, nil, - 188, 6, nil, 369, nil, 343, nil, nil, nil, nil, - 351, 370, 396, 389, -13, 461, nil, nil, -7, nil, - nil, nil, nil, nil, -2, 307, nil, 309, 301, 317, - nil, nil, 638, 315, nil, 690, nil, 297, 311, nil, - 304, 792, nil, nil, 275, 4, nil, nil, 247, 236, - nil, 247, 179, 926, 177, 140, -6, nil, 1030, 1107, - nil, 253, nil, 1104, nil, 1143, nil, 146, 279, 286, - nil, 287, 304, 318, nil, -15, 328, 715, 303, 118, - 349, nil, 343, 122, 1293, 1411, 345, 318, 1306, nil, - 29, 17, 362, nil, nil, nil, nil, 351, nil, nil, - nil, 348, 57, 373, 400, 392, nil, 407, 407, 411, - nil, nil, nil, -4, nil, 96, 0, nil, 1234, 19, - nil, 164, 62, 91, nil, 1247, 279, 305, 509, 557, - 583, 613, 664, 741, 1194, 974, 252, 1000, 1056, 767, - 242, 1465, 1168, nil, nil, 225, 168, nil, 288, nil, - nil, nil, 1074, 260, nil, nil, 82, 228, nil, nil, - nil, 16, nil, nil, 119, 192, 112, 344, -6, nil, - 1651, 17, 64, 64, 88, nil, nil, nil, 119, 138, - nil, nil, 1569, 185, 952, 905, 176, 220, 199, 204, - 241, 879, 836, nil, 259, nil, 854, nil, nil, nil, - nil, nil, nil, 806, nil, 272, 262, nil, 785, nil, - nil, nil, nil, nil, 11, nil, 186, 42, 16, 436, - 235, 326, 1432, 1352, 1423, 29, nil, 1365, 111, 417, - nil, 1506, 304, 195, 332, nil, 186, nil, 535, 479, - nil, 6, nil, nil, 48, nil, -11, nil, nil, 414, - 323, 352, nil, 356, nil, 1487, nil, 298, 232, nil, - 185, nil, 1528, nil, nil, nil, 1547, nil, nil, nil, - nil, nil, nil, 372, nil, nil, nil, nil, nil, nil, - nil, 144, nil, 207, nil, 359, nil, 385, nil, nil, - nil, nil, nil, nil, 93, 392, nil, nil, 378, nil, - 380, 383, nil, 384, 385, nil, 402, nil, nil, nil, - nil, nil, 1588, nil, nil, nil, nil, 405, 72, 412, - nil, 1610, nil, 1629, nil, nil, nil, nil, 1670, nil, - 1692, nil, nil, nil ] + 1734, 177, 353, nil, 1715, 175, nil, nil, 103, nil, + nil, nil, 104, 343, nil, nil, nil, nil, nil, 13, + 347, nil, nil, 345, 158, nil, 206, nil, 225, nil, + 349, 6, nil, 343, nil, 316, nil, nil, nil, nil, + 326, 374, 400, 393, -13, 465, nil, nil, -7, nil, + nil, nil, nil, nil, -2, 281, nil, 290, 283, 297, + nil, nil, 642, 296, nil, 694, nil, 278, 294, nil, + 287, 796, nil, nil, 243, 4, nil, nil, 234, 229, + nil, 245, 195, 930, 193, 177, 136, nil, 1034, 1111, + nil, 171, nil, 1108, nil, 1147, nil, 146, 247, 259, + nil, 260, 282, nil, 284, nil, -11, 301, 719, 276, + -15, 320, nil, 122, 316, 1297, 1415, 318, 290, 1310, + nil, 29, 17, 320, nil, nil, nil, nil, 324, nil, + nil, nil, 318, 12, 341, 371, 366, nil, 381, 380, + 382, nil, nil, nil, -4, nil, 88, 0, nil, 1238, + 19, nil, 192, 62, 91, nil, 1251, 232, 283, 513, + 561, 587, 617, 668, 745, 1198, 978, 231, 1004, 1060, + 771, 213, 1469, 1172, nil, nil, 267, 168, nil, nil, + 248, nil, nil, 1078, 125, nil, nil, 82, 186, nil, + nil, nil, 0, nil, nil, -8, 164, 322, 5, -6, + nil, 64, 74, 98, 96, nil, 1655, nil, nil, 155, + 138, nil, nil, 1573, 193, 956, 909, 179, 220, 199, + 204, 241, 883, 840, nil, 246, nil, 858, nil, nil, + nil, nil, nil, nil, 810, nil, 251, 239, nil, 789, + nil, nil, nil, nil, nil, 56, nil, 186, 129, 16, + 440, 421, 330, 1436, 1356, 1427, 29, nil, 1369, 111, + 1347, nil, 1510, 283, 236, 312, nil, 186, nil, 539, + 483, nil, 22, nil, nil, 48, nil, 118, nil, nil, + 418, 327, 324, nil, 330, nil, 309, 302, nil, 185, + nil, 1491, nil, 1532, nil, nil, nil, 1551, nil, nil, + nil, nil, nil, nil, 344, nil, nil, nil, nil, nil, + nil, nil, 144, nil, 92, nil, 329, nil, 355, nil, + nil, nil, nil, nil, nil, 93, 360, nil, nil, 346, + nil, 348, 350, nil, 351, 355, nil, 372, nil, nil, + nil, nil, nil, 1592, nil, nil, nil, nil, 379, 72, + 384, nil, 1614, nil, 1633, nil, nil, nil, nil, 1674, + nil, 1696, nil, nil, nil ] racc_action_default = [ - -182, -219, -40, -13, -1, -219, -14, -2, -219, -15, - -3, -173, -174, -219, -16, -5, -171, -17, -6, -219, - -219, -7, -8, -219, -172, -9, -219, -10, -219, -11, - -219, -219, -12, -219, -174, -182, -172, -41, -4, -39, - -219, -219, -219, -219, -182, -219, -179, -181, -182, -175, - -177, -178, -207, -180, -75, -82, -159, -29, -30, -199, - -107, -31, -219, -217, -161, -219, -34, -32, -64, -33, - -21, -219, -112, -22, -219, -63, -23, -62, -26, -27, - -160, -219, -28, -219, -104, -96, -103, -99, -219, -219, - -97, -93, -101, -219, -120, -219, -102, -219, -94, -98, - -100, -95, -219, -164, -162, -182, -43, -219, -75, -182, - -219, -184, -219, -183, -72, -74, -219, -182, -73, -193, - -219, -219, -219, -158, -157, -70, -68, -65, -76, -71, - -64, -60, -63, -66, -205, -69, -58, -67, -219, -205, - -80, -81, -83, -219, -20, -219, -219, -108, -219, -219, - -85, -219, -219, -219, -129, -219, -219, -219, -219, -219, - -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, - -219, -219, -219, -136, -202, -219, -219, -211, -219, -215, - -214, -210, -219, -219, -46, -199, -182, -219, -47, -49, - -63, -219, -56, -55, -82, -219, -219, -205, -219, 364, - -219, -192, -190, -219, -219, -187, -216, -195, -219, -219, - -176, -194, -219, -219, -61, -219, -206, -219, -75, -206, - -219, -219, -219, -18, -219, -109, -219, -110, -24, -25, - -203, -204, -113, -219, -155, -219, -63, -153, -219, -147, - -156, -148, -154, -106, -219, -139, -124, -126, -125, -127, - -131, -128, -133, -138, -135, -132, -121, -137, -134, -130, - -122, -219, -117, -123, -204, -200, -219, -208, -219, -219, - -141, -219, -145, -163, -219, -44, -219, -52, -51, -219, - -219, -205, -114, -219, -45, -219, -166, -219, -219, -185, - -219, -186, -219, -197, -198, -196, -219, -170, -35, -59, - -78, -77, -36, -205, -84, -38, -79, -19, -218, -111, - -86, -219, -150, -205, -105, -117, -116, -219, -201, -212, - -209, -213, -142, -140, -219, -219, -50, -48, -90, -91, - -87, -88, -53, -92, -89, -54, -219, -37, -165, -191, - -189, -188, -219, -168, -169, -57, -152, -204, -219, -219, - -115, -219, -146, -219, -42, -167, -151, -149, -219, -119, - -219, -144, -118, -143 ] + -183, -220, -40, -13, -1, -220, -14, -2, -220, -15, + -3, -174, -175, -220, -16, -5, -172, -17, -6, -220, + -220, -7, -8, -220, -173, -9, -220, -10, -220, -11, + -220, -220, -12, -220, -175, -183, -173, -41, -4, -39, + -220, -220, -220, -220, -183, -220, -180, -182, -183, -176, + -179, -178, -208, -181, -75, -82, -159, -29, -30, -200, + -107, -31, -220, -218, -161, -220, -34, -32, -64, -33, + -21, -220, -112, -22, -220, -63, -23, -62, -26, -27, + -160, -220, -28, -220, -104, -96, -103, -99, -220, -220, + -97, -93, -101, -220, -120, -220, -102, -220, -94, -98, + -100, -95, -220, -163, -165, -162, -183, -43, -220, -75, + -183, -220, -185, -184, -220, -72, -74, -220, -183, -73, + -194, -220, -220, -220, -158, -157, -70, -68, -65, -76, + -71, -64, -60, -63, -66, -206, -69, -58, -67, -220, + -206, -80, -81, -83, -220, -20, -220, -220, -108, -220, + -220, -85, -220, -220, -220, -129, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -136, -203, -220, -220, -212, -216, + -220, -215, -211, -220, -220, -46, -200, -183, -220, -47, + -49, -63, -220, -56, -55, -82, -220, -220, -206, -220, + 365, -193, -191, -220, -220, -188, -220, -217, -196, -220, + -220, -177, -195, -220, -220, -61, -220, -207, -220, -75, + -207, -220, -220, -220, -18, -220, -109, -220, -110, -24, + -25, -204, -205, -113, -220, -155, -220, -63, -153, -220, + -147, -156, -148, -154, -106, -220, -139, -124, -126, -125, + -127, -131, -128, -133, -138, -135, -132, -121, -137, -134, + -130, -122, -220, -117, -123, -205, -201, -220, -209, -220, + -220, -141, -220, -145, -164, -220, -44, -220, -52, -51, + -220, -220, -206, -114, -220, -45, -220, -220, -186, -220, + -187, -220, -167, -220, -197, -198, -199, -220, -171, -35, + -59, -78, -77, -36, -206, -84, -38, -79, -19, -219, + -111, -86, -220, -150, -206, -105, -117, -116, -220, -202, + -213, -210, -214, -142, -140, -220, -220, -50, -48, -90, + -91, -87, -88, -53, -92, -89, -54, -220, -37, -192, + -190, -189, -166, -220, -169, -170, -57, -152, -205, -220, + -220, -115, -220, -146, -220, -42, -168, -151, -149, -220, + -119, -220, -144, -118, -143 ] racc_goto_table = [ - 31, 61, 35, 13, 31, 40, 23, 13, 235, 241, - 23, 205, 134, 44, 4, 217, 47, 177, 69, 139, - 220, 70, 147, 67, 38, 270, 140, 7, 49, 104, - 76, 126, 187, 136, 228, 125, 198, 316, 272, 61, - 151, 112, 332, 335, 106, 348, 269, 304, 129, 225, - 117, 239, 39, 127, 313, 103, 69, 131, 208, 145, - 48, 67, 111, 122, 175, 327, 197, 211, 76, 203, - 204, 111, 213, 58, 295, 119, 195, 176, 283, 33, + 31, 69, 205, 13, 31, 40, 178, 13, 35, 242, + 218, 148, 67, 23, 38, 221, 4, 23, 236, 44, + 126, 61, 135, 137, 58, 140, 103, 49, 70, 141, + 7, 130, 271, 229, 47, 317, 188, 76, 114, 69, + 199, 270, 128, 152, 333, 336, 226, 118, 273, 349, + 67, 127, 305, 240, 125, 39, 314, 132, 104, 61, + 214, 209, 58, 48, 123, 112, 146, 176, 328, 212, + 203, 204, 56, 284, 112, 76, 107, 198, 120, 294, + 196, 177, 33, nil, nil, 179, nil, nil, 351, nil, + nil, nil, nil, nil, nil, 313, nil, nil, nil, nil, + nil, nil, 56, nil, 236, nil, 229, nil, nil, nil, + 56, nil, nil, nil, nil, nil, nil, 275, nil, 323, + nil, nil, nil, nil, nil, nil, nil, 69, nil, 211, + nil, 69, nil, nil, nil, 273, 47, 47, 67, nil, + nil, 235, 67, nil, nil, nil, nil, 61, 208, nil, + 58, 61, nil, 125, 58, nil, nil, 337, 245, nil, + nil, nil, nil, 230, nil, 282, nil, 76, nil, 141, + nil, 235, 31, 310, nil, 13, 320, nil, 341, 346, + 274, 126, 257, 125, 300, 23, 261, 304, 262, 350, + 353, 302, 130, nil, 141, nil, nil, nil, 56, nil, + 69, 56, 56, 128, nil, 357, 31, nil, nil, 13, + nil, 67, 127, 31, 236, 125, 13, 295, nil, 23, + 61, nil, 291, 58, nil, nil, 23, 235, nil, 297, + nil, 56, nil, nil, nil, nil, 230, nil, nil, 125, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 78, nil, 79, 179, nil, nil, 235, nil, + nil, nil, 31, 56, nil, 13, nil, nil, 331, 331, + 125, 56, 38, 57, nil, 23, nil, 330, 330, nil, + 125, 125, 134, nil, 136, nil, nil, 56, nil, nil, + 78, 31, 79, 31, 13, nil, 13, 31, nil, nil, + 13, 38, nil, 124, 23, nil, 23, 38, 102, 343, + 23, 57, nil, 235, nil, nil, nil, nil, 56, nil, + nil, nil, nil, 117, nil, 125, nil, nil, 56, 56, + nil, nil, nil, nil, 193, nil, 194, 235, 193, nil, + 194, nil, nil, 31, nil, nil, 13, 82, nil, 125, + nil, 151, 31, 38, 31, 13, 23, 13, nil, 31, + nil, 31, 13, nil, 13, 23, nil, 23, 359, 38, + 361, 38, 23, 56, 23, 151, nil, 138, 78, nil, + 79, 238, 78, 241, 79, 82, nil, nil, 151, nil, + nil, nil, nil, nil, nil, nil, nil, 56, nil, 57, + nil, nil, 124, 57, nil, nil, nil, nil, nil, nil, + nil, 238, nil, 241, nil, 193, nil, 194, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 225, nil, nil, + nil, nil, 124, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 134, nil, 136, nil, nil, nil, nil, + nil, 78, nil, 79, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 124, nil, nil, 238, nil, 241, + nil, nil, 57, 82, 89, nil, 243, 82, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 124, 115, + 116, nil, nil, 119, nil, nil, 301, nil, 238, nil, + 241, nil, 307, nil, nil, 193, 243, 194, 332, 332, + 334, 334, nil, nil, 311, nil, nil, nil, nil, 124, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 329, + 329, 155, nil, nil, nil, nil, 156, nil, 138, nil, + nil, 174, nil, nil, nil, nil, 82, nil, nil, 322, + nil, nil, nil, 238, nil, 241, nil, nil, nil, nil, + nil, nil, 243, nil, nil, nil, 339, 340, nil, nil, + nil, nil, nil, nil, 124, nil, nil, 238, nil, 241, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 347, 243, nil, nil, nil, nil, 124, nil, + nil, nil, nil, 335, 335, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, nil, 258, 259, 260, nil, + nil, 264, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 350, nil, nil, nil, 235, 312, 179, nil, nil, nil, - nil, nil, nil, 124, nil, nil, nil, 228, nil, nil, - nil, 58, 322, 274, nil, nil, nil, 47, 47, nil, - nil, nil, nil, nil, nil, 272, 61, nil, nil, 210, - 61, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 69, 207, nil, nil, 69, 67, nil, - 244, 234, 67, nil, nil, 229, nil, nil, 281, 76, - nil, nil, 336, 256, nil, 140, nil, 260, nil, nil, - nil, 31, nil, nil, 13, nil, 303, 23, nil, 56, - 352, 234, 273, 309, 345, 261, 319, 301, 341, nil, - 140, 126, 57, 299, 349, 125, nil, nil, 58, 61, - 31, 124, 58, 13, 235, 356, 23, nil, 129, 56, - 293, nil, 31, 127, 285, 13, 69, 56, 23, nil, - nil, 67, 123, nil, nil, nil, 296, nil, 229, nil, - 57, 124, nil, nil, nil, nil, nil, 234, nil, nil, - nil, nil, nil, nil, nil, nil, 78, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 329, 329, nil, 79, - nil, 31, nil, 124, 13, 179, nil, 23, 234, nil, - nil, 58, nil, 82, nil, nil, 133, nil, 330, 330, - nil, 38, nil, nil, 78, 31, nil, 124, 13, 135, - nil, 23, 31, nil, nil, 13, 31, 79, 23, 13, - nil, nil, 23, 137, 56, 38, 342, 56, 56, nil, - nil, 82, nil, nil, nil, nil, 38, 57, 124, nil, - 123, 57, nil, 234, nil, nil, nil, 192, 124, 124, - nil, 192, nil, nil, nil, nil, nil, 56, nil, nil, - 193, nil, 31, nil, 193, 13, nil, 234, 23, nil, - 123, 31, nil, 31, 13, nil, 13, 23, 31, 23, - 31, 13, 38, 13, 23, 358, 23, 360, nil, 56, - nil, 78, nil, 124, 237, 78, 102, 56, 38, nil, - 38, nil, 123, nil, 79, nil, nil, 240, 79, nil, - 57, 116, nil, 56, nil, nil, nil, 124, 82, nil, - nil, 242, 82, nil, 237, nil, 123, nil, 192, nil, - nil, nil, nil, nil, nil, nil, nil, 240, nil, 150, - nil, 193, nil, nil, 56, nil, nil, nil, nil, nil, - nil, 242, nil, nil, 56, 56, 133, 123, nil, nil, - nil, nil, nil, 150, 78, nil, nil, 328, 328, 135, - nil, nil, nil, nil, nil, 150, nil, 79, nil, nil, - 237, nil, nil, 137, nil, nil, nil, nil, nil, 89, - nil, 82, nil, 240, nil, nil, nil, nil, nil, 56, - nil, nil, nil, nil, 114, 115, nil, 242, 118, nil, - nil, 237, 123, nil, 224, nil, nil, nil, 192, nil, - nil, 331, 331, 56, 240, nil, nil, nil, nil, nil, - nil, 193, nil, nil, 333, 333, 123, nil, 242, nil, - nil, nil, nil, nil, nil, nil, 154, nil, 334, 334, - nil, 155, nil, nil, nil, nil, 173, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 237, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 240, - nil, nil, nil, 300, nil, nil, nil, nil, nil, 306, - 237, nil, nil, 242, nil, nil, nil, nil, nil, nil, - nil, 310, nil, 240, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 242, nil, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, nil, - 257, 258, 259, nil, nil, 263, 321, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 243, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 339, 340, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 346 ] + nil, nil, 243 ] racc_goto_check = [ - 34, 26, 29, 49, 34, 34, 20, 49, 64, 66, - 20, 77, 32, 29, 2, 33, 60, 80, 28, 35, - 33, 18, 57, 27, 4, 62, 50, 3, 73, 27, - 20, 26, 38, 44, 19, 47, 38, 59, 64, 26, - 54, 69, 43, 43, 37, 55, 61, 53, 28, 58, - 69, 65, 5, 27, 67, 68, 28, 30, 70, 18, - 71, 27, 3, 72, 54, 39, 32, 74, 20, 75, - 76, 3, 31, 25, 78, 3, 54, 79, 33, 1, + 34, 28, 78, 49, 34, 34, 81, 49, 29, 66, + 33, 57, 27, 20, 4, 33, 2, 20, 64, 29, + 47, 26, 32, 44, 25, 35, 68, 74, 18, 50, + 3, 28, 62, 19, 60, 59, 38, 20, 70, 28, + 38, 61, 27, 54, 43, 43, 58, 70, 64, 55, + 27, 26, 53, 65, 25, 5, 67, 30, 69, 26, + 31, 71, 25, 72, 73, 3, 18, 54, 39, 75, + 76, 77, 46, 33, 3, 20, 37, 32, 3, 79, + 54, 80, 1, nil, nil, 27, nil, nil, 59, nil, + nil, nil, nil, nil, nil, 66, nil, nil, nil, nil, + nil, nil, 46, nil, 64, nil, 19, nil, nil, nil, + 46, nil, nil, nil, nil, nil, nil, 38, nil, 62, + nil, nil, nil, nil, nil, nil, nil, 28, nil, 74, + nil, 28, nil, nil, nil, 64, 60, 60, 27, nil, + nil, 27, 27, nil, nil, nil, nil, 26, 3, nil, + 25, 26, nil, 25, 25, nil, nil, 33, 18, nil, + nil, nil, nil, 20, nil, 35, nil, 20, nil, 50, + nil, 27, 34, 57, nil, 49, 81, nil, 78, 33, + 68, 47, 60, 25, 44, 20, 60, 32, 2, 33, + 64, 50, 28, nil, 50, nil, nil, nil, 46, nil, + 28, 46, 46, 27, nil, 66, 34, nil, nil, 49, + nil, 27, 26, 34, 64, 25, 49, 29, nil, 20, + 26, nil, 2, 25, nil, nil, 20, 27, nil, 2, + nil, 46, nil, nil, nil, nil, 20, nil, nil, 25, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 59, nil, nil, nil, 64, 66, 27, nil, nil, nil, - nil, nil, nil, 25, nil, nil, nil, 19, nil, nil, - nil, 25, 62, 38, nil, nil, nil, 60, 60, nil, - nil, nil, nil, nil, nil, 64, 26, nil, nil, 73, - 26, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 28, 3, nil, nil, 28, 27, nil, - 18, 27, 27, nil, nil, 20, nil, nil, 35, 20, - nil, nil, 33, 60, nil, 50, nil, 60, nil, nil, - nil, 34, nil, nil, 49, nil, 32, 20, nil, 46, - 64, 27, 27, 57, 33, 2, 80, 50, 77, nil, - 50, 26, 24, 44, 33, 47, nil, nil, 25, 26, - 34, 25, 25, 49, 64, 66, 20, nil, 28, 46, - 29, nil, 34, 27, 2, 49, 28, 46, 20, nil, - nil, 27, 24, nil, nil, nil, 2, nil, 20, nil, - 24, 25, nil, nil, nil, nil, nil, 27, nil, nil, - nil, nil, nil, nil, nil, nil, 21, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 26, 26, nil, 22, - nil, 34, nil, 25, 49, 27, nil, 20, 27, nil, - nil, 25, nil, 23, nil, nil, 21, nil, 27, 27, - nil, 4, nil, nil, 21, 34, nil, 25, 49, 22, - nil, 20, 34, nil, nil, 49, 34, 22, 20, 49, - nil, nil, 20, 23, 46, 4, 2, 46, 46, nil, - nil, 23, nil, nil, nil, nil, 4, 24, 25, nil, - 24, 24, nil, 27, nil, nil, nil, 21, 25, 25, - nil, 21, nil, nil, nil, nil, nil, 46, nil, nil, - 22, nil, 34, nil, 22, 49, nil, 27, 20, nil, - 24, 34, nil, 34, 49, nil, 49, 20, 34, 20, - 34, 49, 4, 49, 20, 2, 20, 2, nil, 46, - nil, 21, nil, 25, 21, 21, 51, 46, 4, nil, - 4, nil, 24, nil, 22, nil, nil, 22, 22, nil, - 24, 51, nil, 46, nil, nil, nil, 25, 23, nil, - nil, 23, 23, nil, 21, nil, 24, nil, 21, nil, - nil, nil, nil, nil, nil, nil, nil, 22, nil, 51, - nil, 22, nil, nil, 46, nil, nil, nil, nil, nil, - nil, 23, nil, nil, 46, 46, 21, 24, nil, nil, - nil, nil, nil, 51, 21, nil, nil, 24, 24, 22, - nil, nil, nil, nil, nil, 51, nil, 22, nil, nil, - 21, nil, nil, 23, nil, nil, nil, nil, nil, 48, - nil, 23, nil, 22, nil, nil, nil, nil, nil, 46, - nil, nil, nil, nil, 48, 48, nil, 23, 48, nil, - nil, 21, 24, nil, 51, nil, nil, nil, 21, nil, - nil, 21, 21, 46, 22, nil, nil, nil, nil, nil, - nil, 22, nil, nil, 22, 22, 24, nil, 23, nil, - nil, nil, nil, nil, nil, nil, 48, nil, 23, 23, - nil, 48, nil, nil, nil, nil, 48, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 21, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, - nil, nil, nil, 51, nil, nil, nil, nil, nil, 51, - 21, nil, nil, 23, nil, nil, nil, nil, nil, nil, - nil, 51, nil, 22, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 23, nil, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, nil, - 48, 48, 48, nil, nil, 48, 51, nil, nil, nil, + nil, nil, 21, nil, 22, 27, nil, nil, 27, nil, + nil, nil, 34, 46, nil, 49, nil, nil, 27, 27, + 25, 46, 4, 24, nil, 20, nil, 26, 26, nil, + 25, 25, 21, nil, 22, nil, nil, 46, nil, nil, + 21, 34, 22, 34, 49, nil, 49, 34, nil, nil, + 49, 4, nil, 24, 20, nil, 20, 4, 51, 2, + 20, 24, nil, 27, nil, nil, nil, nil, 46, nil, + nil, nil, nil, 51, nil, 25, nil, nil, 46, 46, + nil, nil, nil, nil, 21, nil, 22, 27, 21, nil, + 22, nil, nil, 34, nil, nil, 49, 23, nil, 25, + nil, 51, 34, 4, 34, 49, 20, 49, nil, 34, + nil, 34, 49, nil, 49, 20, nil, 20, 2, 4, + 2, 4, 20, 46, 20, 51, nil, 23, 21, nil, + 22, 21, 21, 22, 22, 23, nil, nil, 51, nil, + nil, nil, nil, nil, nil, nil, nil, 46, nil, 24, + nil, nil, 24, 24, nil, nil, nil, nil, nil, nil, + nil, 21, nil, 22, nil, 21, nil, 22, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 51, nil, nil, + nil, nil, 24, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 21, nil, 22, nil, nil, nil, nil, + nil, 21, nil, 22, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 24, nil, nil, 21, nil, 22, + nil, nil, 24, 23, 48, nil, 23, 23, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 24, 48, + 48, nil, nil, 48, nil, nil, 51, nil, 21, nil, + 22, nil, 51, nil, nil, 21, 23, 22, 21, 21, + 22, 22, nil, nil, 51, nil, nil, nil, nil, 24, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 24, + 24, 48, nil, nil, nil, nil, 48, nil, 23, nil, + nil, 48, nil, nil, nil, nil, 23, nil, nil, 51, + nil, nil, nil, 21, nil, 22, nil, nil, nil, nil, + nil, nil, 23, nil, nil, nil, 51, 51, nil, nil, + nil, nil, nil, nil, 24, nil, nil, 21, nil, 22, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 51, 51, nil, nil, nil, + nil, nil, 51, 23, nil, nil, nil, nil, 24, nil, + nil, nil, nil, 23, 23, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, nil, 48, 48, 48, nil, + nil, 48, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 51 ] + nil, nil, nil, nil, nil, nil, nil, nil, 23, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 23 ] racc_goto_pointer = [ - nil, 79, 14, 27, 20, 47, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, -3, -115, - 6, 222, 235, 249, 168, 49, -23, -1, -6, 1, - 3, -59, -42, -119, 0, -36, nil, 13, -73, -211, - nil, nil, nil, -237, -21, nil, 155, -19, 443, 3, - -29, 348, nil, -172, -31, -268, nil, -43, -99, -225, - -3, -136, -157, nil, -144, -101, -143, -184, 25, 6, - -59, 41, 15, 9, -54, -44, -43, -102, -135, -20, - -80, nil ] + nil, 82, 16, 30, 10, 50, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 4, -117, + 13, 228, 230, 323, 249, 0, -3, -12, -23, 7, + 3, -72, -32, -125, 0, -30, nil, 45, -70, -209, + nil, nil, nil, -236, -31, nil, 48, -34, 448, 3, + -26, 280, nil, -168, -28, -265, nil, -54, -103, -228, + 15, -142, -151, nil, -135, -100, -144, -183, -4, 28, + 3, -57, 44, 16, 8, -53, -43, -42, -111, -131, + -16, -91, nil ] racc_goto_default = [ - nil, nil, nil, 184, 10, 15, 18, 21, 22, 25, + nil, nil, nil, 185, 10, 15, 18, 21, 22, 25, 27, 29, 32, 3, 6, 9, 14, 17, nil, 73, 96, 98, 99, 101, 85, 86, 90, 91, 92, 20, - nil, nil, nil, nil, 81, nil, 5, nil, nil, 188, - 276, 189, 191, nil, nil, 138, 84, 87, 148, 63, - 128, 94, 141, 142, nil, 233, 100, nil, nil, nil, - 64, nil, nil, 271, 74, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 50, nil, nil, nil, nil, nil, - nil, 178 ] + nil, nil, nil, nil, 81, nil, 5, nil, nil, 189, + 277, 190, 192, nil, nil, 139, 84, 87, 149, 63, + 129, 94, 142, 143, nil, 234, 100, nil, nil, nil, + 64, nil, nil, 272, 74, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 51, nil, nil, nil, nil, + nil, nil, 180 ] racc_reduce_table = [ 0, 0, :racc_error, @@ -795,66 +801,67 @@ racc_reduce_table = [ 1, 128, :_reduce_160, 1, 128, :_reduce_none, 1, 132, :_reduce_162, - 3, 132, :_reduce_163, - 2, 75, :_reduce_164, - 6, 77, :_reduce_165, - 5, 77, :_reduce_166, - 7, 78, :_reduce_167, - 6, 78, :_reduce_168, - 6, 79, :_reduce_169, - 5, 79, :_reduce_170, - 1, 98, :_reduce_171, - 1, 93, :_reduce_172, + 1, 133, :_reduce_none, + 3, 133, :_reduce_164, + 2, 75, :_reduce_165, + 6, 77, :_reduce_166, + 5, 77, :_reduce_167, + 7, 78, :_reduce_168, + 6, 78, :_reduce_169, + 6, 79, :_reduce_170, + 5, 79, :_reduce_171, + 1, 98, :_reduce_172, 1, 93, :_reduce_173, 1, 93, :_reduce_174, - 1, 135, :_reduce_none, - 3, 135, :_reduce_176, - 1, 137, :_reduce_177, - 1, 138, :_reduce_178, - 1, 138, :_reduce_179, - 1, 138, :_reduce_180, - 1, 138, :_reduce_none, - 0, 67, :_reduce_182, - 0, 139, :_reduce_183, - 1, 133, :_reduce_none, - 3, 133, :_reduce_185, - 3, 133, :_reduce_186, - 1, 140, :_reduce_none, - 3, 140, :_reduce_188, - 3, 141, :_reduce_189, - 1, 141, :_reduce_190, - 3, 141, :_reduce_191, - 1, 141, :_reduce_192, + 1, 93, :_reduce_175, 1, 136, :_reduce_none, - 2, 136, :_reduce_194, + 3, 136, :_reduce_177, + 1, 138, :_reduce_178, + 1, 139, :_reduce_179, + 1, 139, :_reduce_180, + 1, 139, :_reduce_181, + 1, 139, :_reduce_none, + 0, 67, :_reduce_183, + 0, 140, :_reduce_184, 1, 134, :_reduce_none, - 2, 134, :_reduce_196, - 1, 142, :_reduce_none, - 1, 142, :_reduce_none, - 1, 86, :_reduce_199, - 3, 111, :_reduce_200, - 4, 111, :_reduce_201, - 2, 111, :_reduce_202, + 3, 134, :_reduce_186, + 3, 134, :_reduce_187, + 1, 141, :_reduce_none, + 3, 141, :_reduce_189, + 3, 142, :_reduce_190, + 1, 142, :_reduce_191, + 3, 142, :_reduce_192, + 1, 142, :_reduce_193, + 1, 137, :_reduce_none, + 2, 137, :_reduce_195, + 1, 135, :_reduce_none, + 2, 135, :_reduce_197, + 1, 143, :_reduce_none, + 1, 143, :_reduce_none, + 1, 86, :_reduce_200, + 3, 111, :_reduce_201, + 4, 111, :_reduce_202, + 2, 111, :_reduce_203, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 0, 97, :_reduce_none, - 1, 97, :_reduce_206, - 1, 124, :_reduce_207, - 3, 120, :_reduce_208, - 4, 120, :_reduce_209, - 2, 120, :_reduce_210, - 1, 143, :_reduce_none, - 3, 143, :_reduce_212, + 1, 97, :_reduce_207, + 1, 124, :_reduce_208, + 3, 120, :_reduce_209, + 4, 120, :_reduce_210, + 2, 120, :_reduce_211, + 1, 144, :_reduce_none, 3, 144, :_reduce_213, - 1, 145, :_reduce_214, - 1, 145, :_reduce_215, - 4, 113, :_reduce_216, + 3, 145, :_reduce_214, + 1, 146, :_reduce_215, + 1, 146, :_reduce_216, + 4, 113, :_reduce_217, 1, 92, :_reduce_none, - 4, 92, :_reduce_218 ] + 4, 92, :_reduce_219 ] -racc_reduce_n = 219 +racc_reduce_n = 220 -racc_shift_n = 364 +racc_shift_n = 365 racc_token_table = { false => 0, @@ -1075,7 +1082,8 @@ Racc_token_to_s_table = [ "svalues", "selectval", "sintvalues", - "qtexts", + "string", + "strings", "argumentlist", "classparent", "hostnames", @@ -2147,21 +2155,22 @@ module_eval(<<'.,.,', 'grammar.ra', 630) module_eval(<<'.,.,', 'grammar.ra', 635) def _reduce_162(val, _values, result) - result = [val[0].value] + result = [val[0][:value]] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 637) - def _reduce_163(val, _values, result) - results = val[0] << val[2].value +# reduce 163 omitted +module_eval(<<'.,.,', 'grammar.ra', 637) + def _reduce_164(val, _values, result) + result = val[0] += val[2] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 641) - def _reduce_164(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 640) + def _reduce_165(val, _values, result) val[1].each do |file| import(file) end @@ -2172,8 +2181,8 @@ module_eval(<<'.,.,', 'grammar.ra', 641) end .,., -module_eval(<<'.,.,', 'grammar.ra', 651) - def _reduce_165(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 650) + def _reduce_166(val, _values, result) @lexer.commentpop newdefine classname(val[1]), :arguments => val[2], :code => val[4], :line => val[0][:line] @lexer.indefine = false @@ -2185,8 +2194,8 @@ module_eval(<<'.,.,', 'grammar.ra', 651) end .,., -module_eval(<<'.,.,', 'grammar.ra', 658) - def _reduce_166(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 657) + def _reduce_167(val, _values, result) @lexer.commentpop newdefine classname(val[1]), :arguments => val[2], :line => val[0][:line] @lexer.indefine = false @@ -2196,8 +2205,8 @@ module_eval(<<'.,.,', 'grammar.ra', 658) end .,., -module_eval(<<'.,.,', 'grammar.ra', 666) - def _reduce_167(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 665) + def _reduce_168(val, _values, result) @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop @@ -2208,8 +2217,8 @@ module_eval(<<'.,.,', 'grammar.ra', 666) end .,., -module_eval(<<'.,.,', 'grammar.ra', 672) - def _reduce_168(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 671) + def _reduce_169(val, _values, result) @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop @@ -2220,8 +2229,8 @@ module_eval(<<'.,.,', 'grammar.ra', 672) end .,., -module_eval(<<'.,.,', 'grammar.ra', 680) - def _reduce_169(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 679) + def _reduce_170(val, _values, result) @lexer.commentpop newnode val[1], :parent => val[2], :code => val[4], :line => val[0][:line] result = nil @@ -2230,8 +2239,8 @@ module_eval(<<'.,.,', 'grammar.ra', 680) end .,., -module_eval(<<'.,.,', 'grammar.ra', 684) - def _reduce_170(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 683) + def _reduce_171(val, _values, result) @lexer.commentpop newnode val[1], :parent => val[2], :line => val[0][:line] result = nil @@ -2240,38 +2249,38 @@ module_eval(<<'.,.,', 'grammar.ra', 684) end .,., -module_eval(<<'.,.,', 'grammar.ra', 689) - def _reduce_171(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 688) + def _reduce_172(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 691) - def _reduce_172(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 690) + def _reduce_173(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 692) - def _reduce_173(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 691) + def _reduce_174(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 693) - def _reduce_174(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 692) + def _reduce_175(val, _values, result) result = "class" result end .,., -# reduce 175 omitted +# reduce 176 omitted -module_eval(<<'.,.,', 'grammar.ra', 699) - def _reduce_176(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 698) + def _reduce_177(val, _values, result) result = val[0] result = [result] unless result.is_a?(Array) result << val[2] @@ -2280,65 +2289,65 @@ module_eval(<<'.,.,', 'grammar.ra', 699) end .,., -module_eval(<<'.,.,', 'grammar.ra', 705) - def _reduce_177(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 704) + def _reduce_178(val, _values, result) result = ast AST::HostName, :value => val[0] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 708) - def _reduce_178(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 707) + def _reduce_179(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 709) - def _reduce_179(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 708) + def _reduce_180(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 710) - def _reduce_180(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 709) + def _reduce_181(val, _values, result) result = val[0][:value] result end .,., -# reduce 181 omitted +# reduce 182 omitted -module_eval(<<'.,.,', 'grammar.ra', 714) - def _reduce_182(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 713) + def _reduce_183(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 718) - def _reduce_183(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 717) + def _reduce_184(val, _values, result) result = ast AST::ASTArray, :children => [] result end .,., -# reduce 184 omitted +# reduce 185 omitted -module_eval(<<'.,.,', 'grammar.ra', 723) - def _reduce_185(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 722) + def _reduce_186(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 726) - def _reduce_186(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 725) + def _reduce_187(val, _values, result) result = val[1] result = [result] unless result[0].is_a?(Array) @@ -2346,10 +2355,10 @@ module_eval(<<'.,.,', 'grammar.ra', 726) end .,., -# reduce 187 omitted +# reduce 188 omitted -module_eval(<<'.,.,', 'grammar.ra', 732) - def _reduce_188(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 731) + def _reduce_189(val, _values, result) result = val[0] result = [result] unless result[0].is_a?(Array) result << val[2] @@ -2358,8 +2367,8 @@ module_eval(<<'.,.,', 'grammar.ra', 732) end .,., -module_eval(<<'.,.,', 'grammar.ra', 738) - def _reduce_189(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 737) + def _reduce_190(val, _values, result) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0][:value], val[2]] @@ -2367,8 +2376,8 @@ module_eval(<<'.,.,', 'grammar.ra', 738) end .,., -module_eval(<<'.,.,', 'grammar.ra', 742) - def _reduce_190(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 741) + def _reduce_191(val, _values, result) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0][:value]] @@ -2376,56 +2385,56 @@ module_eval(<<'.,.,', 'grammar.ra', 742) end .,., -module_eval(<<'.,.,', 'grammar.ra', 745) - def _reduce_191(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 744) + def _reduce_192(val, _values, result) result = [val[0][:value], val[2]] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 747) - def _reduce_192(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 746) + def _reduce_193(val, _values, result) result = [val[0][:value]] result end .,., -# reduce 193 omitted +# reduce 194 omitted -module_eval(<<'.,.,', 'grammar.ra', 752) - def _reduce_194(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 751) + def _reduce_195(val, _values, result) result = val[1] result end .,., -# reduce 195 omitted +# reduce 196 omitted -module_eval(<<'.,.,', 'grammar.ra', 757) - def _reduce_196(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 756) + def _reduce_197(val, _values, result) result = val[1] result end .,., -# reduce 197 omitted - # reduce 198 omitted -module_eval(<<'.,.,', 'grammar.ra', 763) - def _reduce_199(val, _values, result) +# reduce 199 omitted + +module_eval(<<'.,.,', 'grammar.ra', 762) + def _reduce_200(val, _values, result) result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 767) - def _reduce_200(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 766) + def _reduce_201(val, _values, result) if val[1].instance_of?(AST::ASTArray) result = val[1] else @@ -2436,8 +2445,8 @@ module_eval(<<'.,.,', 'grammar.ra', 767) end .,., -module_eval(<<'.,.,', 'grammar.ra', 774) - def _reduce_201(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 773) + def _reduce_202(val, _values, result) if val[1].instance_of?(AST::ASTArray) result = val[1] else @@ -2448,37 +2457,37 @@ module_eval(<<'.,.,', 'grammar.ra', 774) end .,., -module_eval(<<'.,.,', 'grammar.ra', 780) - def _reduce_202(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 779) + def _reduce_203(val, _values, result) result = ast AST::ASTArray result end .,., -# reduce 203 omitted - # reduce 204 omitted # reduce 205 omitted -module_eval(<<'.,.,', 'grammar.ra', 787) - def _reduce_206(val, _values, result) +# reduce 206 omitted + +module_eval(<<'.,.,', 'grammar.ra', 786) + def _reduce_207(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 790) - def _reduce_207(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 789) + def _reduce_208(val, _values, result) result = ast AST::Regex, :value => val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 794) - def _reduce_208(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 793) + def _reduce_209(val, _values, result) if val[1].instance_of?(AST::ASTHash) result = val[1] else @@ -2489,8 +2498,8 @@ module_eval(<<'.,.,', 'grammar.ra', 794) end .,., -module_eval(<<'.,.,', 'grammar.ra', 801) - def _reduce_209(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 800) + def _reduce_210(val, _values, result) if val[1].instance_of?(AST::ASTHash) result = val[1] else @@ -2501,18 +2510,18 @@ module_eval(<<'.,.,', 'grammar.ra', 801) end .,., -module_eval(<<'.,.,', 'grammar.ra', 807) - def _reduce_210(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 806) + def _reduce_211(val, _values, result) result = ast AST::ASTHash result end .,., -# reduce 211 omitted +# reduce 212 omitted -module_eval(<<'.,.,', 'grammar.ra', 812) - def _reduce_212(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 811) + def _reduce_213(val, _values, result) if val[0].instance_of?(AST::ASTHash) result = val[0].merge(val[2]) else @@ -2524,40 +2533,40 @@ module_eval(<<'.,.,', 'grammar.ra', 812) end .,., -module_eval(<<'.,.,', 'grammar.ra', 821) - def _reduce_213(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 820) + def _reduce_214(val, _values, result) result = ast AST::ASTHash, { :value => { val[0] => val[2] } } result end .,., -module_eval(<<'.,.,', 'grammar.ra', 824) - def _reduce_214(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 823) + def _reduce_215(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 825) - def _reduce_215(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 824) + def _reduce_216(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 828) - def _reduce_216(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 827) + def _reduce_217(val, _values, result) result = ast AST::HashOrArrayAccess, :variable => val[0][:value], :key => val[2] result end .,., -# reduce 217 omitted +# reduce 218 omitted -module_eval(<<'.,.,', 'grammar.ra', 833) - def _reduce_218(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 832) + def _reduce_219(val, _values, result) result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2] result diff --git a/lib/puppet/parser/parser_support.rb b/lib/puppet/parser/parser_support.rb index d43b0d37d..24ee5fab3 100644 --- a/lib/puppet/parser/parser_support.rb +++ b/lib/puppet/parser/parser_support.rb @@ -107,91 +107,15 @@ class Puppet::Parser::Parser end def find_hostclass(namespace, name) - find_or_load(namespace, name, :hostclass) + known_resource_types.find_or_load(namespace, name, :hostclass) end def find_definition(namespace, name) - find_or_load(namespace, name, :definition) + known_resource_types.find_or_load(namespace, name, :definition) end - def find_or_load(namespace, name, type) - method = "find_#{type}" - namespace = namespace.downcase - name = name.downcase - fullname = (namespace + "::" + name).sub(/^::/, '') - - if name =~ /^::/ - names_to_try = [name.sub(/^::/, '')] - else - names_to_try = [fullname] - - # Try to load the module init file if we're a qualified name - names_to_try << fullname.split("::")[0] if fullname.include?("::") - - # Otherwise try to load the bare name on its own. This - # is appropriate if the class we're looking for is in a - # module that's different from our namespace. - names_to_try << name - names_to_try.compact! - end - - until (result = known_resource_types.send(method, namespace, name)) or names_to_try.empty? do - self.load(names_to_try.shift) - end - return result - end - - # Import our files. def import(file) - if Puppet[:ignoreimport] - return AST::ASTArray.new(:children => []) - end - # use a path relative to the file doing the importing - if @lexer.file - dir = @lexer.file.sub(%r{[^/]+$},'').sub(/\/$/, '') - else - dir = "." - end - if dir == "" - dir = "." - end - result = ast AST::ASTArray - - # We can't interpolate at this point since we don't have any - # scopes set up. Warn the user if they use a variable reference - raise "Got no file" unless file - pat = file - if pat.index("$") - Puppet.warning( - "The import of #{pat} contains a variable reference;" + - " variables are not interpolated for imports " + - "in file #{@lexer.file} at line #{@lexer.line}" - ) - end - files = Puppet::Parser::Files.find_manifests(pat, :cwd => dir, :environment => @environment) - if files.size == 0 - raise Puppet::ImportError.new("No file(s) found for import " + - "of '#{pat}'") - end - - files.collect { |file| - parser = Puppet::Parser::Parser.new(@environment) - parser.files = self.files - Puppet.debug("importing '%s'" % file) - - unless file =~ /^#{File::SEPARATOR}/ - file = File.join(dir, file) - end - begin - parser.file = file - rescue Puppet::AlreadyImportedError - # This file has already been imported to just move on - next - end - - # This will normally add code to the 'main' class. - parser.parse - } + known_resource_types.loader.import(file, @lexer.file) end def initialize(env) @@ -203,69 +127,6 @@ class Puppet::Parser::Parser # Initialize or reset all of our variables. def initvars @lexer = Puppet::Parser::Lexer.new() - @files = {} - @loaded = [] - @loading = {} - @loading.extend(MonitorMixin) - class << @loading - def done_with(item) - synchronize do - delete(item)[:busy].signal if self.has_key?(item) and self[item][:loader] == Thread.current - end - end - def owner_of(item) - synchronize do - if !self.has_key? item - self[item] = { :loader => Thread.current, :busy => self.new_cond} - :nobody - elsif self[item][:loader] == Thread.current - :this_thread - else - flag = self[item][:busy] - flag.wait - flag.signal - :another_thread - end - end - end - end - end - - # Utility method factored out of load - def able_to_import?(classname,item,msg) - unless @loaded.include?(item) - begin - case @loading.owner_of(item) - when :this_thread - return - when :another_thread - return able_to_import?(classname,item,msg) - when :nobody - import(item) - Puppet.info "Autoloaded #{msg}" - @loaded << item - end - rescue Puppet::ImportError => detail - # We couldn't load the item - ensure - @loading.done_with(item) - end - end - # We don't know whether we're looking for a class or definition, so we have - # to test for both. - return known_resource_types.hostclass(classname) || known_resource_types.definition(classname) - end - - # Try to load a class, since we could not find it. - def load(classname) - return false if classname == "" - filename = classname.gsub("::", File::SEPARATOR) - mod = filename.scan(/^[\w-]+/).shift - - # First try to load the top-level module then the individual file - [[mod, "module %s" % mod ], - [filename,"file %s from module %s" % [filename, mod]] - ].any? { |item,description| able_to_import?(classname,item,description) } end # Split an fq name into a namespace and name @@ -365,15 +226,6 @@ class Puppet::Parser::Parser require self.file end - # See if any of the files have changed. - def reparse? - if file = @files.detect { |name, file| file.changed? } - return file[1].stamp - else - return false - end - end - def string=(string) @lexer.string = string end diff --git a/lib/puppet/parser/type_loader.rb b/lib/puppet/parser/type_loader.rb new file mode 100644 index 000000000..3268eae37 --- /dev/null +++ b/lib/puppet/parser/type_loader.rb @@ -0,0 +1,144 @@ +require 'puppet/node/environment' + +class Puppet::Parser::TypeLoader + include Puppet::Node::Environment::Helper + + class Helper < Hash + include MonitorMixin + def done_with(item) + synchronize do + delete(item)[:busy].signal if self.has_key?(item) and self[item][:loader] == Thread.current + end + end + def owner_of(item) + synchronize do + if !self.has_key? item + self[item] = { :loader => Thread.current, :busy => self.new_cond} + :nobody + elsif self[item][:loader] == Thread.current + :this_thread + else + flag = self[item][:busy] + flag.wait + flag.signal + :another_thread + end + end + end + end + + # Import our files. + def import(file, current_file = nil) + return if Puppet[:ignoreimport] + + # use a path relative to the file doing the importing + if current_file + dir = current_file.sub(%r{[^/]+$},'').sub(/\/$/, '') + else + dir = "." + end + if dir == "" + dir = "." + end + + pat = file + files = Puppet::Parser::Files.find_manifests(pat, :cwd => dir, :environment => environment) + if files.size == 0 + raise Puppet::ImportError.new("No file(s) found for import of '#{pat}'") + end + + files.each do |file| + unless file =~ /^#{File::SEPARATOR}/ + file = File.join(dir, file) + end + @imported[file] = true + parse_file(file) + end + end + + def imported?(file) + @imported.has_key?(file) + end + + def known_resource_types + environment.known_resource_types + end + + def initialize(env) + self.environment = env + @loaded = [] + @loading = Helper.new + + @imported = {} + end + + def load_until(namespaces, name) + return nil if name == "" # special-case main. + name2files(namespaces, name).each do |filename| + import_if_possible(filename) do + import(filename) + @loaded << filename + end + if result = yield(filename) + Puppet.info "Automatically imported #{name} from #{filename}" + return result + end + end + nil + end + + def loaded?(name) + @loaded.include?(name) + end + + def name2files(namespaces, name) + return [name.sub(/^::/, '').gsub("::", File::SEPARATOR)] if name =~ /^::/ + + result = namespaces.inject([]) do |names_to_try, namespace| + fullname = (namespace + "::" + name).sub(/^::/, '') + + # Try to load the module init file if we're a qualified name + if fullname.include?("::") + names_to_try << fullname.split("::")[0] + end + + # Then the fully qualified name + names_to_try << fullname + end + + # Otherwise try to load the bare name on its own. This + # is appropriate if the class we're looking for is in a + # module that's different from our namespace. + result << name + result.uniq.collect { |f| f.gsub("::", File::SEPARATOR) } + end + + def parse_file(file) + Puppet.debug("importing '#{file}'") + parser = Puppet::Parser::Parser.new(environment) + parser.file = file + parser.parse + end + + private + + # Utility method factored out of load for handling thread-safety. + # This isn't tested in the specs, because that's basically impossible. + def import_if_possible(file) + return if @loaded.include?(file) + begin + case @loading.owner_of(file) + when :this_thread + return + when :another_thread + return import_if_possible(file) + when :nobody + yield + end + rescue Puppet::ImportError => detail + # We couldn't load the item + ensure + @loading.done_with(file) + end + end +end diff --git a/lib/puppet/resource/type_collection.rb b/lib/puppet/resource/type_collection.rb index 513c1c672..4dbf753be 100644 --- a/lib/puppet/resource/type_collection.rb +++ b/lib/puppet/resource/type_collection.rb @@ -55,6 +55,11 @@ class Puppet::Resource::TypeCollection instance end + def loader + require 'puppet/parser/type_loader' + @loader ||= Puppet::Parser::TypeLoader.new(environment) + end + def node(name) name = munge_name(name) @@ -115,16 +120,30 @@ class Puppet::Resource::TypeCollection nil end + def find_or_load(namespaces, name, type) + name = name.downcase + namespaces = [namespaces] unless namespaces.is_a?(Array) + namespaces = namespaces.collect { |ns| ns.downcase } + + # This could be done in the load_until, but the knowledge seems to + # belong here. + if r = find(namespaces, name, type) + return r + end + + return loader.load_until(namespaces, name) { find(namespaces, name, type) } + end + def find_node(name) find("", name, :node) end - def find_hostclass(namespace, name) - find(namespace, name, :hostclass) + def find_hostclass(namespaces, name) + find_or_load(namespaces, name, :hostclass) end - def find_definition(namespace, name) - find(namespace, name, :definition) + def find_definition(namespaces, name) + find_or_load(namespaces, name, :definition) end [:hostclasses, :nodes, :definitions].each do |m| |