puppet 0.9.2 → 0.13.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 (213) hide show
  1. data/CHANGELOG +58 -0
  2. data/README +21 -18
  3. data/Rakefile +176 -36
  4. data/bin/puppet +34 -48
  5. data/bin/puppetca +41 -28
  6. data/bin/puppetd +87 -65
  7. data/bin/puppetdoc +99 -23
  8. data/bin/puppetmasterd +72 -91
  9. data/conf/redhat/client.init +80 -0
  10. data/conf/redhat/client.sysconfig +11 -0
  11. data/conf/redhat/fileserver.conf +12 -0
  12. data/conf/redhat/puppet.spec +130 -0
  13. data/conf/redhat/server.init +89 -0
  14. data/conf/redhat/server.sysconfig +9 -0
  15. data/examples/code/allatonce +2 -2
  16. data/examples/code/assignments +1 -1
  17. data/examples/code/classing +2 -2
  18. data/examples/code/components +2 -2
  19. data/examples/code/file.bl +5 -5
  20. data/examples/code/filedefaults +2 -2
  21. data/examples/code/fileparsing +1 -1
  22. data/examples/code/filerecursion +1 -1
  23. data/examples/code/functions +1 -1
  24. data/examples/code/groups +1 -1
  25. data/examples/code/importing +1 -1
  26. data/examples/code/nodes +1 -1
  27. data/examples/code/one +1 -1
  28. data/examples/code/relationships +2 -2
  29. data/examples/code/simpletests +5 -5
  30. data/examples/code/snippets/argumentdefaults +2 -2
  31. data/examples/code/snippets/casestatement +16 -8
  32. data/examples/code/snippets/classheirarchy.pp +4 -4
  33. data/examples/code/snippets/classincludes.pp +4 -4
  34. data/examples/code/snippets/classpathtest +2 -2
  35. data/examples/code/snippets/componentmetaparams.pp +11 -0
  36. data/examples/code/snippets/dirchmod +5 -5
  37. data/examples/code/snippets/emptyclass.pp +9 -0
  38. data/examples/code/snippets/failmissingexecpath.pp +1 -1
  39. data/examples/code/snippets/falsevalues.pp +1 -1
  40. data/examples/code/snippets/filecreate +5 -5
  41. data/examples/code/snippets/implicititeration +5 -5
  42. data/examples/code/snippets/multipleinstances +4 -4
  43. data/examples/code/snippets/namevartest +3 -3
  44. data/examples/code/snippets/scopetest +1 -1
  45. data/examples/code/snippets/selectorvalues.pp +3 -3
  46. data/examples/code/snippets/simpledefaults +2 -2
  47. data/examples/code/snippets/simpleselector +5 -5
  48. data/examples/code/snippets/singleary.pp +19 -0
  49. data/examples/root/etc/init.d/sleeper +3 -2
  50. data/ext/emacs/puppet-mode-init.el +6 -0
  51. data/ext/emacs/puppet-mode.el +189 -0
  52. data/ext/ldap/puppet.schema +17 -0
  53. data/ext/{module:puppet → module_puppet} +30 -31
  54. data/ext/vim/filetype.vim +9 -0
  55. data/ext/vim/puppet.vim +87 -0
  56. data/install.rb +63 -30
  57. data/lib/puppet.rb +216 -122
  58. data/lib/puppet/client.rb +51 -416
  59. data/lib/puppet/client/ca.rb +17 -0
  60. data/lib/puppet/client/dipper.rb +78 -0
  61. data/lib/puppet/client/file.rb +20 -0
  62. data/lib/puppet/client/log.rb +17 -0
  63. data/lib/puppet/client/master.rb +246 -0
  64. data/lib/puppet/client/proxy.rb +27 -0
  65. data/lib/puppet/client/status.rb +7 -0
  66. data/lib/puppet/config.rb +563 -13
  67. data/lib/puppet/daemon.rb +50 -22
  68. data/lib/puppet/element.rb +4 -4
  69. data/lib/puppet/event-loop.rb +1 -0
  70. data/lib/puppet/event-loop/better-definers.rb +367 -0
  71. data/lib/puppet/event-loop/event-loop.rb +355 -0
  72. data/lib/puppet/event-loop/signal-system.rb +220 -0
  73. data/lib/puppet/event.rb +9 -11
  74. data/lib/puppet/filetype.rb +195 -0
  75. data/lib/puppet/log.rb +35 -12
  76. data/lib/puppet/metric.rb +2 -2
  77. data/lib/puppet/networkclient.rb +145 -0
  78. data/lib/puppet/parameter.rb +335 -0
  79. data/lib/puppet/parser/ast.rb +42 -1453
  80. data/lib/puppet/parser/ast/astarray.rb +88 -0
  81. data/lib/puppet/parser/ast/branch.rb +47 -0
  82. data/lib/puppet/parser/ast/caseopt.rb +66 -0
  83. data/lib/puppet/parser/ast/casestatement.rb +78 -0
  84. data/lib/puppet/parser/ast/classdef.rb +78 -0
  85. data/lib/puppet/parser/ast/compdef.rb +111 -0
  86. data/lib/puppet/parser/ast/component.rb +105 -0
  87. data/lib/puppet/parser/ast/hostclass.rb +82 -0
  88. data/lib/puppet/parser/ast/leaf.rb +86 -0
  89. data/lib/puppet/parser/ast/node.rb +103 -0
  90. data/lib/puppet/parser/ast/nodedef.rb +68 -0
  91. data/lib/puppet/parser/ast/objectdef.rb +336 -0
  92. data/lib/puppet/parser/ast/objectparam.rb +30 -0
  93. data/lib/puppet/parser/ast/objectref.rb +76 -0
  94. data/lib/puppet/parser/ast/selector.rb +60 -0
  95. data/lib/puppet/parser/ast/typedefaults.rb +45 -0
  96. data/lib/puppet/parser/ast/vardef.rb +44 -0
  97. data/lib/puppet/parser/interpreter.rb +31 -14
  98. data/lib/puppet/parser/lexer.rb +2 -4
  99. data/lib/puppet/parser/parser.rb +332 -242
  100. data/lib/puppet/parser/scope.rb +55 -38
  101. data/lib/puppet/server.rb +43 -44
  102. data/lib/puppet/server/authstore.rb +3 -6
  103. data/lib/puppet/server/ca.rb +5 -2
  104. data/lib/puppet/server/filebucket.rb +2 -4
  105. data/lib/puppet/server/fileserver.rb +28 -12
  106. data/lib/puppet/server/logger.rb +15 -4
  107. data/lib/puppet/server/master.rb +62 -7
  108. data/lib/puppet/sslcertificates.rb +41 -607
  109. data/lib/puppet/sslcertificates/ca.rb +291 -0
  110. data/lib/puppet/sslcertificates/certificate.rb +283 -0
  111. data/lib/puppet/statechange.rb +6 -1
  112. data/lib/puppet/storage.rb +67 -56
  113. data/lib/puppet/transaction.rb +25 -9
  114. data/lib/puppet/transportable.rb +102 -22
  115. data/lib/puppet/type.rb +1096 -315
  116. data/lib/puppet/type/component.rb +30 -21
  117. data/lib/puppet/type/cron.rb +409 -448
  118. data/lib/puppet/type/exec.rb +234 -174
  119. data/lib/puppet/type/group.rb +65 -82
  120. data/lib/puppet/type/nameservice.rb +247 -3
  121. data/lib/puppet/type/nameservice/netinfo.rb +29 -40
  122. data/lib/puppet/type/nameservice/objectadd.rb +52 -66
  123. data/lib/puppet/type/nameservice/posix.rb +6 -194
  124. data/lib/puppet/type/package.rb +447 -295
  125. data/lib/puppet/type/package/apt.rb +51 -50
  126. data/lib/puppet/type/package/bsd.rb +82 -0
  127. data/lib/puppet/type/package/dpkg.rb +85 -88
  128. data/lib/puppet/type/package/rpm.rb +67 -63
  129. data/lib/puppet/type/package/sun.rb +119 -98
  130. data/lib/puppet/type/package/yum.rb +41 -37
  131. data/lib/puppet/type/parsedtype.rb +295 -0
  132. data/lib/puppet/type/parsedtype/host.rb +143 -0
  133. data/lib/puppet/type/parsedtype/port.rb +232 -0
  134. data/lib/puppet/type/parsedtype/sshkey.rb +129 -0
  135. data/lib/puppet/type/pfile.rb +484 -460
  136. data/lib/puppet/type/pfile/checksum.rb +237 -181
  137. data/lib/puppet/type/pfile/content.rb +67 -0
  138. data/lib/puppet/type/pfile/ensure.rb +212 -0
  139. data/lib/puppet/type/pfile/group.rb +106 -105
  140. data/lib/puppet/type/pfile/mode.rb +98 -101
  141. data/lib/puppet/type/pfile/source.rb +228 -209
  142. data/lib/puppet/type/pfile/type.rb +18 -21
  143. data/lib/puppet/type/pfile/uid.rb +127 -130
  144. data/lib/puppet/type/pfilebucket.rb +68 -63
  145. data/lib/puppet/type/schedule.rb +341 -0
  146. data/lib/puppet/type/service.rb +351 -255
  147. data/lib/puppet/type/service/base.rb +9 -14
  148. data/lib/puppet/type/service/debian.rb +32 -38
  149. data/lib/puppet/type/service/init.rb +130 -130
  150. data/lib/puppet/type/service/smf.rb +48 -20
  151. data/lib/puppet/type/state.rb +229 -16
  152. data/lib/puppet/type/symlink.rb +51 -63
  153. data/lib/puppet/type/tidy.rb +105 -102
  154. data/lib/puppet/type/user.rb +118 -180
  155. data/lib/puppet/util.rb +100 -6
  156. data/test/certmgr/certmgr.rb +0 -1
  157. data/test/client/client.rb +4 -4
  158. data/test/executables/puppetbin.rb +7 -14
  159. data/test/executables/puppetca.rb +18 -24
  160. data/test/executables/puppetd.rb +7 -16
  161. data/test/executables/puppetmasterd.rb +7 -9
  162. data/test/executables/puppetmodule.rb +11 -16
  163. data/test/language/ast.rb +11 -7
  164. data/test/language/interpreter.rb +1 -1
  165. data/test/language/scope.rb +2 -0
  166. data/test/language/snippets.rb +30 -5
  167. data/test/language/transportable.rb +77 -0
  168. data/test/other/config.rb +316 -0
  169. data/test/other/events.rb +22 -21
  170. data/test/other/log.rb +14 -14
  171. data/test/other/metrics.rb +4 -8
  172. data/test/other/overrides.rb +5 -5
  173. data/test/other/relationships.rb +4 -2
  174. data/test/other/storage.rb +64 -3
  175. data/test/other/transactions.rb +20 -20
  176. data/test/parser/parser.rb +7 -4
  177. data/test/puppet/conffiles.rb +12 -12
  178. data/test/puppet/defaults.rb +13 -11
  179. data/test/puppet/utiltest.rb +14 -11
  180. data/test/puppettest.rb +156 -48
  181. data/test/server/bucket.rb +2 -2
  182. data/test/server/fileserver.rb +6 -6
  183. data/test/server/logger.rb +19 -11
  184. data/test/server/master.rb +33 -4
  185. data/test/server/server.rb +2 -7
  186. data/test/types/basic.rb +5 -7
  187. data/test/types/component.rb +22 -18
  188. data/test/types/cron.rb +111 -44
  189. data/test/types/exec.rb +116 -59
  190. data/test/types/file.rb +262 -137
  191. data/test/types/filebucket.rb +13 -15
  192. data/test/types/fileignoresource.rb +12 -16
  193. data/test/types/filesources.rb +73 -48
  194. data/test/types/filetype.rb +13 -15
  195. data/test/types/group.rb +15 -13
  196. data/test/types/host.rb +146 -0
  197. data/test/types/package.rb +74 -63
  198. data/test/types/port.rb +139 -0
  199. data/test/types/query.rb +8 -8
  200. data/test/types/schedule.rb +335 -0
  201. data/test/types/service.rb +137 -21
  202. data/test/types/sshkey.rb +140 -0
  203. data/test/types/symlink.rb +3 -5
  204. data/test/types/tidy.rb +5 -14
  205. data/test/types/type.rb +67 -11
  206. data/test/types/user.rb +25 -23
  207. metadata +186 -122
  208. data/lib/puppet/type/pfile/create.rb +0 -108
  209. data/lib/puppet/type/pprocess.rb +0 -97
  210. data/lib/puppet/type/typegen.rb +0 -149
  211. data/lib/puppet/type/typegen/filerecord.rb +0 -243
  212. data/lib/puppet/type/typegen/filetype.rb +0 -316
  213. data/test/other/state.rb +0 -106
@@ -0,0 +1,30 @@
1
+ class Puppet::Parser::AST
2
+ # The AST object for the parameters inside ObjectDefs and Selectors.
3
+ class ObjectParam < AST::Branch
4
+ attr_accessor :value, :param
5
+
6
+ def each
7
+ [@param,@value].each { |child| yield child }
8
+ end
9
+
10
+ # Return the parameter and the value.
11
+ def evaluate(scope)
12
+ param = @param.safeevaluate(scope)
13
+ value = @value.safeevaluate(scope)
14
+ return [param, value]
15
+ end
16
+
17
+ def tree(indent = 0)
18
+ return [
19
+ @param.tree(indent + 1),
20
+ ((@@indline * indent) + self.typewrap(self.pin)),
21
+ @value.tree(indent + 1)
22
+ ].join("\n")
23
+ end
24
+
25
+ def to_s
26
+ return "%s => %s" % [@param,@value]
27
+ end
28
+ end
29
+
30
+ end
@@ -0,0 +1,76 @@
1
+ class Puppet::Parser::AST
2
+ # A reference to an object. Only valid as an rvalue.
3
+ class ObjectRef < AST::Branch
4
+ attr_accessor :name, :type
5
+
6
+ def each
7
+ [@type,@name].flatten.each { |param|
8
+ #Puppet.debug("yielding param %s" % param)
9
+ yield param
10
+ }
11
+ end
12
+
13
+ # Evaluate our object, but just return a simple array of the type
14
+ # and name.
15
+ def evaluate(scope)
16
+ objtype = @type.safeevaluate(scope)
17
+ objnames = @name.safeevaluate(scope)
18
+
19
+ # it's easier to always use an array, even for only one name
20
+ unless objnames.is_a?(Array)
21
+ objnames = [objnames]
22
+ end
23
+
24
+ # See if we can look the object up in our scope tree.
25
+ begin
26
+ object = scope.lookuptype(objtype)
27
+ rescue Puppet::ParseError => except
28
+ except.line = self.line
29
+ except.file = self.file
30
+ raise except
31
+ rescue => detail
32
+ error = Puppet::ParseError.new(detail)
33
+ error.line = self.line
34
+ error.file = self.file
35
+ error.backtrace = detail.backtrace
36
+ raise error
37
+ end
38
+
39
+ # If the type isn't defined, verify that it's builtin
40
+ unless object or Puppet::Type.type(objtype)
41
+ error = Puppet::ParseError.new("Could not find type %s" %
42
+ objtype.inspect)
43
+ error.line = self.line
44
+ error.file = self.file
45
+ raise error
46
+ end
47
+
48
+ # should we implicitly iterate here?
49
+ # yes, i believe that we essentially have to...
50
+ ret = objnames.collect { |objname|
51
+ if object.is_a?(AST::Component)
52
+ objname = "%s[%s]" % [objtype,objname]
53
+ objtype = "component"
54
+ end
55
+ [objtype,objname]
56
+ }.reject { |obj| obj.nil? }
57
+
58
+ # Return a flattened array, since we know that we've created an
59
+ # array
60
+ return *ret
61
+ end
62
+
63
+ def tree(indent = 0)
64
+ return [
65
+ @type.tree(indent + 1),
66
+ @name.tree(indent + 1),
67
+ ((@@indline * indent) + self.typewrap(self.pin))
68
+ ].join("\n")
69
+ end
70
+
71
+ def to_s
72
+ return "%s[%s]" % [@name,@type]
73
+ end
74
+ end
75
+
76
+ end
@@ -0,0 +1,60 @@
1
+ class Puppet::Parser::AST
2
+ # The inline conditional operator. Unlike CaseStatement, which executes
3
+ # code, we just return a value.
4
+ class Selector < AST::Branch
5
+ attr_accessor :param, :values
6
+
7
+ def each
8
+ [@param,@values].each { |child| yield child }
9
+ end
10
+
11
+ # Find the value that corresponds with the test.
12
+ def evaluate(scope)
13
+ retvalue = nil
14
+ found = nil
15
+
16
+ # Get our parameter.
17
+ paramvalue = @param.safeevaluate(scope)
18
+
19
+ default = nil
20
+
21
+ # Then look for a match in the options.
22
+ @values.each { |obj|
23
+ param = obj.param.safeevaluate(scope)
24
+ if param == paramvalue
25
+ # we found a matching option
26
+ retvalue = obj.value.safeevaluate(scope)
27
+ found = true
28
+ break
29
+ elsif obj.param.is_a?(Default)
30
+ default = obj
31
+ end
32
+ }
33
+
34
+ # Unless we found something, look for the default.
35
+ unless found
36
+ if default
37
+ retvalue = default.value.safeevaluate(scope)
38
+ else
39
+ error = Puppet::ParseError.new(
40
+ "No value for selector param '%s'" % paramvalue
41
+ )
42
+ error.line = self.line
43
+ error.file = self.file
44
+ raise error
45
+ end
46
+ end
47
+
48
+ return retvalue
49
+ end
50
+
51
+ def tree(indent = 0)
52
+ return [
53
+ @param.tree(indent + 1),
54
+ ((@@indline * indent) + self.typewrap(self.pin)),
55
+ @values.tree(indent + 1)
56
+ ].join("\n")
57
+ end
58
+ end
59
+
60
+ end
@@ -0,0 +1,45 @@
1
+ class Puppet::Parser::AST
2
+ # A statement syntactically similar to an ObjectDef, but uses a
3
+ # capitalized object type and cannot have a name.
4
+ class TypeDefaults < AST::Branch
5
+ attr_accessor :type, :params
6
+
7
+ def each
8
+ [@type,@params].each { |child| yield child }
9
+ end
10
+
11
+ # As opposed to ObjectDef, this stores each default for the given
12
+ # object type.
13
+ def evaluate(scope)
14
+ type = @type.safeevaluate(scope)
15
+ params = @params.safeevaluate(scope)
16
+
17
+ begin
18
+ scope.setdefaults(type.downcase,params)
19
+ rescue Puppet::ParseError => except
20
+ except.line = self.line
21
+ except.file = self.file
22
+ raise except
23
+ rescue => detail
24
+ error = Puppet::ParseError.new(detail)
25
+ error.line = self.line
26
+ error.file = self.file
27
+ error.backtrace = detail.backtrace
28
+ raise error
29
+ end
30
+ end
31
+
32
+ def tree(indent = 0)
33
+ return [
34
+ @type.tree(indent + 1),
35
+ ((@@indline * 4 * indent) + self.typewrap(self.pin)),
36
+ @params.tree(indent + 1)
37
+ ].join("\n")
38
+ end
39
+
40
+ def to_s
41
+ return "%s { %s }" % [@type,@params]
42
+ end
43
+ end
44
+
45
+ end
@@ -0,0 +1,44 @@
1
+ class Puppet::Parser::AST
2
+ # Define a variable. Stores the value in the current scope.
3
+ class VarDef < AST::Branch
4
+ attr_accessor :name, :value
5
+
6
+ # Look up our name and value, and store them appropriately. The
7
+ # lexer strips off the syntax stuff like '$'.
8
+ def evaluate(scope)
9
+ name = @name.safeevaluate(scope)
10
+ value = @value.safeevaluate(scope)
11
+
12
+ begin
13
+ scope.setvar(name,value)
14
+ rescue Puppet::ParseError => except
15
+ except.line = self.line
16
+ except.file = self.file
17
+ raise except
18
+ rescue => detail
19
+ error = Puppet::ParseError.new(detail)
20
+ error.line = self.line
21
+ error.file = self.file
22
+ error.backtrace = detail.backtrace
23
+ raise error
24
+ end
25
+ end
26
+
27
+ def each
28
+ [@name,@value].each { |child| yield child }
29
+ end
30
+
31
+ def tree(indent = 0)
32
+ return [
33
+ @name.tree(indent + 1),
34
+ ((@@indline * 4 * indent) + self.typewrap(self.pin)),
35
+ @value.tree(indent + 1)
36
+ ].join("\n")
37
+ end
38
+
39
+ def to_s
40
+ return "%s => %s" % [@name,@value]
41
+ end
42
+ end
43
+
44
+ end
@@ -10,7 +10,7 @@ require 'puppet/parser/scope'
10
10
  module Puppet
11
11
  module Parser
12
12
  class Interpreter
13
- attr_accessor :ast
13
+ attr_accessor :ast, :filetimeout
14
14
  # just shorten the constant path a bit, using what amounts to an alias
15
15
  AST = Puppet::Parser::AST
16
16
 
@@ -21,6 +21,9 @@ module Puppet
21
21
  end
22
22
 
23
23
  @file = hash[:Manifest]
24
+ @filetimeout = hash[:ParseCheck] || 15
25
+
26
+ @lastchecked = 0
24
27
 
25
28
  if hash.include?(:UseNodes)
26
29
  @usenodes = hash[:UseNodes]
@@ -38,6 +41,11 @@ module Puppet
38
41
  evaluate
39
42
  end
40
43
 
44
+ def parsedate
45
+ parsefiles()
46
+ @parsedate
47
+ end
48
+
41
49
  # evaluate our whole tree
42
50
  def run(client, facts)
43
51
  parsefiles()
@@ -60,8 +68,7 @@ module Puppet
60
68
  end
61
69
 
62
70
  # We've already evaluated the AST, in this case
63
- retval = @scope.evalnode(names, facts)
64
- return retval
71
+ return @scope.evalnode(names, facts)
65
72
  else
66
73
  # We've already evaluated the AST, in this case
67
74
  @scope = Puppet::Parser::Scope.new() # no parent scope
@@ -75,19 +82,15 @@ module Puppet
75
82
  #Puppet.err "File %s, line %s: %s" %
76
83
  # [except.file, except.line, except.message]
77
84
  if Puppet[:debug]
78
- puts except.stack
79
- end
80
- if Puppet[:debug]
81
- puts caller
85
+ puts except.backtrace
82
86
  end
83
87
  #exit(1)
84
88
  raise
85
89
  rescue => except
86
90
  error = Puppet::DevError.new("%s: %s" %
87
91
  [except.class, except.message])
88
- error.stack = caller
89
92
  if Puppet[:debug]
90
- puts caller
93
+ puts except.backtrace
91
94
  end
92
95
  raise error
93
96
  end
@@ -104,6 +107,8 @@ module Puppet
104
107
  # entire configuration each time we get a connect.
105
108
  def evaluate
106
109
 
110
+ # FIXME When this produces errors, it should specify which
111
+ # node caused those errors.
107
112
  if @usenodes
108
113
  @scope = Puppet::Parser::Scope.new() # no parent scope
109
114
  @scope.name = "top"
@@ -119,26 +124,38 @@ module Puppet
119
124
 
120
125
  def parsefiles
121
126
  if defined? @parser
122
- unless @parser.reparse?
123
- return false
127
+ # Only check the files every 15 seconds or so, not on
128
+ # every single connection
129
+ if (Time.now - @lastchecked).to_i >= @filetimeout.to_i
130
+ unless @parser.reparse?
131
+ @lastchecked = Time.now
132
+ return false
133
+ end
134
+ else
135
+ return
124
136
  end
125
137
  end
126
138
 
127
139
  unless FileTest.exists?(@file)
128
140
  if @ast
129
- Puppet.warning "Manifest %s has disappeared" % @file
130
141
  return
131
142
  else
132
143
  raise Puppet::Error, "Manifest %s must exist" % @file
133
144
  end
134
145
  end
135
146
 
136
- Puppet.info "Reloading files"
147
+ if defined? @parser
148
+ Puppet.info "Reloading files"
149
+ end
137
150
  # should i be creating a new parser each time...?
138
151
  @parser = Puppet::Parser::Parser.new()
139
152
  @parser.file = @file
140
153
  @ast = @parser.parse
141
154
 
155
+ # Mark when we parsed, so we can check freshness
156
+ @parsedate = Time.now.to_i
157
+ @lastchecked = Time.now
158
+
142
159
  # Reevaluate the config. This is what actually replaces the
143
160
  # existing scope.
144
161
  evaluate
@@ -147,4 +164,4 @@ module Puppet
147
164
  end
148
165
  end
149
166
 
150
- # $Id: interpreter.rb 746 2005-11-17 21:03:19Z luke $
167
+ # $Id: interpreter.rb 858 2006-01-30 19:22:25Z luke $
@@ -1,6 +1,3 @@
1
- #!/usr/local/bin/ruby -w
2
-
3
- # $Id: lexer.rb 700 2005-09-22 23:24:20Z luke $
4
1
 
5
2
  # the scanner/lexer
6
3
 
@@ -53,7 +50,6 @@ module Puppet
53
50
  "default" => :DEFAULT,
54
51
  "define" => :DEFINE,
55
52
  "false" => :BOOLEAN,
56
- "host" => :NODE,
57
53
  "import" => :IMPORT,
58
54
  "include" => :INCLUDE,
59
55
  "inherits" => :INHERITS,
@@ -224,3 +220,5 @@ module Puppet
224
220
  #---------------------------------------------------------------
225
221
  end
226
222
  end
223
+
224
+ # $Id: lexer.rb 760 2006-01-03 03:08:05Z luke $
@@ -14,10 +14,7 @@ require 'puppet/parser/ast'
14
14
  #require 'puppet/parser/interpreter'
15
15
 
16
16
  module Puppet
17
- # this exception class already has a :stack accessor
18
- class ParseError < Puppet::Error
19
- attr_accessor :line, :file
20
- end
17
+ class ParseError < Puppet::Error; end
21
18
 
22
19
  class ImportError < Racc::ParseError; end
23
20
  end
@@ -32,13 +29,13 @@ module Puppet
32
29
 
33
30
  class Parser < Racc::Parser
34
31
 
35
- module_eval <<'..end grammar.ra modeval..idd1811897f0', 'grammar.ra', 635
32
+ module_eval <<'..end grammar.ra modeval..id4d297a9dfb', 'grammar.ra', 703
36
33
  attr_reader :file
37
34
  attr_accessor :files
38
35
 
39
36
  # Create an AST array out of all of the args
40
37
  def aryfy(*args)
41
- if args[0].is_a?(AST::ASTArray)
38
+ if args[0].instance_of?(AST::ASTArray)
42
39
  result = args.shift
43
40
  args.each { |arg|
44
41
  result.push arg
@@ -103,7 +100,7 @@ def parse
103
100
  error = Puppet::ParseError.new(except)
104
101
  error.line = @lexer.line
105
102
  error.file = @lexer.file
106
- error.stack = caller
103
+ error.backtrace = except.backtrace
107
104
  raise error
108
105
  rescue Puppet::ParseError => except
109
106
  except.line ||= @lexer.line
@@ -113,7 +110,6 @@ def parse
113
110
  # and this is a framework error
114
111
  except.line ||= @lexer.line
115
112
  except.file ||= @lexer.file
116
- except.stack ||= except.stack
117
113
  #if Puppet[:debug]
118
114
  # puts except.stack
119
115
  #end
@@ -121,7 +117,6 @@ def parse
121
117
  rescue Puppet::DevError => except
122
118
  except.line ||= @lexer.line
123
119
  except.file ||= @lexer.file
124
- except.stack ||= caller
125
120
  #if Puppet[:debug]
126
121
  # puts except.stack
127
122
  #end
@@ -130,7 +125,7 @@ def parse
130
125
  error = Puppet::DevError.new(except.message)
131
126
  error.line = @lexer.line
132
127
  error.file = @lexer.file
133
- error.stack = caller
128
+ error.backtrace = except.backtrace
134
129
  #if Puppet[:debug]
135
130
  # puts caller
136
131
  #end
@@ -148,8 +143,8 @@ def string=(string)
148
143
  @lexer.string = string
149
144
  end
150
145
 
151
- # $Id: parser.rb 729 2005-10-25 19:49:22Z luke $
152
- ..end grammar.ra modeval..idd1811897f0
146
+ # $Id: parser.rb 879 2006-02-08 16:00:41Z luke $
147
+ ..end grammar.ra modeval..id4d297a9dfb
153
148
 
154
149
  ##### racc 1.4.4 generates ###
155
150
 
@@ -210,186 +205,190 @@ racc_reduce_table = [
210
205
  1, 72, :_reduce_none,
211
206
  2, 72, :_reduce_54,
212
207
  5, 73, :_reduce_55,
208
+ 4, 73, :_reduce_56,
213
209
  1, 74, :_reduce_none,
214
- 3, 74, :_reduce_57,
215
- 3, 64, :_reduce_58,
210
+ 3, 74, :_reduce_58,
211
+ 3, 64, :_reduce_59,
216
212
  1, 76, :_reduce_none,
217
- 3, 76, :_reduce_60,
213
+ 3, 76, :_reduce_61,
218
214
  1, 78, :_reduce_none,
219
- 3, 78, :_reduce_62,
220
- 3, 77, :_reduce_63,
221
- 1, 75, :_reduce_64,
215
+ 3, 78, :_reduce_63,
216
+ 3, 77, :_reduce_64,
222
217
  1, 75, :_reduce_65,
223
218
  1, 75, :_reduce_66,
224
219
  1, 75, :_reduce_67,
220
+ 1, 75, :_reduce_68,
225
221
  1, 75, :_reduce_none,
226
- 2, 47, :_reduce_69,
227
- 6, 49, :_reduce_70,
228
- 6, 50, :_reduce_71,
229
- 6, 51, :_reduce_72,
222
+ 2, 47, :_reduce_70,
223
+ 6, 49, :_reduce_71,
224
+ 5, 49, :_reduce_72,
225
+ 6, 50, :_reduce_73,
226
+ 5, 50, :_reduce_74,
227
+ 6, 51, :_reduce_75,
228
+ 5, 51, :_reduce_76,
230
229
  1, 81, :_reduce_none,
231
- 2, 81, :_reduce_74,
232
- 0, 82, :_reduce_75,
230
+ 2, 81, :_reduce_78,
231
+ 0, 82, :_reduce_79,
233
232
  1, 79, :_reduce_none,
234
- 3, 79, :_reduce_77,
235
- 3, 79, :_reduce_78,
233
+ 3, 79, :_reduce_81,
234
+ 3, 79, :_reduce_82,
236
235
  1, 83, :_reduce_none,
237
- 3, 83, :_reduce_80,
238
- 3, 84, :_reduce_81,
239
- 1, 84, :_reduce_82,
236
+ 3, 83, :_reduce_84,
237
+ 3, 84, :_reduce_85,
238
+ 1, 84, :_reduce_86,
240
239
  1, 80, :_reduce_none,
241
- 2, 80, :_reduce_84,
242
- 1, 55, :_reduce_85,
243
- 3, 65, :_reduce_86,
240
+ 2, 80, :_reduce_88,
241
+ 1, 55, :_reduce_89,
242
+ 3, 65, :_reduce_90,
244
243
  1, 69, :_reduce_none,
245
244
  1, 69, :_reduce_none,
246
245
  0, 59, :_reduce_none,
247
- 1, 59, :_reduce_90 ]
246
+ 1, 59, :_reduce_94 ]
248
247
 
249
- racc_reduce_n = 91
248
+ racc_reduce_n = 95
250
249
 
251
- racc_shift_n = 152
250
+ racc_shift_n = 156
252
251
 
253
252
  racc_action_table = [
254
- 88, 123, 88, 118, 144, 130, 101, 102, 88, 117,
255
- 96, 4, 7, 88, 11, 14, 120, 18, 88, 31,
256
- 40, 2, 5, 88, 9, 122, 15, 5, 35, 110,
257
- 35, 86, 87, 86, 87, 90, 35, 90, 55, 86,
258
- 87, 35, 112, 90, 86, 87, 35, 138, 90, 86,
259
- 87, 35, 104, 90, 86, 87, 28, 29, 90, 28,
260
- 29, 28, 29, 106, 65, 4, 7, 114, 11, 14,
261
- 5, 18, 28, 29, 58, 2, 5, 50, 9, 31,
262
- 15, 31, 28, 29, 31, 35, 31, 5, 2, 5,
263
- 35, 2, 5, 2, 5, 100, 104, 31, 146, 101,
264
- 102, 35, 116, 107, 2, 5, 119, 31, 28, 29,
265
- 55, 35, 54, 61, 2, 5, 4, 7, 126, 11,
266
- 14, 50, 18, 128, 151, 5, 2, 5, 108, 9,
267
- 61, 15, 66, 31, 28, 29, 28, 29, 81, 134,
268
- 2, 72, 4, 7, 48, 11, 14, 136, 18, 61,
269
- 5, 5, 2, 5, 147, 9, 65, 15, 141, 31,
270
- 41, 31, 106, 35, 40, 35, 2, 5, 2, 5,
271
- 28, 29, 4, 7, 39, 11, 14, 24, 18, 28,
272
- 29, 148, 2, 5, 69, 9, 23, 15, 61, 52,
273
- nil, nil, nil, nil, nil, 31, nil, nil, nil, 35,
274
- nil, nil, 2, 5, 31, nil, nil, nil, 35, nil,
275
- nil, 2, 5, 4, 7, nil, 11, 14, nil, 18,
276
- nil, nil, nil, 2, 5, nil, 9, nil, 15, 4,
277
- 7, nil, 11, 14, nil, 18, nil, nil, nil, 2,
278
- 5, nil, 9, nil, 15, 4, 7, nil, 11, 14,
279
- nil, 18, nil, nil, nil, 2, 5, nil, 9, nil,
280
- 15, 4, 7, nil, 11, 14, nil, 18, nil, nil,
253
+ 88, 124, 88, 65, 147, 127, 101, 102, 88, 5,
254
+ 96, 4, 7, 88, 11, 14, 121, 18, 88, 31,
255
+ 107, 2, 5, 88, 9, 123, 15, 5, 35, 110,
256
+ 35, 86, 87, 86, 87, 90, 35, 90, 135, 86,
257
+ 87, 35, 55, 90, 86, 87, 35, 112, 90, 86,
258
+ 87, 35, 104, 90, 86, 87, 4, 7, 90, 11,
259
+ 14, 149, 18, 106, 119, 114, 2, 5, 31, 9,
260
+ 118, 15, 28, 29, 58, 61, 5, 50, 117, 4,
261
+ 7, 106, 11, 14, 120, 18, 104, 65, 141, 2,
262
+ 5, 40, 9, 108, 15, 28, 29, 31, 28, 29,
263
+ 55, 35, 129, 54, 2, 5, 4, 7, 131, 11,
264
+ 14, 61, 18, 28, 29, 52, 2, 5, 50, 9,
265
+ 31, 15, 137, 31, 66, 139, 61, 2, 5, 133,
266
+ 2, 72, 48, 5, 28, 29, 28, 29, 31, 100,
267
+ 5, 144, 35, 101, 102, 2, 5, 4, 7, 5,
268
+ 11, 14, 81, 18, 28, 29, 41, 2, 5, 31,
269
+ 9, 31, 15, 35, 40, 35, 2, 5, 2, 5,
270
+ 150, 39, 151, 24, 23, 28, 29, 28, 29, 31,
271
+ 61, 69, nil, 35, nil, nil, 2, 5, 4, 7,
272
+ nil, 11, 14, 115, 18, nil, nil, nil, 2, 5,
273
+ 31, 9, 31, 15, 35, nil, 35, 2, 5, 2,
274
+ 5, 4, 7, 152, 11, 14, nil, 18, nil, nil,
275
+ nil, 2, 5, nil, 9, nil, 15, nil, nil, 155,
276
+ nil, 4, 7, nil, 11, 14, nil, 18, 28, 29,
281
277
  nil, 2, 5, nil, 9, nil, 15, 4, 7, nil,
282
278
  11, 14, nil, 18, nil, nil, nil, 2, 5, nil,
283
- 9, nil, 15 ]
279
+ 9, nil, 15, 31, nil, nil, nil, 35, nil, nil,
280
+ 2, 5, 4, 7, nil, 11, 14, nil, 18, nil,
281
+ nil, nil, 2, 5, nil, 9, nil, 15 ]
284
282
 
285
283
  racc_action_check = [
286
- 143, 93, 54, 83, 125, 105, 125, 125, 55, 83,
287
- 55, 107, 107, 91, 107, 107, 91, 107, 96, 66,
288
- 33, 107, 107, 123, 107, 93, 107, 66, 143, 67,
289
- 54, 143, 143, 54, 54, 143, 55, 54, 70, 55,
290
- 55, 91, 71, 55, 91, 91, 96, 115, 91, 96,
291
- 96, 123, 72, 96, 123, 123, 104, 104, 123, 112,
292
- 112, 119, 119, 73, 46, 115, 115, 76, 115, 115,
293
- 46, 115, 126, 126, 38, 115, 115, 38, 115, 15,
294
- 115, 104, 99, 99, 112, 104, 119, 15, 104, 104,
295
- 119, 112, 112, 119, 119, 57, 61, 126, 132, 57,
296
- 57, 126, 82, 63, 126, 126, 85, 99, 50, 50,
297
- 26, 99, 25, 40, 99, 99, 132, 132, 97, 132,
298
- 132, 21, 132, 103, 149, 52, 132, 132, 65, 132,
299
- 106, 132, 43, 50, 28, 28, 58, 58, 51, 111,
300
- 50, 50, 149, 149, 19, 149, 149, 113, 149, 114,
301
- 18, 118, 149, 149, 133, 149, 41, 149, 122, 28,
302
- 14, 58, 62, 28, 12, 58, 28, 28, 58, 58,
303
- 39, 39, 133, 133, 11, 133, 133, 7, 133, 9,
304
- 9, 137, 133, 133, 48, 133, 4, 133, 148, 24,
305
- nil, nil, nil, nil, nil, 39, nil, nil, nil, 39,
306
- nil, nil, 39, 39, 9, nil, nil, nil, 9, nil,
307
- nil, 9, 9, 0, 0, nil, 0, 0, nil, 0,
308
- nil, nil, nil, 0, 0, nil, 0, nil, 0, 141,
309
- 141, nil, 141, 141, nil, 141, nil, nil, nil, 141,
310
- 141, nil, 141, nil, 141, 81, 81, nil, 81, 81,
311
- nil, 81, nil, nil, nil, 81, 81, nil, 81, nil,
312
- 81, 110, 110, nil, 110, 110, nil, 110, nil, nil,
313
- nil, 110, 110, nil, 110, nil, 110, 20, 20, nil,
314
- 20, 20, nil, 20, nil, nil, nil, 20, 20, nil,
315
- 20, nil, 20 ]
284
+ 54, 93, 146, 46, 126, 97, 126, 126, 55, 46,
285
+ 55, 0, 0, 91, 0, 0, 91, 0, 96, 15,
286
+ 63, 0, 0, 124, 0, 93, 0, 15, 54, 67,
287
+ 146, 54, 54, 146, 146, 54, 55, 146, 110, 55,
288
+ 55, 91, 70, 55, 91, 91, 96, 71, 91, 96,
289
+ 96, 124, 72, 96, 124, 124, 110, 110, 124, 110,
290
+ 110, 134, 110, 73, 83, 76, 110, 110, 66, 110,
291
+ 83, 110, 120, 120, 38, 40, 66, 38, 82, 134,
292
+ 134, 62, 134, 134, 85, 134, 61, 41, 116, 134,
293
+ 134, 33, 134, 65, 134, 112, 112, 120, 50, 50,
294
+ 26, 120, 103, 25, 120, 120, 116, 116, 105, 116,
295
+ 116, 106, 116, 127, 127, 24, 116, 116, 21, 116,
296
+ 112, 116, 111, 50, 43, 113, 114, 112, 112, 107,
297
+ 50, 50, 19, 119, 104, 104, 99, 99, 127, 57,
298
+ 18, 123, 127, 57, 57, 127, 127, 107, 107, 52,
299
+ 107, 107, 51, 107, 28, 28, 14, 107, 107, 104,
300
+ 107, 99, 107, 104, 12, 99, 104, 104, 99, 99,
301
+ 136, 11, 140, 7, 4, 9, 9, 58, 58, 28,
302
+ 151, 48, nil, 28, nil, nil, 28, 28, 136, 136,
303
+ nil, 136, 136, 81, 136, nil, nil, nil, 136, 136,
304
+ 9, 136, 58, 136, 9, nil, 58, 9, 9, 58,
305
+ 58, 81, 81, 144, 81, 81, nil, 81, nil, nil,
306
+ nil, 81, 81, nil, 81, nil, 81, nil, nil, 153,
307
+ nil, 144, 144, nil, 144, 144, nil, 144, 39, 39,
308
+ nil, 144, 144, nil, 144, nil, 144, 153, 153, nil,
309
+ 153, 153, nil, 153, nil, nil, nil, 153, 153, nil,
310
+ 153, nil, 153, 39, nil, nil, nil, 39, nil, nil,
311
+ 39, 39, 20, 20, nil, 20, 20, nil, 20, nil,
312
+ nil, nil, 20, 20, nil, 20, nil, 20 ]
316
313
 
317
314
  racc_action_pointer = [
318
- 189, nil, nil, nil, 183, nil, nil, 142, nil, 177,
319
- nil, 162, 159, nil, 125, 52, nil, nil, 115, 144,
320
- 253, 116, nil, nil, 175, 107, 97, nil, 132, nil,
321
- nil, nil, nil, 15, nil, nil, nil, nil, 72, 168,
322
- 78, 127, nil, 123, nil, nil, 35, nil, 184, nil,
323
- 106, 133, 90, nil, -1, 5, nil, 91, 134, nil,
324
- nil, 88, 153, 98, nil, 93, -8, 24, nil, nil,
325
- 25, 6, 44, 54, nil, nil, 34, nil, nil, nil,
326
- nil, 221, 87, -6, nil, 94, nil, nil, nil, nil,
327
- nil, 10, nil, -8, nil, nil, 15, 110, nil, 80,
328
- nil, nil, nil, 119, 54, -1, 95, -13, nil, nil,
329
- 237, 133, 57, 141, 114, 41, nil, nil, 116, 59,
330
- nil, nil, 153, 20, nil, -2, 70, nil, nil, nil,
331
- nil, nil, 92, 148, nil, nil, nil, 172, nil, nil,
332
- nil, 205, nil, -3, nil, nil, nil, nil, 153, 118,
333
- nil, nil ]
315
+ -13, nil, nil, nil, 171, nil, nil, 138, nil, 173,
316
+ nil, 159, 159, nil, 121, -8, nil, nil, 105, 132,
317
+ 248, 113, nil, nil, 101, 98, 87, nil, 152, nil,
318
+ nil, nil, nil, 86, nil, nil, nil, nil, 72, 236,
319
+ 40, 58, nil, 115, nil, nil, -26, nil, 181, nil,
320
+ 96, 147, 114, nil, -3, 5, nil, 135, 175, nil,
321
+ nil, 78, 72, 15, nil, 58, 41, 24, nil, nil,
322
+ 29, 11, 44, 54, nil, nil, 32, nil, nil, nil,
323
+ nil, 187, 63, 55, nil, 72, nil, nil, nil, nil,
324
+ nil, 10, nil, -8, nil, nil, 15, -3, nil, 134,
325
+ nil, nil, nil, 98, 132, 102, 76, 123, nil, nil,
326
+ 32, 116, 93, 119, 91, nil, 82, nil, nil, 98,
327
+ 70, nil, nil, 136, 20, nil, -2, 111, nil, nil,
328
+ nil, nil, nil, nil, 55, nil, 164, nil, nil, nil,
329
+ 163, nil, nil, nil, 207, nil, -1, nil, nil, nil,
330
+ nil, 145, nil, 223, nil, nil ]
334
331
 
335
332
  racc_action_default = [
336
- -91, -4, -26, -5, -91, -25, -6, -91, -7, -91,
337
- -8, -91, -91, -9, -91, -91, -10, -11, -91, -91,
338
- -1, -91, -2, -69, -75, -91, -46, -45, -91, -49,
339
- -43, -85, -48, -42, -40, -50, -44, -47, -41, -91,
340
- -34, -75, -16, -12, -13, -15, -75, -73, -91, -3,
341
- -34, -91, -75, -76, -91, -91, -38, -91, -91, -33,
342
- -35, -91, -89, -91, -83, -91, -91, -91, -74, 152,
343
- -31, -23, -25, -89, -29, -21, -91, -27, -30, -32,
344
- -28, -91, -91, -91, -79, -82, -65, -64, -66, -68,
345
- -67, -91, -53, -91, -56, -59, -91, -91, -58, -91,
346
- -86, -87, -88, -91, -91, -91, -90, -91, -84, -14,
347
- -91, -91, -24, -91, -34, -91, -77, -78, -91, -91,
348
- -52, -54, -91, -91, -61, -91, -91, -39, -51, -37,
349
- -19, -36, -91, -91, -17, -22, -18, -20, -70, -80,
350
- -81, -91, -57, -91, -60, -63, -71, -72, -91, -91,
351
- -62, -55 ]
333
+ -95, -4, -26, -5, -95, -25, -6, -95, -7, -95,
334
+ -8, -95, -95, -9, -95, -95, -10, -11, -95, -95,
335
+ -1, -95, -2, -70, -79, -95, -46, -45, -95, -49,
336
+ -43, -89, -48, -42, -40, -50, -44, -47, -41, -95,
337
+ -34, -79, -16, -12, -13, -15, -79, -77, -95, -3,
338
+ -34, -95, -79, -80, -95, -95, -38, -95, -95, -33,
339
+ -35, -95, -93, -95, -87, -95, -95, -95, -78, 156,
340
+ -31, -23, -25, -93, -29, -21, -95, -27, -30, -32,
341
+ -28, -95, -95, -95, -83, -86, -66, -65, -67, -69,
342
+ -68, -95, -53, -95, -57, -60, -95, -95, -59, -95,
343
+ -90, -91, -92, -95, -95, -95, -94, -95, -88, -14,
344
+ -95, -95, -24, -95, -34, -72, -95, -81, -82, -95,
345
+ -95, -52, -54, -95, -95, -62, -95, -95, -39, -51,
346
+ -37, -19, -36, -74, -95, -76, -95, -17, -22, -18,
347
+ -20, -71, -84, -85, -95, -58, -95, -61, -64, -73,
348
+ -75, -95, -56, -95, -63, -55 ]
352
349
 
353
350
  racc_goto_table = [
354
- 20, 49, 38, 62, 99, 27, 42, 84, 45, 94,
355
- 131, 47, 75, 73, 25, 44, 92, 125, 77, 89,
356
- 89, 38, 78, 79, 27, 105, 63, 53, 95, 111,
357
- 33, 67, 38, 56, 98, 27, 113, 43, 57, 68,
358
- 51, 70, 91, 80, 59, 85, 94, 46, 71, 33,
359
- 83, 38, 131, 121, 27, 82, 89, 42, 19, 45,
360
- 33, 89, nil, 103, nil, nil, 109, nil, nil, 124,
361
- nil, 74, 143, 139, 135, nil, nil, 137, 142, 33,
362
- 77, 115, nil, nil, 78, 79, nil, nil, 89, nil,
363
- nil, nil, 38, nil, nil, 27, 49, 38, nil, nil,
364
- 27, nil, nil, 70, 127, 80, nil, 132, 89, 129,
365
- 133, 85, 38, 49, 49, 27, 150, nil, nil, 38,
366
- 33, nil, 27, nil, 140, 33, nil, nil, nil, nil,
367
- 49, 145, nil, 74, nil, nil, nil, nil, nil, nil,
368
- 33, 149, nil, nil, nil, nil, nil, 33 ]
351
+ 20, 49, 99, 38, 42, 27, 62, 84, 95, 45,
352
+ 75, 77, 47, 25, 94, 78, 73, 79, 44, 132,
353
+ 92, 126, 38, 105, 27, 53, 89, 89, 111, 98,
354
+ 43, 63, 56, 38, 113, 27, 67, 33, 57, 70,
355
+ 68, 51, 91, 59, 80, 46, 85, 71, 83, 125,
356
+ 19, 94, 38, 82, 27, 42, 33, 122, nil, nil,
357
+ 45, nil, 103, 89, 132, nil, nil, 33, 89, 109,
358
+ nil, 146, 138, 77, 142, nil, nil, 78, 74, 79,
359
+ 140, 116, nil, nil, 145, nil, 33, nil, nil, nil,
360
+ nil, nil, nil, 38, nil, 27, 89, 49, 38, 154,
361
+ 27, 70, nil, 128, nil, nil, 80, 134, 130, nil,
362
+ 136, nil, nil, 85, 38, 49, 27, 49, 89, nil,
363
+ nil, 38, nil, 27, 143, nil, nil, 33, nil, nil,
364
+ nil, 148, 33, nil, 49, nil, nil, nil, nil, nil,
365
+ 74, nil, nil, nil, 153, nil, nil, nil, 33, nil,
366
+ nil, nil, nil, nil, nil, 33 ]
369
367
 
370
368
  racc_goto_check = [
371
- 2, 3, 14, 18, 29, 4, 15, 44, 14, 35,
372
- 27, 14, 21, 18, 26, 13, 33, 38, 23, 30,
373
- 30, 14, 24, 25, 4, 19, 40, 42, 37, 17,
374
- 20, 40, 14, 26, 36, 4, 19, 12, 28, 14,
375
- 39, 15, 32, 14, 26, 14, 35, 41, 16, 20,
376
- 43, 14, 27, 33, 4, 42, 30, 15, 1, 14,
377
- 20, 30, nil, 26, nil, nil, 13, nil, nil, 37,
378
- nil, 20, 29, 44, 21, nil, nil, 18, 35, 20,
379
- 23, 2, nil, nil, 24, 25, nil, nil, 30, nil,
380
- nil, nil, 14, nil, nil, 4, 3, 14, nil, nil,
381
- 4, nil, nil, 15, 26, 14, nil, 2, 30, 26,
382
- 2, 14, 14, 3, 3, 4, 37, nil, nil, 14,
383
- 20, nil, 4, nil, 26, 20, nil, nil, nil, nil,
384
- 3, 26, nil, 20, nil, nil, nil, nil, nil, nil,
385
- 20, 2, nil, nil, nil, nil, nil, 20 ]
369
+ 2, 3, 29, 14, 15, 4, 18, 44, 37, 14,
370
+ 21, 23, 14, 26, 35, 24, 18, 25, 13, 27,
371
+ 33, 38, 14, 19, 4, 42, 30, 30, 17, 36,
372
+ 12, 40, 26, 14, 19, 4, 40, 20, 28, 15,
373
+ 14, 39, 32, 26, 14, 41, 14, 16, 43, 37,
374
+ 1, 35, 14, 42, 4, 15, 20, 33, nil, nil,
375
+ 14, nil, 26, 30, 27, nil, nil, 20, 30, 13,
376
+ nil, 29, 21, 23, 44, nil, nil, 24, 20, 25,
377
+ 18, 2, nil, nil, 35, nil, 20, nil, nil, nil,
378
+ nil, nil, nil, 14, nil, 4, 30, 3, 14, 37,
379
+ 4, 15, nil, 26, nil, nil, 14, 2, 26, nil,
380
+ 2, nil, nil, 14, 14, 3, 4, 3, 30, nil,
381
+ nil, 14, nil, 4, 26, nil, nil, 20, nil, nil,
382
+ nil, 26, 20, nil, 3, nil, nil, nil, nil, nil,
383
+ 20, nil, nil, nil, 2, nil, nil, nil, 20, nil,
384
+ nil, nil, nil, nil, nil, 20 ]
386
385
 
387
386
  racc_goto_pointer = [
388
- nil, 58, 0, -19, -4, nil, nil, nil, nil, nil,
389
- nil, nil, 22, 0, -7, -9, -2, -42, -37, -37,
390
- 21, -38, nil, -32, -28, -27, 5, -96, 10, -53,
391
- -35, nil, -12, -38, nil, -45, -21, -27, -79, 16,
392
- -15, 29, 3, -2, -45 ]
387
+ nil, 50, 0, -19, -4, nil, nil, nil, nil, nil,
388
+ nil, nil, 15, 3, -6, -11, -3, -43, -34, -39,
389
+ 28, -40, nil, -39, -35, -33, 4, -87, 10, -55,
390
+ -28, nil, -12, -34, nil, -40, -26, -47, -75, 17,
391
+ -10, 27, 1, -4, -45 ]
393
392
 
394
393
  racc_goto_default = [
395
394
  nil, nil, nil, 22, 1, 3, 6, 8, 10, 13,
@@ -586,7 +585,7 @@ module_eval <<'.,.,', 'grammar.ra', 37
586
585
 
587
586
  module_eval <<'.,.,', 'grammar.ra', 51
588
587
  def _reduce_3( val, _values, result )
589
- if val[0].is_a?(AST::ASTArray)
588
+ if val[0].instance_of?(AST::ASTArray)
590
589
  val[0].push(val[1])
591
590
  result = val[0]
592
591
  else
@@ -661,11 +660,11 @@ module_eval <<'.,.,', 'grammar.ra', 95
661
660
 
662
661
  module_eval <<'.,.,', 'grammar.ra', 129
663
662
  def _reduce_17( val, _values, result )
664
- if val[0].is_a?(AST::ASTArray)
663
+ if val[0].instance_of?(AST::ASTArray)
665
664
  raise Puppet::ParseError, "Invalid name"
666
665
  end
667
666
  array = val[2]
668
- if array.is_a?(AST::ObjectInst)
667
+ if array.instance_of?(AST::ObjectInst)
669
668
  array = [array]
670
669
  end
671
670
  result = AST::ASTArray.new(
@@ -674,7 +673,7 @@ module_eval <<'.,.,', 'grammar.ra', 129
674
673
  )
675
674
  # this iterates across each specified objectinstance
676
675
  array.each { |instance|
677
- unless instance.is_a?(AST::ObjectInst)
676
+ unless instance.instance_of?(AST::ObjectInst)
678
677
  raise Puppet::Dev, "Got something that isn't an instance"
679
678
  end
680
679
  # now, i need to somehow differentiate between those things with
@@ -694,7 +693,7 @@ module_eval <<'.,.,', 'grammar.ra', 129
694
693
 
695
694
  module_eval <<'.,.,', 'grammar.ra', 145
696
695
  def _reduce_18( val, _values, result )
697
- if val[0].is_a?(AST::ASTArray)
696
+ if val[0].instance_of?(AST::ASTArray)
698
697
  Puppet.notice "invalid name"
699
698
  raise Puppet::ParseError, "Invalid name"
700
699
  end
@@ -716,7 +715,7 @@ module_eval <<'.,.,', 'grammar.ra', 145
716
715
  module_eval <<'.,.,', 'grammar.ra', 157
717
716
  def _reduce_19( val, _values, result )
718
717
  # a template setting for a type
719
- if val[0].is_a?(AST::ASTArray)
718
+ if val[0].instance_of?(AST::ASTArray)
720
719
  raise Puppet::ParseError, "Invalid type"
721
720
  end
722
721
  result = AST::TypeDefaults.new(
@@ -745,7 +744,7 @@ module_eval <<'.,.,', 'grammar.ra', 165
745
744
 
746
745
  module_eval <<'.,.,', 'grammar.ra', 179
747
746
  def _reduce_22( val, _values, result )
748
- if val[0].is_a?(AST::ObjectInst)
747
+ if val[0].instance_of?(AST::ObjectInst)
749
748
  result = AST::ASTArray.new(
750
749
  :line => @lexer.line,
751
750
  :file => @lexer.file,
@@ -836,7 +835,7 @@ module_eval <<'.,.,', 'grammar.ra', 230
836
835
 
837
836
  module_eval <<'.,.,', 'grammar.ra', 243
838
837
  def _reduce_36( val, _values, result )
839
- if val[0].is_a?(AST::ASTArray)
838
+ if val[0].instance_of?(AST::ASTArray)
840
839
  val[0].push(val[2])
841
840
  result = val[0]
842
841
  else
@@ -872,7 +871,7 @@ module_eval <<'.,.,', 'grammar.ra', 258
872
871
 
873
872
  module_eval <<'.,.,', 'grammar.ra', 271
874
873
  def _reduce_39( val, _values, result )
875
- if val[0].is_a?(AST::ASTArray)
874
+ if val[0].instance_of?(AST::ASTArray)
876
875
  result = val[0].push(val[2])
877
876
  else
878
877
  result = AST::ASTArray.new(
@@ -941,7 +940,7 @@ module_eval <<'.,.,', 'grammar.ra', 307
941
940
  module_eval <<'.,.,', 'grammar.ra', 324
942
941
  def _reduce_52( val, _values, result )
943
942
  options = val[3]
944
- unless options.is_a?(AST::ASTArray)
943
+ unless options.instance_of?(AST::ASTArray)
945
944
  options = AST::ASTArray.new(
946
945
  :line => @lexer.line,
947
946
  :file => @lexer.file,
@@ -950,7 +949,7 @@ module_eval <<'.,.,', 'grammar.ra', 324
950
949
  end
951
950
  result = AST::CaseStatement.new(
952
951
  :test => val[1],
953
- :options => val[3],
952
+ :options => options,
954
953
  :file => @lexer.file,
955
954
  :line => @lexer.line
956
955
  )
@@ -962,7 +961,7 @@ module_eval <<'.,.,', 'grammar.ra', 324
962
961
 
963
962
  module_eval <<'.,.,', 'grammar.ra', 338
964
963
  def _reduce_54( val, _values, result )
965
- if val[0].is_a?(AST::ASTArray)
964
+ if val[0].instance_of?(AST::ASTArray)
966
965
  val[0].push val[1]
967
966
  result = val[0]
968
967
  else
@@ -989,11 +988,28 @@ module_eval <<'.,.,', 'grammar.ra', 348
989
988
  end
990
989
  .,.,
991
990
 
992
- # reduce 56 omitted
991
+ module_eval <<'.,.,', 'grammar.ra', 360
992
+ def _reduce_56( val, _values, result )
993
+ result = AST::CaseOpt.new(
994
+ :pin => ":",
995
+ :value => val[0],
996
+ :file => @lexer.file,
997
+ :line => @lexer.line,
998
+ :statements => AST::ASTArray.new(
999
+ :line => @lexer.line,
1000
+ :file => @lexer.file,
1001
+ :children => []
1002
+ )
1003
+ )
1004
+ result
1005
+ end
1006
+ .,.,
1007
+
1008
+ # reduce 57 omitted
993
1009
 
994
- module_eval <<'.,.,', 'grammar.ra', 362
995
- def _reduce_57( val, _values, result )
996
- if val[0].is_a?(AST::ASTArray)
1010
+ module_eval <<'.,.,', 'grammar.ra', 374
1011
+ def _reduce_58( val, _values, result )
1012
+ if val[0].instance_of?(AST::ASTArray)
997
1013
  val[0].push(val[2])
998
1014
  result = val[0]
999
1015
  else
@@ -1007,8 +1023,8 @@ module_eval <<'.,.,', 'grammar.ra', 362
1007
1023
  end
1008
1024
  .,.,
1009
1025
 
1010
- module_eval <<'.,.,', 'grammar.ra', 372
1011
- def _reduce_58( val, _values, result )
1026
+ module_eval <<'.,.,', 'grammar.ra', 384
1027
+ def _reduce_59( val, _values, result )
1012
1028
  result = AST::Selector.new(
1013
1029
  :pin => "?",
1014
1030
  :line => @lexer.line,
@@ -1020,20 +1036,20 @@ module_eval <<'.,.,', 'grammar.ra', 372
1020
1036
  end
1021
1037
  .,.,
1022
1038
 
1023
- # reduce 59 omitted
1039
+ # reduce 60 omitted
1024
1040
 
1025
- module_eval <<'.,.,', 'grammar.ra', 374
1026
- def _reduce_60( val, _values, result )
1041
+ module_eval <<'.,.,', 'grammar.ra', 386
1042
+ def _reduce_61( val, _values, result )
1027
1043
  result = val[1]
1028
1044
  result
1029
1045
  end
1030
1046
  .,.,
1031
1047
 
1032
- # reduce 61 omitted
1048
+ # reduce 62 omitted
1033
1049
 
1034
- module_eval <<'.,.,', 'grammar.ra', 389
1035
- def _reduce_62( val, _values, result )
1036
- if val[0].is_a?(AST::ASTArray)
1050
+ module_eval <<'.,.,', 'grammar.ra', 401
1051
+ def _reduce_63( val, _values, result )
1052
+ if val[0].instance_of?(AST::ASTArray)
1037
1053
  val[0].push(val[2])
1038
1054
  result = val[0]
1039
1055
  else
@@ -1047,8 +1063,8 @@ module_eval <<'.,.,', 'grammar.ra', 389
1047
1063
  end
1048
1064
  .,.,
1049
1065
 
1050
- module_eval <<'.,.,', 'grammar.ra', 399
1051
- def _reduce_63( val, _values, result )
1066
+ module_eval <<'.,.,', 'grammar.ra', 411
1067
+ def _reduce_64( val, _values, result )
1052
1068
  result = AST::ObjectParam.new(
1053
1069
  :pin => "=>",
1054
1070
  :line => @lexer.line,
@@ -1060,8 +1076,8 @@ module_eval <<'.,.,', 'grammar.ra', 399
1060
1076
  end
1061
1077
  .,.,
1062
1078
 
1063
- module_eval <<'.,.,', 'grammar.ra', 407
1064
- def _reduce_64( val, _values, result )
1079
+ module_eval <<'.,.,', 'grammar.ra', 419
1080
+ def _reduce_65( val, _values, result )
1065
1081
  result = AST::String.new(
1066
1082
  :line => @lexer.line,
1067
1083
  :file => @lexer.file,
@@ -1071,8 +1087,8 @@ module_eval <<'.,.,', 'grammar.ra', 407
1071
1087
  end
1072
1088
  .,.,
1073
1089
 
1074
- module_eval <<'.,.,', 'grammar.ra', 414
1075
- def _reduce_65( val, _values, result )
1090
+ module_eval <<'.,.,', 'grammar.ra', 426
1091
+ def _reduce_66( val, _values, result )
1076
1092
  result = AST::String.new(
1077
1093
  :line => @lexer.line,
1078
1094
  :file => @lexer.file,
@@ -1082,8 +1098,8 @@ module_eval <<'.,.,', 'grammar.ra', 414
1082
1098
  end
1083
1099
  .,.,
1084
1100
 
1085
- module_eval <<'.,.,', 'grammar.ra', 421
1086
- def _reduce_66( val, _values, result )
1101
+ module_eval <<'.,.,', 'grammar.ra', 433
1102
+ def _reduce_67( val, _values, result )
1087
1103
  result = AST::String.new(
1088
1104
  :line => @lexer.line,
1089
1105
  :file => @lexer.file,
@@ -1093,8 +1109,8 @@ module_eval <<'.,.,', 'grammar.ra', 421
1093
1109
  end
1094
1110
  .,.,
1095
1111
 
1096
- module_eval <<'.,.,', 'grammar.ra', 428
1097
- def _reduce_67( val, _values, result )
1112
+ module_eval <<'.,.,', 'grammar.ra', 440
1113
+ def _reduce_68( val, _values, result )
1098
1114
  result = AST::Default.new(
1099
1115
  :line => @lexer.line,
1100
1116
  :file => @lexer.file,
@@ -1104,10 +1120,10 @@ module_eval <<'.,.,', 'grammar.ra', 428
1104
1120
  end
1105
1121
  .,.,
1106
1122
 
1107
- # reduce 68 omitted
1123
+ # reduce 69 omitted
1108
1124
 
1109
- module_eval <<'.,.,', 'grammar.ra', 466
1110
- def _reduce_69( val, _values, result )
1125
+ module_eval <<'.,.,', 'grammar.ra', 478
1126
+ def _reduce_70( val, _values, result )
1111
1127
  # importing files
1112
1128
  # yuk, i hate keywords
1113
1129
  # we'll probably have to have some kind of search path eventually
@@ -1146,30 +1162,50 @@ module_eval <<'.,.,', 'grammar.ra', 466
1146
1162
  end
1147
1163
  .,.,
1148
1164
 
1149
- module_eval <<'.,.,', 'grammar.ra', 476
1150
- def _reduce_70( val, _values, result )
1165
+ module_eval <<'.,.,', 'grammar.ra', 489
1166
+ def _reduce_71( val, _values, result )
1151
1167
  result = AST::CompDef.new(
1152
1168
  :name => AST::Name.new(:value => val[1], :line => @lexer.line),
1153
1169
  :args => val[2],
1154
1170
  :file => @lexer.file,
1155
1171
  :line => @lexer.line,
1172
+ :keyword => val[0],
1156
1173
  :code => val[4]
1157
1174
  )
1158
1175
  result
1159
1176
  end
1160
1177
  .,.,
1161
1178
 
1162
- module_eval <<'.,.,', 'grammar.ra', 492
1163
- def _reduce_71( val, _values, result )
1179
+ module_eval <<'.,.,', 'grammar.ra', 502
1180
+ def _reduce_72( val, _values, result )
1181
+ result = AST::CompDef.new(
1182
+ :name => AST::Name.new(:value => val[1], :line => @lexer.line),
1183
+ :args => val[2],
1184
+ :file => @lexer.file,
1185
+ :line => @lexer.line,
1186
+ :keyword => val[0],
1187
+ :code => AST::ASTArray.new(
1188
+ :line => @lexer.line,
1189
+ :file => @lexer.file,
1190
+ :children => []
1191
+ )
1192
+ )
1193
+ result
1194
+ end
1195
+ .,.,
1196
+
1197
+ module_eval <<'.,.,', 'grammar.ra', 519
1198
+ def _reduce_73( val, _values, result )
1164
1199
  #:args => val[2],
1165
1200
  args = {
1166
1201
  :name => AST::Name.new(:value => val[1], :line => @lexer.line),
1167
1202
  :file => @lexer.file,
1168
1203
  :line => @lexer.line,
1204
+ :keyword => val[0],
1169
1205
  :code => val[4]
1170
1206
  }
1171
1207
  # It'll be an ASTArray if we didn't get a parent
1172
- if val[2].is_a?(AST::Name)
1208
+ if val[2].instance_of?(AST::Name)
1173
1209
  args[:parentclass] = val[2]
1174
1210
  end
1175
1211
  result = AST::ClassDef.new(args)
@@ -1177,9 +1213,31 @@ module_eval <<'.,.,', 'grammar.ra', 492
1177
1213
  end
1178
1214
  .,.,
1179
1215
 
1180
- module_eval <<'.,.,', 'grammar.ra', 512
1181
- def _reduce_72( val, _values, result )
1182
- unless val[1].is_a?(AST::ASTArray)
1216
+ module_eval <<'.,.,', 'grammar.ra', 536
1217
+ def _reduce_74( val, _values, result )
1218
+ args = {
1219
+ :name => AST::Name.new(:value => val[1], :line => @lexer.line),
1220
+ :file => @lexer.file,
1221
+ :line => @lexer.line,
1222
+ :keyword => val[0],
1223
+ :code => AST::ASTArray.new(
1224
+ :line => @lexer.line,
1225
+ :file => @lexer.file,
1226
+ :children => []
1227
+ )
1228
+ }
1229
+ # It'll be an ASTArray if we didn't get a parent
1230
+ if val[2].instance_of?(AST::Name)
1231
+ args[:parentclass] = val[2]
1232
+ end
1233
+ result = AST::ClassDef.new(args)
1234
+ result
1235
+ end
1236
+ .,.,
1237
+
1238
+ module_eval <<'.,.,', 'grammar.ra', 557
1239
+ def _reduce_75( val, _values, result )
1240
+ unless val[1].instance_of?(AST::ASTArray)
1183
1241
  val[1] = AST::ASTArray.new(
1184
1242
  :line => val[1].line,
1185
1243
  :file => val[1].file,
@@ -1190,9 +1248,10 @@ module_eval <<'.,.,', 'grammar.ra', 512
1190
1248
  :file => @lexer.file,
1191
1249
  :line => @lexer.line,
1192
1250
  :names => val[1],
1251
+ :keyword => val[0],
1193
1252
  :code => val[4]
1194
1253
  }
1195
- if val[2].is_a?(AST::Name)
1254
+ if val[2].instance_of?(AST::Name)
1196
1255
  args[:parentclass] = val[2]
1197
1256
  end
1198
1257
  result = AST::NodeDef.new(args)
@@ -1200,11 +1259,39 @@ module_eval <<'.,.,', 'grammar.ra', 512
1200
1259
  end
1201
1260
  .,.,
1202
1261
 
1203
- # reduce 73 omitted
1262
+ module_eval <<'.,.,', 'grammar.ra', 580
1263
+ def _reduce_76( val, _values, result )
1264
+ unless val[1].instance_of?(AST::ASTArray)
1265
+ val[1] = AST::ASTArray.new(
1266
+ :line => val[1].line,
1267
+ :file => val[1].file,
1268
+ :children => [val[1]]
1269
+ )
1270
+ end
1271
+ args = {
1272
+ :file => @lexer.file,
1273
+ :line => @lexer.line,
1274
+ :keyword => val[0],
1275
+ :names => val[1],
1276
+ :code => AST::ASTArray.new(
1277
+ :line => @lexer.line,
1278
+ :file => @lexer.file,
1279
+ :children => []
1280
+ )
1281
+ }
1282
+ if val[2].instance_of?(AST::Name)
1283
+ args[:parentclass] = val[2]
1284
+ end
1285
+ result = AST::NodeDef.new(args)
1286
+ result
1287
+ end
1288
+ .,.,
1204
1289
 
1205
- module_eval <<'.,.,', 'grammar.ra', 526
1206
- def _reduce_74( val, _values, result )
1207
- if val[0].is_a?(AST::ASTArray)
1290
+ # reduce 77 omitted
1291
+
1292
+ module_eval <<'.,.,', 'grammar.ra', 594
1293
+ def _reduce_78( val, _values, result )
1294
+ if val[0].instance_of?(AST::ASTArray)
1208
1295
  result = val[0]
1209
1296
  result.push val[1]
1210
1297
  else
@@ -1218,8 +1305,8 @@ module_eval <<'.,.,', 'grammar.ra', 526
1218
1305
  end
1219
1306
  .,.,
1220
1307
 
1221
- module_eval <<'.,.,', 'grammar.ra', 534
1222
- def _reduce_75( val, _values, result )
1308
+ module_eval <<'.,.,', 'grammar.ra', 602
1309
+ def _reduce_79( val, _values, result )
1223
1310
  result = AST::ASTArray.new(
1224
1311
  :line => @lexer.line,
1225
1312
  :file => @lexer.file,
@@ -1229,34 +1316,34 @@ module_eval <<'.,.,', 'grammar.ra', 534
1229
1316
  end
1230
1317
  .,.,
1231
1318
 
1232
- # reduce 76 omitted
1319
+ # reduce 80 omitted
1233
1320
 
1234
- module_eval <<'.,.,', 'grammar.ra', 539
1235
- def _reduce_77( val, _values, result )
1321
+ module_eval <<'.,.,', 'grammar.ra', 607
1322
+ def _reduce_81( val, _values, result )
1236
1323
  result = val[1]
1237
1324
  result
1238
1325
  end
1239
1326
  .,.,
1240
1327
 
1241
- module_eval <<'.,.,', 'grammar.ra', 550
1242
- def _reduce_78( val, _values, result )
1243
- if val[1].is_a?(AST::ASTArray)
1328
+ module_eval <<'.,.,', 'grammar.ra', 618
1329
+ def _reduce_82( val, _values, result )
1330
+ if val[1].instance_of?(AST::ASTArray)
1244
1331
  result = val[1]
1245
1332
  else
1246
1333
  result = AST::ASTArray.new(
1247
1334
  :line => @lexer.line,
1248
1335
  :file => @lexer.file,
1249
- :children => [val[0]]
1336
+ :children => [val[1]]
1250
1337
  )
1251
1338
  end
1252
1339
  result
1253
1340
  end
1254
1341
  .,.,
1255
1342
 
1256
- # reduce 79 omitted
1343
+ # reduce 83 omitted
1257
1344
 
1258
- module_eval <<'.,.,', 'grammar.ra', 564
1259
- def _reduce_80( val, _values, result )
1345
+ module_eval <<'.,.,', 'grammar.ra', 632
1346
+ def _reduce_84( val, _values, result )
1260
1347
  if val[0].instance_of?(AST::ASTArray)
1261
1348
  val[0].push(val[2])
1262
1349
  result = val[0]
@@ -1271,8 +1358,8 @@ module_eval <<'.,.,', 'grammar.ra', 564
1271
1358
  end
1272
1359
  .,.,
1273
1360
 
1274
- module_eval <<'.,.,', 'grammar.ra', 572
1275
- def _reduce_81( val, _values, result )
1361
+ module_eval <<'.,.,', 'grammar.ra', 640
1362
+ def _reduce_85( val, _values, result )
1276
1363
  result = AST::CompArgument.new(
1277
1364
  :line => @lexer.line,
1278
1365
  :file => @lexer.file,
@@ -1282,8 +1369,8 @@ module_eval <<'.,.,', 'grammar.ra', 572
1282
1369
  end
1283
1370
  .,.,
1284
1371
 
1285
- module_eval <<'.,.,', 'grammar.ra', 579
1286
- def _reduce_82( val, _values, result )
1372
+ module_eval <<'.,.,', 'grammar.ra', 647
1373
+ def _reduce_86( val, _values, result )
1287
1374
  result = AST::CompArgument.new(
1288
1375
  :line => @lexer.line,
1289
1376
  :file => @lexer.file,
@@ -1293,10 +1380,10 @@ module_eval <<'.,.,', 'grammar.ra', 579
1293
1380
  end
1294
1381
  .,.,
1295
1382
 
1296
- # reduce 83 omitted
1383
+ # reduce 87 omitted
1297
1384
 
1298
- module_eval <<'.,.,', 'grammar.ra', 588
1299
- def _reduce_84( val, _values, result )
1385
+ module_eval <<'.,.,', 'grammar.ra', 656
1386
+ def _reduce_88( val, _values, result )
1300
1387
  result = AST::Name.new(
1301
1388
  :value => val[1],
1302
1389
  :file => @lexer.file,
@@ -1306,8 +1393,8 @@ module_eval <<'.,.,', 'grammar.ra', 588
1306
1393
  end
1307
1394
  .,.,
1308
1395
 
1309
- module_eval <<'.,.,', 'grammar.ra', 597
1310
- def _reduce_85( val, _values, result )
1396
+ module_eval <<'.,.,', 'grammar.ra', 665
1397
+ def _reduce_89( val, _values, result )
1311
1398
  name = val[0].sub(/^\$/,'')
1312
1399
  result = AST::Variable.new(
1313
1400
  :line => @lexer.line,
@@ -1318,26 +1405,29 @@ module_eval <<'.,.,', 'grammar.ra', 597
1318
1405
  end
1319
1406
  .,.,
1320
1407
 
1321
- module_eval <<'.,.,', 'grammar.ra', 606
1322
- def _reduce_86( val, _values, result )
1323
- if val[1].is_a?(AST::ASTArray)
1408
+ module_eval <<'.,.,', 'grammar.ra', 677
1409
+ def _reduce_90( val, _values, result )
1410
+ if val[1].instance_of?(AST::ASTArray)
1324
1411
  result = val[1]
1325
1412
  else
1326
- result = AST::ASTArray.new
1327
- result.push val[1]
1413
+ result = AST::ASTArray.new(
1414
+ :line => @lexer.line,
1415
+ :file => @lexer.file,
1416
+ :children => [val[1]]
1417
+ )
1328
1418
  end
1329
1419
  result
1330
1420
  end
1331
1421
  .,.,
1332
1422
 
1333
- # reduce 87 omitted
1423
+ # reduce 91 omitted
1334
1424
 
1335
- # reduce 88 omitted
1425
+ # reduce 92 omitted
1336
1426
 
1337
- # reduce 89 omitted
1427
+ # reduce 93 omitted
1338
1428
 
1339
- module_eval <<'.,.,', 'grammar.ra', 611
1340
- def _reduce_90( val, _values, result )
1429
+ module_eval <<'.,.,', 'grammar.ra', 682
1430
+ def _reduce_94( val, _values, result )
1341
1431
  result = nil
1342
1432
  result
1343
1433
  end