CS-364: Programming Languages

Spring 2022

Projects

Projects will be added here as the semester progresses.

P1: Functional Programming

For this assignment, you will implement several functions using the Reason programming language. You will be provided with the interface for various functions or a specific problem, and you are responsible for implementing the specified functionality.

P2: Programming in snail

In this programming project, you will gain faimiliarity with snail, the programming language we will be implementing this semester. You will implement a nontrivial algorithm in the language.

P3: Lexer (Java)

For this assignment you will write a lexical analyzer, also called a scanner or tokenizer, using a lexical analyzer generator. You will describe the set of tokens for snail in an appropriate input format and the analyzer generator will generate actual code. You will then write additional code to serialize the tokens for use by later interpreter stages.

P4: Parser (Python)

For this assignment you will write a parser using a parser generator. You will describe the snail grammar in an appropriate input format and the parser generator will generate actual code (in Python). You will also write additional code to unserialize the tokens produced by the lexer stage and to serialize the abstract syntax tree produced by your parser.

P5: Interpreter (Reason)

For this assignment you will write an interpreter. Among other things, this involves implementing the operational semantics specification of snail. You will track enough information to generate legitimate run-time errors (e.g., dispatch on void) and typing errors.

Assignment Submission

We use automated grading scripts to give you immediate feedback on your programming assignments. Click here to be taken to the submission page.