GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - CompilerProgramming/ez-lang: EeZee Language - Compiler Engineering Basics

BranchesTags
Open more actions menu

Latest commit

 

History

262 Commits
262 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
antlr-parser
antlr-parser
 
 
common
common
 
 
docs
docs
 
 
lexer
lexer
 
 
optvm
optvm
 
 
parser
parser
 
 
registervm
registervm
 
 
seaofnodes
seaofnodes
 
 
semantic
semantic
 
 
stackvm
stackvm
 
 
types
types
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
pom.xml
pom.xml
 
 

Repository files navigation

EeZee Programming Language

This project is part of the https://compilerprogramming.github.io/ project.

The EeZee programming language is designed to allow us to learn various compiler techniques.

The EeZee Language

The EeZee programming language is a tiny statically typed language with syntax inspired by Swift. The language has the following features:

  • Integer, Float, Struct and 1-Dimensional Array types
  • If and While statements
  • Functions

The EeZee language specification is available. The language is intentionally very simple and is meant to have just enough functionality to experiment with compiler implementation techniques.

Modules

The project is under development and subject to change. At this point in time, we have following initial implementations:

  • lexer - a simple tokenizer.
  • parser - a recursive descent parser and AST.
  • types - the type definitions.
  • semantic - semantic analyzer.
  • stackvm - a compiler that generates IR for a stack based virtual machine. There is no interpreter for this instruction set yet.
  • registervm - a compiler that generates a so called three-address IR and an interpreter that can execute the IR.
  • optvm - WIP optimizing compiler with SSA transformation, constant propagation, graph coloring register allocation targeting an abstract machine. Includes Interpreter to run the abstract machine.
  • seaofnodes - WIP compiler that generates Sea of Nodes IR, using SoN backend from Simple Chapter 21. Generates native code for X86-64, AArch64 and RISC-V.

Documentation

See docs

How can you contribute?

The project is educational, with a focus on exploring various compiler algorithms and data structures. Clarity and simplicity is preferred over a coding style that attempts to do micro optimizations.

Contributions that improve the quality of the implementation, add test cases / documentation or fix bugs, are very welcome. I am not keen on language extensions at this stage, but eventually we will be extending the language to explore more advanced features.

I am also interested in porting this project to C++, Go, Rust, Swift, D, C, etc. If you are interested in working on such a port please contact me via Discussions.

Community Discussions

There is a community discussion forum.

What's next

The project has only just got started, there is lots to do!. See the plan in the website. More documentation to follow, but for now please refer to the source code and the site above.

About

EeZee Language - Compiler Engineering Basics

compilerprogramming.github.io/

Topics

abstract-syntax-treebytecode-interpretercompilerdominator-treestatic-single-assignment

Resources

Readme
Apache-2.0 license
Activity
Custom properties

Stars

37 stars

Watchers

1 watching

Forks

8 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.