← Back to Projects

Systems Project

HawkVM

An educational programming language and virtual machine written in C, built to explore how source code moves through tokenization, parsing, evaluation, and execution.

Overview

HawkVM is a lower-level programming project focused on understanding how languages work beneath the surface. Instead of using a framework to hide complexity, this project explores the actual pieces involved in reading and executing code.

What I Built

The project includes language features such as print statements, arithmetic expressions, variables, conditional execution, and basic runtime error handling. The goal is not to create a production programming language, but to build a clear educational model of how a small language can be interpreted.

Interpreter Demo

HawkVM Example Programs

These examples show real `.hk` programs and the output produced by the C interpreter. The browser version displays pre-run examples while the full interpreter source lives in the GitHub repository.

example.hk
print("Hello from HawkVM");
print("This is a tiny interpreted language written in C");
Interpreter Output
Hello from HawkVM
This is a tiny interpreted language written in C

Note: this website demo shows verified example programs and output from the local C interpreter. Running HawkVM directly in the browser is a future WebAssembly goal.

Technical Decisions

I structured the project around separate responsibilities: scanning source text, recognizing tokens, parsing statements and expressions, and evaluating the resulting logic. This helped me practice breaking a complex system into smaller parts that can be understood and tested.

What I Learned

HawkVM helped me better understand parsing, expression evaluation, control flow, error handling, and the challenges of designing even a small language. It also gave me more confidence working in C and thinking carefully about program structure.