Skip to content

mayrazing/mycompiler

Repository files navigation

A simple Compiler used python

Current features

  • Support the compiler stages including: Tokenizer, Parser, (Interpreter), Type checker, IR generator, Assembly generator and Assembler
  • Support data type: -- none type(use 'unit'), String, Number(-2^64 to 2^63 - 1) and Boolean datatype -- variables -- binary and unary operations -- if/then/else expressions -- while loops -- functions call and functions definition -- return expression
  • Support interleaved combinations of function definitions and expressions
  • Support skip contents: spaces symbol, horizontal tab, new line symbol, single comment, multi-lines comments
  • Support break and continue
  • Support unit tests that executed successfully or thrown the detailed exceptions
  • Support end-to-end tests

Appendix

Setup

Requirements:

  • Pyenv for installing Python 3.11+
    • Recommended installation method: the "automatic installer" i.e. curl https://pyenv.run | bash
  • Poetry for installing dependencies
    • Recommended installation method: the "official installer" i.e. curl -sSL https://install.python-poetry.org | python3 -

Install dependencies:

# Install Python specified in `.python-version`
pyenv install
# Install dependencies specified in `pyproject.toml`
poetry install

If pyenv install gives an error about _tkinter, you can ignore it. If you see other errors, you may have to investigate.

If you have trouble with Poetry not picking up pyenv's python installation, try poetry env remove --all and then poetry install again.

Typecheck and run tests:

./check.sh
# or individually:
poetry run mypy .
poetry run pytest -vv

Run the compiler on a source code file:

./compiler.sh COMMAND path/to/source/code

where COMMAND may be one of these:

interpret
TODO(student): add more

IDE setup

Recommended VSCode extensions:

  • Python
  • Pylance
  • autopep8

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors