@mastersthesis {2031,
	title = {Embedding Attribute Grammars and their Extensions using Functional Zippers},
	year = {2014},
	school = {University of Minho},
	type = {PhD Thesis},
	address = {Braga},
	abstract = {<p>Gram{\'a}ticas de atributos s{\~a}o um formalismo que permite exprimir algoritmos complexos de an{\'a}lise e transforma{\c c}{\~a}o de programas, que tipicamente requerem v{\'a}rias travessias as {\'a}rvores abstractas que os representam. As gram{\'a}ticas de atributos foram extendidas com mecanismos que permitem refer{\^e}ncias, ordem superior e circularidade em atributos. Estas extens{\~o}es permitem a implementa{\c c}{\~a}o de mecanismos complexos e modulares de computa{\c c}{\~o}es em linguagens.<br />
Neste trabalho embebemos gram{\'a}ticas de atributos e as suas extens{\~o}es de forma elegante e simples, atrav{\'e}s de uma t{\'e}cnica chamada {\textquotedblright}zippers{\textquotedblright}. Na nossa t{\'e}cnica, especifica{\c c}{\~o}es de linguagens s{\~a}o definidas com um conjunto de componentes independentes de primeira ordem, que podem ser facilmente compostos para formar poderosos ambientes de processamento de linguagens.<br />
Tamb{\'e}m desenvolvemos t{\'e}cnicas que descrevem transforma{\c c}{\~o}es bidireccionais entre gram{\'a}ticas. Definimos m{\'e}todos de especificar transforma{\c c}{\~o}es que, atrav{\'e}s de mecanismos completamente autom{\'a}ticos  s{\~a}o invertidas e estendidas e geram gram{\'e}ticas de atributos que especificam o nosso ambiente bidirecional.<br />
Com esta tecnica foram implementados varios exemplos de especificacao e processamento de linguagens, alguns dos quais estao definidos e explicados neste documento. Da mesma forma, criamos e desenvolvemos uma linguagem de dominio especifico usando a nossa tecnica; linguagem essa que integramos num portal que permite a cria{\c c}{\~a}o de analises de programas completamente configurada para servir os requisitos particulares de cada utilizador.</p>
},
	attachments = {https://haslab.uminho.pt/sites/default/files/prmartins/files/phd.pdf},
	author = {Pedro Martins},
	editor = {Jo{\~a}o Paulo Fernandes and Jo{\~a}o Alexandre Saraiva}
}
