Language Processing.
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
- 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.
- Regular Languages and Regular Expressions, Finite Automata: development of text filters and lexical analyzers using ERs and Production-system based tools like PLI-lex.
- 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.
- 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.