Programming Languages and Compilers
News
Assessment methods and criteria
Lectures
- Lectures [PDF]
- LabTP#01 [PDF]
- LabTP#02 [PDF]
- Introdução à Análise Sintáctica [PDF]
- Análise Sintáctica Descendente [PDF]
- Gramática Atributiva [PDF]
- Bison & Yacc [PDF]
Labs (60% - 12 Values)
- Labs are submitted in person during practical classes, without
exceptions.
- Lab #01: Introdução ao Flex. [PDF]
- Lab #02: Expressões Regulares - Exercícios Práticos. [PDF]
- Lab #03: Autómatos Finitos. [PDF]
- Lab #04: Gramáticas. Conjuntos FIRST e FOLLOW. Análise sintáctica descendente
LL(1). [PDF]
- Lab #05: Gramáticas Atributivas. [PDF]
- Lab #06: Bison & Yacc. [PDF]
Project (40% - 8 Values)
Mandatory requirement: successfully compile/interpret the tests. Mini
compiler/interpreter projects for widely known programming languages (mini-C, mini-pascal,
mini-python,
mini-java, mini-ocaml, etc.) are not accepted.
- Deliverables
Deadline: 04/01/2023
- #01:Ast
- #02:Lexer
- #03:Parser
- #04:Compiler/Interpreter
- #05:Main
- #06:Makefile
- #07:Tests
- #08:Readme
- Options
- #01:Mini-Pascal
- #02:Mini-C
- #03:Mini-Java
- #03:Mini-Python
Resources
- Introduction to Compilers and Language Design -
A free online textbook by Douglas Thain [WEB]
- LEX & YACC TUTORIAL [WEB]
- Implementando um analisador léxico usando o Flex [WEB]
- Flex (Fast Lexical Analyzer Generator) [WEB]
- Introduction to YACC [WEB]
- How to Build a C Compiler Using Lex and Yacc [WEB]
- Lex and Yacc Tutorial [WEB]
- LEX & YACC Tutorial [WEB]