summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2005-08-24 02:53:17 +0000
committerLuke Kanies <luke@madstop.com>2005-08-24 02:53:17 +0000
commit386ebee31dcc67ac5a7fb569ee58c2365e0666e1 (patch)
tree78db9c5928457c23907f87a2d105185bb6664e51 /lib/puppet
parent583a9c6e2a7469e4ae3b72264010a5d8d0dab867 (diff)
downloadpuppet-386ebee31dcc67ac5a7fb569ee58c2365e0666e1.tar.gz
puppet-386ebee31dcc67ac5a7fb569ee58c2365e0666e1.tar.xz
puppet-386ebee31dcc67ac5a7fb569ee58c2365e0666e1.zip
replacing if statements with case statement, and adding defaults for both selectors and case statements
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@587 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/parser/ast.rb141
-rw-r--r--lib/puppet/parser/grammar.ra231
-rw-r--r--lib/puppet/parser/lexer.rb2
-rw-r--r--lib/puppet/parser/parser.rb739
-rw-r--r--lib/puppet/parser/scope.rb2
5 files changed, 625 insertions, 490 deletions
diff --git a/lib/puppet/parser/ast.rb b/lib/puppet/parser/ast.rb
index ff237f62e..a5aa86ab2 100644
--- a/lib/puppet/parser/ast.rb
+++ b/lib/puppet/parser/ast.rb
@@ -336,6 +336,10 @@ module Puppet
#---------------------------------------------------------------
#---------------------------------------------------------------
+ class Default < AST::Leaf; end
+ #---------------------------------------------------------------
+
+ #---------------------------------------------------------------
class Type < AST::Leaf; end
#---------------------------------------------------------------
@@ -467,8 +471,6 @@ module Puppet
def initialize(hash)
super
- Puppet.debug "%s id is %s" % [@name, object_id]
-
# we don't have to evaluate because we require bare words
# for types
objtype = @type.value
@@ -764,6 +766,141 @@ module Puppet
#---------------------------------------------------------------
#---------------------------------------------------------------
+ class CaseStatement < AST::Branch
+ attr_accessor :test, :options, :default
+
+ # 'if' is a bit special, since we don't want to continue
+ # evaluating if a test turns up true
+ def evaluate(scope)
+ value = @test.evaluate(scope)
+
+ retvalue = nil
+ found = false
+ default = nil
+ @options.each { |option|
+ if option.eachvalue { |opval|
+ if opval == value
+ break true
+ end
+ }
+ # we found a matching option
+ retvalue = option.evaluate(scope)
+ break
+ end
+ }
+
+ unless found
+ if defined? @default
+ retvalue = @default.evaluate(scope)
+ else
+ Puppet.debug "No true answers and no default"
+ end
+ end
+ return retvalue
+ end
+
+ def initialize(hash)
+ values = {}
+
+ super
+ # this won't work if we move away from only allowing constants
+ # here
+ # but for now, it's fine and useful
+ @options.each { |option|
+ if option.default?
+ @default = option
+ end
+ option.eachvalue { |val|
+ if values.include?(val)
+ raise Puppet::ParseError,
+ "Value %s appears twice in case statement" %
+ val
+ else
+ values[val] = true
+ end
+ }
+ }
+ end
+
+ def tree(indent = 0)
+ rettree = [
+ @test.tree(indent + 1),
+ ((@@indline * indent) + self.typewrap(self.pin)),
+ @options.tree(indent + 1)
+ ]
+
+ return rettree.flatten.join("\n")
+ end
+
+ def each
+ [@test,@options].each { |child| yield child }
+ end
+ end
+ #---------------------------------------------------------------
+
+ #---------------------------------------------------------------
+ class CaseOpt < AST::Branch
+ attr_accessor :value, :statements
+
+ # CaseOpt is a bit special -- we just want the value first,
+ # so that CaseStatement can compare, and then it will selectively
+ # decide whether to fully evaluate this option
+
+ def default?
+ if defined? @default
+ return @default
+ end
+
+ if @value.is_a?(AST::ASTArray)
+ @value.each { |subval|
+ if subval.is_a?(AST::Default)
+ @default = true
+ break
+ end
+ }
+ else
+ if @value.is_a?(AST::Default)
+ @default = true
+ end
+ end
+
+ unless defined? @default
+ @default = false
+ end
+
+ return @default
+ end
+
+ def eachvalue
+ if @value.is_a?(AST::ASTArray)
+ @value.each { |subval|
+ yield subval.value
+ }
+ else
+ yield @value.value
+ end
+ end
+
+ def evaluate(scope)
+ return @statements.evaluate(scope.newscope)
+ end
+
+ def tree(indent = 0)
+ rettree = [
+ @value.tree(indent + 1),
+ ((@@indline * indent) + self.typewrap(self.pin)),
+ @statements.tree(indent + 1)
+ ]
+ return rettree.flatten.join("\n")
+ end
+
+ def each
+ [@value,@statements].each { |child| yield child }
+ end
+ end
+ #---------------------------------------------------------------
+
+ #---------------------------------------------------------------
class Selector < AST::Branch
attr_accessor :param, :value
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra
index 7386a0e15..9f269566d 100644
--- a/lib/puppet/parser/grammar.ra
+++ b/lib/puppet/parser/grammar.ra
@@ -10,7 +10,7 @@ class Puppet::Parser::Parser
token LBRACK QTEXT RBRACK LBRACE RBRACE SYMBOL FARROW COMMA TRUE FALSE EQUALS
token QMARK LPAREN RPAREN ISEQUAL GREATEREQUAL GREATERTHAN LESSTHAN LESSEQUAL NOTEQUAL
token IF ELSE IMPORT DEFINE ELSIF VARIABLE CLASS INHERITS NODE BOOLEAN DOT COLON TYPE
-token NAME SEMIC
+token NAME SEMIC CASE DEFAULT
rule
program: statements {
@@ -53,10 +53,10 @@ statements: statement
end
}
+#| selector
statement: object
| assignment
- | selector
- | iftest
+ | casestatement
| import
| definition
| hostclass
@@ -274,96 +274,151 @@ objectref: name LBRACK rvalue RBRACK {
)
}
-iftest: IF test LBRACE statements RBRACE {
- result = AST::If.new(
- :pin => "if",
+casestatement: CASE rvalue LBRACE caseopts RBRACE {
+ options = val[3]
+ unless options.is_a?(AST::ASTArray)
+ options = AST::ASTArray.new(
+ :line => @lexer.line,
+ :file => @lexer.file,
+ :children => [val[3]]
+ )
+ end
+ result = AST::CaseStatement.new(
:test => val[1],
+ :options => val[3],
:file => @lexer.file,
- :line => @lexer.line,
- :statements => val[3]
+ :line => @lexer.line
)
}
- | IF test LBRACE statements RBRACE elsifs ELSE LBRACE statements RBRACE {
- # make sure our elsifs are an array, as it will save lots of
- # effort later
- unless val[5].is_a?(AST::ASTArray)
- val[5] = AST::ASTArray.new(
+
+caseopts: caseopt
+ | caseopts caseopt {
+ if val[0].is_a?(AST::ASTArray)
+ val[0].push val[1]
+ result = val[0]
+ else
+ result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
- :children => [val[5]]
+ :children => [val[0], val[1]]
)
end
-
- result = AST::If.new(
- :pin => "if",
- :test => val[1],
- :statements => val[3],
- :file => @lexer.file,
- :line => @lexer.line,
- :else => val[8],
- :elsif => val[5]
- )
-
}
- | IF test LBRACE statements RBRACE ELSE LBRACE statements RBRACE {
- result = AST::If.new(
- :pin => "if",
- :test => val[1],
- :statements => val[3],
+
+caseopt: casevalues COLON LBRACE statements RBRACE {
+ result = AST::CaseOpt.new(
+ :pin => ":",
+ :value => val[0],
:file => @lexer.file,
:line => @lexer.line,
- :else => val[7]
+ :statements => val[3]
)
-
}
-elsifs: ELSIF test LBRACE statements RBRACE {
- result = AST::If.new(
- :pin => "elseif",
- :test => val[1],
- :file => @lexer.file,
- :statements => val[3],
- :line => @lexer.line
- )
-}
- | elsifs ELSIF test LBRACE statements RBRACE {
- second = AST::If.new(
- :pin => "elsif",
- :test => val[2],
- :statements => val[4],
- :file => @lexer.file,
- :line => @lexer.line
- )
-
+casevalues: selectlhand
+ | casevalues COMMA selectlhand {
if val[0].is_a?(AST::ASTArray)
- val[0].push(second)
+ val[0].push(val[2])
result = val[0]
else
result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
- :children => [val[0],second]
+ :children => [val[0],val[2]]
)
end
-}
-
-test: rvalue
- | rvalue testop rvalue {
- result = AST::Test.new(
- :pin => val[1],
- :line => @lexer.line,
- :file => @lexer.file,
- :lhs => val[0],
- :rhs => val[2]
- )
}
-testop: ISEQUAL
- | GREATEREQUAL
- | GREATERTHAN
- | LESSTHAN
- | LESSEQUAL
- | NOTEQUAL
+#iftest: IF test LBRACE statements RBRACE {
+# result = AST::If.new(
+# :pin => "if",
+# :test => val[1],
+# :file => @lexer.file,
+# :line => @lexer.line,
+# :statements => val[3]
+# )
+#}
+# | IF test LBRACE statements RBRACE elsifs ELSE LBRACE statements RBRACE {
+# # make sure our elsifs are an array, as it will save lots of
+# # effort later
+# unless val[5].is_a?(AST::ASTArray)
+# val[5] = AST::ASTArray.new(
+# :line => @lexer.line,
+# :file => @lexer.file,
+# :children => [val[5]]
+# )
+# end
+#
+# result = AST::If.new(
+# :pin => "if",
+# :test => val[1],
+# :statements => val[3],
+# :file => @lexer.file,
+# :line => @lexer.line,
+# :else => val[8],
+# :elsif => val[5]
+# )
+#
+#}
+# | IF test LBRACE statements RBRACE ELSE LBRACE statements RBRACE {
+# result = AST::If.new(
+# :pin => "if",
+# :test => val[1],
+# :statements => val[3],
+# :file => @lexer.file,
+# :line => @lexer.line,
+# :else => val[7]
+# )
+#
+#}
+#
+#elsifs: ELSIF test LBRACE statements RBRACE {
+# result = AST::If.new(
+# :pin => "elseif",
+# :test => val[1],
+# :file => @lexer.file,
+# :statements => val[3],
+# :line => @lexer.line
+# )
+#}
+# | elsifs ELSIF test LBRACE statements RBRACE {
+# second = AST::If.new(
+# :pin => "elsif",
+# :test => val[2],
+# :statements => val[4],
+# :file => @lexer.file,
+# :line => @lexer.line
+# )
+#
+# if val[0].is_a?(AST::ASTArray)
+# val[0].push(second)
+# result = val[0]
+# else
+# result = AST::ASTArray.new(
+# :line => @lexer.line,
+# :file => @lexer.file,
+# :children => [val[0],second]
+# )
+# end
+#}
+#
+#test: rvalue
+# | rvalue testop rvalue {
+# result = AST::Test.new(
+# :pin => val[1],
+# :line => @lexer.line,
+# :file => @lexer.file,
+# :lhs => val[0],
+# :rhs => val[2]
+# )
+#}
+#
+#testop: ISEQUAL
+# | GREATEREQUAL
+# | GREATERTHAN
+# | LESSTHAN
+# | LESSEQUAL
+# | NOTEQUAL
selector: variable QMARK svalues {
result = AST::Selector.new(
@@ -393,23 +448,43 @@ sintvalues: selectval
}
selectval: selectlhand FARROW rvalue {
- leaf = AST::String.new(
- :line => @lexer.line,
- :file => @lexer.file,
- :value => val[0]
- )
result = AST::ObjectParam.new(
:pin => "=>",
:line => @lexer.line,
:file => @lexer.file,
- :param => leaf,
+ :param => val[0],
:value => val[2]
)
}
-selectlhand: NAME
- | TYPE
- | QTEXT
+selectlhand: NAME {
+ result = AST::String.new(
+ :line => @lexer.line,
+ :file => @lexer.file,
+ :value => val[0]
+ )
+}
+ | TYPE {
+ result = AST::String.new(
+ :line => @lexer.line,
+ :file => @lexer.file,
+ :value => val[0]
+ )
+}
+ | QTEXT {
+ result = AST::String.new(
+ :line => @lexer.line,
+ :file => @lexer.file,
+ :value => val[0]
+ )
+}
+ | DEFAULT {
+ result = AST::Default.new(
+ :line => @lexer.line,
+ :file => @lexer.file,
+ :value => val[0]
+ )
+}
import: IMPORT QTEXT {
# importing files
diff --git a/lib/puppet/parser/lexer.rb b/lib/puppet/parser/lexer.rb
index d9d9d5f5c..f33b15163 100644
--- a/lib/puppet/parser/lexer.rb
+++ b/lib/puppet/parser/lexer.rb
@@ -55,7 +55,9 @@ module Puppet
"class" => :CLASS,
"node" => :NODE,
"host" => :NODE,
+ "case" => :CASE,
"true" => :BOOLEAN,
+ "default" => :DEFAULT,
"false" => :BOOLEAN,
"inherits" => :INHERITS,
"define" => :DEFINE
diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb
index 3b42bd8d7..4f689755e 100644
--- a/lib/puppet/parser/parser.rb
+++ b/lib/puppet/parser/parser.rb
@@ -31,7 +31,7 @@ module Puppet
class Parser < Racc::Parser
-module_eval <<'..end grammar.ra modeval..ida89b5273aa', 'grammar.ra', 573
+module_eval <<'..end grammar.ra modeval..id21701493a9', 'grammar.ra', 648
attr_writer :stack
attr_reader :file
@@ -132,279 +132,212 @@ end
def string=(string)
@lexer.string = string
end
-..end grammar.ra modeval..ida89b5273aa
+..end grammar.ra modeval..id21701493a9
##### racc 1.4.4 generates ###
racc_reduce_table = [
0, 0, :racc_error,
- 1, 38, :_reduce_1,
- 1, 39, :_reduce_none,
- 2, 39, :_reduce_3,
- 1, 40, :_reduce_none,
- 1, 40, :_reduce_none,
- 1, 40, :_reduce_none,
- 1, 40, :_reduce_none,
- 1, 40, :_reduce_none,
- 1, 40, :_reduce_none,
- 1, 40, :_reduce_none,
- 5, 41, :_reduce_11,
- 5, 41, :_reduce_12,
- 5, 41, :_reduce_13,
- 3, 54, :_reduce_14,
- 1, 49, :_reduce_none,
- 3, 49, :_reduce_16,
- 0, 50, :_reduce_none,
+ 1, 40, :_reduce_1,
+ 1, 41, :_reduce_none,
+ 2, 41, :_reduce_3,
+ 1, 42, :_reduce_none,
+ 1, 42, :_reduce_none,
+ 1, 42, :_reduce_none,
+ 1, 42, :_reduce_none,
+ 1, 42, :_reduce_none,
+ 1, 42, :_reduce_none,
+ 5, 43, :_reduce_10,
+ 5, 43, :_reduce_11,
+ 5, 43, :_reduce_12,
+ 3, 55, :_reduce_13,
1, 50, :_reduce_none,
- 1, 48, :_reduce_19,
- 1, 53, :_reduce_20,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 3, 42, :_reduce_26,
- 0, 51, :_reduce_27,
- 1, 51, :_reduce_28,
- 3, 51, :_reduce_29,
- 3, 60, :_reduce_30,
+ 3, 50, :_reduce_15,
+ 0, 51, :_reduce_none,
+ 1, 51, :_reduce_none,
+ 1, 49, :_reduce_18,
+ 1, 54, :_reduce_19,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 3, 44, :_reduce_25,
+ 0, 52, :_reduce_26,
+ 1, 52, :_reduce_27,
+ 3, 52, :_reduce_28,
+ 3, 62, :_reduce_29,
+ 1, 63, :_reduce_none,
+ 3, 63, :_reduce_31,
1, 61, :_reduce_none,
- 3, 61, :_reduce_32,
- 1, 59, :_reduce_none,
- 1, 59, :_reduce_none,
- 1, 59, :_reduce_none,
- 1, 59, :_reduce_none,
- 1, 59, :_reduce_none,
- 1, 59, :_reduce_none,
- 1, 59, :_reduce_none,
- 1, 59, :_reduce_none,
- 1, 59, :_reduce_none,
- 1, 56, :_reduce_42,
- 1, 63, :_reduce_43,
- 4, 64, :_reduce_44,
- 5, 44, :_reduce_45,
- 10, 44, :_reduce_46,
- 9, 44, :_reduce_47,
- 5, 66, :_reduce_48,
- 6, 66, :_reduce_49,
- 1, 65, :_reduce_none,
- 3, 65, :_reduce_51,
- 1, 67, :_reduce_none,
- 1, 67, :_reduce_none,
- 1, 67, :_reduce_none,
- 1, 67, :_reduce_none,
- 1, 67, :_reduce_none,
+ 1, 61, :_reduce_none,
+ 1, 61, :_reduce_none,
+ 1, 61, :_reduce_none,
+ 1, 61, :_reduce_none,
+ 1, 61, :_reduce_none,
+ 1, 61, :_reduce_none,
+ 1, 61, :_reduce_none,
+ 1, 61, :_reduce_none,
+ 1, 57, :_reduce_41,
+ 1, 65, :_reduce_42,
+ 4, 66, :_reduce_43,
+ 5, 45, :_reduce_44,
1, 67, :_reduce_none,
- 3, 43, :_reduce_58,
- 1, 68, :_reduce_none,
- 3, 68, :_reduce_60,
- 1, 70, :_reduce_none,
- 3, 70, :_reduce_62,
- 3, 69, :_reduce_63,
- 1, 71, :_reduce_none,
+ 2, 67, :_reduce_46,
+ 5, 68, :_reduce_47,
+ 1, 69, :_reduce_none,
+ 3, 69, :_reduce_49,
+ 3, 58, :_reduce_50,
1, 71, :_reduce_none,
- 1, 71, :_reduce_none,
- 2, 45, :_reduce_67,
- 6, 46, :_reduce_68,
- 7, 47, :_reduce_69,
- 0, 74, :_reduce_70,
- 1, 72, :_reduce_none,
- 3, 72, :_reduce_72,
- 3, 72, :_reduce_73,
- 1, 75, :_reduce_none,
- 3, 75, :_reduce_75,
- 3, 76, :_reduce_76,
- 1, 76, :_reduce_77,
+ 3, 71, :_reduce_52,
1, 73, :_reduce_none,
- 2, 73, :_reduce_79,
- 1, 57, :_reduce_80,
- 3, 58, :_reduce_81,
- 1, 62, :_reduce_none,
- 1, 62, :_reduce_none,
- 0, 52, :_reduce_none,
- 1, 52, :_reduce_85 ]
+ 3, 73, :_reduce_54,
+ 3, 72, :_reduce_55,
+ 1, 70, :_reduce_56,
+ 1, 70, :_reduce_57,
+ 1, 70, :_reduce_58,
+ 1, 70, :_reduce_59,
+ 2, 46, :_reduce_60,
+ 6, 47, :_reduce_61,
+ 7, 48, :_reduce_62,
+ 0, 76, :_reduce_63,
+ 1, 74, :_reduce_none,
+ 3, 74, :_reduce_65,
+ 3, 74, :_reduce_66,
+ 1, 77, :_reduce_none,
+ 3, 77, :_reduce_68,
+ 3, 78, :_reduce_69,
+ 1, 78, :_reduce_70,
+ 1, 75, :_reduce_none,
+ 2, 75, :_reduce_72,
+ 1, 59, :_reduce_73,
+ 3, 60, :_reduce_74,
+ 1, 64, :_reduce_none,
+ 1, 64, :_reduce_none,
+ 0, 53, :_reduce_none,
+ 1, 53, :_reduce_78 ]
-racc_reduce_n = 86
+racc_reduce_n = 79
-racc_shift_n = 153
+racc_shift_n = 134
racc_action_table = [
- 22, 24, 22, 24, 1, 54, 5, 9, 39, 12,
- 14, 22, 24, 22, 24, 82, 3, 7, 116, 84,
- 85, 59, 22, 24, 115, 28, 126, 28, 96, 31,
- 108, 31, 3, 7, 3, 7, 28, 59, 28, 62,
- 31, 7, 31, 3, 7, 3, 7, 28, 22, 24,
- 89, 31, 56, 57, 3, 7, 97, 22, 24, 22,
- 24, 22, 24, 128, 22, 24, 129, 113, 56, 57,
- 22, 24, 114, 28, 98, 22, 24, 31, 59, 103,
- 3, 7, 28, 80, 28, 80, 28, 63, 31, 28,
- 7, 3, 7, 31, 69, 28, 3, 7, 133, 31,
- 28, 121, 3, 7, 31, 22, 24, 3, 7, 56,
- 57, 122, 136, 80, 1, 137, 5, 9, 124, 12,
- 14, 125, 111, 109, 84, 85, 3, 7, 102, 102,
- 28, 78, 63, 55, 31, 44, 134, 3, 7, 1,
- 140, 5, 9, 99, 12, 14, 98, 138, 37, 80,
- 37, 3, 7, 141, 152, 44, 1, 42, 5, 9,
- 144, 12, 14, 41, 146, 40, 39, 38, 3, 7,
- 1, 151, 5, 9, 37, 12, 14, 36, 7, nil,
- nil, nil, 3, 7, nil, 149, nil, 1, nil, 5,
- 9, nil, 12, 14, nil, nil, nil, nil, nil, 3,
- 7, 1, 147, 5, 9, nil, 12, 14, nil, nil,
- nil, nil, nil, 3, 7, nil, nil, nil, 1, nil,
- 5, 9, nil, 12, 14, nil, nil, nil, nil, nil,
- 3, 7, 1, nil, 5, 9, nil, 12, 14, nil,
- nil, nil, nil, nil, 3, 7, 1, nil, 5, 9,
- nil, 12, 14, nil, nil, nil, nil, nil, 3, 7,
- 1, nil, 5, 9, nil, 12, 14, nil, nil, nil,
- nil, nil, 3, 7, 1, nil, 5, 9, nil, 12,
- 14, nil, nil, nil, nil, nil, 3, 7, 1, nil,
- 5, 9, nil, 12, 14, nil, nil, nil, nil, nil,
- 3, 7, 1, nil, 5, 9, nil, 12, 14, nil,
- nil, nil, nil, nil, 3, 7, 1, nil, 5, 9,
- nil, 12, 14, nil, nil, nil, nil, nil, 3, 7,
- 1, nil, 5, 9, nil, 12, 14, nil, nil, nil,
- nil, nil, 3, 7, 48, 49, 50, 51, 52, 53 ]
+ 76, 110, 79, 98, 48, 76, 89, 76, 91, 97,
+ 108, 70, 76, 93, 76, 71, 72, 88, 124, 76,
+ 71, 72, 91, 22, 24, 109, 88, 47, 22, 24,
+ 36, 74, 75, 22, 24, 78, 74, 75, 74, 75,
+ 78, 99, 78, 74, 75, 74, 75, 78, 27, 78,
+ 74, 75, 31, 27, 78, 2, 5, 31, 27, 100,
+ 2, 5, 31, 22, 24, 2, 5, 5, 22, 24,
+ 22, 24, 63, 22, 24, 103, 62, 106, 41, 22,
+ 24, 40, 63, 46, 22, 24, 87, 114, 27, 22,
+ 24, 63, 116, 27, 46, 27, 53, 31, 27, 31,
+ 2, 5, 2, 5, 27, 133, 5, 118, 31, 27,
+ 122, 2, 5, 31, 27, 119, 2, 5, 31, 5,
+ 41, 2, 5, 4, 7, 132, 11, 13, 4, 7,
+ 40, 11, 13, 2, 5, 38, 9, 69, 2, 5,
+ 126, 9, 37, 4, 7, 128, 11, 13, 4, 7,
+ 36, 11, 13, 2, 5, 35, 9, 20, 2, 5,
+ 63, 9, 4, 7, 19, 11, 13, 4, 7, 117,
+ 11, 13, 2, 5, nil, 9, nil, 2, 5, nil,
+ 9, 4, 7, nil, 11, 13, 4, 7, nil, 11,
+ 13, 2, 5, nil, 9, nil, 2, 5, nil, 9 ]
racc_action_check = [
- 1, 1, 83, 83, 96, 27, 96, 96, 27, 96,
- 96, 89, 89, 54, 54, 46, 96, 96, 94, 46,
- 46, 112, 47, 47, 94, 1, 106, 83, 64, 1,
- 87, 83, 1, 1, 83, 83, 89, 37, 54, 37,
- 89, 63, 54, 89, 89, 54, 54, 47, 98, 98,
- 61, 47, 112, 112, 47, 47, 66, 99, 99, 129,
- 129, 39, 39, 109, 113, 113, 109, 92, 37, 37,
- 137, 137, 93, 98, 80, 22, 22, 98, 62, 79,
- 98, 98, 99, 97, 129, 44, 39, 42, 129, 113,
- 99, 129, 129, 113, 39, 137, 113, 113, 117, 137,
- 22, 100, 137, 137, 22, 40, 40, 22, 22, 62,
- 62, 101, 127, 102, 117, 127, 117, 117, 103, 117,
- 117, 104, 91, 88, 91, 91, 117, 117, 81, 74,
- 40, 41, 38, 34, 40, 33, 118, 40, 40, 88,
- 135, 88, 88, 73, 88, 88, 69, 128, 68, 134,
- 23, 88, 88, 136, 150, 18, 135, 14, 135, 135,
- 139, 135, 135, 13, 142, 12, 11, 9, 135, 135,
- 150, 148, 150, 150, 6, 150, 150, 5, 116, nil,
- nil, nil, 150, 150, nil, 145, nil, 148, nil, 148,
- 148, nil, 148, 148, nil, nil, nil, nil, nil, 148,
- 148, 145, 143, 145, 145, nil, 145, 145, nil, nil,
- nil, nil, nil, 145, 145, nil, nil, nil, 143, nil,
- 143, 143, nil, 143, 143, nil, nil, nil, nil, nil,
- 143, 143, 144, nil, 144, 144, nil, 144, 144, nil,
- nil, nil, nil, nil, 144, 144, 141, nil, 141, 141,
- nil, 141, 141, nil, nil, nil, nil, nil, 141, 141,
- 146, nil, 146, 146, nil, 146, 146, nil, nil, nil,
- nil, nil, 146, 146, 55, nil, 55, 55, nil, 55,
- 55, nil, nil, nil, nil, nil, 55, 55, 138, nil,
- 138, 138, nil, 138, 138, nil, nil, nil, nil, nil,
- 138, 138, 15, nil, 15, 15, nil, 15, 15, nil,
- nil, nil, nil, nil, 15, 15, 125, nil, 125, 125,
- nil, 125, 125, nil, nil, nil, nil, nil, 125, 125,
- 0, nil, 0, 0, nil, 0, 0, nil, nil, nil,
- nil, nil, 0, 0, 26, 26, 26, 26, 26, 26 ]
+ 46, 85, 46, 65, 30, 48, 58, 83, 60, 65,
+ 83, 45, 110, 61, 125, 45, 45, 63, 105, 79,
+ 105, 105, 64, 103, 103, 85, 53, 29, 9, 9,
+ 29, 46, 46, 73, 73, 46, 48, 48, 83, 83,
+ 48, 67, 83, 110, 110, 125, 125, 110, 103, 125,
+ 79, 79, 103, 9, 79, 103, 103, 9, 73, 68,
+ 9, 9, 73, 36, 36, 73, 73, 41, 99, 99,
+ 22, 22, 40, 89, 89, 77, 38, 82, 37, 35,
+ 35, 34, 87, 55, 88, 88, 51, 90, 36, 47,
+ 47, 91, 92, 99, 26, 22, 36, 99, 89, 22,
+ 99, 99, 22, 22, 35, 131, 89, 94, 35, 88,
+ 101, 35, 35, 88, 47, 96, 88, 88, 47, 98,
+ 20, 47, 47, 131, 131, 129, 131, 131, 101, 101,
+ 17, 101, 101, 131, 131, 14, 131, 42, 101, 101,
+ 109, 101, 13, 129, 129, 111, 129, 129, 118, 118,
+ 12, 118, 118, 129, 129, 11, 129, 7, 118, 118,
+ 128, 118, 69, 69, 4, 69, 69, 15, 15, 93,
+ 15, 15, 69, 69, nil, 69, nil, 15, 15, nil,
+ 15, 126, 126, nil, 126, 126, 0, 0, nil, 0,
+ 0, 126, 126, nil, 126, nil, 0, 0, nil, 0 ]
racc_action_pointer = [
- 308, -2, nil, nil, nil, 174, 161, nil, nil, 132,
- nil, 161, 153, 163, 122, 280, nil, nil, 150, nil,
- nil, nil, 73, 137, nil, nil, 328, 3, nil, nil,
- nil, nil, nil, 130, 128, nil, nil, 34, 118, 59,
- 103, 131, 73, nil, 50, nil, 11, 20, nil, nil,
- nil, nil, nil, nil, 11, 252, nil, nil, nil, nil,
- nil, 42, 75, 6, 23, nil, 23, nil, 135, 138,
- nil, nil, nil, 107, 120, nil, nil, nil, nil, 50,
- 66, 119, nil, 0, nil, nil, nil, 26, 117, 9,
- nil, 116, 55, 57, 9, nil, -18, 48, 46, 55,
- 95, 105, 78, 83, 116, nil, 20, nil, nil, 40,
- nil, nil, 18, 62, nil, nil, 143, 92, 127, nil,
- nil, nil, nil, nil, nil, 294, nil, 89, 142, 57,
- nil, nil, nil, nil, 114, 134, 148, 68, 266, 155,
- nil, 224, 159, 196, 210, 179, 238, nil, 165, nil,
- 148, nil, nil ]
+ 162, nil, nil, nil, 161, nil, nil, 122, nil, 26,
+ nil, 143, 145, 107, 135, 143, nil, 125, nil, nil,
+ 106, nil, 68, nil, nil, nil, 81, nil, nil, 25,
+ -1, nil, nil, nil, 76, 77, 61, 64, 76, nil,
+ 37, 32, 132, nil, nil, 7, -3, 87, 2, nil,
+ nil, 53, nil, 18, nil, 70, nil, nil, -30, nil,
+ -1, -16, nil, 9, 13, -6, nil, 29, 44, 138,
+ nil, nil, nil, 31, nil, nil, nil, 67, nil, 16,
+ nil, nil, 73, 4, nil, -8, nil, 47, 82, 71,
+ 81, 56, 86, 134, 102, nil, 109, nil, 84, 66,
+ nil, 104, nil, 21, nil, 12, nil, nil, nil, 135,
+ 9, 136, nil, nil, nil, nil, nil, nil, 124, nil,
+ nil, nil, nil, nil, nil, 11, 157, nil, 125, 119,
+ nil, 99, nil, nil ]
racc_action_default = [
- -86, -86, -7, -20, -8, -86, -86, -19, -9, -86,
- -10, -86, -80, -86, -86, -1, -2, -4, -86, -5,
- -6, -33, -86, -39, -42, -40, -50, -34, -80, -38,
- -36, -43, -41, -35, -86, -37, -67, -86, -70, -27,
- -86, -86, -70, -3, -27, -31, -86, -86, -52, -53,
- -54, -55, -56, -57, -86, -86, -65, -64, -58, -66,
- -59, -86, -86, -70, -86, -71, -86, -21, -24, -19,
- -25, -22, -28, -17, -84, -23, -15, -26, 153, -70,
- -86, -84, -81, -86, -82, -83, -51, -86, -86, -86,
- -61, -86, -77, -86, -86, -74, -86, -27, -86, -18,
- -86, -86, -85, -86, -86, -78, -86, -32, -44, -45,
- -63, -60, -86, -86, -72, -73, -86, -86, -14, -30,
- -16, -11, -12, -29, -79, -86, -13, -86, -86, -86,
- -62, -76, -75, -68, -86, -86, -86, -86, -86, -86,
- -69, -86, -86, -86, -86, -86, -86, -47, -86, -46,
- -86, -48, -49 ]
+ -79, -5, -19, -6, -79, -18, -7, -79, -8, -79,
+ -9, -79, -79, -79, -79, -1, -2, -79, -4, -60,
+ -63, -40, -79, -32, -41, -36, -38, -73, -39, -33,
+ -79, -42, -37, -35, -34, -79, -26, -63, -79, -3,
+ -26, -63, -79, -64, -30, -79, -79, -79, -79, -25,
+ -14, -79, -20, -18, -22, -23, -24, -21, -16, -27,
+ -77, -63, 134, -79, -77, -79, -67, -70, -79, -79,
+ -74, -75, -76, -79, -57, -56, -58, -79, -59, -79,
+ -50, -51, -79, -79, -45, -79, -48, -26, -79, -17,
+ -79, -78, -79, -79, -79, -71, -79, -66, -79, -79,
+ -65, -79, -31, -79, -53, -79, -43, -46, -44, -79,
+ -79, -13, -29, -15, -10, -28, -11, -72, -79, -12,
+ -68, -69, -61, -55, -52, -79, -79, -49, -79, -79,
+ -54, -79, -62, -47 ]
racc_goto_table = [
- 15, 29, 76, 33, 60, 70, 23, 34, 67, 123,
- 93, 74, 83, 95, 45, 64, 81, 58, 101, 79,
- 47, 127, 29, 73, 33, 106, 105, 23, 91, 90,
- 100, 104, 77, 46, 43, 94, 13, nil, nil, 86,
- 29, 123, 33, nil, 68, 23, 87, 29, nil, 33,
- nil, nil, 23, nil, 29, 88, 33, 112, nil, 23,
- nil, nil, 120, 35, nil, 70, 132, nil, 67, 118,
- nil, nil, nil, nil, nil, 107, nil, nil, nil, 130,
- nil, 110, nil, 29, 35, 33, nil, nil, 23, 29,
- 119, 33, nil, nil, 23, nil, 117, nil, 29, nil,
- 33, 75, 35, 23, 68, 131, nil, 43, nil, 35,
- nil, nil, nil, 29, nil, 33, 35, nil, 23, 27,
- nil, nil, nil, nil, nil, 135, nil, nil, nil, 29,
- nil, 33, nil, nil, 23, 139, 43, 29, 143, 33,
- 27, 145, 23, 142, 148, 35, 150, nil, nil, nil,
- nil, 35, nil, nil, 43, nil, nil, 71, 27, nil,
- 35, 75, 43, nil, 43, 27, nil, 43, nil, 43,
- nil, nil, 27, nil, nil, 35, nil, nil, nil, nil,
- nil, 92, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, 35, nil, nil, nil, nil, nil, nil, nil, 35,
- nil, 27, nil, nil, nil, nil, nil, 27, nil, nil,
- nil, nil, nil, nil, nil, nil, 27, 71, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, 27, nil, nil, 92, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, 27, nil, nil,
- nil, nil, nil, nil, nil, 27 ]
+ 15, 39, 29, 73, 32, 81, 50, 30, 86, 34,
+ 66, 52, 54, 115, 84, 29, 68, 32, 105, 56,
+ 44, 55, 34, 80, 42, 58, 90, 60, 29, 57,
+ 32, 64, 45, 49, 67, 34, 95, 94, 104, 83,
+ 29, 61, 32, 86, 92, 82, 65, 34, 96, 107,
+ 115, 14, nil, nil, nil, nil, nil, nil, nil, 113,
+ nil, nil, nil, 125, 52, 54, 29, 120, 32, 101,
+ 127, 102, 56, 34, 55, nil, nil, nil, 111, nil,
+ nil, 29, 57, 32, 130, nil, 112, 39, 34, nil,
+ nil, 67, 29, nil, 32, nil, 29, 121, 32, 34,
+ nil, 123, nil, 34, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, 39, nil, 39, 129, nil,
+ nil, nil, nil, nil, nil, nil, 131 ]
racc_goto_check = [
- 2, 4, 17, 16, 32, 21, 20, 28, 19, 23,
- 37, 14, 25, 39, 22, 35, 14, 31, 15, 35,
- 30, 29, 4, 12, 16, 15, 37, 20, 33, 32,
- 13, 36, 22, 24, 3, 38, 1, nil, nil, 22,
- 4, 23, 16, nil, 20, 20, 22, 4, nil, 16,
- nil, nil, 20, nil, 4, 2, 16, 25, nil, 20,
- nil, nil, 17, 6, nil, 21, 39, nil, 19, 14,
- nil, nil, nil, nil, nil, 22, nil, nil, nil, 32,
- nil, 22, nil, 4, 6, 16, nil, nil, 20, 4,
- 22, 16, nil, nil, 20, nil, 2, nil, 4, nil,
- 16, 6, 6, 20, 20, 22, nil, 3, nil, 6,
- nil, nil, nil, 4, nil, 16, 6, nil, 20, 11,
- nil, nil, nil, nil, nil, 2, nil, nil, nil, 4,
- nil, 16, nil, nil, 20, 28, 3, 4, 2, 16,
- 11, 2, 20, 28, 2, 6, 2, nil, nil, nil,
- nil, 6, nil, nil, 3, nil, nil, 11, 11, nil,
- 6, 6, 3, nil, 3, 11, nil, 3, nil, 3,
- nil, nil, 11, nil, nil, 6, nil, nil, nil, nil,
- nil, 11, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, 6, nil, nil, nil, nil, nil, nil, nil, 6,
- nil, 11, nil, nil, nil, nil, nil, 11, nil, nil,
- nil, nil, nil, nil, nil, nil, 11, 11, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, 11, nil, nil, 11, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, 11, nil, nil,
- nil, nil, nil, nil, nil, 11 ]
+ 2, 3, 10, 25, 4, 33, 16, 22, 31, 15,
+ 39, 18, 19, 23, 29, 10, 37, 4, 34, 21,
+ 22, 20, 15, 32, 35, 11, 12, 13, 10, 10,
+ 4, 13, 24, 22, 10, 15, 37, 36, 33, 28,
+ 10, 35, 4, 31, 14, 22, 38, 15, 14, 29,
+ 23, 1, nil, nil, nil, nil, nil, nil, nil, 16,
+ nil, nil, nil, 25, 18, 19, 10, 39, 4, 2,
+ 31, 22, 21, 15, 20, nil, nil, nil, 13, nil,
+ nil, 10, 10, 4, 33, nil, 22, 3, 15, nil,
+ nil, 10, 10, nil, 4, nil, 10, 22, 4, 15,
+ nil, 22, nil, 15, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, 3, nil, 3, 2, nil,
+ nil, nil, nil, nil, nil, nil, 2 ]
racc_goto_pointer = [
- nil, 36, 0, 19, 0, nil, 62, nil, nil, nil,
- nil, 118, -16, -43, -28, -56, 2, -37, nil, -31,
- 5, -34, -8, -93, 11, -34, nil, nil, 6, -88,
- -6, -20, -33, -34, nil, -23, -48, -53, -28, -50 ]
+ nil, 51, 0, -14, -5, nil, nil, nil, nil, nil,
+ -7, -11, -32, -9, -16, 0, -30, nil, -25, -24,
+ -15, -17, -2, -78, 10, -42, nil, nil, -9, -34,
+ nil, -40, -23, -41, -61, 4, -24, -25, 5, -31 ]
racc_goto_default = [
- nil, nil, nil, 16, 17, 19, 20, 2, 4, 8,
- 10, 11, nil, nil, nil, nil, 18, nil, 66, 21,
- 6, 25, 26, 72, nil, nil, 30, 32, nil, nil,
- nil, nil, nil, nil, 61, nil, nil, 65, nil, nil ]
+ nil, nil, nil, 16, 18, 1, 3, 6, 8, 10,
+ 12, nil, nil, nil, nil, 17, nil, 51, 23, 25,
+ 26, 28, nil, 59, nil, nil, 33, 21, nil, nil,
+ 85, 77, nil, nil, nil, nil, nil, 43, nil, nil ]
racc_token_table = {
false => 0,
@@ -443,11 +376,13 @@ racc_token_table = {
:COLON => 33,
:TYPE => 34,
:NAME => 35,
- :SEMIC => 36 }
+ :SEMIC => 36,
+ :CASE => 37,
+ :DEFAULT => 38 }
racc_use_result_var = true
-racc_nt_base = 37
+racc_nt_base = 39
Racc_arg = [
racc_action_table,
@@ -503,14 +438,15 @@ Racc_token_to_s_table = [
'TYPE',
'NAME',
'SEMIC',
+'CASE',
+'DEFAULT',
'$start',
'program',
'statements',
'statement',
'object',
'assignment',
-'selector',
-'iftest',
+'casestatement',
'import',
'definition',
'hostclass',
@@ -523,6 +459,7 @@ Racc_token_to_s_table = [
'objectinst',
'objectname',
'quotedtext',
+'selector',
'variable',
'array',
'rvalue',
@@ -531,13 +468,13 @@ Racc_token_to_s_table = [
'comma',
'boolean',
'objectref',
-'test',
-'elsifs',
-'testop',
+'caseopts',
+'caseopt',
+'casevalues',
+'selectlhand',
'svalues',
'selectval',
'sintvalues',
-'selectlhand',
'argumentlist',
'parent',
'nothing',
@@ -609,10 +546,8 @@ module_eval <<'.,.,', 'grammar.ra', 54
# reduce 9 omitted
- # reduce 10 omitted
-
module_eval <<'.,.,', 'grammar.ra', 89
- def _reduce_11( val, _values, result )
+ def _reduce_10( val, _values, result )
ary = val[2]
if val[0].is_a?(AST::ASTArray)
Puppet.notice "invalid name"
@@ -641,7 +576,7 @@ module_eval <<'.,.,', 'grammar.ra', 89
.,.,
module_eval <<'.,.,', 'grammar.ra', 113
- def _reduce_12( val, _values, result )
+ def _reduce_11( val, _values, result )
if val[0].is_a?(AST::ASTArray)
Puppet.notice "invalid name"
raise Puppet::ParseError, "Invalid name"
@@ -670,7 +605,7 @@ module_eval <<'.,.,', 'grammar.ra', 113
.,.,
module_eval <<'.,.,', 'grammar.ra', 126
- def _reduce_13( val, _values, result )
+ def _reduce_12( val, _values, result )
# a template setting for a type
if val[0].is_a?(AST::ASTArray)
Puppet.notice "invalid type"
@@ -688,7 +623,7 @@ module_eval <<'.,.,', 'grammar.ra', 126
.,.,
module_eval <<'.,.,', 'grammar.ra', 134
- def _reduce_14( val, _values, result )
+ def _reduce_13( val, _values, result )
result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -698,10 +633,10 @@ module_eval <<'.,.,', 'grammar.ra', 134
end
.,.,
- # reduce 15 omitted
+ # reduce 14 omitted
module_eval <<'.,.,', 'grammar.ra', 148
- def _reduce_16( val, _values, result )
+ def _reduce_15( val, _values, result )
if val[0][0].is_a?(AST::ASTArray)
val[0].push val[2]
result = val[0]
@@ -716,12 +651,12 @@ module_eval <<'.,.,', 'grammar.ra', 148
end
.,.,
- # reduce 17 omitted
+ # reduce 16 omitted
- # reduce 18 omitted
+ # reduce 17 omitted
module_eval <<'.,.,', 'grammar.ra', 159
- def _reduce_19( val, _values, result )
+ def _reduce_18( val, _values, result )
result = AST::Name.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -732,7 +667,7 @@ module_eval <<'.,.,', 'grammar.ra', 159
.,.,
module_eval <<'.,.,', 'grammar.ra', 167
- def _reduce_20( val, _values, result )
+ def _reduce_19( val, _values, result )
result = AST::Type.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -742,6 +677,8 @@ module_eval <<'.,.,', 'grammar.ra', 167
end
.,.,
+ # reduce 20 omitted
+
# reduce 21 omitted
# reduce 22 omitted
@@ -750,10 +687,8 @@ module_eval <<'.,.,', 'grammar.ra', 167
# reduce 24 omitted
- # reduce 25 omitted
-
module_eval <<'.,.,', 'grammar.ra', 189
- def _reduce_26( val, _values, result )
+ def _reduce_25( val, _values, result )
# this is distinct from referencing a variable
variable = AST::Name.new(
:line => @lexer.line,
@@ -772,7 +707,7 @@ module_eval <<'.,.,', 'grammar.ra', 189
.,.,
module_eval <<'.,.,', 'grammar.ra', 198
- def _reduce_27( val, _values, result )
+ def _reduce_26( val, _values, result )
result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -783,14 +718,14 @@ module_eval <<'.,.,', 'grammar.ra', 198
.,.,
module_eval <<'.,.,', 'grammar.ra', 198
- def _reduce_28( val, _values, result )
+ def _reduce_27( val, _values, result )
result = val[0]
result
end
.,.,
module_eval <<'.,.,', 'grammar.ra', 211
- def _reduce_29( val, _values, result )
+ def _reduce_28( val, _values, result )
if val[0].is_a?(AST::ASTArray)
val[0].push(val[2])
result = val[0]
@@ -806,7 +741,7 @@ module_eval <<'.,.,', 'grammar.ra', 211
.,.,
module_eval <<'.,.,', 'grammar.ra', 226
- def _reduce_30( val, _values, result )
+ def _reduce_29( val, _values, result )
leaf = AST::String.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -823,10 +758,10 @@ module_eval <<'.,.,', 'grammar.ra', 226
end
.,.,
- # reduce 31 omitted
+ # reduce 30 omitted
module_eval <<'.,.,', 'grammar.ra', 239
- def _reduce_32( val, _values, result )
+ def _reduce_31( val, _values, result )
if val[0].is_a?(AST::ASTArray)
result = val[0].push(val[2])
else
@@ -840,6 +775,8 @@ module_eval <<'.,.,', 'grammar.ra', 239
end
.,.,
+ # reduce 32 omitted
+
# reduce 33 omitted
# reduce 34 omitted
@@ -856,10 +793,8 @@ module_eval <<'.,.,', 'grammar.ra', 239
# reduce 40 omitted
- # reduce 41 omitted
-
module_eval <<'.,.,', 'grammar.ra', 257
- def _reduce_42( val, _values, result )
+ def _reduce_41( val, _values, result )
result = AST::String.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -870,7 +805,7 @@ module_eval <<'.,.,', 'grammar.ra', 257
.,.,
module_eval <<'.,.,', 'grammar.ra', 265
- def _reduce_43( val, _values, result )
+ def _reduce_42( val, _values, result )
result = AST::Boolean.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -881,7 +816,7 @@ module_eval <<'.,.,', 'grammar.ra', 265
.,.,
module_eval <<'.,.,', 'grammar.ra', 275
- def _reduce_44( val, _values, result )
+ def _reduce_43( val, _values, result )
result = AST::ObjectRef.new(
:pin => '[]',
:line => @lexer.line,
@@ -893,124 +828,77 @@ module_eval <<'.,.,', 'grammar.ra', 275
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 285
- def _reduce_45( val, _values, result )
- result = AST::If.new(
- :pin => "if",
+module_eval <<'.,.,', 'grammar.ra', 292
+ def _reduce_44( val, _values, result )
+ options = val[3]
+ unless options.is_a?(AST::ASTArray)
+ options = AST::ASTArray.new(
+ :line => @lexer.line,
+ :file => @lexer.file,
+ :children => [val[3]]
+ )
+ end
+ result = AST::CaseStatement.new(
:test => val[1],
+ :options => val[3],
:file => @lexer.file,
- :line => @lexer.line,
- :statements => val[3]
+ :line => @lexer.line
)
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 307
+ # reduce 45 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 306
def _reduce_46( val, _values, result )
- # make sure our elsifs are an array, as it will save lots of
- # effort later
- unless val[5].is_a?(AST::ASTArray)
- val[5] = AST::ASTArray.new(
+ if val[0].is_a?(AST::ASTArray)
+ val[0].push val[1]
+ result = val[0]
+ else
+ result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
- :children => [val[5]]
+ :children => [val[0], val[1]]
)
end
-
- result = AST::If.new(
- :pin => "if",
- :test => val[1],
- :statements => val[3],
- :file => @lexer.file,
- :line => @lexer.line,
- :else => val[8],
- :elsif => val[5]
- )
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 318
+module_eval <<'.,.,', 'grammar.ra', 316
def _reduce_47( val, _values, result )
- result = AST::If.new(
- :pin => "if",
- :test => val[1],
- :statements => val[3],
+ result = AST::CaseOpt.new(
+ :pin => ":",
+ :value => val[0],
:file => @lexer.file,
:line => @lexer.line,
- :else => val[7]
+ :statements => val[3]
)
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 328
- def _reduce_48( val, _values, result )
- result = AST::If.new(
- :pin => "elseif",
- :test => val[1],
- :file => @lexer.file,
- :statements => val[3],
- :line => @lexer.line
- )
- result
- end
-.,.,
+ # reduce 48 omitted
-module_eval <<'.,.,', 'grammar.ra', 348
+module_eval <<'.,.,', 'grammar.ra', 330
def _reduce_49( val, _values, result )
- second = AST::If.new(
- :pin => "elsif",
- :test => val[2],
- :statements => val[4],
- :file => @lexer.file,
- :line => @lexer.line
- )
-
if val[0].is_a?(AST::ASTArray)
- val[0].push(second)
+ val[0].push(val[2])
result = val[0]
else
result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
- :children => [val[0],second]
+ :children => [val[0],val[2]]
)
end
result
end
.,.,
- # reduce 50 omitted
-
-module_eval <<'.,.,', 'grammar.ra', 359
- def _reduce_51( val, _values, result )
- result = AST::Test.new(
- :pin => val[1],
- :line => @lexer.line,
- :file => @lexer.file,
- :lhs => val[0],
- :rhs => val[2]
- )
- result
- end
-.,.,
-
- # reduce 52 omitted
-
- # reduce 53 omitted
-
- # reduce 54 omitted
-
- # reduce 55 omitted
-
- # reduce 56 omitted
-
- # reduce 57 omitted
-
-module_eval <<'.,.,', 'grammar.ra', 376
- def _reduce_58( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 431
+ def _reduce_50( val, _values, result )
result = AST::Selector.new(
:pin => "?",
:line => @lexer.line,
@@ -1022,19 +910,19 @@ module_eval <<'.,.,', 'grammar.ra', 376
end
.,.,
- # reduce 59 omitted
+ # reduce 51 omitted
-module_eval <<'.,.,', 'grammar.ra', 378
- def _reduce_60( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 433
+ def _reduce_52( val, _values, result )
result = val[1]
result
end
.,.,
- # reduce 61 omitted
+ # reduce 53 omitted
-module_eval <<'.,.,', 'grammar.ra', 393
- def _reduce_62( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 448
+ def _reduce_54( val, _values, result )
if val[0].is_a?(AST::ASTArray)
val[0].push(val[2])
result = val[0]
@@ -1049,32 +937,65 @@ module_eval <<'.,.,', 'grammar.ra', 393
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 408
- def _reduce_63( val, _values, result )
- leaf = AST::String.new(
- :line => @lexer.line,
- :file => @lexer.file,
- :value => val[0]
- )
+module_eval <<'.,.,', 'grammar.ra', 458
+ def _reduce_55( val, _values, result )
result = AST::ObjectParam.new(
:pin => "=>",
:line => @lexer.line,
:file => @lexer.file,
- :param => leaf,
+ :param => val[0],
:value => val[2]
)
result
end
.,.,
- # reduce 64 omitted
+module_eval <<'.,.,', 'grammar.ra', 466
+ def _reduce_56( val, _values, result )
+ result = AST::String.new(
+ :line => @lexer.line,
+ :file => @lexer.file,
+ :value => val[0]
+ )
+ result
+ end
+.,.,
- # reduce 65 omitted
+module_eval <<'.,.,', 'grammar.ra', 473
+ def _reduce_57( val, _values, result )
+ result = AST::String.new(
+ :line => @lexer.line,
+ :file => @lexer.file,
+ :value => val[0]
+ )
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'grammar.ra', 480
+ def _reduce_58( val, _values, result )
+ result = AST::String.new(
+ :line => @lexer.line,
+ :file => @lexer.file,
+ :value => val[0]
+ )
+ result
+ end
+.,.,
- # reduce 66 omitted
+module_eval <<'.,.,', 'grammar.ra', 487
+ def _reduce_59( val, _values, result )
+ result = AST::Default.new(
+ :line => @lexer.line,
+ :file => @lexer.file,
+ :value => val[0]
+ )
+ result
+ end
+.,.,
-module_eval <<'.,.,', 'grammar.ra', 437
- def _reduce_67( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 512
+ def _reduce_60( val, _values, result )
# importing files
# yuk, i hate keywords
# we'll probably have to have some kind of search path eventually
@@ -1101,8 +1022,8 @@ module_eval <<'.,.,', 'grammar.ra', 437
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 447
- def _reduce_68( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 522
+ def _reduce_61( val, _values, result )
result = AST::CompDef.new(
:name => AST::Name.new(:value => val[1], :line => @lexer.line),
:args => val[2],
@@ -1114,8 +1035,8 @@ module_eval <<'.,.,', 'grammar.ra', 447
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 458
- def _reduce_69( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 533
+ def _reduce_62( val, _values, result )
result = AST::ClassDef.new(
:name => AST::Name.new(:value => val[1], :line => @lexer.line),
:args => val[2],
@@ -1128,8 +1049,8 @@ module_eval <<'.,.,', 'grammar.ra', 458
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 473
- def _reduce_70( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 548
+ def _reduce_63( val, _values, result )
result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -1139,17 +1060,17 @@ module_eval <<'.,.,', 'grammar.ra', 473
end
.,.,
- # reduce 71 omitted
+ # reduce 64 omitted
-module_eval <<'.,.,', 'grammar.ra', 478
- def _reduce_72( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 553
+ def _reduce_65( val, _values, result )
result = val[1]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 489
- def _reduce_73( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 564
+ def _reduce_66( val, _values, result )
if val[1].is_a?(AST::ASTArray)
result = val[1]
else
@@ -1163,10 +1084,10 @@ module_eval <<'.,.,', 'grammar.ra', 489
end
.,.,
- # reduce 74 omitted
+ # reduce 67 omitted
-module_eval <<'.,.,', 'grammar.ra', 503
- def _reduce_75( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 578
+ def _reduce_68( val, _values, result )
if val[0].is_a?(AST::ASTArray)
val[0].push(val[2])
result = val[0]
@@ -1181,8 +1102,8 @@ module_eval <<'.,.,', 'grammar.ra', 503
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 511
- def _reduce_76( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 586
+ def _reduce_69( val, _values, result )
result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -1192,8 +1113,8 @@ module_eval <<'.,.,', 'grammar.ra', 511
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 518
- def _reduce_77( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 593
+ def _reduce_70( val, _values, result )
result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -1203,10 +1124,10 @@ module_eval <<'.,.,', 'grammar.ra', 518
end
.,.,
- # reduce 78 omitted
+ # reduce 71 omitted
-module_eval <<'.,.,', 'grammar.ra', 527
- def _reduce_79( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 602
+ def _reduce_72( val, _values, result )
result = AST::Name.new(
:value => val[1],
:file => @lexer.file,
@@ -1216,8 +1137,8 @@ module_eval <<'.,.,', 'grammar.ra', 527
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 536
- def _reduce_80( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 611
+ def _reduce_73( val, _values, result )
name = val[0].sub(/^\$/,'')
result = AST::Variable.new(
:line => @lexer.line,
@@ -1228,8 +1149,8 @@ module_eval <<'.,.,', 'grammar.ra', 536
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 545
- def _reduce_81( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 620
+ def _reduce_74( val, _values, result )
if val[1].is_a?(AST::ASTArray)
result = val[1]
else
@@ -1240,14 +1161,14 @@ module_eval <<'.,.,', 'grammar.ra', 545
end
.,.,
- # reduce 82 omitted
+ # reduce 75 omitted
- # reduce 83 omitted
+ # reduce 76 omitted
- # reduce 84 omitted
+ # reduce 77 omitted
-module_eval <<'.,.,', 'grammar.ra', 550
- def _reduce_85( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 625
+ def _reduce_78( val, _values, result )
result = nil
result
end
diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb
index dcefdbcae..fd72f8704 100644
--- a/lib/puppet/parser/scope.rb
+++ b/lib/puppet/parser/scope.rb
@@ -322,7 +322,7 @@ module Puppet
#------------------------------------------------------------
def setvar(name,value)
- Puppet.debug "Setting '%s' to '%s' at level %s" %
+ Puppet.debug "Setting %s to '%s' at level %s" %
[name.inspect,value,self.level]
if @@declarative and @symtable.include?(name)
error = Puppet::ParseError.new(