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:^') { ... }