cui-unige / semantique

Cours de Bachelor : Sémantique des Langages Informatiques
6 stars 1 forks source link
teaching

Semantics of Programming Languages @ University of Geneva

This repository contains important information about this course. Do not forget to watch it as it will allow us to send notifications for events, such as new exercises, homework, slides or fixes.

Important Information and Links

Environment

This course requires the following mandatory environment. We have taken great care to make it as simple as possible.

You also have to:

The environment you installed contains:

Make sure that your repository is up-to-date by running frequently:

  git fetch upstream
  git merge upstream/master
  rm -rf .build Package.resolved

Rules

Homework

Homework #1

The goal of this homework is to implement the propagation of constant expressions within Anzen module declarations. You have to perform propagation by updating the abstract syntax tree directly, using a visitor.

You have to handle the following constructions in the abstract syntax tree:

Evaluation will be:

Grade

Homework #2

The goal of this homework is to implement the checking of type correctness within Anzen module declarations. You have to perform the check by creating a logic program using LogicKit within a visitor. The logic program must return at least one answer if the typing is correct, and no answer if the typing is incorrect.

You have to handle the following constructions in the abstract syntax tree:

Evaluation will be:

Grade

Homework #3

The goal of this homework is to implement an interpreter of the Anzen programming language. You have to perform interpretation in Swift (not LogicKit) within a visitor.

You have to handle the following constructions in the abstract syntax tree:

Evaluation will be:

Grade

Homework #4

The goal of this homework is to implement a check of accesses to references for the Anzen programming language. You have to perform interpretation in Swift (not LogicKit) within a visitor. Remember that Anzen has three operators: = for copy, &- for reference, and <- for ownership.

You have to handle the following constructions in the abstract syntax tree:

Evaluation will be:

Grade