30.07.2013 Views

The Esterel v5 21 System Manual - Courses

The Esterel v5 21 System Manual - Courses

The Esterel v5 21 System Manual - Courses

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 2<br />

Using the <strong>Esterel</strong> Compiler<br />

This chapter presents the compiler structure in a detailed way. Its reading<br />

is useful for making the best usage of it.<br />

2.1 <strong>The</strong> <strong>Esterel</strong> <strong>v5</strong> <strong>21</strong> Compiler Structure<br />

<strong>The</strong> <strong>Esterel</strong> <strong>v5</strong> <strong>21</strong> compiler is made out of several internal processors controlled<br />

by a single esterel command. Normally, the user should only call<br />

this command and should never call directly the internal processors. However,<br />

it is important to know the names and functions of the processors.<br />

For this, it is necessary to understand what are the source and intermediate<br />

codes handled by the compiler and the associated file suffixes.<br />

strl A file foo.strl contains source <strong>Esterel</strong> code. It can contain several<br />

modules.<br />

ic A file foo.ic contains intermediate <strong>Esterel</strong> code. A file foo.ic is<br />

obtained from a file foo.strl by running the strlic processor.<br />

Each source module produces an intermediate code module, which<br />

starts by a set of tables and continues by a set of statements<br />

written in an imperative parallel kernel code roughly equivalent<br />

to the kernel <strong>Esterel</strong> calculus [1] but presented in a graph form,<br />

which is more efficient for compilation purposes. <strong>The</strong> strlic<br />

processor type-checks the source code and generates the ic code<br />

only if no errors are found.<br />

If a source module contains calls to other modules, the same calls<br />

appear in the ic code. <strong>The</strong> iclc processor resolves open calls<br />

and links together several ic modules by recursively expanding<br />

11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!