TranslationUnit[0:0->4:0] FunctionDeclaration[0:0->4:0] Type[0:0->0:3] void foo ( ) FunctionDefinition[1:0->4:0] { VariableDeclaration[2:4->2:13] Type[2:4->2:6] int a NumericLiteral[2:12->2:12] 7 VariableDeclaration[3:4->3:22] Type[3:4->3:6] int b UnaryExpression[3:12->3:22] prefix ~ UnaryExpression[3:14->3:21] prefix ! UnaryExpression[3:15->3:21] prefix ~ UnaryExpression[3:16->3:21] prefix ++ UnaryExpression[3:18->3:21] postfix ++ Name[3:18->3:18] a }