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
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 GAWK and Flex.
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.
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.