Instantaneous Transitions in Esterel

Esterel is an imperative synchronous programming language for the specification of deterministic concurrent reactive systems. While providing the usual control-flow constructs-sequences, loops, conditionals, and exceptions-its lack of a goto instruction makes the programming of arbitrary finite state machines awkward and hinders the design of source-to-source program transformations. We previously introduced to Esterel a non-instantaneous gotopause instruction, which prevents the synchronous execution of code before and code after the transition. Here, we tackle instantaneous transitions. Concurrency demands we assign scopes and priorities to gotos, so we extend Esterel's exception handling mechanism to allow exception handlers in arbitrary locations. We advocate for and formalize the resulting language. We observe that instantaneous gotos complement but do not replace non-instantaneous gotopauses.

[1]  Robert de Simone,et al.  Optimizations for faster execution of Esterel programs , 2003, First ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2003. MEMOCODE '03. Proceedings..

[2]  Reinhard von Hanxleden,et al.  Synthesizing safe state machines from Esterel , 2006, LCTES '06.

[3]  Florence Maraninchi,et al.  The Argos Language: Graphical Representation of Automata and Description of Reactive Systems , 2007 .

[4]  Florence Maraninchi,et al.  Mode-Automata: About Modes and States for Reactive Systems , 1998, ESOP.

[5]  Ch. Andre,et al.  Synccharts: A visual representation of reactive behaviors , 1995 .

[6]  Marc Pouzet,et al.  A conservative extension of synchronous data-flow with state machines , 2005, EMSOFT.

[7]  David Harel,et al.  Statecharts: A Visual Formalism for Complex Systems , 1987, Sci. Comput. Program..

[8]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[9]  Michael von der Beeck,et al.  A Comparison of Statecharts Variants , 1994, FTRTFT.

[10]  Gérard Berry,et al.  The ESTEREL Synchronous Programming Language and its Mathematical Semantics , 1984, Seminar on Concurrency.

[11]  Frédéric Boussinot,et al.  The ESTEREL language , 1991, Proc. IEEE.

[12]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[13]  Charles André Representation and Analysis of Reactive Behaviors: A Synchronous Approach , 2000 .

[14]  Amir Pnueli,et al.  On the Development of Reactive Systems , 1989, Logics and Models of Concurrent Systems.

[15]  Edsger W. Dijkstra,et al.  Letters to the editor: go to statement considered harmful , 1968, CACM.

[16]  Robert de Simone,et al.  Curing schizophrenia by program rewriting in Esterel , 2004, Proceedings. Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2004. MEMOCODE '04..

[17]  Robert de Simone,et al.  Instantaneous Termination in Pure Esterel , 2003, SAS.

[18]  Olivier Tardieu,et al.  Goto and Concurrency Introducing Safe Jumps in Esterel , 2006, SLAP@ETAPS.

[19]  Gérard Berry,et al.  The constructive semantics of pure esterel , 1996 .