19.06.2014 Views

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

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.

Chapitre 4<br />

Exploration <strong>de</strong> l interprète EiC<br />

Toute fonction dans EiC doit être explicitement définie avec son type <strong>de</strong> retour, quelque<br />

soit le type :<br />

EiC 3> foo(){ int x; x=2; return x; };<br />

Error in ::EiC:: near line 3: Un<strong>de</strong>clared i<strong>de</strong>ntifier foo<br />

Error in ::EiC:: near line 3: Expected ;<br />

Error in ::EiC:: near line 3: Misplaced return statement<br />

Error in ::EiC:: near line 3: Expected ;<br />

EiC 5> int foo(){ int x; x=2; return x; };<br />

(void)<br />

L ancienne syntaxe <strong>de</strong> déclarations et <strong>de</strong> définitions <strong>de</strong> fonctions C n est pas supportée<br />

par EiC, telle que :<br />

int f(value) int value { } /* illégal -> vieux style <strong>de</strong> syntaxe C */<br />

Le préprocesseur <strong>de</strong> EiC ne gère pas la directive #line.<br />

EiC a donné à la directive #inclu<strong>de</strong> plus <strong>de</strong> possibilités comme l inclusion d un fichier<br />

source sans " " ou < >.<br />

Les différences entre EiC et l ISO C sont essentiellement dues au fait que EiC est un interprète<br />

du langage C. Ainsi, EiC est capable <strong>de</strong> supporter l ensemble <strong>de</strong>s spécificités du langage C, mis à<br />

part <strong>de</strong>ux ou trois fonctionnalités et syntaxes non encore supportées [BRE 03]. Ces lacunes ne<br />

sont cependant pas un handicap, elles vont seulement nous contraindre à mettre en forme le co<strong>de</strong><br />

C avant <strong>de</strong> l interpréter avec EiC.<br />

4.2. Structure <strong>de</strong> fichiers<br />

Nous présentons dans cette section l arborescence <strong>de</strong>s principaux fichiers sources constituant<br />

EiC, <strong>de</strong> manière à montrer le rôle que jouent certains fichiers dans la procédure d interprétation<br />

et d exécution du co<strong>de</strong> C. Dans la figure 17 ci-<strong>de</strong>ssous, on peut voir l arborescence <strong>de</strong>s dossiers<br />

avec le détail du contenu <strong>de</strong>s principaux répertoires. Seuls les principaux dossiers et fichiers<br />

impliqués dans le processus d interprétation <strong>de</strong> co<strong>de</strong> sont décrit dans ce qui suit.<br />

Le dossier bin/ contient le fichier binaire « eic » (surligné en jaune sur la figure 17) généré quand<br />

on compile le co<strong>de</strong> source <strong>de</strong> EiC ($make install dans le dossier eic_test/ ).<br />

Les sources <strong>de</strong> l interprète sont situées sous le dossier racine eic_test/ , nous avons<br />

volontairement omis <strong>de</strong> mettre le contenu <strong>de</strong> quelques répertoires ( config/ , doc/ , lib/ ,<br />

module/ et test/ ) qui ne jouent pas <strong>de</strong> rôle dans la procédure d interprétation <strong>de</strong> co<strong>de</strong>.<br />

Les principaux dossiers détaillés dans cette section sont les dossiers inclu<strong>de</strong>/ , main/ et src/ .<br />

Le dossier config/ contient les informations <strong>de</strong> configuration relatives à chaque environnement<br />

sur lequel fonctionne EiC. Le dossier doc/ , comme son nom l indique, contient un ensemble <strong>de</strong><br />

documentations techniques sur EiC. Les dossiers lib/ , module/ et tests/ contiennent<br />

respectivement <strong>de</strong>s fichiers binaires spécifiques à EiC, <strong>de</strong>s modules tels que gnuplot et le<br />

traitement <strong>de</strong>s cgi par EiC et <strong>de</strong>s exemples <strong>de</strong> programmes test pour l interprète.<br />

41

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

Saved successfully!

Ooh no, something went wrong!