puppet 0.13.6 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (149) hide show
  1. data/CHANGELOG +57 -0
  2. data/Rakefile +38 -410
  3. data/bin/puppet +14 -12
  4. data/bin/puppetca +1 -3
  5. data/bin/puppetd +25 -7
  6. data/bin/puppetdoc +161 -104
  7. data/bin/puppetmasterd +4 -4
  8. data/conf/epm.list +8 -0
  9. data/conf/redhat/client.init +6 -1
  10. data/conf/redhat/no-chuser-0.15.1.patch +38 -0
  11. data/conf/redhat/puppet.spec +20 -5
  12. data/conf/redhat/puppetd.conf +1 -1
  13. data/conf/redhat/puppetmasterd.conf +1 -1
  14. data/conf/redhat/server.init +2 -4
  15. data/examples/code/snippets/{casestatement → casestatement.pp} +12 -1
  16. data/examples/code/snippets/selectorvalues.pp +15 -0
  17. data/examples/code/snippets/singleselector.pp +22 -0
  18. data/examples/code/snippets/tag.pp +9 -0
  19. data/ext/module_puppet +1 -1
  20. data/install.rb +303 -303
  21. data/lib/puppet.rb +7 -9
  22. data/lib/puppet/client.rb +18 -5
  23. data/lib/puppet/client/dipper.rb +12 -10
  24. data/lib/puppet/client/master.rb +113 -41
  25. data/lib/puppet/client/pelement.rb +20 -0
  26. data/lib/puppet/config.rb +113 -6
  27. data/lib/puppet/element.rb +1 -3
  28. data/lib/puppet/event.rb +12 -23
  29. data/lib/puppet/filetype.rb +93 -5
  30. data/lib/puppet/inifile.rb +201 -0
  31. data/lib/puppet/log.rb +18 -6
  32. data/lib/puppet/parameter.rb +80 -29
  33. data/lib/puppet/parser/ast.rb +6 -4
  34. data/lib/puppet/parser/ast/caseopt.rb +13 -4
  35. data/lib/puppet/parser/ast/casestatement.rb +2 -2
  36. data/lib/puppet/parser/ast/component.rb +4 -14
  37. data/lib/puppet/parser/ast/hostclass.rb +1 -1
  38. data/lib/puppet/parser/ast/leaf.rb +12 -0
  39. data/lib/puppet/parser/ast/node.rb +4 -4
  40. data/lib/puppet/parser/ast/objectdef.rb +5 -51
  41. data/lib/puppet/parser/ast/selector.rb +2 -0
  42. data/lib/puppet/parser/ast/tag.rb +26 -0
  43. data/lib/puppet/parser/interpreter.rb +89 -74
  44. data/lib/puppet/parser/lexer.rb +4 -3
  45. data/lib/puppet/parser/parser.rb +440 -378
  46. data/lib/puppet/parser/scope.rb +844 -887
  47. data/lib/puppet/server.rb +12 -1
  48. data/lib/puppet/server/authconfig.rb +166 -0
  49. data/lib/puppet/server/authstore.rb +8 -6
  50. data/lib/puppet/server/ca.rb +23 -26
  51. data/lib/puppet/server/filebucket.rb +24 -23
  52. data/lib/puppet/server/fileserver.rb +116 -47
  53. data/lib/puppet/server/master.rb +58 -19
  54. data/lib/puppet/server/pelement.rb +176 -0
  55. data/lib/puppet/server/rights.rb +78 -0
  56. data/lib/puppet/server/servlet.rb +19 -6
  57. data/lib/puppet/sslcertificates.rb +4 -2
  58. data/lib/puppet/sslcertificates/ca.rb +66 -34
  59. data/lib/puppet/storage.rb +20 -26
  60. data/lib/puppet/transaction.rb +49 -92
  61. data/lib/puppet/type.rb +142 -35
  62. data/lib/puppet/type/cron.rb +29 -14
  63. data/lib/puppet/type/exec.rb +92 -35
  64. data/lib/puppet/type/group.rb +29 -11
  65. data/lib/puppet/type/nameservice.rb +50 -1
  66. data/lib/puppet/type/nameservice/netinfo.rb +68 -1
  67. data/lib/puppet/type/nameservice/objectadd.rb +1 -0
  68. data/lib/puppet/type/package.rb +150 -109
  69. data/lib/puppet/type/package/apple.rb +27 -0
  70. data/lib/puppet/type/package/apt.rb +1 -0
  71. data/lib/puppet/type/package/darwinport.rb +97 -0
  72. data/lib/puppet/type/package/dpkg.rb +10 -2
  73. data/lib/puppet/type/package/freebsd.rb +19 -0
  74. data/lib/puppet/type/package/{bsd.rb → openbsd.rb} +36 -7
  75. data/lib/puppet/type/package/ports.rb +98 -0
  76. data/lib/puppet/type/package/rpm.rb +43 -7
  77. data/lib/puppet/type/package/sun.rb +53 -36
  78. data/lib/puppet/type/package/yum.rb +5 -16
  79. data/lib/puppet/type/parsedtype.rb +41 -29
  80. data/lib/puppet/type/parsedtype/host.rb +13 -5
  81. data/lib/puppet/type/parsedtype/mount.rb +250 -0
  82. data/lib/puppet/type/parsedtype/port.rb +8 -6
  83. data/lib/puppet/type/pfile.rb +284 -30
  84. data/lib/puppet/type/pfile/checksum.rb +96 -68
  85. data/lib/puppet/type/pfile/content.rb +16 -13
  86. data/lib/puppet/type/pfile/ensure.rb +64 -126
  87. data/lib/puppet/type/pfile/group.rb +12 -5
  88. data/lib/puppet/type/pfile/mode.rb +16 -4
  89. data/lib/puppet/type/pfile/source.rb +47 -73
  90. data/lib/puppet/type/pfile/target.rb +81 -0
  91. data/lib/puppet/type/pfile/uid.rb +10 -3
  92. data/lib/puppet/type/pfilebucket.rb +12 -3
  93. data/lib/puppet/type/schedule.rb +5 -1
  94. data/lib/puppet/type/service.rb +138 -66
  95. data/lib/puppet/type/service/debian.rb +9 -3
  96. data/lib/puppet/type/service/init.rb +51 -56
  97. data/lib/puppet/type/service/smf.rb +16 -6
  98. data/lib/puppet/type/state.rb +71 -32
  99. data/lib/puppet/type/symlink.rb +12 -7
  100. data/lib/puppet/type/tidy.rb +5 -1
  101. data/lib/puppet/type/user.rb +116 -20
  102. data/lib/puppet/type/yumrepo.rb +314 -0
  103. data/lib/puppet/util.rb +84 -14
  104. data/test/client/client.rb +41 -18
  105. data/test/client/master.rb +50 -4
  106. data/test/executables/puppetbin.rb +31 -4
  107. data/test/executables/puppetca.rb +18 -2
  108. data/test/language/ast.rb +201 -31
  109. data/test/language/interpreter.rb +8 -2
  110. data/test/{parser → language}/lexer.rb +1 -1
  111. data/test/language/node.rb +84 -0
  112. data/test/{parser → language}/parser.rb +1 -1
  113. data/test/language/scope.rb +101 -2
  114. data/test/language/snippets.rb +23 -2
  115. data/test/other/config.rb +99 -1
  116. data/test/other/filetype.rb +95 -0
  117. data/test/other/inifile.rb +114 -0
  118. data/test/other/log.rb +3 -2
  119. data/test/other/transactions.rb +55 -10
  120. data/test/puppet/utiltest.rb +25 -1
  121. data/test/puppettest.rb +140 -46
  122. data/test/server/authconfig.rb +56 -0
  123. data/test/server/bucket.rb +32 -18
  124. data/test/server/fileserver.rb +75 -30
  125. data/test/server/master.rb +27 -4
  126. data/test/server/pelement.rb +298 -0
  127. data/test/server/rights.rb +41 -0
  128. data/test/server/server.rb +2 -2
  129. data/test/tagging/tagging.rb +100 -1
  130. data/test/types/basic.rb +3 -3
  131. data/test/types/cron.rb +24 -1
  132. data/test/types/exec.rb +99 -1
  133. data/test/types/file.rb +298 -2
  134. data/test/types/filebucket.rb +4 -15
  135. data/test/types/filesources.rb +43 -14
  136. data/test/types/group.rb +1 -13
  137. data/test/types/mount.rb +277 -0
  138. data/test/types/package.rb +164 -33
  139. data/test/types/parameter.rb +107 -0
  140. data/test/types/port.rb +2 -1
  141. data/test/types/service.rb +37 -2
  142. data/test/types/state.rb +92 -0
  143. data/test/types/symlink.rb +30 -2
  144. data/test/types/tidy.rb +2 -14
  145. data/test/types/type.rb +35 -1
  146. data/test/types/user.rb +110 -1
  147. data/test/types/yumrepo.rb +95 -0
  148. metadata +316 -290
  149. data/test/types/filetype.rb +0 -160
@@ -19,6 +19,8 @@ class Puppet::Parser::AST
19
19
 
20
20
  default = nil
21
21
 
22
+ @values = [@values] unless @values.instance_of? AST::ASTArray
23
+
22
24
  # Then look for a match in the options.
23
25
  @values.each { |obj|
24
26
  param = obj.param.safeevaluate(:scope => scope)
@@ -0,0 +1,26 @@
1
+ class Puppet::Parser::AST
2
+ # The code associated with a class. This is different from components
3
+ # in that each class is a singleton -- only one will exist for a given
4
+ # node.
5
+ class Tag < AST::Branch
6
+ @name = :class
7
+ attr_accessor :type
8
+
9
+ def evaluate(hash)
10
+ scope = hash[:scope]
11
+
12
+ types = @type.safeevaluate(:scope => scope)
13
+
14
+ types = [types] unless types.is_a? Array
15
+
16
+ types.each do |type|
17
+ # Now set our class. We don't have to worry about checking
18
+ # whether we've been evaluated because we're not evaluating
19
+ # any code.
20
+ scope.setclass(self.object_id, type)
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ # $Id: tag.rb 1113 2006-04-17 16:15:33Z luke $
@@ -10,6 +10,8 @@ require 'puppet/parser/scope'
10
10
  module Puppet
11
11
  module Parser
12
12
  class Interpreter
13
+ include Puppet::Util
14
+
13
15
  Puppet.setdefaults("ldap",
14
16
  :ldapnodes => [false,
15
17
  "Whether to search for node configurations in LDAP."],
@@ -42,11 +44,11 @@ module Puppet
42
44
 
43
45
  # create our interpreter
44
46
  def initialize(hash)
45
- unless hash.include?(:Manifest)
46
- raise Puppet::DevError, "Interpreter was not passed a manifest"
47
+ if @code = hash[:Code]
48
+ @file = nil # to avoid warnings
49
+ elsif ! @file = hash[:Manifest]
50
+ raise Puppet::DevError, "You must provide code or a manifest"
47
51
  end
48
-
49
- @file = hash[:Manifest]
50
52
  @filetimeout = hash[:ParseCheck] || 15
51
53
 
52
54
  @lastchecked = 0
@@ -75,10 +77,10 @@ module Puppet
75
77
  # by the cfengine module.
76
78
  @classes = hash[:Classes] || []
77
79
 
80
+ @local = hash[:Local] || false
81
+
78
82
  # Create our parser object
79
83
  parsefiles
80
-
81
- evaluate
82
84
  end
83
85
 
84
86
  # Connect to the LDAP Server
@@ -87,6 +89,7 @@ module Puppet
87
89
  require 'ldap'
88
90
  rescue LoadError
89
91
  @ldap = nil
92
+ return
90
93
  end
91
94
  begin
92
95
  @ldap = LDAP::Conn.new(Puppet[:ldapserver], Puppet[:ldapport])
@@ -97,6 +100,25 @@ module Puppet
97
100
  end
98
101
  end
99
102
 
103
+ # Search for our node in the various locations.
104
+ def nodesearch(node)
105
+ # At this point, stop at the first source that defines
106
+ # the node
107
+ @nodesources.each do |source|
108
+ method = "nodesearch_%s" % source
109
+ if self.respond_to? method
110
+ parent, nodeclasses = self.send(method, node)
111
+ end
112
+
113
+ if nodeclasses
114
+ Puppet.info "Found %s in %s" % [node, source]
115
+ return parent, nodeclasses
116
+ end
117
+ end
118
+
119
+ return nil, nil
120
+ end
121
+
100
122
  # Find the ldap node and extra the info, returning just
101
123
  # the critical data.
102
124
  def nodesearch_ldap(node)
@@ -165,69 +187,49 @@ module Puppet
165
187
  # but for now just make a simple array
166
188
  names = [client]
167
189
 
168
- # if the client name is fully qualied (which is normally will be)
169
- # add the short name
190
+ # Make sure both the fqdn and the short name of the
191
+ # host can be used in the manifest
170
192
  if client =~ /\./
171
193
  names << client.sub(/\..+/,'')
194
+ else
195
+ names << "#{client}.#{facts['domain']}"
172
196
  end
173
197
 
174
- begin
175
- if @usenodes
176
- unless client
177
- raise Puppet::Error,
178
- "Cannot evaluate nodes with a nil client"
179
- end
198
+ scope = Puppet::Parser::Scope.new() # no parent scope
199
+ scope.name = "top"
200
+ scope.type = "puppet"
201
+ scope.interp = self
180
202
 
181
- classes = nil
182
- parent = nil
183
- # At this point, stop at the first source that defines
184
- # the node
185
- @nodesources.each do |source|
186
- method = "nodesearch_%s" % source
187
- if self.respond_to? method
188
- parent, classes = self.send(method, client)
189
- end
203
+ classes = @classes.dup
190
204
 
191
- if classes
192
- Puppet.info "Found %s in %s" % [client, source]
193
- break
194
- end
195
- end
205
+ args = {:ast => @ast, :facts => facts, :classes => classes}
196
206
 
197
- # We've already evaluated the AST, in this case
198
- #return @scope.evalnode(names, facts, classes, parent)
199
- return @scope.evalnode(
200
- :name => names,
201
- :facts => facts,
202
- :classes => classes,
203
- :parent => parent
204
- )
205
- else
206
- # We've already evaluated the AST, in this case
207
- @scope = Puppet::Parser::Scope.new() # no parent scope
208
- @scope.interp = self
209
- #return @scope.evaluate(@ast, facts, @classes)
210
- return @scope.evaluate(
211
- :ast => @ast,
212
- :facts => facts,
213
- :classes => @classes
214
- )
207
+ if @usenodes
208
+ unless client
209
+ raise Puppet::Error,
210
+ "Cannot evaluate nodes with a nil client"
215
211
  end
216
- #@ast.evaluate(@scope)
212
+
213
+ args[:names] = names
214
+
215
+ parent, nodeclasses = nodesearch(client)
216
+
217
+ args[:classes] += nodeclasses if nodeclasses
218
+
219
+ args[:parentnode] = parent if parent
220
+ end
221
+
222
+ begin
223
+ return scope.evaluate(args)
217
224
  rescue Puppet::DevError, Puppet::Error, Puppet::ParseError => except
218
- #Puppet.err "File %s, line %s: %s" %
219
- # [except.file, except.line, except.message]
220
- if Puppet[:debug]
221
- puts except.backtrace
222
- end
223
- #exit(1)
224
225
  raise
225
226
  rescue => except
226
227
  error = Puppet::DevError.new("%s: %s" %
227
228
  [except.class, except.message])
228
- if Puppet[:debug]
229
- puts except.backtrace
230
- end
229
+ error.backtrace = except.backtrace
230
+ #if Puppet[:debug]
231
+ # puts except.backtrace
232
+ #end
231
233
  raise error
232
234
  end
233
235
  end
@@ -258,24 +260,26 @@ module Puppet
258
260
  end
259
261
 
260
262
  def parsefiles
261
- if defined? @parser
262
- # Only check the files every 15 seconds or so, not on
263
- # every single connection
264
- if (Time.now - @lastchecked).to_i >= @filetimeout.to_i
265
- unless @parser.reparse?
266
- @lastchecked = Time.now
267
- return false
263
+ if @file
264
+ if defined? @parser
265
+ # Only check the files every 15 seconds or so, not on
266
+ # every single connection
267
+ if (Time.now - @lastchecked).to_i >= @filetimeout.to_i
268
+ unless @parser.reparse?
269
+ @lastchecked = Time.now
270
+ return false
271
+ end
272
+ else
273
+ return
268
274
  end
269
- else
270
- return
271
275
  end
272
- end
273
276
 
274
- unless FileTest.exists?(@file)
275
- if @ast
276
- return
277
- else
278
- raise Puppet::Error, "Manifest %s must exist" % @file
277
+ unless FileTest.exists?(@file)
278
+ if @ast
279
+ return
280
+ else
281
+ raise Puppet::Error, "Manifest %s must exist" % @file
282
+ end
279
283
  end
280
284
  end
281
285
 
@@ -284,8 +288,19 @@ module Puppet
284
288
  end
285
289
  # should i be creating a new parser each time...?
286
290
  @parser = Puppet::Parser::Parser.new()
287
- @parser.file = @file
288
- @ast = @parser.parse
291
+ if @code
292
+ @parser.string = @code
293
+ else
294
+ @parser.file = @file
295
+ end
296
+
297
+ if @local
298
+ @ast = @parser.parse
299
+ else
300
+ @ast = benchmark(:info, "Parsed manifest") do
301
+ @parser.parse
302
+ end
303
+ end
289
304
 
290
305
  # Mark when we parsed, so we can check freshness
291
306
  @parsedate = Time.now.to_i
@@ -299,4 +314,4 @@ module Puppet
299
314
  end
300
315
  end
301
316
 
302
- # $Id: interpreter.rb 962 2006-03-01 22:28:27Z luke $
317
+ # $Id: interpreter.rb 1103 2006-04-11 17:33:36Z luke $
@@ -21,9 +21,9 @@ module Puppet
21
21
  %r{\}} => :RBRACE,
22
22
  %r{\(} => :LPAREN,
23
23
  %r{\)} => :RPAREN,
24
- %r{"} => :DQUOTE,
24
+ %r{\"} => :DQUOTE,
25
25
  %r{\n} => :RETURN,
26
- %r{'} => :SQUOTE,
26
+ %r{\'} => :SQUOTE,
27
27
  %r{=} => :EQUALS,
28
28
  %r{==} => :ISEQUAL,
29
29
  %r{>=} => :GREATEREQUAL,
@@ -54,6 +54,7 @@ module Puppet
54
54
  "include" => :INCLUDE,
55
55
  "inherits" => :INHERITS,
56
56
  "node" => :NODE,
57
+ "tag" => :TAG,
57
58
  "true" => :BOOLEAN
58
59
  }
59
60
 
@@ -228,4 +229,4 @@ module Puppet
228
229
  end
229
230
  end
230
231
 
231
- # $Id: lexer.rb 923 2006-02-16 20:15:41Z luke $
232
+ # $Id: lexer.rb 1106 2006-04-11 22:32:51Z luke $
@@ -29,7 +29,7 @@ module Puppet
29
29
 
30
30
  class Parser < Racc::Parser
31
31
 
32
- module_eval <<'..end grammar.ra modeval..id466d6c46dd', 'grammar.ra', 716
32
+ module_eval <<'..end grammar.ra modeval..idb478f6db18', 'grammar.ra', 745
33
33
  attr_reader :file
34
34
  attr_accessor :files
35
35
 
@@ -143,284 +143,303 @@ def string=(string)
143
143
  @lexer.string = string
144
144
  end
145
145
 
146
- # $Id: parser.rb 954 2006-02-27 22:49:48Z luke $
147
- ..end grammar.ra modeval..id466d6c46dd
146
+ # Make emacs happy
147
+ # Local Variables:
148
+ # mode: ruby
149
+ # End:
150
+
151
+ # $Id: parser.rb 1106 2006-04-11 22:32:51Z luke $
152
+
153
+ ..end grammar.ra modeval..idb478f6db18
148
154
 
149
155
  ##### racc 1.4.4 generates ###
150
156
 
151
157
  racc_reduce_table = [
152
158
  0, 0, :racc_error,
153
- 1, 42, :_reduce_1,
154
- 1, 43, :_reduce_none,
155
- 2, 43, :_reduce_3,
156
- 1, 44, :_reduce_none,
157
- 1, 44, :_reduce_none,
158
- 1, 44, :_reduce_none,
159
+ 1, 43, :_reduce_1,
159
160
  1, 44, :_reduce_none,
160
- 1, 44, :_reduce_none,
161
- 1, 44, :_reduce_none,
162
- 1, 44, :_reduce_none,
163
- 1, 44, :_reduce_none,
164
- 2, 49, :_reduce_12,
165
- 1, 53, :_reduce_none,
166
- 3, 53, :_reduce_14,
167
- 1, 54, :_reduce_none,
168
- 1, 54, :_reduce_none,
169
- 5, 45, :_reduce_17,
170
- 5, 45, :_reduce_18,
171
- 5, 45, :_reduce_19,
172
- 4, 62, :_reduce_20,
173
- 1, 57, :_reduce_none,
174
- 3, 57, :_reduce_22,
175
- 0, 58, :_reduce_none,
176
- 1, 58, :_reduce_none,
177
- 1, 55, :_reduce_25,
178
- 1, 61, :_reduce_26,
179
- 1, 63, :_reduce_none,
180
- 1, 63, :_reduce_none,
181
- 1, 63, :_reduce_none,
182
- 1, 63, :_reduce_none,
183
- 1, 63, :_reduce_none,
184
- 1, 63, :_reduce_none,
185
- 3, 46, :_reduce_33,
186
- 0, 59, :_reduce_34,
187
- 1, 59, :_reduce_35,
188
- 3, 59, :_reduce_36,
189
- 3, 68, :_reduce_37,
161
+ 2, 44, :_reduce_3,
162
+ 1, 45, :_reduce_none,
163
+ 1, 45, :_reduce_none,
164
+ 1, 45, :_reduce_none,
165
+ 1, 45, :_reduce_none,
166
+ 1, 45, :_reduce_none,
167
+ 1, 45, :_reduce_none,
168
+ 1, 45, :_reduce_none,
169
+ 1, 45, :_reduce_none,
170
+ 1, 45, :_reduce_none,
171
+ 2, 50, :_reduce_13,
172
+ 2, 51, :_reduce_14,
173
+ 1, 55, :_reduce_none,
174
+ 3, 55, :_reduce_16,
175
+ 1, 56, :_reduce_none,
176
+ 1, 56, :_reduce_none,
177
+ 5, 46, :_reduce_19,
178
+ 5, 46, :_reduce_20,
179
+ 5, 46, :_reduce_21,
180
+ 4, 64, :_reduce_22,
181
+ 1, 59, :_reduce_none,
182
+ 3, 59, :_reduce_24,
183
+ 0, 60, :_reduce_none,
184
+ 1, 60, :_reduce_none,
185
+ 1, 57, :_reduce_27,
186
+ 1, 63, :_reduce_28,
187
+ 1, 65, :_reduce_none,
188
+ 1, 65, :_reduce_none,
189
+ 1, 65, :_reduce_none,
190
+ 1, 65, :_reduce_none,
191
+ 1, 65, :_reduce_none,
192
+ 1, 65, :_reduce_none,
193
+ 3, 47, :_reduce_35,
194
+ 0, 61, :_reduce_36,
195
+ 1, 61, :_reduce_37,
196
+ 3, 61, :_reduce_38,
197
+ 3, 70, :_reduce_39,
198
+ 1, 71, :_reduce_none,
199
+ 3, 71, :_reduce_41,
190
200
  1, 69, :_reduce_none,
191
- 3, 69, :_reduce_39,
192
- 1, 67, :_reduce_none,
193
- 1, 67, :_reduce_none,
194
- 1, 67, :_reduce_none,
195
- 1, 67, :_reduce_none,
196
- 1, 67, :_reduce_none,
197
- 1, 67, :_reduce_none,
198
- 1, 67, :_reduce_none,
199
- 1, 67, :_reduce_none,
200
- 1, 67, :_reduce_none,
201
- 1, 64, :_reduce_49,
202
- 1, 64, :_reduce_50,
203
- 1, 71, :_reduce_51,
204
- 4, 72, :_reduce_52,
205
- 5, 47, :_reduce_53,
206
- 1, 73, :_reduce_none,
207
- 2, 73, :_reduce_55,
208
- 5, 74, :_reduce_56,
209
- 4, 74, :_reduce_57,
201
+ 1, 69, :_reduce_none,
202
+ 1, 69, :_reduce_none,
203
+ 1, 69, :_reduce_none,
204
+ 1, 69, :_reduce_none,
205
+ 1, 69, :_reduce_none,
206
+ 1, 69, :_reduce_none,
207
+ 1, 69, :_reduce_none,
208
+ 1, 69, :_reduce_none,
209
+ 1, 66, :_reduce_51,
210
+ 1, 66, :_reduce_52,
211
+ 1, 73, :_reduce_53,
212
+ 4, 74, :_reduce_54,
213
+ 5, 48, :_reduce_55,
210
214
  1, 75, :_reduce_none,
211
- 3, 75, :_reduce_59,
212
- 3, 65, :_reduce_60,
215
+ 2, 75, :_reduce_57,
216
+ 5, 76, :_reduce_58,
217
+ 4, 76, :_reduce_59,
213
218
  1, 77, :_reduce_none,
214
- 3, 77, :_reduce_62,
219
+ 3, 77, :_reduce_61,
220
+ 3, 67, :_reduce_62,
215
221
  1, 79, :_reduce_none,
216
222
  3, 79, :_reduce_64,
217
- 3, 78, :_reduce_65,
218
- 1, 76, :_reduce_66,
219
- 1, 76, :_reduce_67,
220
- 1, 76, :_reduce_none,
221
- 1, 76, :_reduce_69,
222
- 1, 76, :_reduce_none,
223
- 2, 48, :_reduce_71,
224
- 6, 50, :_reduce_72,
225
- 5, 50, :_reduce_73,
226
- 6, 51, :_reduce_74,
227
- 5, 51, :_reduce_75,
228
- 6, 52, :_reduce_76,
229
- 5, 52, :_reduce_77,
230
- 1, 82, :_reduce_none,
231
- 2, 82, :_reduce_79,
232
- 0, 83, :_reduce_80,
233
- 1, 80, :_reduce_none,
234
- 3, 80, :_reduce_82,
235
- 3, 80, :_reduce_83,
236
- 1, 84, :_reduce_none,
237
- 3, 84, :_reduce_85,
238
- 3, 85, :_reduce_86,
239
- 1, 85, :_reduce_87,
240
223
  1, 81, :_reduce_none,
241
- 2, 81, :_reduce_89,
242
- 1, 56, :_reduce_90,
243
- 3, 66, :_reduce_91,
244
- 1, 70, :_reduce_none,
245
- 1, 70, :_reduce_none,
246
- 0, 60, :_reduce_none,
247
- 1, 60, :_reduce_95 ]
248
-
249
- racc_reduce_n = 96
250
-
251
- racc_shift_n = 157
224
+ 3, 81, :_reduce_66,
225
+ 3, 80, :_reduce_67,
226
+ 1, 78, :_reduce_68,
227
+ 1, 78, :_reduce_69,
228
+ 1, 78, :_reduce_none,
229
+ 1, 78, :_reduce_none,
230
+ 1, 78, :_reduce_72,
231
+ 1, 78, :_reduce_none,
232
+ 2, 49, :_reduce_74,
233
+ 6, 52, :_reduce_75,
234
+ 5, 52, :_reduce_76,
235
+ 6, 53, :_reduce_77,
236
+ 5, 53, :_reduce_78,
237
+ 6, 54, :_reduce_79,
238
+ 5, 54, :_reduce_80,
239
+ 1, 84, :_reduce_none,
240
+ 2, 84, :_reduce_82,
241
+ 1, 85, :_reduce_83,
242
+ 1, 85, :_reduce_84,
243
+ 0, 86, :_reduce_85,
244
+ 1, 82, :_reduce_none,
245
+ 3, 82, :_reduce_87,
246
+ 3, 82, :_reduce_88,
247
+ 1, 87, :_reduce_none,
248
+ 3, 87, :_reduce_90,
249
+ 3, 88, :_reduce_91,
250
+ 1, 88, :_reduce_92,
251
+ 1, 83, :_reduce_none,
252
+ 2, 83, :_reduce_94,
253
+ 1, 58, :_reduce_95,
254
+ 3, 68, :_reduce_96,
255
+ 1, 72, :_reduce_none,
256
+ 1, 72, :_reduce_none,
257
+ 0, 62, :_reduce_none,
258
+ 1, 62, :_reduce_100 ]
259
+
260
+ racc_reduce_n = 101
261
+
262
+ racc_shift_n = 166
252
263
 
253
264
  racc_action_table = [
254
- 24, 25, 24, 25, 132, 24, 25, 35, 24, 25,
255
- 127, 105, 35, 24, 25, 7, 126, 129, 24, 25,
256
- 7, 77, 67, 24, 25, 125, 23, 7, 131, 39,
257
- 84, 39, 94, 95, 94, 95, 97, 39, 97, 81,
258
- 94, 95, 39, 112, 97, 94, 95, 39, 113, 97,
259
- 94, 95, 39, 108, 97, 94, 95, 109, 110, 97,
260
- 33, 24, 25, 33, 24, 25, 69, 115, 116, 33,
261
- 24, 25, 78, 77, 33, 24, 25, 119, 73, 33,
262
- 24, 25, 149, 73, 109, 110, 35, 73, 124, 35,
263
- 39, 84, 83, 4, 7, 35, 4, 7, 128, 39,
264
- 35, 42, 4, 7, 39, 35, 69, 4, 7, 39,
265
- 68, 135, 4, 7, 33, 24, 25, 33, 24, 25,
266
- 7, 137, 65, 33, 24, 25, 50, 86, 33, 24,
267
- 25, 7, 88, 33, 24, 25, 7, 146, 43, 87,
268
- 35, 42, 41, 35, 39, 27, 86, 4, 7, 35,
269
- 4, 57, 138, 39, 35, 23, 4, 7, 39, 35,
270
- 86, 4, 7, 39, nil, nil, 4, 7, 156, nil,
271
- 6, 9, nil, 13, 16, nil, 20, nil, nil, nil,
272
- 4, 7, nil, 11, 153, 17, 6, 9, nil, 13,
273
- 16, nil, 20, nil, nil, nil, 4, 7, nil, 11,
274
- 140, 17, 6, 9, nil, 13, 16, nil, 20, nil,
275
- nil, nil, 4, 7, nil, 11, 122, 17, 6, 9,
276
- nil, 13, 16, nil, 20, nil, nil, nil, 4, 7,
277
- nil, 11, 152, 17, 6, 9, nil, 13, 16, nil,
278
- 20, nil, nil, nil, 4, 7, nil, 11, 151, 17,
279
- 6, 9, nil, 13, 16, nil, 20, nil, nil, nil,
280
- 4, 7, nil, 11, 143, 17, 6, 9, nil, 13,
281
- 16, nil, 20, nil, nil, nil, 4, 7, nil, 11,
282
- nil, 17, 6, 9, nil, 13, 16, nil, 20, nil,
283
- nil, nil, 4, 7, nil, 11, nil, 17, 6, 9,
284
- nil, 13, 16, nil, 20, nil, nil, nil, 4, 7,
285
- nil, 11, nil, 17, 6, 9, nil, 13, 16, nil,
286
- 20, nil, nil, nil, 4, 7, nil, 11, nil, 17 ]
265
+ 34, 28, 29, 143, 92, 34, 28, 29, 134, -68,
266
+ 34, 28, 29, 87, 133, 34, 28, 29, 102, 57,
267
+ 34, 28, 29, 86, 42, 84, 42, 142, 54, 57,
268
+ 47, 42, 7, 37, 41, 47, 42, 43, 37, 41,
269
+ 47, 42, 43, 37, 41, 47, 42, 43, 37, 41,
270
+ 47, 56, 43, 37, 66, 84, -73, 43, 34, 28,
271
+ 29, 56, 111, 34, 28, 29, 113, 114, 34, 28,
272
+ 29, 120, 80, 34, 28, 29, 26, 42, 34, 28,
273
+ 29, 121, 42, 97, 42, 7, 28, 29, 47, 42,
274
+ 7, 37, 41, 47, 42, 43, 37, 41, 47, 42,
275
+ 43, 37, 41, 47, 42, 43, 37, 41, 47, 92,
276
+ 43, 37, 41, 28, 29, 43, 110, 96, 28, 29,
277
+ 124, -68, -71, 28, 29, 127, 128, 87, 28, 29,
278
+ 7, 131, 132, 28, 29, 96, 81, 157, 42, 113,
279
+ 114, 137, 47, 42, 93, 105, 108, 47, 42, 43,
280
+ 105, 108, 47, 42, 43, 105, 108, 47, 42, 43,
281
+ 105, 108, 47, -69, 43, 105, 108, 28, 29, 43,
282
+ 141, 144, 77, -70, 6, 9, 74, 13, 15, 148,
283
+ 21, 60, 96, 147, 3, 7, -71, 11, 7, 16,
284
+ 19, 54, 42, -70, 91, 158, 47, 49, 48, 105,
285
+ 108, 6, 9, 43, 13, 15, 165, 21, 30, 87,
286
+ 26, 3, 7, 86, 11, nil, 16, 19, nil, nil,
287
+ nil, nil, nil, 150, 6, 9, nil, 13, 15, nil,
288
+ 21, nil, nil, nil, 3, 7, nil, 11, nil, 16,
289
+ 19, 6, 9, 164, 13, 15, nil, 21, nil, nil,
290
+ nil, 3, 7, nil, 11, nil, 16, 19, nil, nil,
291
+ 136, 6, 9, nil, 13, 15, nil, 21, nil, nil,
292
+ nil, 3, 7, nil, 11, nil, 16, 19, 6, 9,
293
+ 154, 13, 15, nil, 21, nil, nil, nil, 3, 7,
294
+ nil, 11, nil, 16, 19, nil, nil, 161, 6, 9,
295
+ nil, 13, 15, nil, 21, nil, nil, nil, 3, 7,
296
+ nil, 11, nil, 16, 19, 6, 9, 160, 13, 15,
297
+ nil, 21, nil, nil, nil, 3, 7, nil, 11, nil,
298
+ 16, 19, nil, nil, nil, 6, 9, nil, 13, 15,
299
+ nil, 21, nil, nil, nil, 3, 7, nil, 11, nil,
300
+ 16, 19, 6, 9, nil, 13, 15, nil, 21, nil,
301
+ nil, nil, 3, 7, nil, 11, nil, 16, 19 ]
287
302
 
288
303
  racc_action_check = [
289
- 68, 68, 148, 148, 101, 6, 6, 17, 69, 69,
290
- 91, 69, 78, 98, 98, 17, 91, 98, 132, 132,
291
- 78, 49, 29, 105, 105, 90, 29, 49, 101, 68,
292
- 73, 148, 68, 68, 148, 148, 68, 69, 148, 50,
293
- 69, 69, 98, 75, 69, 98, 98, 132, 77, 98,
294
- 132, 132, 105, 71, 132, 105, 105, 71, 71, 105,
295
- 135, 135, 135, 83, 83, 83, 54, 80, 82, 11,
296
- 11, 11, 46, 43, 84, 84, 84, 85, 86, 41,
297
- 41, 41, 134, 87, 134, 134, 135, 42, 89, 83,
298
- 135, 57, 56, 135, 135, 11, 83, 83, 93, 11,
299
- 84, 37, 11, 11, 84, 41, 31, 84, 84, 41,
300
- 30, 106, 41, 41, 67, 67, 67, 23, 23, 23,
301
- 65, 111, 27, 33, 33, 33, 21, 121, 107, 107,
302
- 107, 20, 64, 124, 124, 124, 127, 131, 16, 61,
303
- 67, 14, 13, 23, 67, 9, 58, 67, 67, 33,
304
- 23, 23, 112, 33, 107, 1, 33, 33, 107, 124,
305
- 74, 107, 107, 124, nil, nil, 124, 124, 154, nil,
306
- 112, 112, nil, 112, 112, nil, 112, nil, nil, nil,
307
- 112, 112, nil, 112, 146, 112, 154, 154, nil, 154,
308
- 154, nil, 154, nil, nil, nil, 154, 154, nil, 154,
309
- 115, 154, 146, 146, nil, 146, 146, nil, 146, nil,
310
- nil, nil, 146, 146, nil, 146, 88, 146, 115, 115,
311
- nil, 115, 115, nil, 115, nil, nil, nil, 115, 115,
312
- nil, 115, 141, 115, 88, 88, nil, 88, 88, nil,
313
- 88, nil, nil, nil, 88, 88, nil, 88, 139, 88,
314
- 141, 141, nil, 141, 141, nil, 141, nil, nil, nil,
315
- 141, 141, nil, 141, 123, 141, 139, 139, nil, 139,
316
- 139, nil, 139, nil, nil, nil, 139, 139, nil, 139,
317
- nil, 139, 123, 123, nil, 123, 123, nil, 123, nil,
318
- nil, nil, 123, 123, nil, 123, nil, 123, 22, 22,
319
- nil, 22, 22, nil, 22, nil, nil, nil, 22, 22,
320
- nil, 22, nil, 22, 0, 0, nil, 0, 0, nil,
321
- 0, nil, nil, nil, 0, 0, nil, 0, nil, 0 ]
304
+ 137, 137, 137, 116, 66, 48, 48, 48, 101, 66,
305
+ 80, 80, 80, 97, 101, 34, 34, 34, 75, 21,
306
+ 26, 26, 26, 50, 86, 49, 137, 116, 46, 58,
307
+ 137, 48, 86, 137, 137, 48, 80, 137, 48, 48,
308
+ 80, 34, 48, 80, 80, 34, 26, 80, 34, 34,
309
+ 26, 21, 34, 26, 26, 58, 44, 26, 11, 11,
310
+ 11, 58, 79, 92, 92, 92, 79, 79, 112, 112,
311
+ 112, 83, 38, 131, 131, 131, 38, 16, 93, 93,
312
+ 93, 84, 19, 73, 11, 16, 6, 6, 11, 92,
313
+ 19, 11, 11, 92, 112, 11, 92, 92, 112, 131,
314
+ 92, 112, 112, 131, 93, 112, 131, 131, 93, 87,
315
+ 131, 93, 93, 77, 77, 93, 77, 88, 110, 110,
316
+ 89, 41, 40, 143, 143, 94, 95, 96, 81, 81,
317
+ 74, 99, 100, 156, 156, 69, 39, 139, 77, 139,
318
+ 139, 104, 77, 110, 68, 77, 77, 110, 143, 77,
319
+ 110, 110, 143, 81, 110, 143, 143, 81, 156, 143,
320
+ 81, 81, 156, 37, 81, 156, 156, 118, 118, 156,
321
+ 115, 118, 32, 31, 1, 1, 30, 1, 1, 123,
322
+ 1, 24, 130, 120, 1, 1, 65, 1, 134, 1,
323
+ 1, 18, 118, 61, 60, 142, 118, 15, 13, 118,
324
+ 118, 120, 120, 118, 120, 120, 163, 120, 9, 54,
325
+ 4, 120, 120, 55, 120, nil, 120, 120, nil, nil,
326
+ nil, nil, nil, 124, 163, 163, nil, 163, 163, nil,
327
+ 163, nil, nil, nil, 163, 163, nil, 163, nil, 163,
328
+ 163, 124, 124, 158, 124, 124, nil, 124, nil, nil,
329
+ nil, 124, 124, nil, 124, nil, 124, 124, nil, nil,
330
+ 102, 158, 158, nil, 158, 158, nil, 158, nil, nil,
331
+ nil, 158, 158, nil, 158, nil, 158, 158, 102, 102,
332
+ 135, 102, 102, nil, 102, nil, nil, nil, 102, 102,
333
+ nil, 102, nil, 102, 102, nil, nil, 149, 135, 135,
334
+ nil, 135, 135, nil, 135, nil, nil, nil, 135, 135,
335
+ nil, 135, nil, 135, 135, 149, 149, 146, 149, 149,
336
+ nil, 149, nil, nil, nil, 149, 149, nil, 149, nil,
337
+ 149, 149, nil, nil, nil, 146, 146, nil, 146, 146,
338
+ nil, 146, nil, nil, nil, 146, 146, nil, 146, nil,
339
+ 146, 146, 0, 0, nil, 0, 0, nil, 0, nil,
340
+ nil, nil, 0, 0, nil, 0, nil, 0, 0 ]
322
341
 
323
342
  racc_action_pointer = [
324
- 289, 149, nil, nil, nil, nil, 2, nil, nil, 109,
325
- nil, 67, nil, 129, 135, nil, 102, -21, nil, nil,
326
- 95, 126, 273, 115, nil, nil, nil, 107, nil, 20,
327
- 104, 92, nil, 121, nil, nil, nil, 95, nil, nil,
328
- nil, 77, 51, 43, nil, nil, 62, nil, nil, -9,
329
- 39, nil, nil, nil, 52, nil, 55, 82, 136, nil,
330
- nil, 105, nil, nil, 126, 84, nil, 112, -3, 5,
331
- nil, 48, nil, 21, 150, 37, nil, 12, -16, nil,
332
- 61, nil, 61, 61, 72, 70, 42, 47, 209, 75,
333
- 9, 0, nil, 93, nil, nil, nil, nil, 10, nil,
334
- nil, -6, nil, nil, nil, 20, 102, 126, nil, nil,
335
- nil, 114, 145, nil, nil, 193, nil, nil, nil, nil,
336
- nil, 117, nil, 257, 131, nil, nil, 100, nil, nil,
337
- nil, 131, 15, nil, 75, 58, nil, nil, nil, 241,
338
- nil, 225, nil, nil, nil, nil, 177, nil, -1, nil,
339
- nil, nil, nil, nil, 161, nil, nil ]
343
+ 327, 149, nil, nil, 204, nil, 83, nil, nil, 172,
344
+ nil, 56, nil, 185, nil, 161, 49, nil, 185, 54,
345
+ nil, 15, nil, nil, 181, nil, 18, nil, nil, nil,
346
+ 161, 159, 158, nil, 13, nil, nil, 149, 70, 130,
347
+ 108, 107, nil, nil, 42, nil, 22, nil, 3, -5,
348
+ 13, nil, nil, nil, 173, 203, nil, nil, 25, nil,
349
+ 194, 179, nil, nil, nil, 172, -5, nil, 107, 125,
350
+ nil, nil, nil, 49, 94, 12, nil, 110, nil, 57,
351
+ 8, 125, nil, 65, 45, nil, -4, 100, 107, 114,
352
+ nil, nil, 61, 76, 118, 119, 91, -23, nil, 118,
353
+ 116, -2, 253, nil, 132, nil, nil, nil, nil, nil,
354
+ 115, nil, 66, nil, nil, 165, -7, nil, 164, nil,
355
+ 176, nil, nil, 172, 216, nil, nil, nil, nil, nil,
356
+ 172, 71, nil, nil, 152, 273, nil, -2, nil, 130,
357
+ nil, nil, 189, 120, nil, nil, 310, nil, nil, 290,
358
+ nil, nil, nil, nil, nil, nil, 130, nil, 236, nil,
359
+ nil, nil, nil, 199, nil, nil ]
340
360
 
341
361
  racc_action_default = [
342
- -96, -96, -2, -4, -26, -5, -96, -25, -6, -96,
343
- -7, -96, -8, -96, -96, -9, -96, -96, -10, -11,
344
- -96, -96, -1, -34, -49, -50, -71, -80, -47, -41,
345
- -96, -46, -45, -96, -43, -90, -48, -42, -40, -51,
346
- -44, -96, -34, -80, -15, -16, -12, -13, -78, -80,
347
- -96, -3, -32, -28, -31, -35, -23, -25, -94, -29,
348
- -21, -96, -27, -30, -96, -80, -81, -96, -96, -96,
349
- -38, -96, -33, -96, -94, -96, -88, -96, -96, -79,
350
- -96, 157, -96, -24, -96, -96, -95, -34, -96, -87,
351
- -96, -96, -84, -96, -67, -66, -70, -69, -96, -54,
352
- -68, -96, -58, -60, -61, -96, -96, -96, -91, -92,
353
- -93, -96, -96, -89, -14, -96, -17, -22, -37, -18,
354
- -36, -94, -73, -96, -96, -82, -83, -96, -52, -53,
355
- -55, -96, -96, -63, -96, -96, -39, -19, -75, -96,
356
- -77, -96, -20, -72, -86, -85, -96, -59, -96, -62,
357
- -65, -74, -76, -57, -96, -64, -56 ]
362
+ -101, -1, -2, -28, -101, -4, -101, -27, -5, -101,
363
+ -6, -101, -7, -101, -8, -101, -101, -9, -101, -101,
364
+ -10, -101, -11, -12, -101, -3, -36, -74, -51, -52,
365
+ -85, -42, -101, -46, -101, -49, -47, -28, -43, -101,
366
+ -48, -27, -95, -72, -45, -50, -44, -53, -101, -85,
367
+ -13, -15, -17, -18, -36, -14, -83, -84, -85, -81,
368
+ -101, -29, -32, -34, -30, -33, -27, -37, -25, -99,
369
+ -73, -31, -23, -101, -85, -101, -86, -101, -40, -101,
370
+ -101, -101, -35, -101, -101, -93, -101, -101, -99, -101,
371
+ -82, 166, -101, -26, -101, -101, -100, -36, -89, -92,
372
+ -101, -101, -101, -70, -101, -69, -62, -71, -68, -63,
373
+ -101, -96, -101, -97, -98, -101, -101, -60, -101, -56,
374
+ -101, -94, -16, -101, -101, -39, -24, -19, -20, -38,
375
+ -99, -101, -87, -88, -101, -101, -76, -101, -65, -101,
376
+ -41, -54, -101, -101, -55, -57, -101, -78, -21, -101,
377
+ -80, -22, -91, -90, -75, -67, -101, -64, -101, -61,
378
+ -77, -79, -66, -101, -59, -58 ]
358
379
 
359
380
  racc_goto_table = [
360
- 22, 26, 51, 107, 102, 58, 96, 96, 104, 32,
361
- 45, 37, 85, 47, 66, 92, 54, 99, 62, 63,
362
- 60, 52, 103, 59, 74, 56, 75, 82, 111, 30,
363
- 98, 32, 80, 37, 102, 46, 96, 134, 64, 32,
364
- 71, 37, 49, 96, 133, 120, 91, 130, 21, nil,
365
- nil, 70, 90, nil, nil, nil, nil, nil, nil, 72,
366
- nil, nil, nil, 100, 100, 32, 148, 37, 147, 121,
367
- 96, 45, nil, nil, 114, 142, 54, 145, 62, 63,
368
- 117, 52, 32, 59, 37, 93, 96, 155, 123, nil,
369
- nil, nil, nil, 100, nil, nil, nil, nil, nil, nil,
370
- 100, nil, 118, 51, nil, 32, nil, 37, nil, nil,
371
- nil, nil, 139, nil, 29, 141, nil, nil, nil, 51,
372
- 44, 51, 32, 48, 37, 136, 53, 100, nil, nil,
373
- nil, nil, nil, 32, 51, 37, 29, nil, nil, nil,
374
- nil, nil, 144, 100, 29, nil, 154, nil, nil, nil,
375
- nil, nil, 79, 150, nil, nil, nil, nil, nil, nil,
376
- nil, nil, nil, nil, nil, nil, nil, nil, 89, nil,
377
- 29, nil, nil, nil, nil, nil, nil, nil, nil, nil,
378
- nil, 44, nil, nil, nil, nil, 53, 29, nil, nil,
381
+ 25, 1, 27, 39, 95, 119, 53, 70, 69, 53,
382
+ 112, 62, 38, 109, 59, 129, 65, 52, 72, 63,
383
+ 52, 83, 61, 123, 76, 122, 78, 64, 98, 46,
384
+ 89, 50, 106, 118, 55, 38, 88, 139, 75, 68,
385
+ 82, 58, 145, 94, 71, 79, 138, 101, 24, 38,
386
+ nil, 90, 46, nil, nil, nil, nil, nil, 70, 36,
387
+ nil, nil, 70, nil, nil, 151, 46, 107, 100, nil,
388
+ 156, 107, 115, 103, 70, 99, 53, 103, 62, 130,
389
+ nil, 38, 36, 65, 125, 126, 63, 52, 153, 61,
390
+ nil, 70, 162, 38, 64, nil, 36, nil, 46, 70,
391
+ 107, nil, nil, 135, 140, nil, 103, nil, 107, nil,
392
+ 46, 71, nil, 38, 103, nil, nil, nil, nil, nil,
393
+ nil, 146, nil, 152, 70, 149, nil, nil, 36, 155,
394
+ 46, nil, 38, 107, 25, 99, nil, 70, 38, 103,
395
+ 36, nil, nil, 104, nil, 25, 107, 117, 25, 46,
396
+ nil, nil, 103, nil, nil, 46, nil, nil, nil, 163,
397
+ 36, nil, 25, nil, nil, nil, nil, nil, nil, nil,
398
+ nil, nil, nil, nil, nil, nil, 104, nil, nil, 36,
399
+ nil, nil, nil, nil, 117, 36, nil, nil, nil, nil,
379
400
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
401
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 159,
380
402
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
381
- 29, nil, nil, nil, nil, nil, nil, nil, nil, nil,
382
- nil, nil, nil, nil, nil, nil, nil, 29, nil, nil,
383
- 89, nil, nil, nil, nil, nil, nil, nil, 29 ]
403
+ nil, nil, 104 ]
384
404
 
385
405
  racc_goto_check = [
386
- 2, 23, 3, 29, 35, 18, 30, 30, 37, 4,
387
- 15, 20, 19, 13, 42, 44, 15, 33, 23, 24,
388
- 21, 25, 36, 20, 18, 16, 40, 17, 19, 26,
389
- 32, 4, 40, 20, 35, 12, 30, 38, 39, 4,
390
- 28, 20, 41, 30, 37, 27, 43, 33, 1, nil,
391
- nil, 26, 42, nil, nil, nil, nil, nil, nil, 26,
392
- nil, nil, nil, 23, 23, 4, 29, 20, 35, 18,
393
- 30, 15, nil, nil, 13, 19, 15, 44, 23, 24,
394
- 21, 25, 4, 20, 20, 26, 30, 37, 2, nil,
395
- nil, nil, nil, 23, nil, nil, nil, nil, nil, nil,
396
- 23, nil, 26, 3, nil, 4, nil, 20, nil, nil,
397
- nil, nil, 2, nil, 14, 2, nil, nil, nil, 3,
398
- 14, 3, 4, 14, 20, 26, 14, 23, nil, nil,
399
- nil, nil, nil, 4, 3, 20, 14, nil, nil, nil,
400
- nil, nil, 26, 23, 14, nil, 2, nil, nil, nil,
401
- nil, nil, 14, 26, nil, nil, nil, nil, nil, nil,
402
- nil, nil, nil, nil, nil, nil, nil, nil, 14, nil,
403
- 14, nil, nil, nil, nil, nil, nil, nil, nil, nil,
404
- nil, 14, nil, nil, nil, nil, 14, 14, nil, nil,
406
+ 3, 2, 24, 27, 20, 34, 16, 31, 19, 16,
407
+ 30, 25, 15, 38, 43, 28, 16, 15, 22, 26,
408
+ 15, 41, 24, 20, 44, 14, 27, 15, 46, 21,
409
+ 41, 13, 37, 33, 13, 15, 19, 39, 40, 17,
410
+ 27, 42, 34, 18, 21, 29, 38, 45, 1, 15,
411
+ nil, 43, 21, nil, nil, nil, nil, nil, 31, 4,
412
+ nil, nil, 31, nil, nil, 20, 21, 16, 44, nil,
413
+ 30, 16, 27, 24, 31, 15, 16, 24, 25, 19,
414
+ nil, 15, 4, 16, 27, 22, 26, 15, 46, 24,
415
+ nil, 31, 38, 15, 15, nil, 4, nil, 21, 31,
416
+ 16, nil, nil, 2, 27, nil, 24, nil, 16, nil,
417
+ 21, 21, nil, 15, 24, nil, nil, nil, nil, nil,
418
+ nil, 2, nil, 27, 31, 2, nil, nil, 4, 27,
419
+ 21, nil, 15, 16, 3, 15, nil, 31, 15, 24,
420
+ 4, nil, nil, 36, nil, 3, 16, 36, 3, 21,
421
+ nil, nil, 24, nil, nil, 21, nil, nil, nil, 2,
422
+ 4, nil, 3, nil, nil, nil, nil, nil, nil, nil,
423
+ nil, nil, nil, nil, nil, nil, 36, nil, nil, 4,
424
+ nil, nil, nil, nil, 36, 4, nil, nil, nil, nil,
405
425
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
426
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 36,
406
427
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
407
- 14, nil, nil, nil, nil, nil, nil, nil, nil, nil,
408
- nil, nil, nil, nil, nil, nil, nil, 14, nil, nil,
409
- 14, nil, nil, nil, nil, nil, nil, nil, 14 ]
428
+ nil, nil, 36 ]
410
429
 
411
430
  racc_goto_pointer = [
412
- nil, 48, 0, -20, -2, nil, nil, nil, nil, nil,
413
- nil, nil, 18, -4, 103, -7, 2, -29, -18, -46,
414
- 0, -3, nil, -5, -4, -2, 18, -41, 7, -68,
415
- -62, nil, -38, -51, nil, -64, -47, -61, -68, 11,
416
- -17, 22, -13, -19, -50 ]
431
+ nil, 48, 1, -1, 48, nil, nil, nil, nil, nil,
432
+ nil, nil, nil, 15, -61, 1, -10, 13, -25, -18,
433
+ -65, 18, -8, nil, -4, -15, -7, -8, -81, 11,
434
+ -69, -19, nil, -48, -76, nil, 66, -45, -64, -73,
435
+ 8, -28, 20, -7, -6, -27, -46 ]
417
436
 
418
437
  racc_goto_default = [
419
- nil, nil, nil, 2, 3, 5, 8, 10, 12, 15,
420
- 18, 19, nil, nil, 1, 31, nil, nil, nil, nil,
421
- 14, nil, 61, 38, 40, 28, nil, 55, nil, nil,
422
- 34, 36, nil, nil, 101, 106, nil, nil, nil, nil,
423
- nil, nil, 76, nil, nil ]
438
+ nil, nil, nil, 2, 5, 8, 10, 12, 14, 17,
439
+ 20, 22, 23, nil, 51, 4, 40, nil, nil, nil,
440
+ nil, 18, nil, 73, 31, 33, 35, nil, 67, nil,
441
+ nil, 44, 45, nil, nil, 116, 32, nil, nil, nil,
442
+ nil, nil, nil, nil, 85, nil, nil ]
424
443
 
425
444
  racc_token_table = {
426
445
  false => 0,
@@ -463,11 +482,12 @@ racc_token_table = {
463
482
  :SEMIC => 37,
464
483
  :CASE => 38,
465
484
  :DEFAULT => 39,
466
- :INCLUDE => 40 }
485
+ :INCLUDE => 40,
486
+ :TAG => 41 }
467
487
 
468
488
  racc_use_result_var = true
469
489
 
470
- racc_nt_base = 41
490
+ racc_nt_base = 42
471
491
 
472
492
  Racc_arg = [
473
493
  racc_action_table,
@@ -527,6 +547,7 @@ Racc_token_to_s_table = [
527
547
  'CASE',
528
548
  'DEFAULT',
529
549
  'INCLUDE',
550
+ 'TAG',
530
551
  '$start',
531
552
  'program',
532
553
  'statements',
@@ -536,6 +557,7 @@ Racc_token_to_s_table = [
536
557
  'casestatement',
537
558
  'import',
538
559
  'include',
560
+ 'tag',
539
561
  'definition',
540
562
  'hostclass',
541
563
  'nodedef',
@@ -568,7 +590,8 @@ Racc_token_to_s_table = [
568
590
  'sintvalues',
569
591
  'argumentlist',
570
592
  'parent',
571
- 'names',
593
+ 'hostnames',
594
+ 'hostname',
572
595
  'nothing',
573
596
  'arguments',
574
597
  'argument']
@@ -579,7 +602,7 @@ Racc_debug_parser = false
579
602
 
580
603
  # reduce 0 omitted
581
604
 
582
- module_eval <<'.,.,', 'grammar.ra', 37
605
+ module_eval <<'.,.,', 'grammar.ra', 40
583
606
  def _reduce_1( val, _values, result )
584
607
  if val[0].is_a?(AST::ASTArray)
585
608
  result = val[0]
@@ -610,7 +633,7 @@ module_eval <<'.,.,', 'grammar.ra', 37
610
633
 
611
634
  # reduce 2 omitted
612
635
 
613
- module_eval <<'.,.,', 'grammar.ra', 51
636
+ module_eval <<'.,.,', 'grammar.ra', 54
614
637
  def _reduce_3( val, _values, result )
615
638
  if val[0].instance_of?(AST::ASTArray)
616
639
  val[0].push(val[1])
@@ -642,8 +665,10 @@ module_eval <<'.,.,', 'grammar.ra', 51
642
665
 
643
666
  # reduce 11 omitted
644
667
 
645
- module_eval <<'.,.,', 'grammar.ra', 88
646
- def _reduce_12( val, _values, result )
668
+ # reduce 12 omitted
669
+
670
+ module_eval <<'.,.,', 'grammar.ra', 92
671
+ def _reduce_13( val, _values, result )
647
672
  classnames = aryfy(val[1])
648
673
 
649
674
  klasses = []
@@ -670,10 +695,23 @@ module_eval <<'.,.,', 'grammar.ra', 88
670
695
  end
671
696
  .,.,
672
697
 
673
- # reduce 13 omitted
674
-
675
- module_eval <<'.,.,', 'grammar.ra', 95
698
+ module_eval <<'.,.,', 'grammar.ra', 102
676
699
  def _reduce_14( val, _values, result )
700
+ classnames = aryfy(val[1])
701
+
702
+ result = AST::Tag.new(
703
+ :line => @lexer.line,
704
+ :file => @lexer.file,
705
+ :type => val[1]
706
+ )
707
+ result
708
+ end
709
+ .,.,
710
+
711
+ # reduce 15 omitted
712
+
713
+ module_eval <<'.,.,', 'grammar.ra', 109
714
+ def _reduce_16( val, _values, result )
677
715
  result = aryfy(val[0], val[2])
678
716
  result.line = @lexer.line
679
717
  result.file = @lexer.file
@@ -681,12 +719,12 @@ module_eval <<'.,.,', 'grammar.ra', 95
681
719
  end
682
720
  .,.,
683
721
 
684
- # reduce 15 omitted
722
+ # reduce 17 omitted
685
723
 
686
- # reduce 16 omitted
724
+ # reduce 18 omitted
687
725
 
688
- module_eval <<'.,.,', 'grammar.ra', 129
689
- def _reduce_17( val, _values, result )
726
+ module_eval <<'.,.,', 'grammar.ra', 143
727
+ def _reduce_19( val, _values, result )
690
728
  if val[0].instance_of?(AST::ASTArray)
691
729
  raise Puppet::ParseError, "Invalid name"
692
730
  end
@@ -718,8 +756,8 @@ module_eval <<'.,.,', 'grammar.ra', 129
718
756
  end
719
757
  .,.,
720
758
 
721
- module_eval <<'.,.,', 'grammar.ra', 143
722
- def _reduce_18( val, _values, result )
759
+ module_eval <<'.,.,', 'grammar.ra', 157
760
+ def _reduce_20( val, _values, result )
723
761
  if val[0].instance_of?(AST::ASTArray)
724
762
  Puppet.notice "invalid name"
725
763
  raise Puppet::ParseError, "Invalid name"
@@ -737,8 +775,8 @@ module_eval <<'.,.,', 'grammar.ra', 143
737
775
  end
738
776
  .,.,
739
777
 
740
- module_eval <<'.,.,', 'grammar.ra', 155
741
- def _reduce_19( val, _values, result )
778
+ module_eval <<'.,.,', 'grammar.ra', 169
779
+ def _reduce_21( val, _values, result )
742
780
  # a template setting for a type
743
781
  if val[0].instance_of?(AST::ASTArray)
744
782
  raise Puppet::ParseError, "Invalid type"
@@ -754,8 +792,8 @@ module_eval <<'.,.,', 'grammar.ra', 155
754
792
  end
755
793
  .,.,
756
794
 
757
- module_eval <<'.,.,', 'grammar.ra', 163
758
- def _reduce_20( val, _values, result )
795
+ module_eval <<'.,.,', 'grammar.ra', 177
796
+ def _reduce_22( val, _values, result )
759
797
  result = AST::ObjectInst.new(
760
798
  :line => @lexer.line,
761
799
  :file => @lexer.file,
@@ -765,10 +803,10 @@ module_eval <<'.,.,', 'grammar.ra', 163
765
803
  end
766
804
  .,.,
767
805
 
768
- # reduce 21 omitted
806
+ # reduce 23 omitted
769
807
 
770
- module_eval <<'.,.,', 'grammar.ra', 177
771
- def _reduce_22( val, _values, result )
808
+ module_eval <<'.,.,', 'grammar.ra', 191
809
+ def _reduce_24( val, _values, result )
772
810
  if val[0].instance_of?(AST::ObjectInst)
773
811
  result = AST::ASTArray.new(
774
812
  :line => @lexer.line,
@@ -783,12 +821,12 @@ module_eval <<'.,.,', 'grammar.ra', 177
783
821
  end
784
822
  .,.,
785
823
 
786
- # reduce 23 omitted
824
+ # reduce 25 omitted
787
825
 
788
- # reduce 24 omitted
826
+ # reduce 26 omitted
789
827
 
790
- module_eval <<'.,.,', 'grammar.ra', 188
791
- def _reduce_25( val, _values, result )
828
+ module_eval <<'.,.,', 'grammar.ra', 202
829
+ def _reduce_27( val, _values, result )
792
830
  result = AST::Name.new(
793
831
  :line => @lexer.line,
794
832
  :file => @lexer.file,
@@ -798,8 +836,8 @@ module_eval <<'.,.,', 'grammar.ra', 188
798
836
  end
799
837
  .,.,
800
838
 
801
- module_eval <<'.,.,', 'grammar.ra', 196
802
- def _reduce_26( val, _values, result )
839
+ module_eval <<'.,.,', 'grammar.ra', 210
840
+ def _reduce_28( val, _values, result )
803
841
  result = AST::Type.new(
804
842
  :line => @lexer.line,
805
843
  :file => @lexer.file,
@@ -809,10 +847,6 @@ module_eval <<'.,.,', 'grammar.ra', 196
809
847
  end
810
848
  .,.,
811
849
 
812
- # reduce 27 omitted
813
-
814
- # reduce 28 omitted
815
-
816
850
  # reduce 29 omitted
817
851
 
818
852
  # reduce 30 omitted
@@ -821,8 +855,12 @@ module_eval <<'.,.,', 'grammar.ra', 196
821
855
 
822
856
  # reduce 32 omitted
823
857
 
824
- module_eval <<'.,.,', 'grammar.ra', 219
825
- def _reduce_33( val, _values, result )
858
+ # reduce 33 omitted
859
+
860
+ # reduce 34 omitted
861
+
862
+ module_eval <<'.,.,', 'grammar.ra', 233
863
+ def _reduce_35( val, _values, result )
826
864
  # this is distinct from referencing a variable
827
865
  variable = AST::Name.new(
828
866
  :line => @lexer.line,
@@ -840,8 +878,8 @@ module_eval <<'.,.,', 'grammar.ra', 219
840
878
  end
841
879
  .,.,
842
880
 
843
- module_eval <<'.,.,', 'grammar.ra', 228
844
- def _reduce_34( val, _values, result )
881
+ module_eval <<'.,.,', 'grammar.ra', 242
882
+ def _reduce_36( val, _values, result )
845
883
  result = AST::ASTArray.new(
846
884
  :line => @lexer.line,
847
885
  :file => @lexer.file,
@@ -851,15 +889,15 @@ module_eval <<'.,.,', 'grammar.ra', 228
851
889
  end
852
890
  .,.,
853
891
 
854
- module_eval <<'.,.,', 'grammar.ra', 228
855
- def _reduce_35( val, _values, result )
892
+ module_eval <<'.,.,', 'grammar.ra', 242
893
+ def _reduce_37( val, _values, result )
856
894
  result = val[0]
857
895
  result
858
896
  end
859
897
  .,.,
860
898
 
861
- module_eval <<'.,.,', 'grammar.ra', 241
862
- def _reduce_36( val, _values, result )
899
+ module_eval <<'.,.,', 'grammar.ra', 255
900
+ def _reduce_38( val, _values, result )
863
901
  if val[0].instance_of?(AST::ASTArray)
864
902
  val[0].push(val[2])
865
903
  result = val[0]
@@ -874,8 +912,8 @@ module_eval <<'.,.,', 'grammar.ra', 241
874
912
  end
875
913
  .,.,
876
914
 
877
- module_eval <<'.,.,', 'grammar.ra', 256
878
- def _reduce_37( val, _values, result )
915
+ module_eval <<'.,.,', 'grammar.ra', 270
916
+ def _reduce_39( val, _values, result )
879
917
  leaf = AST::String.new(
880
918
  :line => @lexer.line,
881
919
  :file => @lexer.file,
@@ -892,10 +930,10 @@ module_eval <<'.,.,', 'grammar.ra', 256
892
930
  end
893
931
  .,.,
894
932
 
895
- # reduce 38 omitted
933
+ # reduce 40 omitted
896
934
 
897
- module_eval <<'.,.,', 'grammar.ra', 269
898
- def _reduce_39( val, _values, result )
935
+ module_eval <<'.,.,', 'grammar.ra', 283
936
+ def _reduce_41( val, _values, result )
899
937
  if val[0].instance_of?(AST::ASTArray)
900
938
  result = val[0].push(val[2])
901
939
  else
@@ -909,10 +947,6 @@ module_eval <<'.,.,', 'grammar.ra', 269
909
947
  end
910
948
  .,.,
911
949
 
912
- # reduce 40 omitted
913
-
914
- # reduce 41 omitted
915
-
916
950
  # reduce 42 omitted
917
951
 
918
952
  # reduce 43 omitted
@@ -927,8 +961,12 @@ module_eval <<'.,.,', 'grammar.ra', 269
927
961
 
928
962
  # reduce 48 omitted
929
963
 
930
- module_eval <<'.,.,', 'grammar.ra', 287
931
- def _reduce_49( val, _values, result )
964
+ # reduce 49 omitted
965
+
966
+ # reduce 50 omitted
967
+
968
+ module_eval <<'.,.,', 'grammar.ra', 301
969
+ def _reduce_51( val, _values, result )
932
970
  result = AST::String.new(
933
971
  :line => @lexer.line,
934
972
  :file => @lexer.file,
@@ -938,8 +976,8 @@ module_eval <<'.,.,', 'grammar.ra', 287
938
976
  end
939
977
  .,.,
940
978
 
941
- module_eval <<'.,.,', 'grammar.ra', 293
942
- def _reduce_50( val, _values, result )
979
+ module_eval <<'.,.,', 'grammar.ra', 307
980
+ def _reduce_52( val, _values, result )
943
981
  result = AST::FlatString.new(
944
982
  :line => @lexer.line,
945
983
  :file => @lexer.file,
@@ -949,8 +987,8 @@ module_eval <<'.,.,', 'grammar.ra', 293
949
987
  end
950
988
  .,.,
951
989
 
952
- module_eval <<'.,.,', 'grammar.ra', 301
953
- def _reduce_51( val, _values, result )
990
+ module_eval <<'.,.,', 'grammar.ra', 315
991
+ def _reduce_53( val, _values, result )
954
992
  result = AST::Boolean.new(
955
993
  :line => @lexer.line,
956
994
  :file => @lexer.file,
@@ -960,8 +998,8 @@ module_eval <<'.,.,', 'grammar.ra', 301
960
998
  end
961
999
  .,.,
962
1000
 
963
- module_eval <<'.,.,', 'grammar.ra', 311
964
- def _reduce_52( val, _values, result )
1001
+ module_eval <<'.,.,', 'grammar.ra', 325
1002
+ def _reduce_54( val, _values, result )
965
1003
  result = AST::ObjectRef.new(
966
1004
  :pin => '[]',
967
1005
  :line => @lexer.line,
@@ -973,8 +1011,8 @@ module_eval <<'.,.,', 'grammar.ra', 311
973
1011
  end
974
1012
  .,.,
975
1013
 
976
- module_eval <<'.,.,', 'grammar.ra', 328
977
- def _reduce_53( val, _values, result )
1014
+ module_eval <<'.,.,', 'grammar.ra', 342
1015
+ def _reduce_55( val, _values, result )
978
1016
  options = val[3]
979
1017
  unless options.instance_of?(AST::ASTArray)
980
1018
  options = AST::ASTArray.new(
@@ -993,10 +1031,10 @@ module_eval <<'.,.,', 'grammar.ra', 328
993
1031
  end
994
1032
  .,.,
995
1033
 
996
- # reduce 54 omitted
1034
+ # reduce 56 omitted
997
1035
 
998
- module_eval <<'.,.,', 'grammar.ra', 342
999
- def _reduce_55( val, _values, result )
1036
+ module_eval <<'.,.,', 'grammar.ra', 356
1037
+ def _reduce_57( val, _values, result )
1000
1038
  if val[0].instance_of?(AST::ASTArray)
1001
1039
  val[0].push val[1]
1002
1040
  result = val[0]
@@ -1011,8 +1049,8 @@ module_eval <<'.,.,', 'grammar.ra', 342
1011
1049
  end
1012
1050
  .,.,
1013
1051
 
1014
- module_eval <<'.,.,', 'grammar.ra', 352
1015
- def _reduce_56( val, _values, result )
1052
+ module_eval <<'.,.,', 'grammar.ra', 366
1053
+ def _reduce_58( val, _values, result )
1016
1054
  result = AST::CaseOpt.new(
1017
1055
  :pin => ":",
1018
1056
  :value => val[0],
@@ -1024,8 +1062,8 @@ module_eval <<'.,.,', 'grammar.ra', 352
1024
1062
  end
1025
1063
  .,.,
1026
1064
 
1027
- module_eval <<'.,.,', 'grammar.ra', 364
1028
- def _reduce_57( val, _values, result )
1065
+ module_eval <<'.,.,', 'grammar.ra', 378
1066
+ def _reduce_59( val, _values, result )
1029
1067
  result = AST::CaseOpt.new(
1030
1068
  :pin => ":",
1031
1069
  :value => val[0],
@@ -1041,10 +1079,10 @@ module_eval <<'.,.,', 'grammar.ra', 364
1041
1079
  end
1042
1080
  .,.,
1043
1081
 
1044
- # reduce 58 omitted
1082
+ # reduce 60 omitted
1045
1083
 
1046
- module_eval <<'.,.,', 'grammar.ra', 378
1047
- def _reduce_59( val, _values, result )
1084
+ module_eval <<'.,.,', 'grammar.ra', 392
1085
+ def _reduce_61( val, _values, result )
1048
1086
  if val[0].instance_of?(AST::ASTArray)
1049
1087
  val[0].push(val[2])
1050
1088
  result = val[0]
@@ -1059,8 +1097,8 @@ module_eval <<'.,.,', 'grammar.ra', 378
1059
1097
  end
1060
1098
  .,.,
1061
1099
 
1062
- module_eval <<'.,.,', 'grammar.ra', 388
1063
- def _reduce_60( val, _values, result )
1100
+ module_eval <<'.,.,', 'grammar.ra', 402
1101
+ def _reduce_62( val, _values, result )
1064
1102
  result = AST::Selector.new(
1065
1103
  :pin => "?",
1066
1104
  :line => @lexer.line,
@@ -1072,19 +1110,19 @@ module_eval <<'.,.,', 'grammar.ra', 388
1072
1110
  end
1073
1111
  .,.,
1074
1112
 
1075
- # reduce 61 omitted
1113
+ # reduce 63 omitted
1076
1114
 
1077
- module_eval <<'.,.,', 'grammar.ra', 390
1078
- def _reduce_62( val, _values, result )
1115
+ module_eval <<'.,.,', 'grammar.ra', 404
1116
+ def _reduce_64( val, _values, result )
1079
1117
  result = val[1]
1080
1118
  result
1081
1119
  end
1082
1120
  .,.,
1083
1121
 
1084
- # reduce 63 omitted
1122
+ # reduce 65 omitted
1085
1123
 
1086
- module_eval <<'.,.,', 'grammar.ra', 405
1087
- def _reduce_64( val, _values, result )
1124
+ module_eval <<'.,.,', 'grammar.ra', 419
1125
+ def _reduce_66( val, _values, result )
1088
1126
  if val[0].instance_of?(AST::ASTArray)
1089
1127
  val[0].push(val[2])
1090
1128
  result = val[0]
@@ -1099,8 +1137,8 @@ module_eval <<'.,.,', 'grammar.ra', 405
1099
1137
  end
1100
1138
  .,.,
1101
1139
 
1102
- module_eval <<'.,.,', 'grammar.ra', 415
1103
- def _reduce_65( val, _values, result )
1140
+ module_eval <<'.,.,', 'grammar.ra', 429
1141
+ def _reduce_67( val, _values, result )
1104
1142
  result = AST::ObjectParam.new(
1105
1143
  :pin => "=>",
1106
1144
  :line => @lexer.line,
@@ -1112,8 +1150,8 @@ module_eval <<'.,.,', 'grammar.ra', 415
1112
1150
  end
1113
1151
  .,.,
1114
1152
 
1115
- module_eval <<'.,.,', 'grammar.ra', 423
1116
- def _reduce_66( val, _values, result )
1153
+ module_eval <<'.,.,', 'grammar.ra', 437
1154
+ def _reduce_68( val, _values, result )
1117
1155
  result = AST::String.new(
1118
1156
  :line => @lexer.line,
1119
1157
  :file => @lexer.file,
@@ -1123,8 +1161,8 @@ module_eval <<'.,.,', 'grammar.ra', 423
1123
1161
  end
1124
1162
  .,.,
1125
1163
 
1126
- module_eval <<'.,.,', 'grammar.ra', 430
1127
- def _reduce_67( val, _values, result )
1164
+ module_eval <<'.,.,', 'grammar.ra', 444
1165
+ def _reduce_69( val, _values, result )
1128
1166
  result = AST::String.new(
1129
1167
  :line => @lexer.line,
1130
1168
  :file => @lexer.file,
@@ -1134,10 +1172,12 @@ module_eval <<'.,.,', 'grammar.ra', 430
1134
1172
  end
1135
1173
  .,.,
1136
1174
 
1137
- # reduce 68 omitted
1175
+ # reduce 70 omitted
1138
1176
 
1139
- module_eval <<'.,.,', 'grammar.ra', 438
1140
- def _reduce_69( val, _values, result )
1177
+ # reduce 71 omitted
1178
+
1179
+ module_eval <<'.,.,', 'grammar.ra', 453
1180
+ def _reduce_72( val, _values, result )
1141
1181
  result = AST::Default.new(
1142
1182
  :line => @lexer.line,
1143
1183
  :file => @lexer.file,
@@ -1147,10 +1187,10 @@ module_eval <<'.,.,', 'grammar.ra', 438
1147
1187
  end
1148
1188
  .,.,
1149
1189
 
1150
- # reduce 70 omitted
1190
+ # reduce 73 omitted
1151
1191
 
1152
- module_eval <<'.,.,', 'grammar.ra', 491
1153
- def _reduce_71( val, _values, result )
1192
+ module_eval <<'.,.,', 'grammar.ra', 506
1193
+ def _reduce_74( val, _values, result )
1154
1194
  # importing files
1155
1195
  # yuk, i hate keywords
1156
1196
  # we'll probably have to have some kind of search path eventually
@@ -1204,8 +1244,8 @@ module_eval <<'.,.,', 'grammar.ra', 491
1204
1244
  end
1205
1245
  .,.,
1206
1246
 
1207
- module_eval <<'.,.,', 'grammar.ra', 502
1208
- def _reduce_72( val, _values, result )
1247
+ module_eval <<'.,.,', 'grammar.ra', 517
1248
+ def _reduce_75( val, _values, result )
1209
1249
  result = AST::CompDef.new(
1210
1250
  :type => AST::Name.new(:value => val[1], :line => @lexer.line),
1211
1251
  :args => val[2],
@@ -1218,8 +1258,8 @@ module_eval <<'.,.,', 'grammar.ra', 502
1218
1258
  end
1219
1259
  .,.,
1220
1260
 
1221
- module_eval <<'.,.,', 'grammar.ra', 515
1222
- def _reduce_73( val, _values, result )
1261
+ module_eval <<'.,.,', 'grammar.ra', 530
1262
+ def _reduce_76( val, _values, result )
1223
1263
  result = AST::CompDef.new(
1224
1264
  :type => AST::Name.new(:value => val[1], :line => @lexer.line),
1225
1265
  :args => val[2],
@@ -1236,8 +1276,8 @@ module_eval <<'.,.,', 'grammar.ra', 515
1236
1276
  end
1237
1277
  .,.,
1238
1278
 
1239
- module_eval <<'.,.,', 'grammar.ra', 532
1240
- def _reduce_74( val, _values, result )
1279
+ module_eval <<'.,.,', 'grammar.ra', 547
1280
+ def _reduce_77( val, _values, result )
1241
1281
  #:args => val[2],
1242
1282
  args = {
1243
1283
  :type => AST::Name.new(:value => val[1], :line => @lexer.line),
@@ -1255,8 +1295,8 @@ module_eval <<'.,.,', 'grammar.ra', 532
1255
1295
  end
1256
1296
  .,.,
1257
1297
 
1258
- module_eval <<'.,.,', 'grammar.ra', 549
1259
- def _reduce_75( val, _values, result )
1298
+ module_eval <<'.,.,', 'grammar.ra', 564
1299
+ def _reduce_78( val, _values, result )
1260
1300
  args = {
1261
1301
  :type => AST::Name.new(:value => val[1], :line => @lexer.line),
1262
1302
  :file => @lexer.file,
@@ -1277,8 +1317,8 @@ module_eval <<'.,.,', 'grammar.ra', 549
1277
1317
  end
1278
1318
  .,.,
1279
1319
 
1280
- module_eval <<'.,.,', 'grammar.ra', 570
1281
- def _reduce_76( val, _values, result )
1320
+ module_eval <<'.,.,', 'grammar.ra', 585
1321
+ def _reduce_79( val, _values, result )
1282
1322
  unless val[1].instance_of?(AST::ASTArray)
1283
1323
  val[1] = AST::ASTArray.new(
1284
1324
  :line => val[1].line,
@@ -1301,8 +1341,8 @@ module_eval <<'.,.,', 'grammar.ra', 570
1301
1341
  end
1302
1342
  .,.,
1303
1343
 
1304
- module_eval <<'.,.,', 'grammar.ra', 593
1305
- def _reduce_77( val, _values, result )
1344
+ module_eval <<'.,.,', 'grammar.ra', 608
1345
+ def _reduce_80( val, _values, result )
1306
1346
  unless val[1].instance_of?(AST::ASTArray)
1307
1347
  val[1] = AST::ASTArray.new(
1308
1348
  :line => val[1].line,
@@ -1329,10 +1369,10 @@ module_eval <<'.,.,', 'grammar.ra', 593
1329
1369
  end
1330
1370
  .,.,
1331
1371
 
1332
- # reduce 78 omitted
1372
+ # reduce 81 omitted
1333
1373
 
1334
- module_eval <<'.,.,', 'grammar.ra', 607
1335
- def _reduce_79( val, _values, result )
1374
+ module_eval <<'.,.,', 'grammar.ra', 622
1375
+ def _reduce_82( val, _values, result )
1336
1376
  if val[0].instance_of?(AST::ASTArray)
1337
1377
  result = val[0]
1338
1378
  result.push val[1]
@@ -1347,8 +1387,30 @@ module_eval <<'.,.,', 'grammar.ra', 607
1347
1387
  end
1348
1388
  .,.,
1349
1389
 
1350
- module_eval <<'.,.,', 'grammar.ra', 615
1351
- def _reduce_80( val, _values, result )
1390
+ module_eval <<'.,.,', 'grammar.ra', 630
1391
+ def _reduce_83( val, _values, result )
1392
+ result = AST::HostName.new(
1393
+ :line => @lexer.line,
1394
+ :file => @lexer.file,
1395
+ :value => val[0]
1396
+ )
1397
+ result
1398
+ end
1399
+ .,.,
1400
+
1401
+ module_eval <<'.,.,', 'grammar.ra', 636
1402
+ def _reduce_84( val, _values, result )
1403
+ result = AST::HostName.new(
1404
+ :line => @lexer.line,
1405
+ :file => @lexer.file,
1406
+ :value => val[0]
1407
+ )
1408
+ result
1409
+ end
1410
+ .,.,
1411
+
1412
+ module_eval <<'.,.,', 'grammar.ra', 644
1413
+ def _reduce_85( val, _values, result )
1352
1414
  result = AST::ASTArray.new(
1353
1415
  :line => @lexer.line,
1354
1416
  :file => @lexer.file,
@@ -1358,17 +1420,17 @@ module_eval <<'.,.,', 'grammar.ra', 615
1358
1420
  end
1359
1421
  .,.,
1360
1422
 
1361
- # reduce 81 omitted
1423
+ # reduce 86 omitted
1362
1424
 
1363
- module_eval <<'.,.,', 'grammar.ra', 620
1364
- def _reduce_82( val, _values, result )
1425
+ module_eval <<'.,.,', 'grammar.ra', 649
1426
+ def _reduce_87( val, _values, result )
1365
1427
  result = val[1]
1366
1428
  result
1367
1429
  end
1368
1430
  .,.,
1369
1431
 
1370
- module_eval <<'.,.,', 'grammar.ra', 631
1371
- def _reduce_83( val, _values, result )
1432
+ module_eval <<'.,.,', 'grammar.ra', 660
1433
+ def _reduce_88( val, _values, result )
1372
1434
  if val[1].instance_of?(AST::ASTArray)
1373
1435
  result = val[1]
1374
1436
  else
@@ -1382,10 +1444,10 @@ module_eval <<'.,.,', 'grammar.ra', 631
1382
1444
  end
1383
1445
  .,.,
1384
1446
 
1385
- # reduce 84 omitted
1447
+ # reduce 89 omitted
1386
1448
 
1387
- module_eval <<'.,.,', 'grammar.ra', 645
1388
- def _reduce_85( val, _values, result )
1449
+ module_eval <<'.,.,', 'grammar.ra', 674
1450
+ def _reduce_90( val, _values, result )
1389
1451
  if val[0].instance_of?(AST::ASTArray)
1390
1452
  val[0].push(val[2])
1391
1453
  result = val[0]
@@ -1400,8 +1462,8 @@ module_eval <<'.,.,', 'grammar.ra', 645
1400
1462
  end
1401
1463
  .,.,
1402
1464
 
1403
- module_eval <<'.,.,', 'grammar.ra', 653
1404
- def _reduce_86( val, _values, result )
1465
+ module_eval <<'.,.,', 'grammar.ra', 682
1466
+ def _reduce_91( val, _values, result )
1405
1467
  result = AST::CompArgument.new(
1406
1468
  :line => @lexer.line,
1407
1469
  :file => @lexer.file,
@@ -1411,8 +1473,8 @@ module_eval <<'.,.,', 'grammar.ra', 653
1411
1473
  end
1412
1474
  .,.,
1413
1475
 
1414
- module_eval <<'.,.,', 'grammar.ra', 660
1415
- def _reduce_87( val, _values, result )
1476
+ module_eval <<'.,.,', 'grammar.ra', 689
1477
+ def _reduce_92( val, _values, result )
1416
1478
  result = AST::CompArgument.new(
1417
1479
  :line => @lexer.line,
1418
1480
  :file => @lexer.file,
@@ -1422,10 +1484,10 @@ module_eval <<'.,.,', 'grammar.ra', 660
1422
1484
  end
1423
1485
  .,.,
1424
1486
 
1425
- # reduce 88 omitted
1487
+ # reduce 93 omitted
1426
1488
 
1427
- module_eval <<'.,.,', 'grammar.ra', 669
1428
- def _reduce_89( val, _values, result )
1489
+ module_eval <<'.,.,', 'grammar.ra', 698
1490
+ def _reduce_94( val, _values, result )
1429
1491
  result = AST::Name.new(
1430
1492
  :value => val[1],
1431
1493
  :file => @lexer.file,
@@ -1435,8 +1497,8 @@ module_eval <<'.,.,', 'grammar.ra', 669
1435
1497
  end
1436
1498
  .,.,
1437
1499
 
1438
- module_eval <<'.,.,', 'grammar.ra', 678
1439
- def _reduce_90( val, _values, result )
1500
+ module_eval <<'.,.,', 'grammar.ra', 707
1501
+ def _reduce_95( val, _values, result )
1440
1502
  name = val[0].sub(/^\$/,'')
1441
1503
  result = AST::Variable.new(
1442
1504
  :line => @lexer.line,
@@ -1447,8 +1509,8 @@ module_eval <<'.,.,', 'grammar.ra', 678
1447
1509
  end
1448
1510
  .,.,
1449
1511
 
1450
- module_eval <<'.,.,', 'grammar.ra', 690
1451
- def _reduce_91( val, _values, result )
1512
+ module_eval <<'.,.,', 'grammar.ra', 719
1513
+ def _reduce_96( val, _values, result )
1452
1514
  if val[1].instance_of?(AST::ASTArray)
1453
1515
  result = val[1]
1454
1516
  else
@@ -1462,14 +1524,14 @@ module_eval <<'.,.,', 'grammar.ra', 690
1462
1524
  end
1463
1525
  .,.,
1464
1526
 
1465
- # reduce 92 omitted
1527
+ # reduce 97 omitted
1466
1528
 
1467
- # reduce 93 omitted
1529
+ # reduce 98 omitted
1468
1530
 
1469
- # reduce 94 omitted
1531
+ # reduce 99 omitted
1470
1532
 
1471
- module_eval <<'.,.,', 'grammar.ra', 695
1472
- def _reduce_95( val, _values, result )
1533
+ module_eval <<'.,.,', 'grammar.ra', 724
1534
+ def _reduce_100( val, _values, result )
1473
1535
  result = nil
1474
1536
  result
1475
1537
  end