{ "data": { "Script": { "statements": [ { "data": { "ClassDeclaration": { "modifiers": 10, "name": "Foobar", "inherits": [], "statements": [ { "data": { "Var": { "modifier": 0, "var_type": { "data": { "Type": { "is_const": false, "scope": null, "datatype": { "data": { "DataTypePrimType": { "prim_type": "Int32" } }, "span": { "start": 32, "end": 35 } }, "modifiers": [] } }, "span": { "start": 32, "end": 35 } }, "identifier": "_a", "assignment": null } }, "span": { "start": 32, "end": 39 } }, { "data": { "Var": { "modifier": 0, "var_type": { "data": { "Type": { "is_const": false, "scope": null, "datatype": { "data": { "DataTypePrimType": { "prim_type": "Int32" } }, "span": { "start": 44, "end": 47 } }, "modifiers": [] } }, "span": { "start": 44, "end": 47 } }, "identifier": "_b", "assignment": null } }, "span": { "start": 44, "end": 51 } }, { "data": { "FuncDeclaration": { "modifiers": 0, "field_mod": null, "is_destructor": false, "is_constructor": true, "returns_reference": false, "return_type": { "data": { "Type": { "is_const": false, "scope": null, "datatype": { "data": { "DataTypeIdentifier": { "identifier": "Foobar" } }, "span": { "start": 57, "end": 63 } }, "modifiers": [] } }, "span": { "start": 57, "end": 63 } }, "name": "Foobar", "param_list": { "data": { "ParamList": { "parameters": [ { "parameter_type": { "data": { "Type": { "is_const": false, "scope": null, "datatype": { "data": { "DataTypePrimType": { "prim_type": "Int32" } }, "span": { "start": 64, "end": 67 } }, "modifiers": [] } }, "span": { "start": 64, "end": 67 } }, "type_mod": null, "identifier": "a", "default": null }, { "parameter_type": { "data": { "Type": { "is_const": false, "scope": null, "datatype": { "data": { "DataTypePrimType": { "prim_type": "Int32" } }, "span": { "start": 71, "end": 74 } }, "modifiers": [] } }, "span": { "start": 71, "end": 74 } }, "type_mod": null, "identifier": "b", "default": null } ] } }, "span": { "start": 63, "end": 77 } }, "is_const": false, "func_attr": 0, "block": { "data": { "StatBlock": { "statements": [ { "data": { "Assignment": { "left": { "data": { "VarAccess": { "scope": null, "identifier": "_a" } }, "span": { "start": 88, "end": 90 } }, "operator": "Assignment", "right": { "data": { "VarAccess": { "scope": null, "identifier": "a" } }, "span": { "start": 93, "end": 94 } } } }, "span": { "start": 88, "end": 94 } }, { "data": { "Assignment": { "left": { "data": { "VarAccess": { "scope": null, "identifier": "_b" } }, "span": { "start": 104, "end": 106 } }, "operator": "Assignment", "right": { "data": { "VarAccess": { "scope": null, "identifier": "b" } }, "span": { "start": 109, "end": 110 } } } }, "span": { "start": 104, "end": 110 } } ] } }, "span": { "start": 78, "end": 117 } } } }, "span": { "start": 57, "end": 117 } }, { "data": { "FuncDeclaration": { "modifiers": 0, "field_mod": null, "is_destructor": false, "is_constructor": false, "returns_reference": false, "return_type": { "data": { "Type": { "is_const": false, "scope": null, "datatype": { "data": { "DataTypePrimType": { "prim_type": "Int32" } }, "span": { "start": 123, "end": 126 } }, "modifiers": [] } }, "span": { "start": 123, "end": 126 } }, "name": "GetA", "param_list": { "data": { "ParamList": { "parameters": [] } }, "span": { "start": 131, "end": 133 } }, "is_const": false, "func_attr": 0, "block": { "data": { "StatBlock": { "statements": [ { "data": { "ReturnStatement": { "expression": { "data": { "VarAccess": { "scope": null, "identifier": "_a" } }, "span": { "start": 150, "end": 152 } } } }, "span": { "start": 143, "end": 153 } } ] } }, "span": { "start": 133, "end": 159 } } } }, "span": { "start": 123, "end": 159 } }, { "data": { "FuncDeclaration": { "modifiers": 0, "field_mod": null, "is_destructor": false, "is_constructor": false, "returns_reference": false, "return_type": { "data": { "Type": { "is_const": false, "scope": null, "datatype": { "data": { "DataTypePrimType": { "prim_type": "Int32" } }, "span": { "start": 165, "end": 168 } }, "modifiers": [] } }, "span": { "start": 165, "end": 168 } }, "name": "Add", "param_list": { "data": { "ParamList": { "parameters": [] } }, "span": { "start": 172, "end": 174 } }, "is_const": false, "func_attr": 0, "block": { "data": { "StatBlock": { "statements": [ { "data": { "ReturnStatement": { "expression": { "data": { "BinaryExpr": { "left": { "data": { "VarAccess": { "scope": null, "identifier": "_a" } }, "span": { "start": 192, "end": 194 } }, "operator": "Addition", "right": { "data": { "VarAccess": { "scope": null, "identifier": "_b" } }, "span": { "start": 197, "end": 199 } } } }, "span": { "start": 192, "end": 199 } } } }, "span": { "start": 185, "end": 200 } } ] } }, "span": { "start": 175, "end": 206 } } } }, "span": { "start": 165, "end": 206 } }, { "data": { "ClassDeclaration": { "modifiers": 0, "name": "Inner", "inherits": [], "statements": [ { "data": { "Var": { "modifier": 0, "var_type": { "data": { "Type": { "is_const": false, "scope": null, "datatype": { "data": { "DataTypePrimType": { "prim_type": "Int32" } }, "span": { "start": 234, "end": 237 } }, "modifiers": [] } }, "span": { "start": 234, "end": 237 } }, "identifier": "a", "assignment": null } }, "span": { "start": 234, "end": 240 } } ] } }, "span": { "start": 212, "end": 246 } } ] } }, "span": { "start": 0, "end": 248 } } ] } }, "span": { "start": 0, "end": 248 } }