CSC 3F002 EP – Project
The assignment can be found in a PDF on Moodle.
The final deliverable for this project is a fully functional compiler for the extended BX language.
You may implement the compiler in Python or in any other programming language of your choice.
Your submission must include a one-page README that briefly explains your design choices and directs the reader to the relevant parts of your implementation.
If the compiler is written in Python:
- You must submit a file named
bxc.py. - The compiler must take as input the filename of a BX program,
written as
name.bx, and must generate the corresponding assembly code in a file namedname.s. - If your Python version requires additional files or modules, you may
instead submit a ZIP archive named
bxc.zip, containingbxc.pyin the root directory along with all necessary dependencies.
If the compiler is written in another programming language:
- You must submit a ZIP archive whose root directory contains a
Makefile. - The default rule of the
Makefilemust compile your project and produce an executable namedbxc.exein the same directory. - Running
bxc.exe name.bxmust generate the corresponding filename.s.
If you want the generated assembly to be compiled on the submission
server, place a file named ARCH at the root of your source
directory. This file should contain either x86_64-linux-gnu
(for Linux x86_64) or aarch64-linux-gnu (for
Linux Aarch64). Note that Linux Aarch64
differs from Darwin Aarch64 in that symbol names (functions
and global variables) do not require a leading underscore.
If you specify x86_64-linux-gnu, your program will be
executed on the submission grader, and its output will be visible in the
grader log.
You may also include a runtime library by adding a file named
bxruntime.c at the root of the source tree. This runtime
will be compiled and linked with your program automatically.
Collaboration Policy
You must work alone on the implementation. Thinking collectively and discussing ideas or strategies is allowed, but sharing code is strictly forbidden. Two submissions containing identical or nearly identical code will be treated as a violation of academic integrity.
Deadline
The final version of your project must be submitted no later than December 22, 2025.