Compiladors Codi:  05.580    :  6
Consulta de les dades generals   Descripció   L'assignatura en el conjunt del pla d'estudis   Camps professionals en què es projecta   Coneixements previs   Informació prèvia a la matrícula   Objectius i competències   Continguts   Consulta dels recursos d'aprenentatge de què disposa l'assignatura   Recursos d'aprenentatge i eines de suport   Informacions sobre l'avaluació a la UOC   Consulta del model d'avaluació  
Aquest és el pla docent de l'assignatura. Us servirà per planificar la matrícula (consulteu si l'assignatura s'ofereix aquest semestre a l'espai del Campus Més UOC / La Universitat / Plans d'estudis). Un cop comenci la docència, heu de consultar-lo a l'aula. (El pla docent pot estar subjecte a canvis.)

Els compiladors són eines indispensables per a qualsevol informàtic que s'encarreguen de traduir informació textual d'un format o llenguatge a un altre. Per exemple, actuen com a peces clau en el procés l'execució d'un programa: tradueixen el programa des del llenguatge d'alt nivell utilitzat pels humans fins a un llenguatge de baix nivell que es pot executar en un ordinador (com l'assemblador o el codi màquina).

Aquesta assignatura presenta l'estructura bàsica d'un compilador: els mòduls que el composen i com es comuniquen entre si. Ens centrarem en el cas dels llenguatges de programació de propòsit general i en el procés de generació d'un executable a partir d'un programa en alt nivell.

Concretament, es veurà com s'analitza un programa font per obtenir-ne les parts components i es detecten els possibles errors introduïts pel programador. S'introduirà també el concepte de intèrpret i la seva relació amb els compiladors. Després s'estudiarà com a partir de les dades obtingudes a la part d'anàlisi, es genera el codi objecte i és optimitzat per millorar-ne el rendiment. Tot això es posarà en pràctica mitjançant l'ús d'eines per a la construcció de compiladors.

Amunt

L'assignatura Compiladors es pot cursar com assignatura optativa o bé com a part de l'itinerari de Computació.

Dins d'aquest itinerari, aquesta assignatura permet aplicar els coneixements obtinguts a Autòmats i Gramàtiques a l'estudi dels llenguatges de programació. A més, junt amb Intel·ligència Artificial i Aprenentatge Computacional, l'assignatura proporciona les bases utilitzades en les tècniques de processament de llenguatge natural.

Amunt

A més de l'àrea de compiladors, totes les tècniques que s'estudien en aquesta assignatura es poden aplicar, en general, a qualsevol sistema de processament de llenguatges i de traducció. La construcció de compiladors i intèrprets també és rellevant en el intercanvi d'informació textual entre diferents sistemes software: construcció de llibreries d'importació/exportació, definició de llenguatges d'intercanvi de dades, etc.

Així doncs, aquesta assignatura ocupa una posició molt rellevant en les sortides professionals en àrees on la definició formal d'un llenguatge es fa necessària com ara la definició de llenguatges de programació, el processament de llenguatge natural o la traducció automàtica, entre d'altres.

Per últim, les competències adquirides en aquesta assignatura poden ser útils per a qualsevol desenvolupador, donat que permeten entendre millor els llenguatges de programació, el funcionament dels intèrprets i els compiladors i el procés d'execució d'un programa.

Amunt

L'assignatura pressuposa un bons coneixements de programació, específicament en llenguatge Java, pel que resulta molt recomanable haver cursat les assignatures de programació i d'estructures de dades corresponents amb anterioritat.

A més, pel bon seguiment de l'assignatura s'ha de partir d'uns coneixements bàsics en llenguatges, expressions regulars, autòmats finits i gramàtiques.

I, finalment, cal tenir coneixements bàsics sobre llenguatge assemblador i estructura de computadors.

Amunt

Abans de cursar aquesta assignatura és molt recomanable haver cursat prèviament les assignatures següents:

  • Disseny i Programació Orientada a Objectes
  • Autòmats i Gramàtiques
  • Estructura de Computadors

A més, encara que no és imprescindible és molt recomanable haver estudiat l'assignatura de Disseny d'estructures de dades.

Amunt

Les competències generals del Grau que es posen de manifest en aquesta assignatura són:

  • Capacitat per analitzar un problema en el nivell d'abstracció adequat a cada situació i aplicar les habilitats i coneixements adquirits per a resoldre'l.
  • Capacitat per dissenyar i construir aplicacions informàtiques mitjançant tècniques de desenvolupament, integració i reutilització.
  • Capacitat per aplicar les tècniques específiques de tractament, emmagatzemament i administració de dades.
  • Capacitat per proposar i avaluar diferents alternatives tecnològiques per resoldre un problema concret.

Les competències específiques d'aquesta assignatura són:

  • Entendre el procés d'execució d'un programa escrit en un llenguatge d'alt nivell.
  • Conèixer la diferència entre compilador i intèrpret i saber escollir l'eina més apropiada a cada situació.
  • Conèixer les diferents fases d'un compilador (anàlisi lèxic, sintàctic i semàntic, generació de codi i optimització de codi) i com es relacionen.
  • Entendre el paper de la taula de símbols dins un compilador i saber-ne triar l'estructura més apropiada.
  • Conèixer quins són els tipus d'errors que es poden identificar en l'anàlisi d'un programa, com es detecten, com s'informa d'aquests errors i com un compilador se'n pot recuperar.
  • Ser capaç d'utilitzar eines de construcció d'analitzadors lèxics i sintàctics per a la construcció d'un compilador.

Amunt

L'assignatura s'estructura en sis mòduls:

Mòdul

Continguts

Descripció

1. Visió general

1. Llenguatges

2. Nocions bàsiques

3. Estructura d'un compilador

4. Construcció de compiladors

Es veurà una panoràmica de l'estructura general d'un compilador.

2. Anàlisi lèxica

1. Organització general

2. Construcció d'analitzadors lèxics

3. Especificació d'un analitzador lèxic

4. Tractament d'errors

5. El sistema d'entrada

6. Les taules de símbols

S'estudiarà la única part del compilador que interactua amb el fitxer font convertint els seus caràcters en una seqüència de símbols lèxics (tokens) i eliminant tot el que no és necessari pel seu anàlisi (comentaris, salts de línia, ...).

3. Anàlisi sintàctica

1. Nocions generals

2. Anàlisi sintàctica descendent

3. Anàlisi sintàctica ascendent

S'estudiarà la fase encarregada de verificar que els símbols lèxics del programa font arriben en l'ordre correcte i que es compleixen les especificacions de la gramàtica lliure de context que defineix el llenguatge font.

4. Anàlisi semàntica

1. Anàlisi semàntica

2. Generació de codi intermedi

S'estudiarà la verificació de la semàntica del programa font, la que és dependent del context, incorporant atributs i accions semàntiques a les produccions de la gramàtica.

5. Fases de síntesi

1. Generació de codi

2. Optimització de codi

S'estudiarà la generació de codi a partir del codi intermedi, així com tot allò a tenir en compte per tal de fer una traducció automàtica i la fase final d'optimització.

6. Llenguatges interpretats

1. Intèrprets

2. La màquina de pila abstracta

3. Construcció d'un intèrpret

Es presentarà un model concret d'arquitectura per a intèrprets basat en una memòria en forma de pila. S'estudiarà el procés de construcció d'un intèrpret basat en aquest model.

 

Amunt

Compiladors PDF

Amunt

Els mòduls didàctics constitueixen la part més important dels materials de l'assignatura. Els podeu descarregar en format PDF des de l'apartat Recursos de l'aula.

L'assignatura disposa d'un manual de referència per a les eines de construcció de compiladors utilitzades a l'assignatura, el Manual de JLex i CUP, que podeu trobar a l'aula virtual dins l'apartat de Recursos.

Disposeu d'una aula de Laboratori de Java de Compiladors on rebreu més informació sobre el programari de l'assignatura (entorn JDK per a l'execució de programes Java, JLex i CUP).

Amunt

El procés d'avaluació es fonamenta en el treball personal de l'estudiant i pressuposa l'autenticitat de l'autoria i l'originalitat dels exercicis realitzats.

La manca d'autenticitat en l'autoria o d'originalitat de les proves d'avaluació; la còpia o el plagi; l'intent fraudulent d'obtenir un resultat acadèmic millor; la col·laboració, l'encobriment o l'afavoriment de la còpia, o la utilització de material o dispositius no autoritzats durant l'avaluació, entre d'altres, són conductes irregulars que poden tenir conseqüències acadèmiques i disciplinàries greus.

D'una banda, si es detecta alguna d'aquestes conductes irregulars, pot comportar el suspens (D/0) en les activitats avaluables que es defineixin en el pla docent –incloses les proves finals– o en la qualificació final de l'assignatura, sigui perquè s'han utilitzat materials o dispositius no autoritzats durant les proves, com ara xarxes socials o cercadors d'informació a internet, perquè s'han copiat fragments de text d'una font externa (internet, apunts, llibres, articles, treballs o proves d'altres estudiants, etc.) sense la citació corresponent, o perquè s'ha practicat qualsevol altra conducta irregular.

De l'altra, i d'acord amb les normatives acadèmiques, les conductes irregulars en l'avaluació, a més de comportar el suspens de l'assignatura, poden donar lloc a la incoació d'un procediment disciplinari i a l'aplicació, si escau, de la sanció que correspongui.

Amunt

Aquesta assignatura es pot superar per una doble via: d'una banda a partir de l'avaluació contínua (AC), i d'altra banda, mitjançant la realització d'un examen final (EX). Per a fer l'EX no cal haver superat l'AC. La fórmula d'acreditació de l'assignatura és la següent: AC o EX.

 

Amunt