Language Processing.

Objectives

  • To specify Languages (general purpose, GPL, or domain specific, DSL) using grammars or regular expressions (RE’s);
  • To generate (automatically) language processors (translators, compilers or interpreters) directly derived from Grammars (CFG’s or TG’s) or RE’s;
  • To translate systematic and efficiently from any textual format into any other textual format;
  • To develop separate “front-ends” and “back-ends” to process sentences of any formal language, using appropriate internal representations between FE and BE;
  • To model any kind of State Machine using Finite State Deterministic Automata (FDA);
  • To develop recognizers based on FDA’s;
  • To use tools for the automatic generation of language processors based on RE’s or CFG’s.

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 GAWK and Flex.
  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 Yacc.
  4. Translation Grammars and the static and dynamic semantics (SDT-Syntax Directed Translation); Semantic validation and code Generation; the Compiler Generator system 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, 1986;
  • William Waite & Carter, “An Introduction to Compiler Construction”, HarperCollin College Publishers, 1993;
  • 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;
  • Andrew W. Appel & Jens Palsberg, “Modern Compiler Implementation in Java”, Cambridge University Press, 2002;
  • Andrew W. Appel & Maia Ginsburg, “Modern Compiler Implementation in C”, Cambridge University Press, 2004

Updated: