Assignment 4: SmallC Lexer and Parser (6%)
Due: November 2, 11:59PM
In this project, you will implement as OCaml functions a lexer and parser for SmallC. Your lexer functions will convert a SmallC program internally stored as a string into a list of tokens, and your parser functions will consume these tokens to produce an abstract symbol tree (AST). The input could be an entire program or a fragment of a program, and your parser will produce an AST that represents one or more statements (stmt) or an expression (expr). The README in your repository describes the tokens and grammar you will use.
Your Repository
A private GitLab repository has already been created for you; you do not need to create one. Its name is built from your UMD directory ID:
https://gitlab.cs.umd.edu/cmsc330-mamat/fall2026/student-repos/p4/smallC-<directory-id> |
For example, if your directory ID is alice1:
https://gitlab.cs.umd.edu/cmsc330-mamat/fall2026/student-repos/p4/smallC-alice1 |
You can also find it by signing in to gitlab.cs.umd.edu, where the project will be listed among your projects. Clone it with:
mkdir -p ~/cmsc330 |
cd ~/cmsc330 |
git clone git@gitlab.cs.umd.edu:cmsc330-mamat/fall2026/student-repos/p4/parser-<directory-id>.git |
If you have not set up your GitLab account and SSH key yet, do that first; see Software.
Getting Help
If you cannot see your repository, if the repository listed on Piazza is wrong, or if you get a permission error when cloning, post on Piazza or come to office hours. Do this as soon as you notice the problem: extension requests caused by not being able to obtain the assignment will be denied.