abstract class Exec abstract class In_Exec(Exec) abstract class Out_Exec(Exec) association Exec_con [0..*] Out_Exec -> In_Exec [0..*] { Integer gate_from; Integer gate_to; } abstract class Data abstract class In_Data(Data) abstract class Out_Data(Data) association Data_con [0..*] Out_Data -> In_Data [0..*] class Start [1..1] (Out_Exec) class End [1..*] (In_Exec) abstract class Rule (In_Exec, Out_Exec, In_Data, Out_Data) { String file; } class Match (Rule) { optional Integer n; } class Rewrite (Rule) class Data_modify(In_Data, Out_Data) { String modify_dict; } class Loop(In_Exec, Out_Exec, In_Data, Out_Data) { optional Boolean choise; } # debugging tools class Print(In_Exec, Out_Exec, In_Data) { optional Boolean event; optional String label; }