tree-sitter-ada/test/corpus/tasking.txt
Emmanuel Briot 3b5200c14c Inline all rules that do not consume any character directly
This simplifies the trees significantly.
2022-12-09 12:32:06 +01:00

204 lines
5.5 KiB
Plaintext

================================================================================
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)))))