Author: smash
Date: Fri Mar  9 06:25:34 2007
New Revision: 17407

Modified:
   trunk/languages/pynie/src/builtins/oper.pir
   trunk/languages/pynie/src/parser/Grammar.pg

Log:
[pynie]
 * // operator (fdiv)
 * prefix:+ operator
 * << and >> operators

Courtesy of kjs++


Modified: trunk/languages/pynie/src/builtins/oper.pir
==============================================================================
--- trunk/languages/pynie/src/builtins/oper.pir (original)
+++ trunk/languages/pynie/src/builtins/oper.pir Fri Mar  9 06:25:34 2007
@@ -57,6 +57,10 @@
     .return ($I0)
 .end
 
+.sub 'prefix:+'
+    .param pmc n
+    .return (n)
+.end
 
 .sub 'prefix:++'
     .param pmc n

Modified: trunk/languages/pynie/src/parser/Grammar.pg
==============================================================================
--- trunk/languages/pynie/src/parser/Grammar.pg (original)
+++ trunk/languages/pynie/src/parser/Grammar.pg Fri Mar  9 06:25:34 2007
@@ -322,14 +322,14 @@
 }
 
 token literal {
-    | <stringliteral>    
+    | <stringliteral>
     | <imagnumber>
-    | <floatnumber>    
-    | <longinteger>     
-    | <integer> 
+    | <floatnumber>
+    | <longinteger>
+    | <integer>
 }
 
-token integer {    
+token integer {
     | <'0'> <[0..7]>+
     | <'0'> <[xX]> [ \d | <[a..f]> | <[A..F]> ]+
     | <[1..9]> \d* | <'0'>
@@ -341,7 +341,7 @@
 
 token imagnumber { [ <floatnumber> | <intpart> ] <[jJ]> }
 
-token floatnumber {    
+token floatnumber {
     | \d* <'.'> \d+ [ <[eE]> <[+\-]>? \d+ ]?
     | \d+ <'.'> [ <[eE]> <[+\-]>? \d+ ]?
     | \d+ <[eE]> <[+\-]>? \d+
@@ -499,16 +499,16 @@
 proto 'infix:**'   is looser('term:')        { ... }
 proto 'prefix:~'   is looser('infix:**')     { ... }
 proto 'prefix:+'   is looser('prefix:~')     { ... }
-proto 'prefix:-'   is equiv('prefix:+')      { ... }
+proto 'prefix:-'   is equiv('prefix:+')  is pirop('neg')     { ... }
 proto 'infix:*'    is looser('prefix:+') is pirop('mul')     { ... }
 proto 'infix:/'    is equiv('infix:*')   is pirop('div')     { ... }
-proto 'infix://'   is equiv('infix:*')       { ... }
+proto 'infix://'   is equiv('infix:*')   is pirop('fdiv')    { ... }
 proto 'infix:%'    is equiv('infix:*')   is pirop('mod')     { ... }
 proto 'infix:+'    is looser('infix:*')  is pirop('add')     { ... }
 proto 'infix:-'    is equiv('infix:+')   is pirop('sub')     { ... }
 
-proto 'infix:<<'   is looser('infix:+')      { ... }
-proto 'infix:>>'   is equiv('infix:<<')      { ... }
+proto 'infix:<<'   is looser('infix:+')  is pirop('shl')     { ... }
+proto 'infix:>>'   is equiv('infix:<<')  is pirop('shr')     { ... }
 proto 'infix:&'    is looser('infix:<<')     { ... }
 proto 'infix:^'    is looser('infix:&')      { ... }
 proto 'infix:|'    is looser('infix:^')      { ... }

Reply via email to