Generating efficient code from data-flow programs

  • Nicolas Halbwachs
  • Pascal Raymond
  • Christophe Ratel
Session: Compiler Construction II
Part of the Lecture Notes in Computer Science book series (LNCS, volume 528)


This paper presents the techniques applied in compiling the synchronous data-flow language Lustre. The most original technique consists in synthesising an efficient control structure, by simulating the behavior of boolean variables at compile-time. Here, the techniques are explained on a small subset of Lustre.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [ASU86]
    A. Aho, R. Sethi, and J. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley, 1986.Google Scholar
  2. [AW85]
    E. A. Ashcroft and W. W. Wadge. Lucid, the data-flow programming language. Academic Press, 1985.Google Scholar
  3. [BCHP86]
    J-L. Bergerand, P. Caspi, N. Halbwachs, and J. Plaice. Automatic control systems programming using a real-time declarative language. In IFAC/IFIP Symp. 'SOCOCO 86, may 1986.Google Scholar
  4. [BFH90]
    A. Bouajjani, J. C. Fernandez, and N. Halbwachs. Minimal model generation. In Workshop on Computer-Aided Verification, june 1990.Google Scholar
  5. [BG85]
    G. Berry and G. Gonthier. The synchronous programming language Esterel, design, semantics, implementation. Technical Report 327, INRIA, 1985. to appear in Science of Computer Programming.Google Scholar
  6. [Bry86]
    R. E. Bryant. Graph-based algorithms for boolean function manipulation. IEEE Transactions on Computers, C-35(8), 1986.Google Scholar
  7. [Brz64]
    J. A. Brzozowski. Derivative of regular expressions. JACM, 11(4), 1964.Google Scholar
  8. [BS87]
    G. Berry and R. Sethi. From regular expressions to deterministic automata. TCS, 25(1), 1987.Google Scholar
  9. [CPHP87]
    P. Caspi, D. Pilaud, N. Halbwachs, and J. Plaice. Lustre: a declarative language for programming synchronous systems. In 14th ACM Symposium on Principles of Programming Languages, january 1987.Google Scholar
  10. [Fer90]
    J. C. Fernandez. An implementation of an efficient algorithm for bisimulation equivalence. Science of Computer Programming, 13(2–3), may 1990.Google Scholar
  11. [HCRP91]
    N. Halbwachs, P. Caspi, P. Raymond, and D. Pilaud. The synchronous dataflow programming language Lustre. Proceedings of the IEEE, Special Issue on Synchronous Programming, To appear, 1991.Google Scholar
  12. [Kah74]
    G. Kahn. The semantics of a simple language for parallel programming. In IFIP 74, North Holland, 1974.Google Scholar
  13. [McG82]
    J. R. Mc Graw. The Val language: description and analysis. TOPLAS, 4(1), january 1982.Google Scholar
  14. [Pla88]
    J. A. Plaice. Sémantique et compilation de Lustre, un langage déclaratif synchrone. Thesis, Institut National Polytechnique de Grenoble, 1988.Google Scholar
  15. [Plo81]
    G. D. Plotkin. A structural approach to operational semantics. Lecture Notes, Aarhus University, 1981.Google Scholar
  16. [PP83]
    N.S. Prywes and A. Pnueli. Compilation of nonprocedural specifications into computer programs. IEEE Transactions on Software Engineering, SE-9(3), may 1983.Google Scholar
  17. [PS87]
    J. A. Plaice and J-B. Saint. The Lustre-Esterel portable format. 1987. Unpublished Report, INRIA, Sophia Antipolis.Google Scholar
  18. [PT87]
    R. Paige and R. Tarjan. Three partition refinement algorithms. SIAM J. Comput., 16(6), 1987.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1991

Authors and Affiliations

  • Nicolas Halbwachs
    • 1
  • Pascal Raymond
    • 1
  • Christophe Ratel
    • 2
  1. 1.IMAG - LGI (U.A. CNRS 398)GrenobleFrance
  2. 2.Merlin Gerin - SESGrenobleFrance

Personalised recommendations