diff -Naur Template-Toolkit-2.08/parser/Grammar.pm.skel Template-Toolkit-2.08-bitop/parser/Grammar.pm.skel --- Template-Toolkit-2.08/parser/Grammar.pm.skel Fri Jun 7 19:29:08 2002 +++ Template-Toolkit-2.08-bitop/parser/Grammar.pm.skel Wed Nov 27 21:36:36 2002 @@ -106,10 +106,11 @@ my @cmpop = keys %CMPOP; # my @binop = qw( + - * % ); # '/' above, in @tokens my @binop = qw( - * % ); # '+' and '/' above, in @tokens + my @bitop = qw( & ^ ); # fill lexer table, slice by slice, with reserved words and operators - @$LEXTABLE{ @RESERVED, @cmpop, @binop, @tokens } - = ( @RESERVED, ('CMPOP') x @cmpop, ('BINOP') x @binop, @tokens ); + @$LEXTABLE{ @RESERVED, @cmpop, @binop, @bitop, @tokens } + = ( @RESERVED, ('CMPOP') x @cmpop, ('BINOP') x @binop, ('BITOP') x @bitop, @tokens ); } #### diff -Naur Template-Toolkit-2.08/parser/Parser.yp Template-Toolkit-2.08-bitop/parser/Parser.yp --- Template-Toolkit-2.08/parser/Parser.yp Fri Jul 19 23:22:57 2002 +++ Template-Toolkit-2.08-bitop/parser/Parser.yp Wed Nov 27 21:34:19 2002 @@ -50,6 +50,7 @@ %left DOT %left CMPOP %left BINOP +%left BITOP %left '+' %left '/' %left DIV @@ -358,6 +359,7 @@ ; expr: expr BINOP expr { "$_[1] $_[2] $_[3]" } + | expr BITOP expr { "$_[1] $_[2] $_[3]" } | expr '/' expr { "$_[1] $_[2] $_[3]" } | expr '+' expr { "$_[1] $_[2] $_[3]" } | expr DIV expr { "int($_[1] / $_[3])" }