Language Processors, 2017

DAVID GRIOL BARRES
ANTONIO BERLANGA DE JESÚS
JESÚS GARCÍA HERRERO
JUAN MANUEL ALONSO WEBER
Department of Computer Science
Universidad Carlos III de Madrid
Area:
Language Processors
Degree:
Bachelor's Degree in Computer Science
December, 2017 (Second edition)
Image courtesy of David Griol
Theorethical and Lab hours: 6 ECTS, 1.5 theorethical hours and 1.5 practical hours each week.
Total learning time: 180 hours
PRERREQUISITES AND RECOMMENDED PREVIOUS KNOWLEDGE
- Programming,
- Programming Logic,
- Formal Languages and Automata Theory,
- Data Structures,
- Computer Theory.
GENERAL DESCRIPTION OF THE SUBJECT
In this course we are interested in introducing the main design practices and principles for the development of programming languages. The course covers the analysis and synthesis phases of a language processor: lexical analysis, syntax analysis (top-down and bottom-up techniques), semantic analysis, runtime environments, error handling, intermediate code, code optimization, and final code generation.
The main objective of the course is to understand compilers and programming languages and become better programmers by means of:
- Understanding the code structure.
- Understanding the language semantics.
- Understanding the relation between source code and generated machine code.
OBJETIVES: KNOWLEDGE AND SKILLS
The main cognitive, procedural objectives and specific competences of the course are:
-
To describe the basic components of a compiler.
-
To study the most commonly used techniques to develop a lexical analyzer.
-
To analyze the most commonly used techniques of syntactic analysis.
-
To create the analysis phase of a language compiler.
-
To know the main differeces between top-down and bottom-up parsing techniques.
-
To create the synthesis phase of a language compiler.
-
To describe intermediate code generation.
-
To analyze the main techniques for code optimization.
-
To study the main applications of the compilation theory.
The general and attitudinal competences are:
- Ability to generate new ideas.
- Concern with quality.
- Motivation for success.
- Interest for investigating and finding solutions to new problems.
- Capacity of analysis and synthesis.
- Capacity to organize and plan.
- Problem solving.
- Teamwork.
- Capacity to apply theoretical concepts.
TEACHING MATERIAL
The course includes files with an explanation of the most important theoretical concepts, guided summaries with the main objectives of each unit, proposed exercises with the corresponding solutions, practical activities and lab sessions, and partial and global assessments with solutions.
ASSESSMENT ACTIVITIES OR PRACTICAL ASSIGNMENTS
Al the end of the course, you should be able to:
- Solve the proposed final exams in the specific time that it is indicated.
- Carry out the proposed practical and lab exercises for each one of the units.
- Complete the exercises assigned by the professors to be solved individually with the support of a Web-based learning support tool.
By means of the assessment activities and practical assignments, you should be able to:
- Develop a scanner for a given language.
- Write a grammar for a given language.
- Verify and modify a grammar fulfills some properties.
- Write a parser for a given language using diverse kinds of techniques.
- Verify the semantics of a given language.
- Implement different techniques for error detection and management.
- Generate intermediate/final code.
Course Contents
02Lexical_analysisOCW.pdf , 2017
04FormalGrammarsOCW.pdf , 2017
05SyntaxanalysisOCW.pdf , 2017
07BottomupparsingOCW.pdf , 2017
08SemanticAnalysisOCW.pdf , 2017
10IntermediateCodeGenerationOCW.pdf , 2017
11CodeOptimizationOCW.pdf , 2017
12CodeGenerationOCW.pdf , 2017
PartialAssessment1solution.pdf , 2017
PartialAssessment2solution.pdf , 2017
PartialAssessment3solution.pdf , 2017
PartialAssessment4solution.pdf , 2017
PartialAssessment5solution.pdf , 2017
PartialAssessment6solution.pdf , 2017
PartialAssessment7solution.pdf , 2017
Unit1ExercisesSolution.pdf , 2017
Units2and3Exercises1.pdf , 2017
Units2and3Exercises1Solution.pdf , 2017
Units2and3Exercises2.pdf , 2017
Units2and3Exercises2solution.pdf , 2017
Units2and3Exercises3.pdf , 2017
Units2and3Exercises3solution.pdf , 2017
Units2and3Exercises4.pdf , 2017
Units2and3Exercises4solution.pdf , 2017
Units2and3Exercises5.pdf , 2017
Units2and3Exercises5solution.pdf , 2017
Units2and3Exercises6.pdf , 2017
Units2and3Exercises6solution.pdf , 2017
Unit5Exercises1solution.pdf , 2017
Unit5Exercises2solution.pdf , 2017
Unit5Exercises3solution.pdf , 2017
Unit5Exercises4solution.pdf , 2017
Unit5Exercises5solution.pdf , 2017
Unit5Exercises6solution.pdf , 2017
Unit5Exercises7solution.pdf , 2017
Unit5Exercises8solution.pdf , 2017
Unit6Exercises1solution.pdf , 2017
Unit6Exercises2solution.pdf , 2017
Unit6Exercises3solution.pdf , 2017
Unit6Exercises4solution.pdf , 2017
Unit6Exercises5solution.pdf , 2017
Unit6Exercises6solution.pdf , 2017
Unit6Exercises7solution.pdf , 2017
Unit6Exercises8solution.pdf , 2017
Unit7and8Exercises1.pdf , 2017
Unit7and8Exercises1solution.pdf , 2017
Unit7and8Exercises2.pdf , 2017
Unit7and8Exercises2solution.pdf , 2017
Unit7and8Exercises3.pdf , 2017
Unit7and8Exercises3solution.pdf , 2017
Unit7and8Exercises4.pdf , 2017
Unit7and8Exercises4solution.pdf , 2017
Unit7and8Exercises5.pdf , 2017
Unit7and8Exercises5solution.pdf , 2017
Unit7and8Exercises6.pdf , 2017
Unit7and8Exercises6solution.pdf , 2017
Unit7and8Exercises7.pdf , 2017
Unit7and8Exercises7solution.pdf , 2017
Unit7and8Exercises8.pdf , 2017
Unit7and8Exercises8solution.pdf , 2017
Unit9to11Exercises1.pdf , 2017
Unit9to11Exercises1code.pdf , 2017