Index: imcc.l
===================================================================
RCS file: /cvs/public/parrot/languages/imcc/imcc.l,v
retrieving revision 1.13
diff -u -r1.13 imcc.l
--- imcc.l	25 Sep 2002 22:50:57 -0000	1.13
+++ imcc.l	21 Oct 2002 07:10:40 -0000
@@ -109,6 +109,9 @@
 "restoreall"    return(RESTOREALL);
 "<<"            return(SHIFT_LEFT);
 ">>"            return(SHIFT_RIGHT);
+">>>"           return(SHIFT_RIGHT_U);
+"&&"            return(LOG_AND);
+"||"            return(LOG_OR);
 "~~"            return(LOG_XOR);
 "<"             return(RELOP_LT);
 "<="            return(RELOP_LTE);
Index: imcc.y
===================================================================
RCS file: /cvs/public/parrot/languages/imcc/imcc.y,v
retrieving revision 1.25
diff -u -r1.25 imcc.y
--- imcc.y	18 Oct 2002 19:12:25 -0000	1.25
+++ imcc.y	21 Oct 2002 07:10:40 -0000
@@ -349,7 +349,7 @@
 %token <t> SUB NAMESPACE CLASS ENDCLASS SYM LOCAL PARAM PUSH POP INC DEC
 %token <t> SHIFT_LEFT SHIFT_RIGHT INTV FLOATV STRINGV DEFINED LOG_XOR
 %token <t> RELOP_EQ RELOP_NE RELOP_GT RELOP_GTE RELOP_LT RELOP_LTE
-%token <t> GLOBAL ADDR CLONE RESULT RETURN POW
+%token <t> GLOBAL ADDR CLONE RESULT RETURN POW SHIFT_RIGHT_U LOG_AND LOG_OR
 %token <t> COMMA
 %token <s> LABEL
 %token <t> EMIT EOM
@@ -490,6 +490,7 @@
        target '=' var			{ $$ = MK_I("set", R2($1, $3)); }
     |  target '=' '!' var		{ $$ = MK_I("not", R2($1, $4));}
     |  target '=' '-' var		{ $$ = MK_I("neg", R2($1, $4));}
+    |  target '=' '~' var		{ $$ = MK_I("bnot", R2($1, $4));}
     |  target '=' var '+' var		{ $$ = MK_I("add", R3($1, $3, $5)); }
     |  target '=' var '-' var		{ $$ = MK_I("sub", R3($1, $3, $5)); }
     |  target '=' var '*' var		{ $$ = MK_I("mul", R3($1, $3, $5)); }
@@ -499,10 +500,13 @@
     |  target '=' var '.' var		{ $$ = MK_I("concat", R3($1,$3,$5)); }
     |  target '=' var SHIFT_LEFT var	{ $$ = MK_I("shl", R3($1, $3, $5)); }
     |  target '=' var SHIFT_RIGHT var	{ $$ = MK_I("shr", R3($1, $3, $5)); }
+    |  target '=' var SHIFT_RIGHT_U var	{ $$ = MK_I("lsr", R3($1, $3, $5)); }
+    |  target '=' var LOG_AND var	{ $$ = MK_I("and", R3($1, $3, $5)); }
+    |  target '=' var LOG_OR var	{ $$ = MK_I("or", R3($1, $3, $5)); }
     |  target '=' var LOG_XOR var	{ $$ = MK_I("xor", R3($1, $3, $5)); }
     |  target '=' var '&' var		{ $$ = MK_I("band", R3($1, $3, $5)); }
     |  target '=' var '|' var		{ $$ = MK_I("bor", R3($1, $3, $5)); }
-    |  target '=' var '~' var		{ $$ = MK_I("bxor", R3($1, $3, $5)); }
+    |  target '=' var '^' var		{ $$ = MK_I("bxor", R3($1, $3, $5)); }
     |  target '=' var '[' keylist ']'   { $$ = iINDEXFETCH($1, $3, $5); }
     |  var '[' keylist ']' '=' var	{ $$ = iINDEXSET($1, $3, $6); }
     |  target '=' NEW classname		{ $$ = iNEW($1, $4, 1); }
