summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/grammar.ra
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-07-10 15:31:19 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-07-10 15:31:19 +0000
commit7a71db875d8833065dbefdaf721f74a65414478c (patch)
tree12afcec70d8e6d88cde02f20186a39b05842c663 /lib/puppet/parser/grammar.ra
parente662c869bf8b2924c12d4ff6f999f0744779257d (diff)
downloadpuppet-7a71db875d8833065dbefdaf721f74a65414478c.tar.gz
puppet-7a71db875d8833065dbefdaf721f74a65414478c.tar.xz
puppet-7a71db875d8833065dbefdaf721f74a65414478c.zip
Adding patch by Valentin Vidic to add the "+>" syntax for adding values to parameters
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2670 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/parser/grammar.ra')
-rw-r--r--lib/puppet/parser/grammar.ra26
1 files changed, 24 insertions, 2 deletions
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra
index 0d7908e13..c990a9199 100644
--- a/lib/puppet/parser/grammar.ra
+++ b/lib/puppet/parser/grammar.ra
@@ -9,7 +9,7 @@ token FALSE EQUALS LESSEQUAL NOTEQUAL DOT COLON TYPE LLCOLLECT RRCOLLECT
token QMARK LPAREN RPAREN ISEQUAL GREATEREQUAL GREATERTHAN LESSTHAN
token IF ELSE IMPORT DEFINE ELSIF VARIABLE CLASS INHERITS NODE BOOLEAN
token NAME SEMIC CASE DEFAULT AT LCOLLECT RCOLLECT CLASSNAME CLASSREF
-token NOT OR AND UNDEF
+token NOT OR AND UNDEF PARROW
rule
program: statements {
@@ -142,7 +142,7 @@ resource: classname LBRACE resourceinstances endsemi RBRACE {
}
# Override a value set elsewhere in the configuration.
-resourceoverride: resourceref LBRACE params endcomma RBRACE {
+resourceoverride: resourceref LBRACE anyparams endcomma RBRACE {
result = ast AST::ResourceOverride, :object => val[0], :params => val[2]
}
@@ -310,6 +310,28 @@ param: NAME FARROW rvalue {
result = ast AST::ResourceParam, :param => val[0], :value => val[2]
}
+addparam: NAME PARROW rvalue {
+ result = ast AST::ResourceParam, :param => val[0], :value => val[2],
+ :add => true
+}
+
+anyparam: param
+ | addparam
+
+anyparams: # nothing
+{
+ result = ast AST::ASTArray
+}
+ | anyparam { result = val[0] }
+ | anyparams COMMA anyparam {
+ if val[0].instance_of?(AST::ASTArray)
+ val[0].push(val[2])
+ result = val[0]
+ else
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
+ end
+}
+
rvalues: rvalue
| rvalues comma rvalue {
if val[0].instance_of?(AST::ASTArray)