================================================================================ New expression ================================================================================ new Object -------------------------------------------------------------------------------- (source_file (new_expression class: (type_identifier))) ================================================================================ Method call ================================================================================ object.method(12, "27") -------------------------------------------------------------------------------- (source_file (method_call object: (identifier) method: (identifier) arguments: (integer_literal) arguments: (string_literal))) ================================================================================ Class declaration ================================================================================ class A { } -------------------------------------------------------------------------------- (source_file (class_declaration name: (identifier))) ================================================================================ Class type ================================================================================ type A = class { } -------------------------------------------------------------------------------- (source_file (type_declaration (identifier) (class_type))) ================================================================================ Class declaration extends ================================================================================ class A extends Object { } -------------------------------------------------------------------------------- (source_file (class_declaration name: (identifier) (extends_qualifier super: (type_identifier)))) ================================================================================ Class type ================================================================================ type A = class extends Object { } -------------------------------------------------------------------------------- (source_file (type_declaration name: (identifier) value: (class_type (extends_qualifier super: (type_identifier))))) ================================================================================ Class field ================================================================================ class A { var a : int := 12 var b := 27 } -------------------------------------------------------------------------------- (source_file (class_declaration name: (identifier) fields: (field_declaration name: (identifier) type: (type_identifier) (operator) value: (integer_literal)) fields: (field_declaration name: (identifier) (operator) value: (integer_literal)))) ================================================================================ Class method ================================================================================ class A { method m(a: int, b: string) : int = a method n() = () } -------------------------------------------------------------------------------- (source_file (class_declaration name: (identifier) fields: (method_declaration name: (identifier) parameters: (parameters name: (identifier) type: (type_identifier) name: (identifier) type: (type_identifier)) return_type: (type_identifier) body: (identifier)) fields: (method_declaration name: (identifier) parameters: (parameters) body: (sequence_expression))))