Author: bernhard Date: Mon Jan 26 05:03:07 2009 New Revision: 36024 Modified: trunk/languages/pipp/src/common/builtins.pir trunk/languages/pipp/src/pct/actions.pm trunk/languages/pipp/src/pct/grammar.pg trunk/languages/pipp/t/php/hello.t
Log: [Pipp] Add support for 'print' Modified: trunk/languages/pipp/src/common/builtins.pir ============================================================================== --- trunk/languages/pipp/src/common/builtins.pir (original) +++ trunk/languages/pipp/src/common/builtins.pir Mon Jan 26 05:03:07 2009 @@ -25,8 +25,6 @@ .return (1) .end -# steal builtins from Perl6 -# TODO: put that into php_builtins.pir .sub 'echo' .param pmc list :slurpy @@ -42,6 +40,14 @@ .RETURN_NULL() .end +.sub 'print' + .param pmc arg + + print arg + + .RETURN_LONG(1) +.end + ## autoincrement .sub 'postfix:++' .param pmc a Modified: trunk/languages/pipp/src/pct/actions.pm ============================================================================== --- trunk/languages/pipp/src/pct/actions.pm (original) +++ trunk/languages/pipp/src/pct/actions.pm Mon Jan 26 05:03:07 2009 @@ -167,6 +167,15 @@ make $past; } +method print_statement($/) { + make PAST::Op.new( + :pasttype('call'), + :name('print'), + :node($/), + $( $<expression> ) + ); +} + method expression_statement($/) { make $( $<expression> ); } Modified: trunk/languages/pipp/src/pct/grammar.pg ============================================================================== --- trunk/languages/pipp/src/pct/grammar.pg (original) +++ trunk/languages/pipp/src/pct/grammar.pg Mon Jan 26 05:03:07 2009 @@ -129,6 +129,7 @@ | <return_statement> {*} #= return_statement | <require_once_statement> {*} #= require_once_statement | <echo_statement> {*} #= echo_statement + | <print_statement> {*} #= print_statement | <expression_statement> {*} #= expression_statement | <constant_definition> {*} #= constant_definition | <global_declaration> {*} #= global_declaration @@ -174,6 +175,11 @@ {*} } +token print_statement { + 'print' <.ws_char> <expression> <.statement_delimiter> + {*} +} + rule expression_statement { <expression> <.statement_delimiter> {*} Modified: trunk/languages/pipp/t/php/hello.t ============================================================================== --- trunk/languages/pipp/t/php/hello.t (original) +++ trunk/languages/pipp/t/php/hello.t Mon Jan 26 05:03:07 2009 @@ -196,7 +196,7 @@ Hello, World! OUT -language_output_is( 'Pipp', <<'CODE', <<'OUT', 'print with one arg', todo => 'no print yet' ); +language_output_is( 'Pipp', <<'CODE', <<'OUT', 'print with one arg' ); <?php print "Hello, World!\n"; ?>