Author: allison
Date: Mon Feb 20 20:32:16 2006
New Revision: 11692

Added:
   trunk/languages/punie/t/op_math.t
   trunk/languages/punie/t/op_string.t
Modified:
   trunk/   (props changed)
   trunk/MANIFEST
   trunk/languages/punie/lib/PunieGrammar.pir
   trunk/languages/punie/lib/PunieOpLookup.pir
Log:
Adding a few more punie operators.

Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST      (original)
+++ trunk/MANIFEST      Mon Feb 20 20:32:16 2006
@@ -1145,6 +1145,8 @@ languages/punie/t/harness               
 languages/punie/t/io_print.t                      [punie]
 languages/punie/t/op_do.t                         [punie]
 languages/punie/t/op_goto.t                       [punie]
+languages/punie/t/op_math.t                       [punie]
+languages/punie/t/op_string.t                     [punie]
 languages/punie/t/past.t                          [punie]
 languages/punie/t/past_node.t                     [punie]
 languages/punie/t/past_op.t                       [punie]

Modified: trunk/languages/punie/lib/PunieGrammar.pir
==============================================================================
--- trunk/languages/punie/lib/PunieGrammar.pir  (original)
+++ trunk/languages/punie/lib/PunieGrammar.pir  Mon Feb 20 20:32:16 2006
@@ -52,6 +52,17 @@ digit, in the form of 'print 1;'.
 
     optable.addtok("infix:+")
     optable.addtok("infix:-", "infix:+")
+    optable.addtok("infix:.", "infix:+")
+    optable.addtok("infix:*", ">infix:+")
+    optable.addtok("infix:/", "infix:*")
+    optable.addtok("infix:%", "infix:*")
+    optable.addtok("infix:x", "infix:*")
+
+    optable.addtok("infix:<<", "<infix:+")
+    optable.addtok("infix:>>", "infix:<<")
+    optable.addtok("infix:&", "<infix:<<")
+    optable.addtok("infix:|", "<infix:&")
+    optable.addtok("infix:^", "infix:|")
 
     term = find_global "PunieGrammar", "term"
     optable.addtok("term:", ">infix:+", "left", term)

Modified: trunk/languages/punie/lib/PunieOpLookup.pir
==============================================================================
--- trunk/languages/punie/lib/PunieOpLookup.pir (original)
+++ trunk/languages/punie/lib/PunieOpLookup.pir Mon Feb 20 20:32:16 2006
@@ -37,6 +37,17 @@ data file, possibly in YAML.
     lookuptable = new PerlHash
     _add_entry(lookuptable, 'infix:+', 'add')
     _add_entry(lookuptable, 'infix:-', 'sub')
+    _add_entry(lookuptable, 'infix:*', 'mul')
+    _add_entry(lookuptable, 'infix:/', 'div')
+    _add_entry(lookuptable, 'infix:%', 'mod')
+    _add_entry(lookuptable, 'infix:x', 'repeat')
+    _add_entry(lookuptable, 'infix:.', 'concat')
+
+    _add_entry(lookuptable, 'infix:<<', 'shl')
+    _add_entry(lookuptable, 'infix:>>', 'shr')
+    _add_entry(lookuptable, 'infix:&', 'band')
+    _add_entry(lookuptable, 'infix:|', 'bor')
+    _add_entry(lookuptable, 'infix:^', 'bxor')
 
     store_global 'PunieOpLookup', 'lookuptable', lookuptable
 .end

Added: trunk/languages/punie/t/op_math.t
==============================================================================
--- (empty file)
+++ trunk/languages/punie/t/op_math.t   Mon Feb 20 20:32:16 2006
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+
+use strict;
+use lib qw(t . lib ../lib ../../lib ../../../lib);
+use Parrot::Test tests => 2;
+
+language_output_is('punie', <<'CODE', <<'OUT', 'simple math ops');
+print 1 + 2, "\n";
+print 3 - 2, "\n";
+print 4 * 4, "\n";
+print 4 / 2, "\n";
+print 5 % 2, "\n";
+CODE
+3
+1
+16
+2
+1
+OUT
+
+language_output_is('punie', <<'CODE', <<'OUT', 'simple bitwise ops');
+print 32 << 2, "\n";
+print 32 >> 2, "\n";
+print 36 & 4, "\n";
+print 32 | 4, "\n";
+print 36 ^ 4, "\n";
+CODE
+128
+8
+4
+36
+32
+OUT

Added: trunk/languages/punie/t/op_string.t
==============================================================================
--- (empty file)
+++ trunk/languages/punie/t/op_string.t Mon Feb 20 20:32:16 2006
@@ -0,0 +1,13 @@
+#!/usr/bin/perl
+
+use strict;
+use lib qw(t . lib ../lib ../../lib ../../../lib);
+use Parrot::Test tests => 1;
+
+language_output_is('punie', <<'CODE', <<'OUT', 'simple string ops');
+print 'a' . 'b', "\n";
+print 'a' x 5, "\n";
+CODE
+ab
+aaaaa
+OUT

Reply via email to