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