From: <fwi...@us...> - 2009-08-17 13:26:06
|
Revision: 6691 http://jython.svn.sourceforge.net/jython/?rev=6691&view=rev Author: fwierzbicki Date: 2009-08-17 13:25:59 +0000 (Mon, 17 Aug 2009) Log Message: ----------- Better BinOp col_offsets. Modified Paths: -------------- trunk/jython/grammar/Python.g trunk/jython/src/org/python/antlr/GrammarActions.java Modified: trunk/jython/grammar/Python.g =================================================================== --- trunk/jython/grammar/Python.g 2009-08-17 03:15:31 UTC (rev 6690) +++ trunk/jython/grammar/Python.g 2009-08-17 13:25:59 UTC (rev 6691) @@ -1149,7 +1149,11 @@ @after { $leftTok = $left.lparen; if ($op != null) { - $expr.tree = actions.makeBinOp($left.tree, operatorType.BitOr, $right); + Token tok = $left.start; + if ($left.lparen != null) { + tok = $left.lparen; + } + $expr.tree = actions.makeBinOp(tok, $left.tree, operatorType.BitOr, $right); } } : left=xor_expr @@ -1166,7 +1170,11 @@ returns [Token lparen = null] @after { if ($op != null) { - $xor_expr.tree = actions.makeBinOp($left.tree, operatorType.BitXor, $right); + Token tok = $left.start; + if ($left.lparen != null) { + tok = $left.lparen; + } + $xor_expr.tree = actions.makeBinOp(tok, $left.tree, operatorType.BitXor, $right); } $lparen = $left.lparen; } @@ -1183,7 +1191,11 @@ returns [Token lparen = null] @after { if ($op != null) { - $and_expr.tree = actions.makeBinOp($left.tree, operatorType.BitAnd, $right); + Token tok = $left.start; + if ($left.lparen != null) { + tok = $left.lparen; + } + $and_expr.tree = actions.makeBinOp(tok, $left.tree, operatorType.BitAnd, $right); } $lparen = $left.lparen; } @@ -1204,7 +1216,11 @@ } @after { if (!ops.isEmpty()) { - $shift_expr.tree = actions.makeBinOp($left.start, $left.tree, ops, $right, toks); + Token tok = $left.start; + if ($left.lparen != null) { + tok = $left.lparen; + } + $shift_expr.tree = actions.makeBinOp(tok, $left.tree, ops, $right, toks); } $lparen = $left.lparen; } @@ -1237,7 +1253,11 @@ } @after { if (!ops.isEmpty()) { - $arith_expr.tree = actions.makeBinOp($left.start, $left.tree, ops, $right, toks); + Token tok = $left.start; + if ($left.lparen != null) { + tok = $left.lparen; + } + $arith_expr.tree = actions.makeBinOp(tok, $left.tree, ops, $right, toks); } $lparen = $left.lparen; } @@ -1364,7 +1384,7 @@ if ($d != null) { List right = new ArrayList(); right.add($factor.tree); - $etype = actions.makeBinOp($etype, operatorType.Pow, right); + $etype = actions.makeBinOp($atom.start, $etype, operatorType.Pow, right); } } ; Modified: trunk/jython/src/org/python/antlr/GrammarActions.java =================================================================== --- trunk/jython/src/org/python/antlr/GrammarActions.java 2009-08-17 03:15:31 UTC (rev 6690) +++ trunk/jython/src/org/python/antlr/GrammarActions.java 2009-08-17 13:25:59 UTC (rev 6691) @@ -649,8 +649,8 @@ return new BoolOp(t, op, castExprs(values)); } - BinOp makeBinOp(PythonTree left, operatorType op, List rights) { - BinOp current = new BinOp(left, castExpr(left), op, castExpr(rights.get(0))); + BinOp makeBinOp(Token t, PythonTree left, operatorType op, List rights) { + BinOp current = new BinOp(t, castExpr(left), op, castExpr(rights.get(0))); for (int i = 1; i< rights.size(); i++) { expr right = castExpr(rights.get(i)); current = new BinOp(left, current, op, right); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |