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";
 ?>

Reply via email to