Commit 0158a248 authored by jhugues's avatar jhugues
Browse files

* Extend support for property types with "list of"



git-svn-id: https://tecsw.estec.esa.int/svn/taste/trunk/ocarina@5762 129961e7-ef38-4bb5-a8f7-c9a525a55882
parent 39a85f98
...@@ -7,71 +7,70 @@ property set Communication_Properties is ...@@ -7,71 +7,70 @@ property set Communication_Properties is
Fan_Out_Policy: enumeration (Broadcast, RoundRobin, Selective, OnDemand) Fan_Out_Policy: enumeration (Broadcast, RoundRobin, Selective, OnDemand)
applies to (port); applies to (port);
-- XXX not supported by Ocarina Connection_Pattern: list of list of Supported_Connection_Patterns
-- Connection_Pattern: list of list of Supported_Connection_Patterns applies to (connection);
-- applies to (connection);
Connection_Set: list of Connection_Pair
-- Connection_Set: list of Connection_Pair applies to (connection);
-- applies to (connection);
Connection_Pair: type record (
-- Connection_Pair: type record ( src: list of aadlinteger;
-- src: list of aadlinteger; dst: list of aadlinteger;);
-- dst: list of aadlinteger;);
Overflow_Handling_Protocol: enumeration (DropOldest, DropNewest, Error) => DropOldest Overflow_Handling_Protocol: enumeration (DropOldest, DropNewest, Error) => DropOldest
applies to (event port, event data port, subprogram access); applies to (event port, event data port, subprogram access);
Queue_Processing_Protocol: Supported_Queue_Processing_Protocols => FIFO Queue_Processing_Protocol: Supported_Queue_Processing_Protocols => FIFO
applies to (event port, event data port, subprogram access); applies to (event port, event data port, subprogram access);
Queue_Size: aadlinteger 0 .. Max_Queue_Size => 1 Queue_Size: aadlinteger 0 .. Max_Queue_Size => 1
applies to (event port, event data port, subprogram access); applies to (event port, event data port, subprogram access);
Required_Connection: aadlboolean => true Required_Connection: aadlboolean => true
applies to (feature); applies to (feature);
Timing: enumeration (sampled, immediate, delayed) => sampled Timing: enumeration (sampled, immediate, delayed) => sampled
applies to (port connection); applies to (port connection);
Transmission_Type: enumeration (push, pull) Transmission_Type: enumeration (push, pull)
applies to (data port, port connection, bus, virtual bus); applies to (data port, port connection, bus, virtual bus);
Input_Rate: Rate_Spec => (Value_Range => 1.0 .. 1.0; Rate_Unit => PerDispatch; Rate_Distribution => Fixed;) Input_Rate: Rate_Spec => (Value_Range => 1.0 .. 1.0; Rate_Unit => PerDispatch; Rate_Distribution => Fixed;)
applies to (port); applies to (port);
Input_Time: list of IO_Time_Spec => ((Time => Dispatch; Offset => 0 ns .. 0 ns;)) Input_Time: list of IO_Time_Spec => ((Time => Dispatch; Offset => 0 ns .. 0 ns;))
applies to (port); applies to (port);
IO_Time_Spec: type record ( IO_Time_Spec: type record (
Offset: Time_Range; Offset: Time_Range;
Time: IO_Reference_Time; Time: IO_Reference_Time;
); );
IO_Reference_Time: type enumeration (Dispatch, Start, Completion, Deadline, NoIO); IO_Reference_Time: type enumeration (Dispatch, Start, Completion, Deadline, NoIO);
Output_Rate: Rate_Spec => (Value_Range => 1.0 .. 1.0; Rate_Unit => PerDispatch; Rate_Distribution => Fixed;) Output_Rate: Rate_Spec => (Value_Range => 1.0 .. 1.0; Rate_Unit => PerDispatch; Rate_Distribution => Fixed;)
applies to (port); applies to (port);
Output_Time: list of IO_Time_Spec => ((Time => Completion; Offset => 0 ns .. 0 ns;)) Output_Time: list of IO_Time_Spec => ((Time => Completion; Offset => 0 ns .. 0 ns;))
applies to (port); applies to (port);
Rate_Spec: type record ( Rate_Spec: type record (
Value_Range: range of aadlreal; Value_Range: range of aadlreal;
Rate_Unit: enumeration (PerSecond, PerDispatch); Rate_Unit: enumeration (PerSecond, PerDispatch);
Rate_Distribution: Supported_Distributions; Rate_Distribution: Supported_Distributions;
); );
Subprogram_Call_Rate: Rate_Spec => (Value_Range => 1.0 .. 1.0; Rate_Unit => PerDispatch; Rate_Distribution => Fixed;) Subprogram_Call_Rate: Rate_Spec => (Value_Range => 1.0 .. 1.0; Rate_Unit => PerDispatch; Rate_Distribution => Fixed;)
applies to (subprogram access); applies to (subprogram access);
Transmission_Time: record ( Transmission_Time: record (
Fixed: Time_Range; Fixed: Time_Range;
PerByte: Time_Range;) PerByte: Time_Range;)
applies to (bus); applies to (bus);
Actual_Latency: Time_Range Actual_Latency: Time_Range
applies to (flow, connection, bus, processor, device, port); applies to (flow, connection, bus, processor, device, port);
Latency: Time_Range Latency: Time_Range
applies to (flow, connection, bus, processor, device, port); applies to (flow, connection, bus, processor, device, port);
end Communication_Properties; end Communication_Properties;
\ No newline at end of file
...@@ -7,110 +7,109 @@ property set Deployment_Properties is ...@@ -7,110 +7,109 @@ property set Deployment_Properties is
Allowed_Processor_Binding_Class: Allowed_Processor_Binding_Class:
inherit list of classifier (processor, virtual processor, system) inherit list of classifier (processor, virtual processor, system)
applies to (thread, thread group, process, system, virtual processor, device); applies to (thread, thread group, process, system, virtual processor, device);
Allowed_Processor_Binding: inherit list of reference (processor, virtual processor, system) Allowed_Processor_Binding: inherit list of reference (processor, virtual processor, system)
applies to (thread, thread group, process, system, virtual processor, device); applies to (thread, thread group, process, system, virtual processor, device);
Actual_Processor_Binding: inherit list of reference (processor, virtual processor) Actual_Processor_Binding: inherit list of reference (processor, virtual processor)
applies to (thread, thread group, process, system, virtual processor, device); applies to (thread, thread group, process, system, virtual processor, device);
Allowed_Memory_Binding_Class: Allowed_Memory_Binding_Class:
inherit list of classifier (memory, system, processor) inherit list of classifier (memory, system, processor)
applies to (thread, thread group, process, system, device, data, data port, event data port, subprogram, subprogram group, processor); applies to (thread, thread group, process, system, device, data, data port, event data port, subprogram, subprogram group, processor);
Allowed_Memory_Binding: inherit list of reference (memory, system, processor) Allowed_Memory_Binding: inherit list of reference (memory, system, processor)
applies to (thread, thread group, process, system, device, data, data port, event data port, subprogram, subprogram group, processor); applies to (thread, thread group, process, system, device, data, data port, event data port, subprogram, subprogram group, processor);
Actual_Memory_Binding: inherit list of reference (memory) Actual_Memory_Binding: inherit list of reference (memory)
applies to (thread, thread group, process, system, processor, device, data, data port, event data port, subprogram, subprogram group); applies to (thread, thread group, process, system, processor, device, data, data port, event data port, subprogram, subprogram group);
Allowed_Connection_Binding_Class: Allowed_Connection_Binding_Class:
inherit list of classifier (processor, virtual processor, bus, virtual bus, device, memory) inherit list of classifier (processor, virtual processor, bus, virtual bus, device, memory)
applies to (feature, connection, thread, thread group, process, system, virtual bus, port); -- XXX added port applies to (feature, connection, thread, thread group, process, system, virtual bus, port); -- XXX added port
Allowed_Connection_Binding: inherit list of reference (processor, virtual processor, bus, virtual bus, device, memory) Allowed_Connection_Binding: inherit list of reference (processor, virtual processor, bus, virtual bus, device, memory)
applies to (feature, connection, thread, thread group, process, system, virtual bus); applies to (feature, connection, thread, thread group, process, system, virtual bus);
Actual_Connection_Binding: inherit list of reference (processor, virtual processor, bus, virtual bus, device, memory) Actual_Connection_Binding: inherit list of reference (processor, virtual processor, bus, virtual bus, device, memory)
applies to (feature, connection, thread, thread group, process, system, virtual bus); applies to (feature, connection, thread, thread group, process, system, virtual bus);
Allowed_Subprogram_Call: list of reference (subprogram) Allowed_Subprogram_Call: list of reference (subprogram)
applies to (subprogram access); applies to (subprogram access);
Actual_Subprogram_Call: reference (subprogram) Actual_Subprogram_Call: reference (subprogram)
applies to (subprogram access); applies to (subprogram access);
Allowed_Subprogram_Call_Binding: Allowed_Subprogram_Call_Binding:
list of reference (bus, processor, device) list of reference (bus, processor, device)
applies to (subprogram, thread, thread group, process, system); applies to (subprogram, thread, thread group, process, system);
Actual_Subprogram_Call_Binding: list of reference (bus, processor, memory, device) Actual_Subprogram_Call_Binding: list of reference (bus, processor, memory, device)
applies to (subprogram); applies to (subprogram);
Provided_Virtual_Bus_Class: inherit list of classifier (virtual bus) Provided_Virtual_Bus_Class: inherit list of classifier (virtual bus)
applies to (bus, virtual bus, processor, virtual processor, device, memory, system); applies to (bus, virtual bus, processor, virtual processor, device, memory, system);
Required_Virtual_Bus_Class: inherit list of classifier (virtual bus) Required_Virtual_Bus_Class: inherit list of classifier (virtual bus)
applies to (virtual bus, connection, port, thread, thread group, process, system, device); applies to (virtual bus, connection, port, thread, thread group, process, system, device);
Provided_Connection_Quality_Of_Service: inherit list of Supported_Connection_QoS Provided_Connection_Quality_Of_Service: inherit list of Supported_Connection_QoS
applies to (bus, virtual bus, processor, virtual processor, system, device, memory); applies to (bus, virtual bus, processor, virtual processor, system, device, memory);
Required_Connection_Quality_Of_Service: inherit list of Supported_Connection_QoS Required_Connection_Quality_Of_Service: inherit list of Supported_Connection_QoS
applies to (port, connection, virtual bus, thread, thread group, process, system, device); applies to (port, connection, virtual bus, thread, thread group, process, system, device);
-- XXX not supported by Ocarina Not_Collocated: record (
-- Not_Collocated: record ( Targets: list of reference (data, Targets: list of reference (data, thread, process, system, connection);
-- thread, process, system, connection); Location: Location: classifier (processor, memory, bus, system);) applies
-- classifier (processor, memory, bus, system);) applies to (process, system);
-- to (process, system);
Collocated: record ( Targets: list of reference (data, thread,
-- Collocated: record ( Targets: list of reference (data, thread, process, system, connection); Location: classifier
-- process, system, connection); Location: classifier (processor, memory, bus, system);) applies to
-- (processor, memory, bus, system);) applies to (process, system);
-- (process, system);
Allowed_Connection_Type: list of enumeration Allowed_Connection_Type: list of enumeration
(Sampled_Data_Connection, Immediate_Data_Connection, (Sampled_Data_Connection, Immediate_Data_Connection,
Delayed_Data_Connection, Port_Connection, Delayed_Data_Connection, Port_Connection,
Data_Access_Connection, Data_Access_Connection,
Subprogram_Access_Connection) Subprogram_Access_Connection)
applies to (bus, device); applies to (bus, device);
Allowed_Dispatch_Protocol: list of Supported_Dispatch_Protocols Allowed_Dispatch_Protocol: list of Supported_Dispatch_Protocols
applies to (processor, virtual processor); applies to (processor, virtual processor);
Allowed_Period: list of Time_Range Allowed_Period: list of Time_Range
applies to (processor, system, virtual processor); applies to (processor, system, virtual processor);
Allowed_Physical_Access_Class: list of classifier (device, processor, memory, bus) Allowed_Physical_Access_Class: list of classifier (device, processor, memory, bus)
applies to (bus); applies to (bus);
Allowed_Physical_Access: list of reference (device, processor, memory, bus) Allowed_Physical_Access: list of reference (device, processor, memory, bus)
applies to (bus); applies to (bus);
Memory_Protocol: enumeration (execute_only, read_only, write_only, read_write) => read_write Memory_Protocol: enumeration (execute_only, read_only, write_only, read_write) => read_write
applies to (memory); applies to (memory);
Runtime_Protection_Support : aadlboolean Runtime_Protection_Support : aadlboolean
applies to (processor, virtual processor); applies to (processor, virtual processor);
Scheduling_Protocol: inherit list of Supported_Scheduling_Protocols Scheduling_Protocol: inherit list of Supported_Scheduling_Protocols
applies to (virtual processor, processor); applies to (virtual processor, processor);
Preemptive_Scheduler: aadlboolean Preemptive_Scheduler: aadlboolean
applies to (processor); applies to (processor);
Thread_Limit: aadlinteger 0 .. Max_Thread_Limit Thread_Limit: aadlinteger 0 .. Max_Thread_Limit
applies to (processor, virtual processor); applies to (processor, virtual processor);
Priority_Map: list of Priority_Mapping Priority_Map: list of Priority_Mapping
applies to (processor); applies to (processor);
Priority_Mapping: type record ( Priority_Mapping: type record (
Aadl_Priority: aadlinteger; Aadl_Priority: aadlinteger;
RTOS_Priority: aadlinteger;); RTOS_Priority: aadlinteger;);
Priority_Range: range of aadlinteger Priority_Range: range of aadlinteger
applies to (processor, virtual processor); applies to (processor, virtual processor);
end Deployment_Properties; end Deployment_Properties;
...@@ -36,6 +36,7 @@ with Ocarina.ME_AADL.AADL_Tree.Nodes; ...@@ -36,6 +36,7 @@ with Ocarina.ME_AADL.AADL_Tree.Nodes;
with Ocarina.BE_AADL.Properties; with Ocarina.BE_AADL.Properties;
with Ocarina.BE_AADL.Identifiers; with Ocarina.BE_AADL.Identifiers;
with Ocarina.BE_AADL.Components; with Ocarina.BE_AADL.Components;
with Ocarina.BE_AADL.Components.Arrays;
package body Ocarina.BE_AADL.Components.Features is package body Ocarina.BE_AADL.Components.Features is
...@@ -44,6 +45,7 @@ package body Ocarina.BE_AADL.Components.Features is ...@@ -44,6 +45,7 @@ package body Ocarina.BE_AADL.Components.Features is
use Ocarina.BE_AADL.Properties; use Ocarina.BE_AADL.Properties;
use Ocarina.BE_AADL.Identifiers; use Ocarina.BE_AADL.Identifiers;
use Ocarina.BE_AADL.Components; use Ocarina.BE_AADL.Components;
use Ocarina.BE_AADL.Components.Arrays;
------------------- -------------------
-- Print_Feature -- -- Print_Feature --
...@@ -174,6 +176,11 @@ package body Ocarina.BE_AADL.Components.Features is ...@@ -174,6 +176,11 @@ package body Ocarina.BE_AADL.Components.Features is
else else
Print_Token (T_Port); Print_Token (T_Port);
end if; end if;
if Present (Array_Dimensions (Node)) then
Write_Space;
Print_Array_Dimensions (Array_Dimensions (Node));
end if;
end Print_Port_Spec; end Print_Port_Spec;
------------------------------- -------------------------------
......
...@@ -393,6 +393,12 @@ package body Ocarina.BE_AADL.Properties.Values is ...@@ -393,6 +393,12 @@ package body Ocarina.BE_AADL.Properties.Values is
Print_Identifier (Identifier (Node)); Print_Identifier (Identifier (Node));
Write_Space; Write_Space;
Print_Token (T_Colon); Print_Token (T_Colon);
if Is_List (Node) then
Write_Space;
Print_Token (T_List);
Write_Space;
Print_Token (T_Of);
end if;
Write_Space; Write_Space;
Print_Property_Type_Designator (Property_Type_Designator (Node)); Print_Property_Type_Designator (Property_Type_Designator (Node));
Print_Token (T_Semicolon); Print_Token (T_Semicolon);
......
...@@ -253,8 +253,10 @@ package body Ocarina.BE_AADL.Properties is ...@@ -253,8 +253,10 @@ package body Ocarina.BE_AADL.Properties is
end if; end if;
if Is_List (Property_Name_Type (Node)) then if Is_List (Property_Name_Type (Node)) then
Print_Tokens ((T_List, T_Of)); for J in 1 .. Multiplicity (Property_Name_Type (Node)) loop
Write_Space; Print_Tokens ((T_List, T_Of));
Write_Space;
end loop;
end if; end if;
Print_Property_Type_Designator Print_Property_Type_Designator
......
...@@ -79,7 +79,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -79,7 +79,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
// Scope_Definition: // Scope_Definition:
// XXX // XXX
// //
// //
interface Scope_Definition : Node_Id { interface Scope_Definition : Node_Id {
Node_Id Corresponding_Entity; Node_Id Corresponding_Entity;
...@@ -175,10 +175,10 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -175,10 +175,10 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
interface Package_Name : AADL_Entity { interface Package_Name : AADL_Entity {
List_Id Identifiers; List_Id Identifiers;
}; };
// package_declaration ::= { aadl_declaration }+ // package_declaration ::= { aadl_declaration }+
// [ properties ( { property_association }+ | none_statement ) ] // [ properties ( { property_association }+ | none_statement ) ]
// package_spec ::= // package_spec ::=
// package defining_package_name // package defining_package_name
// ( public package_declaration [ private package_declaration ] | // ( public package_declaration [ private package_declaration ] |
...@@ -211,7 +211,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -211,7 +211,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
// import_declaration | alias_declaration // import_declaration | alias_declaration
interface Name_Visibility_Declaration : Node_Id { interface Name_Visibility_Declaration : Node_Id {
boolean Is_Private; boolean Is_Private;
Node_Id Parent; Node_Id Parent;
List_Id List_Items; List_Id List_Items;
}; };
...@@ -221,10 +221,10 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -221,10 +221,10 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
// with ( package_name | property_set_identifier ) // with ( package_name | property_set_identifier )
// { , ( package_name | property_set_identifier ) }+ ; // { , ( package_name | property_set_identifier ) }+ ;
interface Import_Declaration : Named_AADL_Entity { interface Import_Declaration : Named_AADL_Entity {
boolean Is_Private; boolean Is_Private;
List_Id List_Items; // list of package or property_sets imported List_Id List_Items; // list of package or property_sets imported
}; };
// AADL_V2 // AADL_V2
...@@ -283,7 +283,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -283,7 +283,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
List_Id Flows; List_Id Flows;
List_Id Properties; List_Id Properties;
List_Id Annexes; List_Id Annexes;
Node_Id Parent; // Contains a entity_reference on the Node_Id Parent; // Contains a entity_reference on the
// extended component, if any // extended component, if any
List_Id Instances; List_Id Instances;
...@@ -337,7 +337,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -337,7 +337,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
List_Id Modes; List_Id Modes;
List_Id Properties; List_Id Properties;
List_Id Annexes; List_Id Annexes;
Node_Id Parent; // Contains a entity_reference on the Node_Id Parent; // Contains a entity_reference on the
// extended component, if any // extended component, if any
List_Id Instances; List_Id Instances;
List_Id Prototypes; // AADL_V2 only List_Id Prototypes; // AADL_V2 only
...@@ -345,7 +345,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -345,7 +345,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
}; };
interface Contained_Entity : Named_AADL_Entity { interface Contained_Entity : Named_AADL_Entity {
Node_Id Container_Component; Node_Id Container_Component;
}; };
interface Subclause : Contained_Entity { interface Subclause : Contained_Entity {
...@@ -361,7 +361,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -361,7 +361,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
// AADL_V2 // AADL_V2
// prototype ::= defining_prototype_identifier : component_category // prototype ::= defining_prototype_identifier : component_category
// [ unique_component_classifier_reference ] // [ unique_component_classifier_reference ]
// prototype_refinement ::= defining_prototype_identifier : refined to // prototype_refinement ::= defining_prototype_identifier : refined to
// component_category [ unique_component_classifier_reference ] ; // component_category [ unique_component_classifier_reference ] ;
...@@ -431,6 +431,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -431,6 +431,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
boolean Is_Feature; boolean Is_Feature;
boolean Is_Event; // FIXME: Rename to Is_Event_Port boolean Is_Event; // FIXME: Rename to Is_Event_Port
boolean Is_Data; // FIXME: Rename to Is_Data_Port boolean Is_Data; // FIXME: Rename to Is_Data_Port
Node_Id Array_Dimensions; // AADL_V2
}; };
// AADL_V1 // AADL_V1
...@@ -446,7 +447,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -446,7 +447,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
// unique_port_group_type_reference ::= // unique_port_group_type_reference ::=
// [ package_name :: ] port_group_type_identfier // [ package_name :: ] port_group_type_identfier
// AADL_V2 // AADL_V2
// feature_group_spec ::= // feature_group_spec ::=
// defining_feature_group_identifier : feature group // defining_feature_group_identifier : feature group
...@@ -454,7 +455,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -454,7 +455,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
// ( unique_feature_group_type_reference [ prototype_bindings ] ) // ( unique_feature_group_type_reference [ prototype_bindings ] )
// | prototype_identifier ) ] // | prototype_identifier ) ]
// [ { { featuregroup_property_association }+ } ] ; // [ { { featuregroup_property_association }+ } ] ;
// feature_group_refinement ::= // feature_group_refinement ::=
// defining_feature_group_identifier : refined to // defining_feature_group_identifier : refined to
// feature group // feature group
...@@ -462,7 +463,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -462,7 +463,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
// ( unique_feature_group_type_reference [ prototype_bindings ] ) // ( unique_feature_group_type_reference [ prototype_bindings ] )
// | prototype_identifier ) ] // | prototype_identifier ) ]
// [ { { featuregroup_property_association }+ } ] ; // [ { { featuregroup_property_association }+ } ] ;
// unique_feature_group_type_reference ::= // unique_feature_group_type_reference ::=
// [ package_name :: ] feature_group_type_identifier // [ package_name :: ] feature_group_type_identifier
...@@ -739,7 +740,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -739,7 +740,7 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
// | data_unique_type_reference . data_subprogram_identifier // | data_unique_type_reference . data_subprogram_identifier
interface Subprogram_Call : Subclause { interface Subprogram_Call : Subclause {
Node_Id In_Modes; Node_Id In_Modes;
// Refers to the modes of the containing sequence. Handled by the // Refers to the modes of the containing sequence. Handled by the
// Ocarina core only. // Ocarina core only.
...@@ -917,12 +918,12 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes { ...@@ -917,12 +918,12 @@ module Ocarina::ME_AADL::AADL_Tree::Nodes {
// [ in_modes_and_transitions ] ; // [ in_modes_and_transitions ] ;
// feature_connection ::= // feature_connection ::=
// source_feature_reference connection_symbol // source_feature_reference connection_symbol
// destination_feature_reference // destination_feature_reference
// connection_symbol ::= // connection_symbol ::=
// directional_connection_symbol | bidirectional_connection_symbol // directional_connection_symbol | bidirectional_connection_symbol
// directional_connection_symbol ::= -> //