_____________________________________________________________________________________




Language Processors

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 

Bachelor's Degree in Computer Science 

December, 2017 (Second edition)Share:    


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 COURSE

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.


OBJECTIVES: 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.


 PRACTICAL ASSIGMENTS AND ASSESSMENT ACTIVITIES

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.


Last modified: Monday, 16 May 2022, 3:18 PM