606 lines
19 KiB
Plaintext
606 lines
19 KiB
Plaintext
================================================================================
|
|
null procedure
|
|
================================================================================
|
|
|
|
package P is
|
|
procedure A is null;
|
|
overriding procedure B is null;
|
|
procedure B is null with Inline;
|
|
end;
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(package_specification
|
|
(name
|
|
(identifier))
|
|
(null_procedure_declaration
|
|
(procedure_specification
|
|
(name
|
|
(identifier))))
|
|
(null_procedure_declaration
|
|
(overriding_indicator)
|
|
(procedure_specification
|
|
(name
|
|
(identifier))))
|
|
(null_procedure_declaration
|
|
(procedure_specification
|
|
(name
|
|
(identifier)))
|
|
(aspect_specification
|
|
(aspect_mark_list
|
|
(aspect_association
|
|
(aspect_mark
|
|
(identifier)))))))))
|
|
|
|
================================================================================
|
|
procedures
|
|
================================================================================
|
|
|
|
package P is
|
|
procedure A (P1, P2 : Integer; P3 : Float)
|
|
with Inline;
|
|
end;
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(package_specification
|
|
(name
|
|
(identifier))
|
|
(subprogram_declaration
|
|
(subprogram_specification
|
|
(procedure_specification
|
|
(name
|
|
(identifier))
|
|
(non_empty_parameter_profile
|
|
(formal_part
|
|
(parameter_specification_list
|
|
(parameter_specification
|
|
(defining_identifier_list
|
|
(identifier)
|
|
(identifier))
|
|
(name
|
|
(identifier)))
|
|
(parameter_specification
|
|
(defining_identifier_list
|
|
(identifier))
|
|
(name
|
|
(identifier))))))))
|
|
(aspect_specification
|
|
(aspect_mark_list
|
|
(aspect_association
|
|
(aspect_mark
|
|
(identifier)))))))))
|
|
|
|
================================================================================
|
|
abstract procedures
|
|
================================================================================
|
|
|
|
package P is
|
|
procedure B is abstract;
|
|
overriding procedure C is abstract with Inline;
|
|
end;
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(package_specification
|
|
(name
|
|
(identifier))
|
|
(subprogram_declaration
|
|
(subprogram_specification
|
|
(procedure_specification
|
|
(name
|
|
(identifier)))))
|
|
(subprogram_declaration
|
|
(overriding_indicator)
|
|
(subprogram_specification
|
|
(procedure_specification
|
|
(name
|
|
(identifier))))
|
|
(aspect_specification
|
|
(aspect_mark_list
|
|
(aspect_association
|
|
(aspect_mark
|
|
(identifier)))))))))
|
|
|
|
|
|
================================================================================
|
|
functions
|
|
================================================================================
|
|
|
|
package P is
|
|
function F (A, B : Integer) return not null access Integer
|
|
with Inline, Convention => C;
|
|
end;
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(package_specification
|
|
(name
|
|
(identifier))
|
|
(subprogram_declaration
|
|
(subprogram_specification
|
|
(function_specification
|
|
(name
|
|
(identifier))
|
|
(parameter_and_result_profile
|
|
(formal_part
|
|
(parameter_specification_list
|
|
(parameter_specification
|
|
(defining_identifier_list
|
|
(identifier)
|
|
(identifier))
|
|
(name
|
|
(identifier)))))
|
|
(result_profile
|
|
(access_definition
|
|
(null_exclusion)
|
|
(name
|
|
(identifier)))))))
|
|
(aspect_specification
|
|
(aspect_mark_list
|
|
(aspect_association
|
|
(aspect_mark
|
|
(identifier)))
|
|
(aspect_association
|
|
(aspect_mark
|
|
(identifier))
|
|
(aspect_definition
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier))))))))))))))))
|
|
|
|
================================================================================
|
|
subprogram body
|
|
================================================================================
|
|
|
|
package body P is
|
|
procedure A (B : Integer) is
|
|
V : Integer;
|
|
begin
|
|
null;
|
|
end A;
|
|
end;
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(proper_body
|
|
(package_body
|
|
(name
|
|
(identifier))
|
|
(non_empty_declarative_part
|
|
(declarative_item_pragma
|
|
(proper_body
|
|
(subprogram_body
|
|
(subprogram_specification
|
|
(procedure_specification
|
|
(name
|
|
(identifier))
|
|
(non_empty_parameter_profile
|
|
(formal_part
|
|
(parameter_specification_list
|
|
(parameter_specification
|
|
(defining_identifier_list
|
|
(identifier))
|
|
(name
|
|
(identifier))))))))
|
|
(non_empty_declarative_part
|
|
(declarative_item_pragma
|
|
(object_declaration
|
|
(defining_identifier_list
|
|
(identifier))
|
|
(subtype_indication
|
|
(name
|
|
(identifier))))))
|
|
(handled_sequence_of_statements
|
|
(sequence_of_statements
|
|
(statement
|
|
(simple_statement
|
|
(null_statement)))))
|
|
(name
|
|
(identifier))))))))))
|
|
|
|
================================================================================
|
|
Expression function membership
|
|
================================================================================
|
|
|
|
function F2 (A : Integer) return Boolean
|
|
is (A not in Small_Integer);
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(expression_function_declaration
|
|
(function_specification
|
|
(name
|
|
(identifier))
|
|
(parameter_and_result_profile
|
|
(formal_part
|
|
(parameter_specification_list
|
|
(parameter_specification
|
|
(defining_identifier_list
|
|
(identifier))
|
|
(name
|
|
(identifier)))))
|
|
(result_profile
|
|
(name
|
|
(identifier)))))
|
|
(aggregate
|
|
(record_aggregate
|
|
(record_component_association_list
|
|
(record_component_association
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier))))))
|
|
(membership_choice_list
|
|
(membership_choice
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier)))))))))))))))))
|
|
|
|
================================================================================
|
|
Expression function raise
|
|
================================================================================
|
|
|
|
function F3 return Boolean
|
|
is (raise Constraint_Error);
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(expression_function_declaration
|
|
(function_specification
|
|
(name
|
|
(identifier))
|
|
(parameter_and_result_profile
|
|
(result_profile
|
|
(name
|
|
(identifier)))))
|
|
(aggregate
|
|
(record_aggregate
|
|
(record_component_association_list
|
|
(record_component_association
|
|
(expression
|
|
(relation
|
|
(raise_expression
|
|
(name
|
|
(identifier))))))))))))
|
|
|
|
================================================================================
|
|
Expression function simple
|
|
================================================================================
|
|
|
|
function F4 return Boolean is (True);
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(expression_function_declaration
|
|
(function_specification
|
|
(name
|
|
(identifier))
|
|
(parameter_and_result_profile
|
|
(result_profile
|
|
(name
|
|
(identifier)))))
|
|
(aggregate
|
|
(record_aggregate
|
|
(record_component_association_list
|
|
(record_component_association
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier)))))))))))))))
|
|
|
|
================================================================================
|
|
Expression function if
|
|
================================================================================
|
|
|
|
function F (A : Integer) return Boolean
|
|
is (if A = 0 or A = 1 then True else False);
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(expression_function_declaration
|
|
(function_specification
|
|
(name
|
|
(identifier))
|
|
(parameter_and_result_profile
|
|
(formal_part
|
|
(parameter_specification_list
|
|
(parameter_specification
|
|
(defining_identifier_list
|
|
(identifier))
|
|
(name
|
|
(identifier)))))
|
|
(result_profile
|
|
(name
|
|
(identifier)))))
|
|
(aggregate
|
|
(conditional_expression
|
|
(if_expression
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier))))))
|
|
(relational_operator)
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(numeric_literal))))))
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier))))))
|
|
(relational_operator)
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(numeric_literal)))))))
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier))))))))
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier))))))))))))))
|
|
|
|
================================================================================
|
|
Expression function if extra parenthesis
|
|
================================================================================
|
|
|
|
function F5 (A : Integer) return Boolean
|
|
is ((if A = 0 then True else False));
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(expression_function_declaration
|
|
(function_specification
|
|
(name
|
|
(identifier))
|
|
(parameter_and_result_profile
|
|
(formal_part
|
|
(parameter_specification_list
|
|
(parameter_specification
|
|
(defining_identifier_list
|
|
(identifier))
|
|
(name
|
|
(identifier)))))
|
|
(result_profile
|
|
(name
|
|
(identifier)))))
|
|
(aggregate
|
|
(record_aggregate
|
|
(record_component_association_list
|
|
(record_component_association
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(aggregate
|
|
(conditional_expression
|
|
(if_expression
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier))))))
|
|
(relational_operator)
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(numeric_literal)))))))
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier))))))))
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier))))))))))))))))))))))))
|
|
|
|
======
|
|
Expression function case
|
|
======
|
|
|
|
function F (A : Integer) return Boolean
|
|
is (case A + 1 is
|
|
when 0 .. 1 | 3 .. 4 => True,
|
|
when others => False);
|
|
|
|
------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(expression_function_declaration
|
|
(function_specification
|
|
(name
|
|
(identifier))
|
|
(parameter_and_result_profile
|
|
(formal_part
|
|
(parameter_specification_list
|
|
(parameter_specification
|
|
(defining_identifier_list
|
|
(identifier))
|
|
(name
|
|
(identifier)))))
|
|
(result_profile
|
|
(name
|
|
(identifier)))))
|
|
(aggregate
|
|
(conditional_expression
|
|
(case_expression
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier)))))
|
|
(binary_adding_operator)
|
|
(term
|
|
(factor
|
|
(primary
|
|
(numeric_literal)))))))
|
|
(case_expression_alternative
|
|
(discrete_choice_list
|
|
(discrete_choice
|
|
(range_g
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(numeric_literal)))))
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(numeric_literal)))))))
|
|
(discrete_choice
|
|
(range_g
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(numeric_literal)))))
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(numeric_literal))))))))
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier)))))))))
|
|
(case_expression_alternative
|
|
(discrete_choice_list
|
|
(discrete_choice))
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier)))))))))))))))
|
|
|
|
=====
|
|
Expression function quantified
|
|
=====
|
|
|
|
function F (A : My_Array) return Boolean
|
|
is (for some E of A => E = 1);
|
|
|
|
|
|
------
|
|
|
|
(compilation
|
|
(compilation_unit
|
|
(expression_function_declaration
|
|
(function_specification
|
|
(name
|
|
(identifier))
|
|
(parameter_and_result_profile
|
|
(formal_part
|
|
(parameter_specification_list
|
|
(parameter_specification
|
|
(defining_identifier_list
|
|
(identifier))
|
|
(name
|
|
(identifier)))))
|
|
(result_profile
|
|
(name
|
|
(identifier)))))
|
|
(aggregate
|
|
(quantified_expression
|
|
(quantifier)
|
|
(iterator_specification
|
|
(identifier)
|
|
(name
|
|
(identifier)))
|
|
(assoc_expression
|
|
(expression
|
|
(relation
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(name
|
|
(identifier))))))
|
|
(relational_operator)
|
|
(simple_expression
|
|
(term
|
|
(factor
|
|
(primary
|
|
(numeric_literal)))))))))))))
|