tree-sitter-ada/test/corpus/statements.txt
2022-12-12 11:35:04 +01:00

549 lines
15 KiB
Plaintext

================================================================================
Untyped Constant
================================================================================
A : constant := 111;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(number_declaration
(identifier)
(expression
(term
(numeric_literal))))))
================================================================================
Factors
================================================================================
A : constant Integer := 2 + 8 * 3;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(object_declaration
(identifier)
(identifier)
(expression
(term
(numeric_literal))
(binary_adding_operator)
(term
(numeric_literal)
(multiplying_operator)
(numeric_literal))))))
================================================================================
While
================================================================================
procedure P is
begin
while True loop
exit;
exit when A > 0;
end loop;
end;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier))
(handled_sequence_of_statements
(loop_statement
(iteration_scheme
(expression
(term
(identifier))))
(exit_statement)
(exit_statement
(expression
(term
(identifier))
(relational_operator)
(term
(numeric_literal)))))))))
================================================================================
For loops
================================================================================
procedure P is
begin
for E in Pkg.Arr'Range loop
goto end_loop;
<<end_loop>>
end loop;
for E of reverse Arr loop
delay 1.0;
end loop;
end P;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier))
(handled_sequence_of_statements
(loop_statement
(iteration_scheme
(loop_parameter_specification
(identifier)
(range_g
(selected_component
(identifier)
(identifier))
(tick)
(range_attribute_designator))))
(goto_statement
(identifier))
(label
(identifier)))
(loop_statement
(iteration_scheme
(iterator_specification
(identifier)
(identifier)))
(delay_relative_statement
(expression
(term
(numeric_literal))))))
(identifier))))
================================================================================
Named loop
================================================================================
procedure P is
begin
Main:
loop
exit Main;
end loop Main;
end;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier))
(handled_sequence_of_statements
(loop_statement
(loop_label
(identifier))
(exit_statement
(identifier))
(identifier))))))
================================================================================
Return
================================================================================
function F return Boolean is
begin
return True;
return A : My_Rec := (F => 1) do
null;
end return;
end F;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(function_specification
(identifier)
(result_profile
(identifier)))
(handled_sequence_of_statements
(simple_return_statement
(expression
(term
(identifier))))
(extended_return_statement
(extended_return_object_declaration
(identifier)
(identifier)
(expression
(term
(record_aggregate
(record_component_association_list
(component_choice_list
(identifier))
(expression
(term
(numeric_literal))))))))
(handled_sequence_of_statements
(null_statement))))
(identifier))))
================================================================================
Procedure call
================================================================================
procedure P (A : Integer) is
begin
P2 (1, False);
end P;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier)
(formal_part
(parameter_specification
(identifier)
(identifier))))
(handled_sequence_of_statements
(procedure_call_statement
(identifier)
(actual_parameter_part
(parameter_association
(expression
(term
(numeric_literal))))
(parameter_association
(expression
(term
(identifier)))))))
(identifier))))
================================================================================
Raise exception
================================================================================
procedure P is
begin
raise Constraint_Error;
raise Constraint_Error with "msg";
end;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier))
(handled_sequence_of_statements
(raise_statement
(identifier))
(raise_statement
(identifier)
(expression
(term
(string_literal))))))))
================================================================================
Function calls
================================================================================
procedure P is
A : Integer;
begin
A := Func (B => 1);
end;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier))
(non_empty_declarative_part
(object_declaration
(identifier)
(identifier)))
(handled_sequence_of_statements
(assignment_statement
(identifier)
(expression
(term
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(component_choice_list
(identifier))
(expression
(term
(numeric_literal)))))))))))))
================================================================================
if statement
================================================================================
procedure P is
begin
if A = 0 or else B = 1 then
declare
begin
null;
end;
elsif A = 1 then
declare
C : Integer;
begin
null;
exception
when Constraint_Error => null;
end;
else
begin
null;
end;
end if;
end P;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier))
(handled_sequence_of_statements
(if_statement
(expression
(term
(identifier))
(relational_operator)
(term
(numeric_literal))
(term
(identifier))
(relational_operator)
(term
(numeric_literal)))
(block_statement
(handled_sequence_of_statements
(null_statement)))
(elsif_statement_item
(expression
(term
(identifier))
(relational_operator)
(term
(numeric_literal)))
(block_statement
(non_empty_declarative_part
(object_declaration
(identifier)
(identifier)))
(handled_sequence_of_statements
(null_statement)
(exception_handler
(exception_choice_list
(exception_choice
(identifier)))
(null_statement)))))
(block_statement
(handled_sequence_of_statements
(null_statement)))))
(identifier))))
================================================================================
Case statement
================================================================================
procedure P is
begin
case Func(A => 1) is
when '1' .. '2' =>
null;
when '3' | '4' =>
null;
end case;
end;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier))
(handled_sequence_of_statements
(case_statement
(expression
(term
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(component_choice_list
(identifier))
(expression
(term
(numeric_literal))))))))
(case_statement_alternative
(discrete_choice_list
(discrete_choice
(range_g
(term
(character_literal))
(term
(character_literal)))))
(null_statement))
(case_statement_alternative
(discrete_choice_list
(discrete_choice
(expression
(term
(character_literal))))
(discrete_choice
(expression
(term
(character_literal)))))
(null_statement)))))))
================================================================================
Allocators
================================================================================
procedure P is
begin
A := new T;
A := new (pkg.pool) T'((F => 1));
end;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier))
(handled_sequence_of_statements
(assignment_statement
(identifier)
(expression
(term
(allocator
(identifier)))))
(assignment_statement
(identifier)
(expression
(term
(allocator
(subpool_specification
(selected_component
(identifier)
(identifier)))
(qualified_expression
(identifier)
(tick)
(expression
(term
(record_aggregate
(record_component_association_list
(component_choice_list
(identifier))
(expression
(term
(numeric_literal))))))))))))))))
================================================================================
Filtered for loops
================================================================================
procedure P is
begin
for E of Some_Array when E /= 0 loop
null;
end loop;
end;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier))
(handled_sequence_of_statements
(loop_statement
(iteration_scheme
(iterator_specification
(identifier)
(identifier)
(iterator_filter
(expression
(term
(identifier))
(relational_operator)
(term
(numeric_literal))))))
(null_statement))))))
================================================================================
Assignment target name
================================================================================
procedure P is
begin
Some_Very_Long.And_Complex (Expression) := @ + 1;
Another_Very_Long.And_Complex (Expression) := Function_Call (@);
end;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(subprogram_body
(procedure_specification
(identifier))
(handled_sequence_of_statements
(assignment_statement
(function_call
(selected_component
(identifier)
(identifier))
(actual_parameter_part
(parameter_association
(expression
(term
(identifier))))))
(expression
(term
(target_name))
(binary_adding_operator)
(term
(numeric_literal))))
(assignment_statement
(function_call
(selected_component
(identifier)
(identifier))
(actual_parameter_part
(parameter_association
(expression
(term
(identifier))))))
(expression
(term
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(expression
(term
(target_name)))))))))))))