Author: bernhard
Date: Fri Aug 15 04:08:34 2008
New Revision: 30247

Modified:
   trunk/languages/pipp/src/pct/grammar.pg
   trunk/languages/pipp/t/php/var.t

Log:
[Pipp] add increment and decrement
Some reformating.


Modified: trunk/languages/pipp/src/pct/grammar.pg
==============================================================================
--- trunk/languages/pipp/src/pct/grammar.pg     (original)
+++ trunk/languages/pipp/src/pct/grammar.pg     Fri Aug 15 04:08:34 2008
@@ -117,28 +117,33 @@
 token curly_interpolation   { '{' <var> '}'                                    
      {*} }
 
 # operator precedence table
-rule  expression  is optable                                                   
    { ... }
+rule  expression  is optable                                        { ... }
 
-proto 'infix:|'   is precedence('1')                                           
    { ... }
-proto 'infix:&'   is equiv('infix:|')                                          
    { ... }
-proto 'infix:^'   is equiv('infix:|')                                          
    { ... }
-
-proto 'infix:<'   is tighter('infix:|')                                        
    { ... }
-proto 'infix:<='  is equiv('infix:<')                                          
    { ... }
-proto 'infix:>'   is equiv('infix:<')                                          
    { ... }
-proto 'infix:>='  is equiv('infix:<')                                          
    { ... }
-proto 'infix:=='  is equiv('infix:<')                                          
    { ... }
-proto 'infix:!='  is equiv('infix:<')                                          
    { ... }
-
-proto 'infix:+'   is tighter('infix:<')  is pirop('n_add')                     
    { ... }
-proto 'infix:-'   is equiv('infix:+')    is pirop('n_sub')                     
    { ... }
-proto 'infix:.'   is equiv('infix:+')    is pirop('n_concat')                  
    { ... }
-
-proto 'infix:*'   is tighter('infix:+')  is pirop('n_mul')                     
    { ... }
-proto 'infix:%'   is equiv('infix:*')    is pirop('n_mod')                     
    { ... }
-proto 'infix:/'   is equiv('infix:*')    is pirop('n_div')                     
    { ... }
+proto 'postfix:++' is precedence('1')                               { ... }
+proto 'postfix:--' is equiv(postfix:<++>)                           { ... }
+proto 'prefix:++'  is equiv(postfix:<++>)                           { ... }
+proto 'prefix:--'  is equiv(postfix:<++>)                           { ... }
+
+proto 'infix:|'    is looser('postfix:++')                          { ... }
+proto 'infix:&'    is equiv('infix:|')                              { ... }
+proto 'infix:^'    is equiv('infix:|')                              { ... }
+
+proto 'infix:<'    is tighter('infix:|')                            { ... }
+proto 'infix:<='   is equiv('infix:<')                              { ... }
+proto 'infix:>'    is equiv('infix:<')                              { ... }
+proto 'infix:>='   is equiv('infix:<')                              { ... }
+proto 'infix:=='   is equiv('infix:<')                              { ... }
+proto 'infix:!='   is equiv('infix:<')                              { ... }
+
+proto 'infix:+'    is tighter('infix:<')  is pirop('n_add')         { ... }
+proto 'infix:-'    is equiv('infix:+')    is pirop('n_sub')         { ... }
+proto 'infix:.'    is equiv('infix:+')    is pirop('n_concat')      { ... }
+
+proto 'infix:*'    is tighter('infix:+')  is pirop('n_mul')         { ... }
+proto 'infix:%'    is equiv('infix:*')    is pirop('n_mod')         { ... }
+proto 'infix:/'    is equiv('infix:*')    is pirop('n_div')         { ... }
 
-proto 'prefix:-'  is tighter('infix:*')  is pirop('n_neg')                     
    { ... }
-proto 'prefix:+'  is equiv('prefix:-')                                         
    { ... }
+proto 'prefix:-'   is tighter('infix:*')  is pirop('n_neg')         { ... }
+proto 'prefix:+'   is equiv('prefix:-')                             { ... }
 
-proto 'term:'     is tighter('prefix:-') is parsed(&term)                      
    { ... }
+proto 'term:'      is tighter('prefix:-') is parsed(&term)          { ... }

Modified: trunk/languages/pipp/t/php/var.t
==============================================================================
--- trunk/languages/pipp/t/php/var.t    (original)
+++ trunk/languages/pipp/t/php/var.t    Fri Aug 15 04:08:34 2008
@@ -25,37 +25,69 @@
 use FindBin;
 use lib "$FindBin::Bin/../../lib";
 
-use Test::More     tests => 2;
+use Test::More     tests => 4;
 use Parrot::Test;
 
 
-language_output_is( 'Pipp', <<'END_CODE', <<'END_OUT', 'var_dump() with string 
key' );
+language_output_is( 'Pipp', <<'CODE', <<'OUTPUT', 'var_dump() with string key' 
);
 <?php
 $foo['bar'] = 'asdf';
 echo $foo['bar'];
 echo "\n";
 var_dump( $foo );
-END_CODE
+CODE
 asdf
 array(1) {
   ["bar"]=>
   string(4) "asdf"
 }
-END_OUT
+OUTPUT
 
-language_output_is( 'Pipp', <<'END_CODE', <<'END_OUT', 'var_dump() with int 
key' );
+language_output_is( 'Pipp', <<'CODE', <<'OUTPUT', 'var_dump() with int key' );
 <?php
 $twice[1] = 2;
 echo $twice[1];
 echo "\n";
 var_dump( $twice );
-END_CODE
+CODE
 2
 array(1) {
   [1]=>
   int(2)
 }
-END_OUT
+OUTPUT
+
+language_output_is( 'Pipp', <<'CODE', <<'OUTPUT', 'increment' );
+<?php
+$a = 10;
+var_dump($a);
+var_dump(++$a);
+var_dump($a);
+var_dump($a++);
+var_dump($a);
+CODE
+int(10)
+int(11)
+int(11)
+int(11)
+int(12)
+OUTPUT
+
+language_output_is( 'Pipp', <<'CODE', <<'OUTPUT', 'decrement' );
+<?php
+$a = 10;
+var_dump($a);
+var_dump(--$a);
+var_dump($a);
+var_dump($a--);
+var_dump($a);
+CODE
+int(10)
+int(9)
+int(9)
+int(9)
+int(8)
+OUTPUT
 
 # Local Variables:
 #   mode: cperl

Reply via email to