TranslationUnit[1:0->7:0] FunctionDeclaration[1:0->7:0] Type[1:0->1:4] int foo ( ) FunctionDefinition[2:0->7:0] { VariableDeclaration[3:4->3:9] Type[3:4->3:8] int x VariableDeclaration[4:4->4:16] Type[4:4->4:11] double y NumericLiteral[4:15->4:15] 2 VariableDeclaration[5:4->5:20] Type[5:4->5:11] double z BinaryExpression[5:15->5:20] Name[5:15->5:17] x + Name[5:19->5:20] y ReturnStatement[6:4->6:12] Name[6:11->6:12] z }