Dades generals

Curs acadèmic:
2017
Descripció:
Proporcionar als alumnes els coneixements bàsics de l'estructura i el funcionament d'un compilador.
Crèdits ECTS:
5

Grups

Grup A

Durada:
Semestral, 1r semestre
Professorat:
JORDI COLL CABALLERO  / JOSEP SUY FRANCH
Idioma de les classes:
Català (90%), Anglès (10%)

Competències

  • CT06 Disenyar propostes creatives
  • CT08 Planificar i organitzar les propostes i projectes
  • CT11 Prendre decisions per la resolució de situacions diverses
  • CC1 Capacitat per a tenir un coneixement profund dels principis fonamentals i models de la computació i saber-los aplicar per a intentar, seleccionar, valorar, modelar, i crear nous conceptes, teories, usos i desenvolupaments tecnològics relacionats amb la informàtica.
  • CC2 Capacitat per a conèixer els fonaments teòrics dels llenguatges de programació i les tècniques de procesament lèxic, sintàctic i semàntic associades, i saber aplicar-les per a la creació, disseny i processament de llenguatges.
  • CC3 Capacitat per avaluar la complexitat computacional d'un problema, conèixer estratègies algorítmiques que poguin conduir a la seva resolució i recomenar, desenvolupar i implementar aquella que garanteixi el millor rendiment d'acord amb els requisits establerts.

Continguts

1. Introducció.

          1.1. Traductors. Compiladors i intèrprets.

          1.2. Esquema d'un compilador

2. Anàlisi lèxic.

          2.1. Descripció i tasques.

          2.2. Especificació dels Tokens.

          2.3. Expressions regulars i llenguatges regulars.

          2.4. Programació d'un autòmat finit determinista.

3. Gramàtiques lliures de context.

          3.1. Gramàtiques. Arbre de derivació.

          3.2. Ambigüitat. Recursivitat.

          3.3. Anul·lable. Primer. Següent.

          3.4. Manipulacions de gramàtiques

4. Anàlisi sintàctic.

          4.1. Descripció, tasques i tipus.

          4.2. Anàlisi sintàctic descendent.

          4.3. Anàlisi sintàctic ascendent.

5. Anàlisi semàntic. Taula de símbols. Generació de codi intermedi.

          5.1. Característiques i tasques.

          5.2. Gramàtiques atribuïdes.

          5.3. Esquema de traducció atribuït.

          5.4. Taula de símbols.

          5.5. Generació de codi intermedi.

          5.6. Exemples

6. Optimització.

          6.1. Descripció i tipus.

          6.2. Optimització en blocs bàsics.

          6.3. Optimització en bucles.

          6.4. Optimització depenent de la màquina.

7. Dissenyar i implementar un compilador per a un llenguatge senzill.

          7.1. Descipció del llenguatge

          7.2. Aàlisi lèxic i sintàctic

          7.3. Semàntica i generació de codi sobre Bytecode

Activitats

Tipus d’activitat Hores amb professor Hores sense professor Total
Anàlisi / estudi de casos 33,5 51 84,5
Classes expositives 11,5 11 22,5
Resolució d'exercicis 0 10 10
Treball en equip 5 3 8
Total 50 75 125

Bibliografia

  • Aho, Alfred V (1990 ). Compiladores : principios, técnicas y herramientas . Argentina [etc.]: Addison-Wesley Iberoamericana. Catàleg
  • Parr, Terence (cop. 2007 ). The Definitive ANTLR reference guide : building domain-specific languages . Raleigh [ etc.]: The Pragmatic bookshelf. Catàleg
  • Wilhelm, Reinhard (1995 ). Compiler design . Wokingham, [etc.]: Addison-Wesley. Catàleg

Avaluació i qualificació

Activitats d'avaluació:

Descripció de l'activitat Avaluació de l'activitat %
Exercicis Exercicis temes 2,3,4 i 5 10
Examen Examen Final 50
Pràctiques Realització d'un compilador d'un llenguatge senzill 40

Qualificació

Mínim examen 4,5 sobre 10
Mínim pràctiques 4,5 sobre 10

Criteris específics de la nota «No Presentat»:
Si no es presenta a l'examen i/o no realitza les pràctiques si ha superat les altres parts.