================================================================================ 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 (identifier) (identifier)))) (entry_declaration (identifier)) (identifier)))) (task_body (identifier) (non_empty_declarative_part (object_declaration (identifier) (identifier))) (handled_sequence_of_statements (accept_statement (identifier) (formal_part (parameter_specification (identifier) (identifier))) (handled_sequence_of_statements (null_statement)) (identifier)) (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)))))) (conditional_entry_call (entry_call_alternative (procedure_call_statement (identifier) (actual_parameter_part (parameter_association (expression (term (numeric_literal))))))) (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 (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 (asynchronous_select (triggering_alternative (procedure_call_statement (identifier) (actual_parameter_part (parameter_association (expression (term (numeric_literal)))))) (null_statement)) (procedure_call_statement (identifier)))))))) (compilation_unit (null_statement)) (compilation_unit (procedure_call_statement (identifier))) (compilation_unit (procedure_call_statement (identifier)))) ================================================================================ Accept ================================================================================ accept Start (A : Integer; B : Integer) do null; end Start; -------------------------------------------------------------------------------- (compilation (compilation_unit (accept_statement (identifier) (formal_part (parameter_specification (identifier) (identifier)) (parameter_specification (identifier) (identifier))) (handled_sequence_of_statements (null_statement)) (identifier)))) ================================================================================ Select terminate ================================================================================ select accept Start; or terminate; end select; -------------------------------------------------------------------------------- (compilation (compilation_unit (selective_accept (select_alternative (accept_alternative (accept_statement (identifier)))) (select_alternative (terminate_alternative))))) ================================================================================ Task type with discriminant ================================================================================ package P is task type T (A : Integer) is end T; end; -------------------------------------------------------------------------------- (compilation (compilation_unit (package_declaration (identifier) (full_type_declaration (task_type_declaration (identifier) (known_discriminant_part (discriminant_specification_list (discriminant_specification (identifier) (identifier)))) (task_definition (identifier))))))) ================================================================================ Task type with aspect ================================================================================ package P is task type T (A : Integer) with Priority => 1 is end T; end; -------------------------------------------------------------------------------- (compilation (compilation_unit (package_declaration (identifier) (full_type_declaration (task_type_declaration (identifier) (known_discriminant_part (discriminant_specification_list (discriminant_specification (identifier) (identifier)))) (aspect_specification (aspect_mark_list (aspect_association (identifier) (expression (term (numeric_literal)))))) (task_definition (identifier)))))))