WikiLuc

Guest connection: login: Guest, password: anonymous

User Tools

Site Tools


dit:cours:compil

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

dit:cours:compil [2017/10/26 21:42] (current)
Line 1: Line 1:
 +====== Cours de Compilation (PDS) ======
  
 +  * Responssable:​ [[http://​people.irisa.fr/​Sebastien.Ferre/​|Sébastien Ferré]] <​sebastien.ferre@irisa.fr>​
 +  * Ma contribution:​ Chargé du TD et du TP du groupe du parcours Science informatique (SIF)
 +  * Contact: [[http://​people.irisa.fr/​Luc.Bouge/​|Luc Bougé]] <​luc.bouge@ens-rennes.fr>​
 +
 +
 +
 +
 +==== Travaux pratiques ====
 +
 +Voir la [[dit:​cours:​compil:​tp|page dédiée]]
 +
 +<WRAP center round tip 60%>
 +Vous trouverez ici un [[https://​gitlab.inria.fr/​bouge/​Cours/​blob/​master/​Prog1/​Canevas/​Rapport/​|canevas LaTeX]] pour le rapport
 +</​WRAP>​
 +
 +
 +==== Travaux dirigés ====
 +
 +Voir la [[dit:​cours:​compil:​td|page dédiée]]
 +
 +-----
 +
 +
 +
 +====== Ressources ======
 +
 +==== Exemples complets ====
 +
 +  * [[https://​gitlab.inria.fr/​bouge/​Cours/​tree/​master/​Compil/​Dot|Dot]]
 +  * [[https://​gitlab.inria.fr/​bouge/​Cours/​tree/​master/​Compil/​NaryOp| NaryOp]]
 +
 +Vous y trouverez les éléments suivants pour chaque langage
 +
 +  * Définition du type abstrait et //​pretty-printer//​ associé
 +  * Analyseur lexical: ''​lexer.mll''​ (pour ''​ocamllex''​)
 +  * Analyseur syntaxique: ''​parser.mly''​ (pour ''​ocamlyacc''​ ou ''​menhir''​)
 +  * Définition de l'​évaluateur d'​attributs ''​attributes.ml''​ si applicable
 +  * Harnais de test: ''​test.ml''​
 +  * ''​Makefile''​
 +  * ''​README''​ pour expliquer le fonctionnement
 +
 +==== OPAM ====
 +
 +  * [[https://​opam.ocaml.org|Site de référence]]
 +  * [[https://​opam.ocaml.org/​doc/​Install.html|Guide d'​installation]]
 +
 +
 +<WRAP center round tip 60%>
 +[[https://​gitlab.inria.fr/​bouge/​Cours/​wikis/​OPAM:​-Instructions-d'​installation|Tutoriel d'​installation]] pour les étudiants du M1 
 +</​WRAP>​
 +
 +==== Stream parser vs Yacc ====
 +
 +  * [[http://​www.ffconsultancy.com/​ocaml/​benefits/​parsing.html]]
 +
 +<​blockquote
 +>Many applications,​ most notably compiler writing, require streams of characters to be converted into data structures such as trees. This conversion is known as parsing. As a language designed for compiler writing, OCaml provides tools to help with the parsing of character data.
 +
 +OCaml provides two different forms of parsing:
 +  * Recursive-descent parsing using camlp4'​s syntax extension for stream parsing
 +  * Grammar-based parsing using ocamlyacc
 +
 +[...]
 +<​cite>​[[http://​www.ffconsultancy.com/​ocaml/​benefits/​parsing.html]]</​cite>​
 +</​blockquote>​
 +
 +==== Lex et Yacc/Menhir ====
 +
 +  * {{:​dit:​cours:​compil:​tp:​ocamllex-tutorial.pdf|Tutoriel ocamllex}}
 +  * {{:​dit:​cours:​compil:​tp:​ocamlyacc-tutorial.pdf|Tutoriel ocamlyacc}}
 +  * [[http://​caml.inria.fr/​pub/​docs/​manual-ocaml/​lexyacc.html|Documentation de référence Ocaml]]
 +  * [[https://​realworldocaml.org/​v1/​en/​html/​parsing-with-ocamllex-and-menhir.html|Chapitre tutoriel]] du livre en ligne [[http://​realworldocaml.org/​|Real World Ocaml]]
 +  * [[https://​opam.ocaml.org/​packages/​menhir/​|Page Menhir]] sur OPAM, avec la [[http://​gallium.inria.fr/​~fpottier/​menhir/​|documentation]]
 +
 +  * Un manuel général détaillé sur Yacc: [[http://​dinosaur.compilertools.net/​yacc/​|Yacc:​ Yet Another Compiler-Compiler]]
 +
 +<WRAP center round tip 60%>
 +L'​utilisation de Menhir est recommandée pour toute la phase de mise au point de votre grammaire Yacc. Il fournit une description détaillée des ambigüités (conflits) de la grammaire.
 +</​WRAP>​
 +==== Stream parsers ====
 +
 +  * [[https://​ocaml.org/​learn/​tutorials/​stream_expressions.html|Tutoriel OPAM]]
 +  * [[http://​caml.inria.fr/​pub/​docs/​tutorial-camlp4/​tutorial002.html|Tutoriel Ocaml]]
 +  * Documentation de référence Ocaml
 +
 +==== Grammars ====
 +
 +  * [[http://​caml.inria.fr/​pub/​docs/​tutorial-camlp4/​tutorial003.html|Tutoriel Ocaml]]
dit/cours/compil.txt · Last modified: 2017/10/26 21:42 (external edit)