// automatically generated by Xtext grammar es.unican.ctr.xtext.Mast2 with org.eclipse.xtext.common.Terminals import "http://mast.unican.es/ecoremast/Mast2" import "http://www.eclipse.org/emf/2002/Ecore" as ecore Mast_Model returns Mast_Model: 'Mast_Model' name=Identifier '{' ( 'Date' Date=Date_Time & 'System_PiP_Behavior' System_PiP_Behavior=Overhead_Type & 'Event_Queueing_Policy' Event_Queueing_Policy=Queueing_Policy_Type ) /*'Element_List' '{'*/ Element_List+=Model_Element ( "," Element_List+=Model_Element)* /*'}'*/ '}'; Model_Element returns Model_Element: // Mast_Package | Regular_Processor | Clock_Synchronization_Object | Ticker | Alarm_Clock | Packet_Based_Network_Impl | RTEP_Network | AFDX_Link | Regular_Switch_Impl | AFDX_Switch | Regular_Router | Primary_Scheduler | Secondary_Scheduler | Thread_Impl | Communication_Channel_Impl | Virtual_Schedulable_Resource | Virtual_Communication_Channel | Immediate_Ceiling_Mutex | Priority_Inheritance_Mutex | SRP_Mutex | Simple_Operation | Composite_Operation_Impl | Enclosing_Operation | Message | Composite_Message | Regular_End_To_End_Flow; Timer returns Timer: Ticker | Alarm_Clock; Driver returns Driver: Packet_Driver_Impl | Character_Packet_Driver | RTEP_Packet_Driver; Scheduling_Policy returns Scheduling_Policy: Fixed_Priority_Policy | EDF_Policy | FP_Packet_Based_Policy | Timetable_Driven_Policy | Timetable_Driven_Packet_Based_Policy | AFDX_Policy; Schedulable_Resource returns Schedulable_Resource: Thread_Impl | Communication_Channel_Impl | Virtual_Schedulable_Resource | Virtual_Communication_Channel; Processing_Resource returns Processing_Resource: Regular_Processor | Packet_Based_Network_Impl | RTEP_Network | AFDX_Link | Regular_Switch_Impl | AFDX_Switch | Regular_Router; Scheduling_Parameters returns Scheduling_Parameters: Interrupt_FP_Params | Fixed_Priority_Params | Non_Preemptible_FP_Params | Polling_Params | Periodic_Server_Params_Impl | Sporadic_Server_Params | Periodic_Server_Comm_Params_Impl | Sporadic_Server_Comm_Params | EDF_Params | Virtual_Sporadic_Server_Params | Virtual_Deferrable_Server_Params | Virtual_Periodic_Server_Params | Virtual_Sporadic_Comm_Params | Virtual_Deferrable_Comm_Params | Virtual_Periodic_Comm_Params | Virtual_Token_Bucket_Comm_Params | Partition_Params | AFDX_Virtual_Link; Scheduler returns Scheduler: Primary_Scheduler | Secondary_Scheduler; Synchronization_Parameters returns Synchronization_Parameters: SRP_Params; Overridden_Sched_Parameters returns Overridden_Sched_Parameters: Overridden_Fixed_Priority | Overridden_Permanent_FP | Overridden_Deadline; Mutual_Exclusion_Resource returns Mutual_Exclusion_Resource: Immediate_Ceiling_Mutex | Priority_Inheritance_Mutex | SRP_Mutex; Code_Operation returns Code_Operation: Simple_Operation | Composite_Operation_Impl | Enclosing_Operation; Message_Operation returns Message_Operation: Message | Composite_Message; Flow_Element returns Flow_Element: Singular_Event | Periodic_Event | Sporadic_Event | Unbounded_Event | Bursty_Event | Internal_Event | Step | Delay_Impl | Offset | Rate_Divisor | Fork | Join | Branch | Merge | Queried_Branch | Message_Fork | Message_Delivery | Message_Branch; Thread returns Thread: Thread_Impl | Virtual_Schedulable_Resource; Observer returns Observer: Queue_Size_Req | Hard_Local_Deadline | Hard_Global_Deadline_Impl | Hard_Global_Relative_Deadline | Soft_Local_Deadline | Soft_Global_Deadline_Impl | Soft_Global_Relative_Deadline | Max_Output_Jitter_Req | Global_Max_Miss_Ratio | Local_Max_Miss_Ratio | Composite_Observer; Event returns Event: Singular_Event | Periodic_Event | Sporadic_Event | Unbounded_Event | Bursty_Event | Internal_Event; Operation returns Operation: Simple_Operation | Composite_Operation_Impl | Enclosing_Operation | Message | Composite_Message; Workload_Event returns Workload_Event: Singular_Event | Periodic_Event | Sporadic_Event | Unbounded_Event | Bursty_Event; Network_Switch returns Network_Switch: Regular_Switch_Impl | AFDX_Switch | Regular_Router; //Mast_Package returns Mast_Package: // 'Mast_Package' name=Identifier '{' // /*'Element_List' '{'*/ Element_List+=Model_Element ( "," Element_List+=Model_Element)* /*'}'*/ // '}'; Regular_Processor returns Regular_Processor: 'Regular_Processor' name=Identifier '{' ( 'Speed_Factor' Speed_Factor=Float & 'Worst_ISR_Switch' Worst_ISR_Switch=Normalized_Execution_Time & 'Avg_ISR_Switch' Avg_ISR_Switch=Normalized_Execution_Time & 'Best_ISR_Switch' Best_ISR_Switch=Normalized_Execution_Time & 'Min_Interrupt_Priority' Min_Interrupt_Priority=Interrupt_Priority & 'Max_Interrupt_Priority' Max_Interrupt_Priority=Interrupt_Priority & ('Synchronization_Source' Synchronization_Source=[Clock_Synchronization_Object|EString])? & 'Scheduler' Scheduler=[Primary_Scheduler|EString] & ('Timer_List' '(' Timer_List+=[Timer|EString] ( "," Timer_List+=[Timer|EString])* ')' )? & ('System_Timer' System_Timer=[Timer|EString])? ) '}'; Clock_Synchronization_Object returns Clock_Synchronization_Object: 'Clock_Synchronization_Object' name=Identifier '{' 'Accuracy' Accuracy=Time '}'; Ticker returns Ticker: 'Ticker' name=Identifier '{' ( 'Max_Overhead' Max_Overhead=Normalized_Execution_Time & 'Avg_Overhead' Avg_Overhead=Normalized_Execution_Time & 'Min_Overhead' Min_Overhead=Normalized_Execution_Time & 'Is_Locally_Synchronized' Is_Locally_Synchronized=Assertion & 'Accuracy' Accuracy=Time & 'Period' Period=Time ) '}'; Alarm_Clock returns Alarm_Clock: 'Alarm_Clock' name=Identifier '{' ( 'Max_Overhead' Max_Overhead=Normalized_Execution_Time & 'Avg_Overhead' Avg_Overhead=Normalized_Execution_Time & 'Min_Overhead' Min_Overhead=Normalized_Execution_Time & 'Is_Locally_Synchronized' Is_Locally_Synchronized=Assertion & 'Accuracy' Accuracy=Time ) '}'; Packet_Based_Network_Impl returns Packet_Based_Network: 'Packet_Based_Network' name=Identifier '{' ( 'Speed_Factor' Speed_Factor=Float & 'Throughput' Throughput=Throughput & 'Transmission_Kind' Transmission_Kind=Transmision_Type & 'Max_Blocking' Max_Blocking=Normalized_Execution_Time & 'Max_Packet_Size' Max_Packet_Size=Bit_Count & 'Min_Packet_Size' Min_Packet_Size=Bit_Count & ('Synchronization_Source' Synchronization_Source=[Clock_Synchronization_Object|EString])? & 'Scheduler' Scheduler=[Primary_Scheduler|EString] ) (/*'Driver_List' '{'*/ Driver_List+=Driver ( "," Driver_List+=Driver)* /*'}'*/ )? '}'; RTEP_Network returns RTEP_Network: 'RTEP_Network' name=Identifier '{' ( 'Speed_Factor' Speed_Factor=Float & 'Throughput' Throughput=Throughput & 'Transmission_Kind' Transmission_Kind=Transmision_Type & 'Max_Blocking' Max_Blocking=Normalized_Execution_Time & 'Max_Packet_Size' Max_Packet_Size=Bit_Count & 'Min_Packet_Size' Min_Packet_Size=Bit_Count & 'Number_Of_Stations' Number_Of_Stations=Positive & 'Token_Delay' Token_Delay=Time & 'Failure_Timeout' Failure_Timeout=Time & 'Token_Transmission_Retries' Token_Transmission_Retries=Natural & 'Packet_Transmission_Retries' Packet_Transmission_Retries=Natural & 'Arbitration_Token_Size' Arbitration_Token_Size=Bit_Count & 'Transmit_Token_Size' Transmit_Token_Size=Bit_Count & ('Synchronization_Source' Synchronization_Source=[Clock_Synchronization_Object|EString])? & 'Scheduler' Scheduler=[Primary_Scheduler|EString] ) (/*'Driver_List' '{'*/ Driver_List+=Driver ( "," Driver_List+=Driver)* /*'}'*/ )? '}'; AFDX_Link returns AFDX_Link: 'AFDX_Link' name=Identifier '{' ( 'Speed_Factor' Speed_Factor=Float & 'Throughput' Throughput=Throughput & 'Max_Packet_Size' Max_Packet_Size=Bit_Count & 'Min_Packet_Size' Min_Packet_Size=Bit_Count & 'Max_HW_Tx_Latency' Max_HW_Tx_Latency=Time & 'Min_HW_Tx_Latency' Min_HW_Tx_Latency=Time & 'Avg_HW_Tx_Latency' Avg_HW_Tx_Latency=Time & 'Max_HW_Rx_Latency' Max_HW_Rx_Latency=Time & 'Min_HW_Rx_Latency' Min_HW_Rx_Latency=Time & 'Avg_HW_Rx_Latency' Avg_HW_Rx_Latency=Time & 'Ethernet_Overhead' Ethernet_Overhead=Bit_Count & 'Protocol_Overhead' Protocol_Overhead=Bit_Count & ('Synchronization_Source' Synchronization_Source=[Clock_Synchronization_Object|EString])? & 'Scheduler' Scheduler=[Primary_Scheduler|EString] ) (/*'Driver_List'*/ '{' Driver_List+=Driver ( "," Driver_List+=Driver)* /*'}'*/ )? '}'; Regular_Switch_Impl returns Regular_Switch: 'Regular_Switch' name=Identifier '{' ( 'Speed_Factor' Speed_Factor=Float & 'Max_Fixed_Fork_Latency' Max_Fixed_Fork_Latency=Normalized_Execution_Time & 'Avg_Fixed_Fork_Latency' Avg_Fixed_Fork_Latency=Normalized_Execution_Time & 'Min_Fixed_Fork_Latency' Min_Fixed_Fork_Latency=Normalized_Execution_Time & 'Max_Variable_Fork_Latency' Max_Variable_Fork_Latency=Normalized_Execution_Time & 'Avg_Variable_Fork_Latency' Avg_Variable_Fork_Latency=Normalized_Execution_Time & 'Min_Variable_Fork_Latency' Min_Variable_Fork_Latency=Normalized_Execution_Time & 'Max_Delivery_Latency' Max_Delivery_Latency=Normalized_Execution_Time & 'Avg_Delivery_Latency' Avg_Delivery_Latency=Normalized_Execution_Time & 'Min_Delivery_Latency' Min_Delivery_Latency=Normalized_Execution_Time & ('Synchronization_Source' Synchronization_Source=[Clock_Synchronization_Object|EString])? & 'Scheduler' Scheduler=[Primary_Scheduler|EString] ) '}'; AFDX_Switch returns AFDX_Switch: 'AFDX_Switch' name=Identifier '{' ( 'Speed_Factor' Speed_Factor=Float & 'Max_Fixed_Fork_Latency' Max_Fixed_Fork_Latency=Normalized_Execution_Time & 'Avg_Fixed_Fork_Latency' Avg_Fixed_Fork_Latency=Normalized_Execution_Time & 'Min_Fixed_Fork_Latency' Min_Fixed_Fork_Latency=Normalized_Execution_Time & 'Max_Variable_Fork_Latency' Max_Variable_Fork_Latency=Normalized_Execution_Time & 'Avg_Variable_Fork_Latency' Avg_Variable_Fork_Latency=Normalized_Execution_Time & 'Min_Variable_Fork_Latency' Min_Variable_Fork_Latency=Normalized_Execution_Time & 'Max_Delivery_Latency' Max_Delivery_Latency=Normalized_Execution_Time & 'Avg_Delivery_Latency' Avg_Delivery_Latency=Normalized_Execution_Time & 'Min_Delivery_Latency' Min_Delivery_Latency=Normalized_Execution_Time & ('Synchronization_Source' Synchronization_Source=[Clock_Synchronization_Object|EString])? & 'Scheduler' Scheduler=[Primary_Scheduler|EString] ) '}'; Regular_Router returns Regular_Router: 'Regular_Router' name=Identifier '{' ( 'Speed_Factor' Speed_Factor=Float & 'Max_Fixed_Fork_Latency' Max_Fixed_Fork_Latency=Normalized_Execution_Time & 'Avg_Fixed_Fork_Latency' Avg_Fixed_Fork_Latency=Normalized_Execution_Time & 'Min_Fixed_Fork_Latency' Min_Fixed_Fork_Latency=Normalized_Execution_Time & 'Max_Variable_Fork_Latency' Max_Variable_Fork_Latency=Normalized_Execution_Time & 'Avg_Variable_Fork_Latency' Avg_Variable_Fork_Latency=Normalized_Execution_Time & 'Min_Variable_Fork_Latency' Min_Variable_Fork_Latency=Normalized_Execution_Time & 'Max_Delivery_Latency' Max_Delivery_Latency=Normalized_Execution_Time & 'Avg_Delivery_Latency' Avg_Delivery_Latency=Normalized_Execution_Time & 'Min_Delivery_Latency' Min_Delivery_Latency=Normalized_Execution_Time & 'Max_Fixed_Branch_Latency' Max_Fixed_Branch_Latency=Normalized_Execution_Time & 'Avg_Fixed_Branch_Latency' Avg_Fixed_Branch_Latency=Normalized_Execution_Time & 'Min_Fixed_Branch_Latency' Min_Fixed_Branch_Latency=Normalized_Execution_Time & 'Max_Variable_Branch_Latency' Max_Variable_Branch_Latency=Normalized_Execution_Time & 'Avg_Variable_Branch_Latency' Avg_Variable_Branch_Latency=Normalized_Execution_Time & 'Min_Variable_Branch_Latency' Min_Variable_Branch_Latency=Normalized_Execution_Time & ('Synchronization_Source' Synchronization_Source=[Clock_Synchronization_Object|EString])? & 'Scheduler' Scheduler=[Primary_Scheduler|EString] ) '}'; Primary_Scheduler returns Primary_Scheduler: 'Primary_Scheduler' name=Identifier '{' ( 'Schedulable_Resource_List' '(' Schedulable_Resource_List+=[Schedulable_Resource|EString] ( "," Schedulable_Resource_List+=[Schedulable_Resource|EString])* ')' & 'Host' Host=[Processing_Resource|EString] & /*'Policy'*/ Policy=Scheduling_Policy ) '}'; Secondary_Scheduler returns Secondary_Scheduler: 'Secondary_Scheduler' name=Identifier '{' ( 'Schedulable_Resource_List' '(' Schedulable_Resource_List+=[Schedulable_Resource|EString] ( "," Schedulable_Resource_List+=[Schedulable_Resource|EString])* ')' & 'Host' Host=[Schedulable_Resource|EString] & /*'Policy'*/ Policy=Scheduling_Policy ) '}'; Thread_Impl returns Thread: 'Thread' name=Identifier '{' 'Scheduler' Scheduler=[Scheduler|EString] & /*'Scheduling_Parameters'*/ Scheduling_Parameters=Scheduling_Parameters & (/*'Sychronization_Parameters'*/ Synchronization_Parameters=Synchronization_Parameters)? '}'; Communication_Channel_Impl returns Communication_Channel: 'Communication_Channel' name=Identifier '{' ( 'Scheduler' Scheduler=[Scheduler|EString] & /*'Scheduling_Parameters'*/ Scheduling_Parameters=Scheduling_Parameters ) '}'; Virtual_Schedulable_Resource returns Virtual_Schedulable_Resource: 'Virtual_Schedulable_Resource' name=Identifier '{' ( 'Scheduler' Scheduler=[Scheduler|EString] & /*'Scheduling_Parameters'*/ Scheduling_Parameters=Scheduling_Parameters & (/*'Sychronization_Parameters'*/ Synchronization_Parameters=Synchronization_Parameters)? ) '}'; Virtual_Communication_Channel returns Virtual_Communication_Channel: 'Virtual_Communication_Channel' name=Identifier '{' ( 'Scheduler' Scheduler=[Scheduler|EString] & /*'Scheduling_Parameters'*/ Scheduling_Parameters=Scheduling_Parameters ) '}'; Immediate_Ceiling_Mutex returns Immediate_Ceiling_Mutex: 'Immediate_Ceiling_Mutex' name=Identifier '{' ( 'Ceiling' Ceiling=Priority & 'Preassigned' Preassigned=Assertion ) '}'; Priority_Inheritance_Mutex returns Priority_Inheritance_Mutex: {Priority_Inheritance_Mutex} 'Priority_Inheritance_Mutex' name=Identifier; SRP_Mutex returns SRP_Mutex: 'SRP_Mutex' name=Identifier '{' ( 'Preemption_Level' Preemption_Level=Preemption_Level & 'Preassigned' Preassigned=Assertion ) '}'; Simple_Operation returns Simple_Operation: 'Simple_Operation' name=Identifier '{' ( 'Worst_Case_Execution_Time' Worst_Case_Execution_Time=Normalized_Execution_Time & 'Avg_Case_Execution_Time' Avg_Case_Execution_Time=Normalized_Execution_Time & 'Best_Case_Execution_Time' Best_Case_Execution_Time=Normalized_Execution_Time & ('Mutex_To_Lock_List' '(' Mutex_To_Lock_List+=[Mutual_Exclusion_Resource|EString] ( "," Mutex_To_Lock_List+=[Mutual_Exclusion_Resource|EString])* ')' )? & ('Mutex_To_Unlock_List' '(' Mutex_To_Unlock_List+=[Mutual_Exclusion_Resource|EString] ( "," Mutex_To_Unlock_List+=[Mutual_Exclusion_Resource|EString])* ')' )? & ('Mutex_List' '(' Mutex_List+=[Mutual_Exclusion_Resource|EString] ( "," Mutex_List+=[Mutual_Exclusion_Resource|EString])* ')' )? & ('Overridden_Sched_Parameters' Overridden_Sched_Parameters=Overridden_Sched_Parameters)? ) '}'; Composite_Operation_Impl returns Composite_Operation: 'Composite_Operation' name=Identifier '{' ( 'Operation_List' '(' Operation_List+=[Code_Operation|EString] ( "," Operation_List+=[Code_Operation|EString])* ')' ('Overridden_Sched_Parameters' Overridden_Sched_Parameters=Overridden_Sched_Parameters)? ) '}'; Enclosing_Operation returns Enclosing_Operation: 'Enclosing_Operation' name=Identifier '{' ( 'Worst_Case_Execution_Time' Worst_Case_Execution_Time=Normalized_Execution_Time & 'Avg_Case_Execution_Time' Avg_Case_Execution_Time=Normalized_Execution_Time & 'Best_Case_Execution_Time' Best_Case_Execution_Time=Normalized_Execution_Time & 'Operation_List' '(' Operation_List+=[Code_Operation|EString] ( "," Operation_List+=[Code_Operation|EString])* ')' & ('Overridden_Sched_Parameters' Overridden_Sched_Parameters=Overridden_Sched_Parameters)? ) '}'; Message returns Message: 'Message' name=Identifier '{' ( 'Max_Message_Size' Max_Message_Size=Bit_Count & 'Avg_Message_Size' Avg_Message_Size=Bit_Count & 'Min_Message_Size' Min_Message_Size=Bit_Count ) '}'; Composite_Message returns Composite_Message: 'Composite_Message' name=Identifier '{' 'Message_List' '(' Message_List+=[Message_Operation|EString] ( "," Message_List+=[Message_Operation|EString])* ')' '}'; Regular_End_To_End_Flow returns Regular_End_To_End_Flow: 'Regular_End_To_End_Flow' name=Identifier '{' /*'Flow_Element_List' '{'*/ Flow_Element_List+=Flow_Element ( "," Flow_Element_List+=Flow_Element)* /*'}'*/ '}'; Packet_Driver_Impl returns Packet_Driver: 'Packet_Driver' '{' ( 'Message_Segmentation' Message_Segmentation=Assertion & 'High_Utilization_Mode' High_Utilization_Mode=Assertion & ('Packet_Send_Operation' Packet_Send_Operation=[Code_Operation|EString])? & ('Packet_Receive_Operation' Packet_Receive_Operation=[Code_Operation|EString])? & ('Packet_Server' Packet_Server=[Thread|EString])? ) '}'; Character_Packet_Driver returns Character_Packet_Driver: 'Character_Packet_Driver' '{' ( 'Message_Segmentation' Message_Segmentation=Assertion & 'High_Utilization_Mode' High_Utilization_Mode=Assertion & 'Character_Transmission_Time' Character_Transmission_Time=Time & ('Packet_Send_Operation' Packet_Send_Operation=[Code_Operation|EString])? & ('Packet_Receive_Operation' Packet_Receive_Operation=[Code_Operation|EString])? & ('Packet_Server' Packet_Server=[Thread|EString])? & ('Character_Send_Operation' Character_Send_Operation=[Code_Operation|EString])? & ('Character_Receive_Operation' Character_Receive_Operation=[Code_Operation|EString])? & ('Character_Server' Character_Server=[Thread|EString])? ) '}'; RTEP_Packet_Driver returns RTEP_Packet_Driver: 'RTEP_Packet_Driver' '{' ( 'Message_Segmentation' Message_Segmentation=Assertion & 'High_Utilization_Mode' High_Utilization_Mode=Assertion & ('Packet_Send_Operation' Packet_Send_Operation=[Code_Operation|EString])? & ('Packet_Receive_Operation' Packet_Receive_Operation=[Code_Operation|EString])? & ('Packet_Server' Packet_Server=[Thread|EString])? & ('Packet_Interrupt_Server' Packet_Interrupt_Server=[Thread|EString])? & ('Packet_ISR_Operation' Packet_ISR_Operation=[Code_Operation|EString])? & ('Token_Check_Operation' Token_Check_Operation=[Code_Operation|EString])? & ('Token_Manage_Operation' Token_Manage_Operation=[Code_Operation|EString])? & ('Packet_Discard_Operation' Packet_Discard_Operation=[Code_Operation|EString])? & ('Token_Retransmission_Operation' Token_Retransmission_Operation=[Code_Operation|EString])? & ('Packet_Retransmission_Operation' Packet_Retransmission_Operation=[Code_Operation|EString])? ) '}'; Fixed_Priority_Policy returns Fixed_Priority_Policy: 'Fixed_Priority_Policy' '{' ( 'Max_Priority' Max_Priority=Priority & 'Min_Priority' Min_Priority=Priority & 'Worst_Context_Switch' Worst_Context_Switch=Normalized_Execution_Time & 'Avg_Context_Switch' Avg_Context_Switch=Normalized_Execution_Time & 'Best_Context_Switch' Best_Context_Switch=Normalized_Execution_Time ) '}'; EDF_Policy returns EDF_Policy: 'EDF_Policy' '{' ( 'Worst_Context_Switch' Worst_Context_Switch=Normalized_Execution_Time & 'Avg_Context_Switch' Avg_Context_Switch=Normalized_Execution_Time & 'Best_Context_Switch' Best_Context_Switch=Normalized_Execution_Time & 'Is_Global' Is_Global=Assertion ) '}'; FP_Packet_Based_Policy returns FP_Packet_Based_Policy: 'FP_Packet_Based_Policy' '{' ( 'Max_Priority' Max_Priority=Priority & 'Min_Priority' Min_Priority=Priority & 'Packet_Overhead_Max_Size' Packet_Overhead_Max_Size=Bit_Count & 'Packet_Overhead_Avg_Size' Packet_Overhead_Avg_Size=Bit_Count & 'Packet_Overhead_Min_Size' Packet_Overhead_Min_Size=Bit_Count ) '}'; Timetable_Driven_Policy returns Timetable_Driven_Policy: 'Timetable_Driven_Policy' '{' ( 'MAF' MAF=Time & 'Worst_Context_Switch' Worst_Context_Switch=Normalized_Execution_Time & 'Avg_Context_Switch' Avg_Context_Switch=Normalized_Execution_Time & 'Best_Context_Switch' Best_Context_Switch=Normalized_Execution_Time & 'Partition_Table' '{' Partition_Table+=Partition_Window ( "," Partition_Table+=Partition_Window)* '}' ) '}'; Timetable_Driven_Packet_Based_Policy returns Timetable_Driven_Packet_Based_Policy: 'Timetable_Driven_Packet_Based_Policy' '{' ( 'MAF' MAF=Time & 'Partition_Table' '{' Partition_Table+=Partition_Window ( "," Partition_Table+=Partition_Window)* '}' ) '}'; AFDX_Policy returns AFDX_Policy: {AFDX_Policy} 'AFDX_Policy' ; Partition_Window returns Partition_Window: 'Partition_Window' '{' ( 'Partition_Name' Partition_Name=Identifier & 'Partition_Id' Partition_Id=Natural & 'Start_Time' Start_Time=Time & 'Length' Length=Time ) '}'; Interrupt_FP_Params returns Interrupt_FP_Params: 'Interrupt_FP_Params' '{' 'Priority' Priority=Interrupt_Priority '}'; Fixed_Priority_Params returns Fixed_Priority_Params: 'Fixed_Priority_Params' '{' ( 'Priority' Priority=Priority & 'Preassigned' Preassigned=Assertion ) '}'; Non_Preemptible_FP_Params returns Non_Preemptible_FP_Params: 'Non_Preemptible_FP_Params' '{' ( 'Priority' Priority=Priority & 'Preassigned' Preassigned=Assertion ) '}'; Polling_Params returns Polling_Params: 'Polling_Params' '{' ( 'Priority' Priority=Priority & 'Preassigned' Preassigned=Assertion & 'Polling_Period' Polling_Period=Time & 'Polling_Worst_Overhead' Polling_Worst_Overhead=Normalized_Execution_Time & 'Polling_Avg_Overhead' Polling_Avg_Overhead=Normalized_Execution_Time & 'Polling_Best_Overhead' Polling_Best_Overhead=Normalized_Execution_Time ) '}'; Periodic_Server_Params_Impl returns Periodic_Server_Params: 'Periodic_Server_Params' '{' ( 'Priority' Priority=Priority & 'Preassigned' Preassigned=Assertion & 'Replenishment_Period' Replenishment_Period=Time & 'Initial_Capacity' Initial_Capacity=Time ) '}'; Sporadic_Server_Params returns Sporadic_Server_Params: 'Sporadic_Server_Params' '{' ( 'Priority' Priority=Priority & 'Preassigned' Preassigned=Assertion & 'Replenishment_Period' Replenishment_Period=Time & 'Initial_Capacity' Initial_Capacity=Time & 'Background_Priority' Background_Priority=Priority & 'Max_Pending_Replenishments' Max_Pending_Replenishments=Positive ) '}'; Periodic_Server_Comm_Params_Impl returns Periodic_Server_Comm_Params: 'Periodic_Server_Comm_Params' '{' ( 'Priority' Priority=Priority & 'Preassigned' Preassigned=Assertion & 'Initial_Capacity' Initial_Capacity=Bit_Count & 'Replenishment_Period' Replenishment_Period=Time ) '}'; Sporadic_Server_Comm_Params returns Sporadic_Server_Comm_Params: 'Sporadic_Server_Comm_Params' '{' ( 'Priority' Priority=Priority & 'Preassigned' Preassigned=Assertion & 'Initial_Capacity' Initial_Capacity=Bit_Count & 'Replenishment_Period' Replenishment_Period=Time & 'Background_Priority' Background_Priority=Priority & 'Max_Pending_Replenishments' Max_Pending_Replenishments=Positive ) '}'; EDF_Params returns EDF_Params: 'EDF_Params' '{' ( 'Deadline' Deadline=Time & 'Preassigned' Preassigned=Assertion ) '}'; Virtual_Sporadic_Server_Params returns Virtual_Sporadic_Server_Params: 'Virtual_Sporadic_Server_Params' '{' ( 'Preassigned' Preassigned=Assertion & 'Budget' Budget=Normalized_Execution_Time & 'Period' Period=Time & 'Deadline' Deadline=Time ) '}'; Virtual_Deferrable_Server_Params returns Virtual_Deferrable_Server_Params: 'Virtual_Deferrable_Server_Params' '{' ( 'Preassigned' Preassigned=Assertion & 'Budget' Budget=Normalized_Execution_Time & 'Period' Period=Time & 'Deadline' Deadline=Time ) '}'; Virtual_Periodic_Server_Params returns Virtual_Periodic_Server_Params: 'Virtual_Periodic_Server_Params' '{' ( 'Preassigned' Preassigned=Assertion & 'Budget' Budget=Normalized_Execution_Time & 'Period' Period=Time & 'Deadline' Deadline=Time ) '}'; Virtual_Sporadic_Comm_Params returns Virtual_Sporadic_Comm_Params: 'Virtual_Sporadic_Comm_Params' '{' ( 'Preassigned' Preassigned=Assertion & 'Budget' Budget=Bit_Count & 'Period' Period=Time & 'Deadline' Deadline=Time ) '}'; Virtual_Deferrable_Comm_Params returns Virtual_Deferrable_Comm_Params: 'Virtual_Deferrable_Comm_Params' '{' ( 'Preassigned' Preassigned=Assertion & 'Budget' Budget=Bit_Count & 'Period' Period=Time & 'Deadline' Deadline=Time ) '}'; Virtual_Periodic_Comm_Params returns Virtual_Periodic_Comm_Params: 'Virtual_Periodic_Comm_Params' '{' ( 'Preassigned' Preassigned=Assertion & 'Budget' Budget=Bit_Count & 'Period' Period=Time & 'Deadline' Deadline=Time ) '}'; Virtual_Token_Bucket_Comm_Params returns Virtual_Token_Bucket_Comm_Params: 'Virtual_Token_Bucket_Comm_Params' '{' ( 'Preassigned' Preassigned=Assertion & 'Budget' Budget=Bit_Count & 'Max_Throughput' Max_Throughput=Throughput ) '}'; Partition_Params returns Partition_Params: 'Partition_Params' '{' ( 'Partition_Name' Partition_Name=Identifier & 'Partition_Id' Partition_Id=Natural ) '}'; AFDX_Virtual_Link returns AFDX_Virtual_Link: 'AFDX_Virtual_Link' '{' ( 'LMax' LMax=Bit_Count & 'BAG' BAG=Time ) '}'; SRP_Params returns SRP_Params: 'SRP_Params' '{' ( 'Preemption_Level' Preemption_Level=Preemption_Level & 'Preassigned' Preassigned=Assertion ) '}'; Overridden_Fixed_Priority returns Overridden_Fixed_Priority: 'Overridden_Fixed_Priority' '{' 'Priority' Priority=Priority '}'; Overridden_Permanent_FP returns Overridden_Permanent_FP: 'Overridden_Permanent_FP' '{' 'Priority' Priority=Priority '}'; Overridden_Deadline returns Overridden_Deadline: 'Overridden_Deadline' '{' 'Deadline' Deadline=Time '}'; Singular_Event returns Singular_Event: 'Singular_Event' name=Identifier '{' ( 'Phase' Phase=Absolute_Time & ('Timer' Timer=[Timer|EString])? ) '}'; Periodic_Event returns Periodic_Event: 'Periodic_Event' name=Identifier '{' ( 'Period' Period=Time & 'Max_Jitter' Max_Jitter=Time & 'Phase' Phase=Absolute_Time & ('Synchronized' Synchronized=Assertion)? & ('Timer' Timer=[Timer|EString])? ) '}'; Sporadic_Event returns Sporadic_Event: 'Sporadic_Event' name=Identifier '{' ( 'Avg_Interarrival' Avg_Interarrival=Time & 'Min_Interarrival' Min_Interarrival=Time & 'Distribution' Distribution=Distribution_Type ) '}'; Unbounded_Event returns Unbounded_Event: 'Unbounded_Event' name=Identifier '{' ( 'Avg_Interarrival' Avg_Interarrival=Time & 'Distribution' Distribution=Distribution_Type ) '}'; Bursty_Event returns Bursty_Event: 'Bursty_Event' name=Identifier '{' ( 'Bound_Interval' Bound_Interval=Time & 'Max_Arrivals' Max_Arrivals=Positive & 'Avg_Interarrival' Avg_Interarrival=Time & 'Distribution' Distribution=Distribution_Type ) '}'; Internal_Event returns Internal_Event: 'Internal_Event' name=Identifier '{' (/*'Observer_List' '{'*/ Observer_List+=Observer ( "," Observer_List+=Observer)* /*'}'*/ )? '}'; Step returns Step: 'Step' '{' ( 'Hold_Schedulable_Resource' Hold_Schedulable_Resource=Assertion & 'Input_Event' Input_Event=[Event|EString] & 'Output_Event' Output_Event=[Internal_Event|EString] & 'Step_Operation' Step_Operation=[Operation|EString] & 'Step_Schedulable_Resource' Step_Schedulable_Resource=[Schedulable_Resource|EString] ) '}'; Delay_Impl returns Delay: 'Delay' '{' ( 'Delay_Max_Interval' Delay_Max_Interval=Time & 'Delay_Avg_Interval' Delay_Avg_Interval=Time & 'Delay_Best_Interval' Delay_Best_Interval=Time & 'Input_Event' Input_Event=[Event|EString] & 'Output_Event' Output_Event=[Internal_Event|EString] & ('Timer' Timer=[Timer|EString])? ) '}'; Offset returns Offset: 'Offset' '{' ( 'Delay_Max_Interval' Delay_Max_Interval=Time & 'Delay_Avg_Interval' Delay_Avg_Interval=Time & 'Delay_Best_Interval' Delay_Best_Interval=Time & 'Input_Event' Input_Event=[Event|EString] & 'Output_Event' Output_Event=[Internal_Event|EString] & ('Timer' Timer=[Timer|EString])? & 'Referenced_Event' Referenced_Event=[Workload_Event|EString] ) '}'; Rate_Divisor returns Rate_Divisor: 'Rate_Divisor' '{' ( 'Rate_Factor' Rate_Factor=Positive & 'Input_Event' Input_Event=[Event|EString] & 'Output_Event' Output_Event=[Internal_Event|EString] ) '}'; Fork returns Fork: 'Fork' '{' ( 'Input_Event' Input_Event=[Event|EString] & 'Output_Event_List' '(' Output_Event_List+=[Internal_Event|EString] ( "," Output_Event_List+=[Internal_Event|EString])* ')' ) '}'; Join returns Join: 'Join' '{' ( 'Input_Event_List' '(' Input_Event_List+=[Event|EString] ( "," Input_Event_List+=[Event|EString])* ')' & 'Output_Event' Output_Event=[Internal_Event|EString] ) '}'; Branch returns Branch: 'Branch' '{' ( 'Output_Weight_List' '{' Output_Weight_List+=Float ( "," Output_Weight_List+=Float)* '}' & 'Delivery_Policy' Delivery_Policy=Delivery_Policy_Type & 'Input_Event' Input_Event=[Event|EString] & 'Output_Event_List' '(' Output_Event_List+=[Internal_Event|EString] ( "," Output_Event_List+=[Internal_Event|EString])* ')' ) '}'; Merge returns Merge: 'Merge' '{' ( 'Input_Event_List' '(' Input_Event_List+=[Event|EString] ( "," Input_Event_List+=[Event|EString])* ')' & 'Output_Event' Output_Event=[Internal_Event|EString] ) '}'; Queried_Branch returns Queried_Branch: 'Queried_Branch' '{' ( 'Request_Policy' Request_Policy=Request_Policy_Type & 'Input_Event' Input_Event=[Event|EString] & 'Output_Event_List' '(' Output_Event_List+=[Internal_Event|EString] ( "," Output_Event_List+=[Internal_Event|EString])* ')' ) '}'; Message_Fork returns Message_Fork: 'Message_Fork' '{' ( 'Switch' Switch=[Network_Switch|EString] & 'Input_Event' Input_Event=[Event|EString] & 'Output_Event_List' '(' Output_Event_List+=[Internal_Event|EString] ( "," Output_Event_List+=[Internal_Event|EString])* ')' ) '}'; Message_Delivery returns Message_Delivery: 'Message_Delivery' '{' ( 'Switch' Switch=[Network_Switch|EString] & 'Input_Event' Input_Event=[Event|EString] & 'Output_Event' Output_Event=[Internal_Event|EString] ) '}'; Message_Branch returns Message_Branch: 'Message_Branch' '{' ( 'Delivery_Policy' Delivery_Policy=Delivery_Policy_Type & 'Output_Weight_List' '{' Output_Weight_List+=Float ( "," Output_Weight_List+=Float)* '}' & 'Switch' Switch=[Network_Switch|EString] & 'Input_Event' Input_Event=[Event|EString] & 'Output_Event_List' '(' Output_Event_List+=[Internal_Event|EString] ( "," Output_Event_List+=[Internal_Event|EString])* ')' ) '}'; Queue_Size_Req returns Queue_Size_Req: 'Queue_Size_Req' '{' 'Max_Events' Max_Events=Natural '}'; Hard_Local_Deadline returns Hard_Local_Deadline: 'Hard_Local_Deadline' '{' 'Deadline' Deadline=Time '}'; Hard_Global_Deadline_Impl returns Hard_Global_Deadline: 'Hard_Global_Deadline' '{' ( 'Deadline' Deadline=Time & 'Referenced_Event' Referenced_Event=[Workload_Event|EString] ) '}'; Hard_Global_Relative_Deadline returns Hard_Global_Relative_Deadline: 'Hard_Global_Relative_Deadline' '{' ( 'Deadline' Deadline=Time & 'Referenced_Event' Referenced_Event=[Workload_Event|EString] ) '}'; Soft_Local_Deadline returns Soft_Local_Deadline: 'Soft_Local_Deadline' '{' 'Deadline' Deadline=Time '}'; Soft_Global_Deadline_Impl returns Soft_Global_Deadline: 'Soft_Global_Deadline' '{' ( 'Deadline' Deadline=Time & 'Referenced_Event' Referenced_Event=[Workload_Event|EString] ) '}'; Soft_Global_Relative_Deadline returns Soft_Global_Relative_Deadline: 'Soft_Global_Relative_Deadline' '{' ( 'Deadline' Deadline=Time & 'Referenced_Event' Referenced_Event=[Workload_Event|EString] ) '}'; Max_Output_Jitter_Req returns Max_Output_Jitter_Req: 'Max_Output_Jitter_Req' '{' ( 'Max_Output_Jitter' Max_Output_Jitter=Time & 'Referenced_Event' Referenced_Event=[Workload_Event|EString] ) '}'; Global_Max_Miss_Ratio returns Global_Max_Miss_Ratio: 'Global_Max_Miss_Ratio' '{' ( 'Deadline' Deadline=Time & 'Ratio' Ratio=Percentage & 'Referenced_Event' Referenced_Event=[Workload_Event|EString] ) '}'; Local_Max_Miss_Ratio returns Local_Max_Miss_Ratio: 'Local_Max_Miss_Ratio' '{' ( 'Deadline' Deadline=Time & 'Ratio' Ratio=Percentage ) '}'; Composite_Observer returns Composite_Observer: 'Composite_Observer' '{' 'Observer_List' '{' Observer_List+=Observer ( "," Observer_List+=Observer)* '}' '}'; /* *************** * DATA TYPE RULES * *************** */ EString returns ecore::EString: ID; Identifier returns Identifier: ID; Date_Time returns Date_Time: ID; Assertion returns Assertion: 'true' | 'false'; Positive returns Positive: // > 0 POSITIVE_INTEGER; Natural returns Natural: // >= 0 POSITIVE_INTEGER | '0'; Bit_Count returns Bit_Count: POSITIVE_INTEGER; Priority returns Priority: // [1, 2^15 - 1] POSITIVE_INTEGER; Interrupt_Priority returns Interrupt_Priority: // [1, 2^15 - 1] POSITIVE_INTEGER; Preemption_Level returns Preemption_Level: // [1, 2^15 - 1] POSITIVE_INTEGER; Throughput returns Throughput: INT; Float returns Float: POSITIVE_FLOATING; Time returns Time: // >= 0.0 POSITIVE_FLOATING | POSITIVE_FLOATING_SN; Absolute_Time returns Absolute_Time: // >= 0.0 POSITIVE_FLOATING | POSITIVE_FLOATING_SN; Normalized_Execution_Time returns Normalized_Execution_Time: // >= 0.0 POSITIVE_FLOATING | POSITIVE_FLOATING_SN; Percentage returns Percentage: POSITIVE_FLOATING | POSITIVE_FLOATING_SN; /* * ENUM RULES */ enum Overhead_Type returns Overhead_Type: POSIX | STRICT; enum Queueing_Policy_Type returns Queueing_Policy_Type: FIFO | PRIORITY; enum Transmision_Type returns Transmision_Type: SIMPLEX | HALF_DUPLEX | FULL_DUPLEX; enum Distribution_Type returns Distribution_Type: UNIFORM | POISSON; enum Delivery_Policy_Type returns Delivery_Policy_Type: SCAN | RANDOM; enum Request_Policy_Type returns Request_Policy_Type: FIFO | LIFO | RANDOM | SCAN; /* ************** * TERMINAL RULES * ************** */ /* * Lexical patterns for strings */ terminal ID: ('a'..'z'|'A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'.')*; /* * Lexical patterns for integer numbers */ terminal POSITIVE_INTEGER: ('1'..'9')('0'..'9')*; terminal NEGATIVE_INTEGER : '-' POSITIVE_INTEGER; terminal fragment NON_NEGATIVE_INTEGER: // ------------------------------- If present, it may clash with POSITIVE_INTEGER ====> 'fragment' POSITIVE_INTEGER | '0'; //terminal INTEGER: // --------------------------------------------------- If present, it may clash with POSITIVE_INTEGER // NON_NEGATIVE_INTEGER | NEGATIVE_INTEGER; /* * Lexical patterns for floating point numbers */ terminal POSITIVE_FLOATING: NON_NEGATIVE_INTEGER '.' '0'* POSITIVE_INTEGER*; terminal NEGATIVE_FLOATING: '-' POSITIVE_FLOATING; //terminal NON_NEGATIVE_FLOATING: // ------------------------------------ If present, it may clash with POSITIVE_FLOATING // POSITIVE_FLOATING | '0.0'; //terminal FLOATING: // -------------------------------------------------- If present, it may clash with POSITIVE_FLOATING // NON_NEGATIVE_FLOATING | NEGATIVE_FLOATING; /* * Lexical patterns for floating point numbers in Scientific Notation */ terminal POSITIVE_FLOATING_SN: NON_NEGATIVE_INTEGER '.' '0'* POSITIVE_INTEGER* 'E' '-'? POSITIVE_INTEGER; terminal NEGATIVE_FLOATING_SN: '-' POSITIVE_FLOATING_SN; //terminal FLOATING_SN : // ---------------------------------------------- If present, it may clash with POSITIVE_FLOATING_SN // POSITIVE_FLOATING_SN | NEGATIVE_FLOATING_SN; //terminal ML_COMMENT: // '/*' -> '*/'; //terminal SL_COMMENT: // '//' !('\n'|'\r')* ('\r'? '\n')?; //terminal WS: // (' '|'\t'|'\r'|'\n')+;