Table of Contents

Assignments (Formal Languages and Compilers course)

Rules

The programming part of the exam can be performed by doing an assignment.

Students have to send an application for the assignment to stefano.scanzio [at] polito.it within 23 May, 2019.
The application must contain a curriculum, which has to include the known software and the list of passed exams (with the related scores).
In addition, students have to provide a preference between the assignments reported in the following.
The allocation of the assignments to students will be communicated within 6 June, 2019.
Possibly, depending on the curriculum or on the number of requests, some requests may not be accepted.

Assignment 1

Implement all the exercises resolved in the laboratory of the course, which can be downloaded here (https://www.skenz.it/compilers) by using the Ply parser generator (i.e., a parser that makes use of the Python programming language):
http://www.dabeaz.com/ply/

Assignment 2

This assignment is composed of two parts:

  1. Study of the Erlang programming language (http://www.erlang.org/, http://erlangbyexample.org/), and perform a presentation with many examples of the main features of this language.
  2. Writing of a compiler that recognizes part of the Erlang language. The compiler has to make a translation in the LLVM syntax (https://llvm.org/), allowing the execution of the code in a virtual machine.

Assignment 3

This assignment is composed of two parts:

  1. Study of the Go programming language (https://golang.org), and perform a presentation with many examples of the main features of this language.
  2. Writing of a compiler that recognizes part of the Go language. The compiler has to make a translation in the LLVM syntax (https://llvm.org/), allowing the execution of the code in a virtual machine.

Assignment 4

This assignment is composed of two parts:

  1. Study of the Julia programming language (https://julialang.org/), and perform a presentation with many examples of the main features of this language.
  2. Writing of a compiler that recognizes part of the Julia language. The compiler has to make a translation in the LLVM syntax (https://llvm.org/), allowing the execution of the code in a virtual machine.