User's Guide to the Esterel Editor

This class provides a text editor specialized for editing Esterel files. The editor is invoked automatically when opening any file with the ".strl" extension appended to its name. The EditEsterel class, which implements the editor, is derived from the EditProgram class, and therefore inherits all of its features. Its facility for tagging comments, strings, and keywords is inherited from this base class.

A somewhat complicated feature of the editor is its management of indenting. A line is automatically indented in response to a Tab character, and a selected region can be indented with the "Indent Region" command in the "Format" menu. Previous lines are used as a reference to determine how much indenting to do. There is no assurance that all correct Esterel code will be given reasonable indenting, but a reasonable coding style should result in good indenting. The indenting policy is illustrated below schematically for each Esterel construct by example, where "..." is an arbitrary section of code.

There is no indenting for module bodies:

    module
    ...;
    ...
    end
Various simple constructs have indented bodies:
    abort
        ...
    when ...

    
    await ... do
        ...
    end


    do
        ...
    upto ...


    do
        ...
    watching ...


    every ... do
        ...
    end


    if ... then
        ...
    end


    loop
        ...
    end


    loop
        ...
    each ...


    present ... then
        ...
    end


    repeat ... times 
        ...
    end


    signal ... in
        ...
    end


    suspend
        ...
    when ...
    

    trap ... in  
        ...
    end


    var ... in 
        ...
    end


    weak abort
        ...
    when...
Slightly more complicated constructs are handled similarly:
    abort
        ...
    when ... do
        ...
    end

    
    do
        ...
    watching ... timeout
        ...
    end
    

    if ... then
        ...
    else
        ...
    end


    if ... then
        ...
    elsif ... then
        ...
    else
        ...
    end


    present ... then
        ...
    else
        ...
    end


    weak abort
        ...
    when ... do
        ...
    end
Case and handle statements are treated specially. They are aligned with the preceding control statement.
    abort
        ...
    when
    case ... do
        ...
    case
    case ... do
        ...
    end


    present
    case ... do
        ...
    case
    case ... do
        ...
    end

    
    trap ... in
        ...
    handle ... do
        ...
    handle ...
    handle ... do
        ...
    end trap
Also, parallel operators alone on a line are shifted to the left:
    await ... do
        ...
    ||
        ...
    end
Incomplete statements have extra indenting on the subsequent lines, as in:
    input A, 
            B, 
            C;

Tycho Home Page


Copyright © 1996, The Regents of the University of California. All rights reserved.
Last updated: 12/16/96, comments to: eal@eecs.berkeley.edu