Engenharia de Linguagens

Engenharia de Linguagens (2011/2012)

Engenharia Gramatical

Descrição:

A especificação formal das linguagens, sejam linguagens de programação de uso geral (GPL), sejam linguagens de uso específico (DSL), é possível recorrendo a formalismos como a Gramática de Atributos (GA). Com a GA, sintaxe e semântica são especificadas dentro do mesmo sistema de trabalho, mas dessa especificação pode ainda ser derivado automaticamente um processador para reconhecer, validar e transformar/traduzir as frases da linguagem em causa. Daí que seja preciso conceber essa gramática com engenho, para assegurar a qualidade da linguagem e do respectivo processador.

Nesta UC, abordam-se todos esses temas: linguagens, suas características e qualidade; gramáticas, desenvolvimento, caracterização e qualidade; métricas gramaticais; construção de processadores de linguagens e sua geração automática.

Naturalmente a questão das linguagens visuais, por comparação com as linguagens clássicas (textuais), terá de ser abordada, procurando-se por um lado distinguir LVs de ambientes visuais de programação e de bibliotecas para programar interfaces visuais; por outro lado, estuda-se a adaptação que tem de ser feita às Gramáticas para lidar com essa classe de Linguagens e os ajustes aos respectivos Processadores.

Programa Resumido

  • 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber.
  • 2. Conceitos sobre Gramáticas de Atributos (GA); definição formal; desenvolvimento de GAs (aproximação monolítica versus modular, incremental).
  • 3. Processamento de Linguagens baseado em GAs (tradução dirigida pela semântica).
    • 3.1 Notações gramaticais;
    • 3.2 Geração de Programas (processadores de Linguagens, protótipos rápidos) a partir de GAs.
  • 4. O paradigma da Programação baseada em Gramáticas (PG).
  • 5. Classificação das Linguagens de Programação.
  • 6. Linguagens Visuais (versus textuais); Ambientes Visuais de Programação.
  • 7. Qualidade de Linguagens; critérios de avaliação; factores que têm impacto nos critérios de qualidade; factores que determinam a aceitação de uma linguagem.
  • 8. Qualidade de Gramáticas; critérios de avaliação; factores que têm impacto nos critérios de qualidade.
    • 8.1 Métricas Gramaticais de Tamanho, de Forma, e Lexicográficas para GIC e para GA; Relação das Métricas com a Qualidade da Gramática e da Linguagem.
  • 9. Ambientes para Manipulação de Gramáticas.

Resultados de Aprendizagem Específicos

  • Capacidade para desenvolver especificações da sintaxe/semântica de linguagens e problemas em geral com gramáticas de atributos.
  • Capacidade para gerar programas (protótipos) usando ferramentas automáticas baseadas em gramáticas de atributos.
  • Capacidade para gerar ou utilizar ambientes de desenvolvimento estruturais e orientados à semântica.
  • Capacidade para discutir a classificação e qualidade de linguagens e os factores de impacto.
  • Capacidade para discutir a qualidade de gramáticas, os factores de impacto, e as métricas que se podem calcular e permitem objectivar essa aferição.
  • Capacidade para desenvolver ambientes para Manipulação de Gramáticas.

Metodologia de Ensino e Avaliação

  • As aulas de 2h tem sempre um cariz teórico-prático. Em cada aula:
    • no início é sempre feito um balanço da aula anterior e discutidos os trabalhos ou questões propostos;
    • depois algum tempo é dedicado a levantar questões teóricas e a apresentar as diferentes aproximações e metodologias que suportam a sua resolução; esta parte, embora de carácter teórico, desenvolve-se sempre em forma de diálogo com os alunos.
    • continua-se a aula numa parte mais prática em que os alunos são convidados a pesquisar e fazer uma sintese do que há já escrito sobre o assunto; ou então a desenvolver experimentação de ferramentas ou implementação de algorimtos.

  • A avaliação é feita com base em 2 testes escritos (ou 1 exame de recurso final) e através dos trabalhos entregues pelos alunos, resolvidos foras das aulas mas defendidos perante a turma. Os trabalhos para avaliação são de dois tipos:
    • monografias, com sinteses dos temas pesquisados;
    • trabalhos de implementação.

Bibliografia recomendada

  • Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

  • Tiago Alves and Joost Visser, "Metrication of SDF Grammars". Technical Report, DI-Research.PURe-05.05.01, Departamento de Informática, Universidade do Minho, May 2005.

  • Tiago Alves and Joost Visser, "Sdfmetz: Extraction of metrics and graphs from syntax definitions". Tool Demonstration presented in Seventh Workshop on Language Descriptions, Tools and Applications (LDTA 2007), 2007.

  • Tiago Alves and Joost Visser, "A Case Study in Grammar Engineering". Lecture Notes in Computer Science, Vol. 5452, pp 285-304, 2009.

  • Roland Backhouse, "Syntax of Programming Languages: Theory and Practice". Prentice Hall, 1979.

  • Julien Cervelley, Matej Crepinsek, Rémi Foraxy, et al, "On Defining Quality Based Grammar Metrics". Proceedings of the International Multi-conference on Computer Science and Information Technology, pp. 651-658, 2009.

  • Rui Gustavo Crespo, "Processadores de Linguagens: da concepção à implementação". IST Press, 1998.

  • Pierre Deransart, M. Jourdan, and B. Lorho, "Attribute grammars: Main results, existing systems and bibliography". In LNCS 341. Springer-Verlag, 1988.

  • A. van Deursen and Paul Klint, "Little languages: Little maintenance?". Journal of Software Maintenance, 10:75-92, 1998.

  • Pedro Rangel Henriques, "Atributos e Modularidade na Especificação de Linguagens Formais", PhD thesis, Universidade do Minho, Dec. 1992.

  • C. A. R. Hoare, "Hints on programming language design". Technical Report CS-TR-73-403, Stanford University, CA, USA, 1973.

  • John E. Hopcroft, Rajeev Motwani, and Jeffrey Ullman, "Introduction to Automata Theory, Languages, and Computation". Addison-Wesley, 3rd ed. edition, 2006.

  • James Howatt, "A project-based approach to programming language evaluation". ACM SIGPLAN Notices, 30(7), 1995.

  • Tomaz Kosar, Pablo Martinez Lopez, Pablo Barrientos, and Marjan Mernik, "A preliminary study on various implementation approaches of Domain-Specific Languages". IST--Information and Software Technology, 50(5):390-405, 2008.

  • Paul Klint, Ralf Lammel, and Chris Verhoef, "Toward an engineering discipline for Grammarware". in ACM Transactions on Software Engineering Methodology, 14(3):331-380, 2005.

  • George C. Necula, "Proof-carrying code". In Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '97), pages 106-119, Paris, Jan. 1997.

  • George C. Necula, "Compiling with Proofs". PhD thesis, School of Computer Science, Carnegie-Mellon University, Sep. 1998.

  • Pittman and Peters, "The Art of Compiler Design: theory and practice". Prentice-Hall, 1992.

  • James F. Power and Brian A. Malloy, "A metrics suite for grammar-based software". Journal of Software Maintenance and Evolution: Research and Practice, Vol 16, nº 6, pp 405-426, 2004.

  • Michael L. Scott, "Programming Language Pragmatics". Morgan Kaufmann Publishers, 3rd edition, March 2009.

  • Robert Sebesta, "Concepts of Programming Languages." Pearson, Addison-Wesley, 9th edition, 2009.

  • Miguel Oliveira Silva, "Metodologias e mecanismos para Linguagens de Programação Concorrente Orientadas por Objectos". PhD thesis, Universidade de Aveiro, 2006.

  • T. Sloane, M. Mernik, and J. Heering, "When and how to develop Domain-Specific Languages". ACM Computing Surveys, 37(4):316-344, Dec. 2005.

  • Allen Tucker and Robert Boonan, "Programming Language: Principles and Paradigms". McGraw-Hill, 9th edition, 2007.

  • W. Waite and G. Goos, "Compiler Construction". Texts and Monographs in Computers Science, Springer-Verlag, 1994.

  • David Watt, "Programming Language Design Concepts". John Wiley, 2004.

  • Gregory V. Wilson, "Extensible programming for the 21st century". ACM Queue 2, 9, Jan 2005.


r4 - 15 Nov 2011 - 23:01:37 - PedroRangelHenriques
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
Syndicate this site RSSATOM