summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/grammar.ra
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/parser/grammar.ra')
-rw-r--r--lib/puppet/parser/grammar.ra29
1 files changed, 23 insertions, 6 deletions
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra
index 9a5fb68a9..673c41a9f 100644
--- a/lib/puppet/parser/grammar.ra
+++ b/lib/puppet/parser/grammar.ra
@@ -400,22 +400,38 @@ import: IMPORT quotedtext {
}
}
-definition: DEFINE NAME argumentlist LBRACE statements RBRACE {
- result = ast AST::CompDef,
+definition: DEFINE NAME argumentlist parent LBRACE statements RBRACE {
+ args = {
+ :type => ast(AST::Name, :value => val[1]),
:args => val[2],
:keyword => val[0],
- :code => val[4]
-} | DEFINE NAME argumentlist LBRACE RBRACE {
- result = ast AST::CompDef,
+ :code => val[5]
+ }
+
+ if val[3].instance_of?(AST::Name)
+ args[:parentclass] = val[3]
+ end
+ result = ast AST::CompDef, args
+} | DEFINE NAME argumentlist parent LBRACE RBRACE {
+ args = {
+ :type => ast(AST::Name, :value => val[1]),
:args => val[2],
:keyword => val[0],
- :code => ast(AST::ASTArray, :children => [])
+ :code => ast(AST::ASTArray)
+ }
+
+ if val[3].instance_of?(AST::Name)
+ args[:parentclass] = val[3]
+ end
+
+ result = ast AST::CompDef,args
}
#hostclass: CLASS NAME argumentlist parent LBRACE statements RBRACE {
hostclass: CLASS NAME parent LBRACE statements RBRACE {
#:args => val[2],
args = {
+ :type => ast(AST::Name, :value => val[1]),
:keyword => val[0],
:code => val[4]
}
@@ -426,6 +442,7 @@ hostclass: CLASS NAME parent LBRACE statements RBRACE {
result = ast AST::ClassDef, args
} | CLASS NAME parent LBRACE RBRACE {
args = {
+ :type => ast(AST::Name, :value => val[1]),
:keyword => val[0],
:code => ast(AST::ASTArray, :children => [])
}