// ************************************************************************** // // // // eses eses // // eses eses // // eses eseses esesese eses Embedded Systems Group // // ese ese ese ese ese // // ese eseseses eseseses ese Department of Computer Science // // eses eses ese eses // // eses eseses eseseses eses University of Kaiserslautern // // eses eses // // // // ************************************************************************** // // In contrast to Esterel, Quartz has no trap statements. However, programs // // with trap statements can be translated to programs without trap statements // // as indicated by the program below. The sequence "emit(t);never:pause;" // // replaces thereby an "exit(t)" which is similar to a break/goto statement // // in that it executes the parts "above" it, while it skips the parts "below" // // of it. Note that the pause statements denoted with never1 and never2 are // // will never hold a control flow. // // ************************************************************************** // module Trap(event ?i,a1,b1,a2,b2) { event t; weak immediate abort { emit(a1); if(i) { emit(t); never1: pause; } emit(b1); w: pause; emit(a2); emit(t); if(i) { emit(t); never2: pause; } emit(b2); } when(t); } drivenby { pause; emit(i); } drivenby { emit(i); }