================================================================================ tasks ================================================================================ package body P is task T is entry E (A : Integer); private entry E2; end T; task body T is A : Integer; begin accept E (A : Integer) do null; end E; select Call (1); or delay 1.0; end select; select Call (1); else null; end select; end T; end P; -------------------------------------------------------------------------------- (compilation (compilation_unit (package_body (identifier) (non_empty_declarative_part (object_declaration (single_task_declaration (identifier) (task_definition (entry_declaration (identifier) (formal_part (parameter_specification_list (parameter_specification (identifier) (identifier))))) (entry_declaration (identifier)) (identifier)))) (task_body (identifier) (non_empty_declarative_part (object_declaration (identifier) (identifier))) (handled_sequence_of_statements (statement (accept_statement (identifier) (formal_part (parameter_specification_list (parameter_specification (identifier) (identifier)))) (handled_sequence_of_statements (statement (null_statement))) (identifier))) (statement (timed_entry_call (entry_call_alternative (procedure_call_statement (identifier) (actual_parameter_part (parameter_association (expression (term (numeric_literal))))))) (delay_alternative (delay_relative_statement (expression (term (numeric_literal))))))) (statement (conditional_entry_call (entry_call_alternative (procedure_call_statement (identifier) (actual_parameter_part (parameter_association (expression (term (numeric_literal))))))) (statement (null_statement))))) (identifier))) (identifier)))) ================================================================================ Task types ================================================================================ package body P is task type T1; task type T is entry E (A : Integer); end T; task type T2 is new T with entry E2; end T2; end; -------------------------------------------------------------------------------- (compilation (compilation_unit (package_body (identifier) (non_empty_declarative_part (full_type_declaration (task_type_declaration (identifier))) (full_type_declaration (task_type_declaration (identifier) (task_definition (entry_declaration (identifier) (formal_part (parameter_specification_list (parameter_specification (identifier) (identifier))))) (identifier)))) (full_type_declaration (task_type_declaration (identifier) (identifier) (task_definition (entry_declaration (identifier)) (identifier)))))))) ================================================================================ asynchronous select ================================================================================ package body P is task body T is begin select Proc (1); null; then abort Proc2; end select; end; end; null; end; end; -------------------------------------------------------------------------------- (compilation (compilation_unit (package_body (identifier) (non_empty_declarative_part (task_body (identifier) (handled_sequence_of_statements (statement (asynchronous_select (triggering_alternative (procedure_call_statement (function_call (identifier) (actual_parameter_part (parameter_association (expression (term (numeric_literal))))))) (statement (null_statement))) (statement (procedure_call_statement (identifier)))))))))) (compilation_unit (statement (null_statement))) (compilation_unit (statement (procedure_call_statement (identifier)))) (compilation_unit (statement (procedure_call_statement (identifier)))))