Objectives

Specific skills to be acquired in the Language Processing area:

  • Specify domain-specific languages through grammars;
  • Develop processors for these languages based on their grammar;
  • Develop Compilers that generate Assembly code for (virtual) Stack Machines;
  • Extract data from a text based on production rules (pattern-action) based on regular expressions;
  • Transform any text into another format based on production rules (pattern-action) based on regular expressions;
  • Utilize programs that produce programs based on formal specifications (lexical analyzer and compiler generators).

Program

  1. Introduction to Language Processing: Basic concepts –language and grammar, compiler and interpreter; Phases in Language Processing: Lexical analysis, Syntactic analysis, Semantic analysis, Translation or Code Generation.
  2. Regular Languages and Regular Expressions, Finite Automata: development of text filters and lexical analyzers using ERs and Production-system based tools like PLI-lex.
  3. Context Free Languages and Context Free Grammars: Syntactic Analysis, different approaches – Recursive-Descent (RD), and LL(1), as Top-Down Parsers; LR(0), and SLR(1), as Bottom-Up Parsers; the Parser Generator system PLI-yacc.
  4. Translation Grammars and the static and dynamic semantics (SDT-Syntax Directed Translation); Semantic validation and code Generation; the Compiler Generator system PLI-yacc.

Bibliography

  • Pedro Reis Santos & Thibault Langlois, “Compiladores – Da Teoria à Prática”, FCA, 2014.
  • R. G. Crespo, “Processadores de Linguagens: da concepção à implementação”, IST-Press, 1998.
  • Aho & Sethi & Ullman, “Compiler Principles, Techniques and Tools”, Addison-Wesley, 2006;
  • Dick Grune & Kees van Reeuwijk & Henri E. Bal & Ceriel J.H. Jacobs & Koen Langendoen, “Modern Compiler Design”, 2nd. edition, Springer, 2012;
  • Keith D. Cooper & Linda Torczon, “Engineering a Compiler”, 2nd. edition, Elsevier/Morgan-Kaufmann, 2011.

Atualizado: