develooper Front page | perl.cvs.parrot | Postings from January 2009

[svn:parrot] r36024 - in trunk/languages/pipp: src/common src/pct t/php

From:
bernhard
Date:
January 26, 2009 05:03
Subject:
[svn:parrot] r36024 - in trunk/languages/pipp: src/common src/pct t/php
Message ID:
20090126130308.31D68CB9AE@x12.develooper.com
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";
 ?>



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About