<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>Carlos Ramisch - personal page</title> <link rel="stylesheet" href="main.css" type="text/css" media="screen"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <div id="page_body"> <H1 >Evaluation de l'analyseur syntaxique 2015/2016</H1> <H2>1 - Compilation du compilateur</H2> Compilez votre analyseur à l'aide d'un Makefile. <H2>2 - Exécution sur des exemples existants</H2> <p>Vous pouvez modifier le script <tt>runEval.sh</tt> en modifiant le chemin vers l'exécutable de votre compilateur. Ensuite, exécutez-le pour effectuer les tests ci-dessous 100% automatiquement</p> <p>Analysez les programmes suivants :</p> <table border="1pt"> <tr><td>affect.l</td></tr> <tr><td>boucle.l</td></tr> <tr><td>expression.l</td></tr> <tr><td>max.l</td></tr> <tr><td>tri.l</td></tr> <tr><td>affect-err.l</td></tr> </table> <H2>3 - Exécution sur de nouveaux exemples</H2> <h3>3.1 Exemples compilés OK</h3> <p>Compilez à l'aide de votre compilateur, les programmes suivants :</p> <table border="1pt"> <tr><td>eval1.l</td></tr> <tr><td>eval2.l</td></tr> <tr><td>eval3.l</td></tr> <tr><td>eval4.l</td></tr> <tr><td>eval5.l</td></tr> <tr><td>eval6.l</td></tr> <tr><td>eval7.l</td></tr> <tr><td>eval8.l</td></tr> </table> <h3>3.1 Exemples pas compilés</h3> <p>Vérifiez que les programmes suivants ne compilent pas :</p> <table border="1pt"> <tr><td>eval1err.l</td></tr> <tr><td>eval2err.l</td></tr> <tr><td>eval3err.l</td></tr> <tr><td>eval4err.l</td></tr> <tr><td>eval5err.l</td></tr> </table> <!--<H2>4 - Ajout de la boucle <tt>faire - tantque</tt></H2> On désire ajouter à notre langage un nouveau type de boucle, dont voici la syntaxe:<br><br> <tt>faire IB tantque E;</tt><br><br> une telle instruction exécute le bloc d'instructions dans <tt>IB</tt> tant que la valeur de l'expression <tt>E</tt> est vraie, c'est-à-dire, ne vaut pas zéro. L'évaluation de l'expression est effectuée à la fin de la boucle, comme le <tt>do-while</tt> en C.--> <H2>4 - Ajout de la boucle <tt>pour</tt></H2> <p>On désire ajouter à notre langage une boucle de type <tt>pour</tt>, dont voici la syntaxe:</p> <p><tt>pour IAFF<sub>init</sub> E; IAFF<sub>incr</sub> faire IB</tt><br><br></p> <p>Une telle instruction exécute d'abord la première affectation, contenue dans <tt>IAFF<sub>init</sub></tt>, pour l'initialisation. Ensuite, tant que la valeur de l'expression <tt>E</tt> est vraie, c'est-à-dire, ne vaut pas zéro, elle exécute le bloc d'instructions dans <tt>IB</tt> suivi de l'instruction d'incrément <tt>IAFF<sub>incr</sub></tt>. Cette boucle est similaire à la boucle <tt>for</tt> en C. Cependant, il n'est pas possible de mettre autre chose qu'une affectation dans les parties d'initialisation et d'incrément (en C, elles peuvent être vides ou contenir n'importe quelle instruction-expression).</p> <!--<p>Modifiez l'analyseur lexical, l'analyseur syntaxique, la structure de l'arbre abstrait, et la génération de code afin de prendre en compte cette nouvelle instruction.</p>--> <p>Modifiez l'analyseur lexical et l'analyseur syntaxique afin de prendre en compte cette nouvelle instruction.</p> <H2>5 - Tests</H2> <p>Vous testerez votre nouvel analyseur sur les programmes suivants:</p> <table border="1pt"> <tr><td>test1.l</td></tr> <tr><td>test2.l</td></tr> <tr><td>test3.l</td></tr> <tr><td>test1err.l - ne doit pas compiler</td></tr> </table> <br/> </div> </body> </html>