# HG changeset patch # User paulb@localhost.localdomain # Date 1163544105 -3600 # Node ID 358247608f6b4e39f95fded073512a76b3ddfc6d # Parent 3468ff9574a1cf85d17263280bce0c9c2fdd42aa Added logical operators. diff -r 3468ff9574a1 -r 358247608f6b viewer.py --- a/viewer.py Tue Nov 14 23:40:13 2006 +0100 +++ b/viewer.py Tue Nov 14 23:41:45 2006 +0100 @@ -180,15 +180,16 @@ """ A browsing visitor for AST nodes. - Covered: AssAttr, AssList, AssName, AssTuple, Assign, AugAssign, Break, + Covered: And, AssAttr, AssList, AssName, AssTuple, Assign, AugAssign, Break, CallFunc, Class, Compare, Const, Continue, Dict, Discard, For, - Function, Getattr, If, Keyword, Lambda, List, Module, Name, Pass, Raise, Return, Slice, - Stmt, Subscript, Tuple, While. + Function, Getattr, If, Keyword, Lambda, List, Module, Name, Not, + Or, Pass, Raise, Return, Slice, Stmt, Subscript, Tuple, While. - Missing: And, Add, Assert, Backquote, Bitand, Bitor, Bitxor, Decorators, Div, - Ellipsis, Exec, FloorDiv, From, Global, Import, Invert, LeftShift, ListComp, ListCompFor, - ListCompIf, Mod, Mul, Not, Or, Power, Print, Printnl, RightShift, Sliceobj, - Sub, TryExcept, TryFinally, UnaryAdd, UnarySub, Yield. + Missing: Add, Assert, Backquote, Bitand, Bitor, Bitxor, Decorators, Div, + Ellipsis, Exec, FloorDiv, From, Global, Import, Invert, LeftShift, + ListComp, ListCompFor, ListCompIf, Mod, Mul, Not, Or, Power, Print, + Printnl, RightShift, Sliceobj, Sub, TryExcept, TryFinally, + UnaryAdd, UnarySub, Yield. """ def __init__(self, stream): @@ -469,6 +470,16 @@ # Expressions. + def visitAnd(self, node): + self.stream.write("\n") + first = 1 + for n in node.nodes: + if not first: + self._keyword("and") + self.dispatch(n) + first = 0 + self.stream.write("") + def visitAssAttr(self, node): self.stream.write("\n") self.dispatch(node.expr) @@ -594,6 +605,22 @@ raise ValueError, node self._name(node.name) + def visitNot(self, node): + self.stream.write("\n") + self._keyword("not") + self.dispatch(node.expr) + self.stream.write("") + + def visitOr(self, node): + self.stream.write("\n") + first = 1 + for n in node.nodes: + if not first: + self._keyword("or") + self.dispatch(n) + first = 0 + self.stream.write("") + def visitSlice(self, node): self.stream.write("\n") self.dispatch(node.expr)