mirror of
https://github.com/pragma-/pbot.git
synced 2024-11-29 15:29:32 +01:00
Update parens.py with edk's simplification of parentheses verbosity logic
This commit is contained in:
parent
936d45e04e
commit
ac6d913290
@ -13,7 +13,7 @@ use warnings;
|
|||||||
# These are set automatically by the build/commit script
|
# These are set automatically by the build/commit script
|
||||||
use constant {
|
use constant {
|
||||||
BUILD_NAME => "PBot",
|
BUILD_NAME => "PBot",
|
||||||
BUILD_REVISION => 467,
|
BUILD_REVISION => 468,
|
||||||
BUILD_DATE => "2013-11-14",
|
BUILD_DATE => "2013-11-14",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -42,13 +42,6 @@ class CParser(c_parser.CParser):
|
|||||||
|
|
||||||
|
|
||||||
class CGenerator(c_generator.CGenerator):
|
class CGenerator(c_generator.CGenerator):
|
||||||
def visit_BinaryOp(self, n):
|
|
||||||
lval_str = self._parenthesize_if(n.left,
|
|
||||||
lambda d: not self._is_simple_node(d))
|
|
||||||
rval_str = self._parenthesize_if(n.right,
|
|
||||||
lambda d: not self._is_simple_node(d))
|
|
||||||
return '(%s %s %s)' % (lval_str, n.op, rval_str)
|
|
||||||
|
|
||||||
def visit_UnaryOp(self, n):
|
def visit_UnaryOp(self, n):
|
||||||
# don't parenthesize an operand to sizeof if it's not a type
|
# don't parenthesize an operand to sizeof if it's not a type
|
||||||
if n.op == 'sizeof':
|
if n.op == 'sizeof':
|
||||||
@ -58,12 +51,8 @@ class CGenerator(c_generator.CGenerator):
|
|||||||
return 'sizeof %s' % self._parenthesize_unless_simple(n.expr)
|
return 'sizeof %s' % self._parenthesize_unless_simple(n.expr)
|
||||||
return super(CGenerator, self).visit_UnaryOp(n)
|
return super(CGenerator, self).visit_UnaryOp(n)
|
||||||
|
|
||||||
def _is_simple_node(self, n):
|
def visit_Assignment(self, n):
|
||||||
""" Returns True for nodes that are "simple" - i.e. nodes that always
|
return '%s %s %s' % (self.visit(n.lvalue), n.op, self._parenthesize_unless_simple(n.rvalue))
|
||||||
have higher precedence than operators.
|
|
||||||
"""
|
|
||||||
return isinstance(n,( c_ast.Constant, c_ast.ID, c_ast.ArrayRef,
|
|
||||||
c_ast.StructRef, c_ast.FuncCall, c_ast.BinaryOp))
|
|
||||||
|
|
||||||
def translate_to_c(input):
|
def translate_to_c(input):
|
||||||
parser = CParser(yacc_optimize=False)
|
parser = CParser(yacc_optimize=False)
|
||||||
|
Loading…
Reference in New Issue
Block a user