Author: bernhard Date: Tue Jan 20 07:34:45 2009 New Revision: 35811 Modified: trunk/languages/pipp/src/pct/actions.pm trunk/languages/pipp/src/pct/grammar.pg
Log: [Pipp] Use class_member_or_method_definition as a wrapper for stuff inside a class definition Modified: trunk/languages/pipp/src/pct/actions.pm ============================================================================== --- trunk/languages/pipp/src/pct/actions.pm (original) +++ trunk/languages/pipp/src/pct/actions.pm Tue Jan 20 07:34:45 2009 @@ -775,15 +775,7 @@ my $block := @?BLOCK.shift(); # setup of class constants is done in the 'loadinit' node - for $<constant_definition> { - $block.push( $($_) ); - } - - # declare the attributes - for $<class_member_definition> { - $block.push( $($_) ); - } - for $<class_static_member_definition> { + for $<class_member_or_method_definition> { $block.push( $($_) ); } @@ -812,17 +804,15 @@ ) ); - # add the methods - for $<class_method_definition> { - $block.push( $($_) ); - } - $?CLASS := ''; make $block; } } +method class_member_or_method_definition($/, $key) { + make $( $/{$key} ); +} method quote($/) { make $( $<quote_expression> ); Modified: trunk/languages/pipp/src/pct/grammar.pg ============================================================================== --- trunk/languages/pipp/src/pct/grammar.pg (original) +++ trunk/languages/pipp/src/pct/grammar.pg Tue Jan 20 07:34:45 2009 @@ -440,13 +440,14 @@ rule class_definition { 'class' <class_name> [ 'implements' <interface_name> ]? {*} #= open - '{' - [ | <constant_definition> - | <class_member_definition> - | <class_static_member_definition> - | <class_method_definition> - ]* - '}' {*} #= close + '{' <class_member_or_method_definition>* '}' {*} #= close +} + +rule class_member_or_method_definition { + | <constant_definition> {*} #= constant_definition + | <class_member_definition> {*} #= class_member_definition + | <class_static_member_definition> {*} #= class_static_member_definition + | <class_method_definition> {*} #= class_method_definition } # In PHP 5.3 a constant definition outside a declared namespace or class is forbidden