Skip to content
/ c500 Public
forked from vgel/c500

a single pass c compiler in 500 lines of python

Notifications You must be signed in to change notification settings

leogrinch/c500

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

c500

This is a single-pass C→WebAssembly compiler in 500 lines of (nicely formatted, non-comment, non-docstring) Python:

$ sloccount compiler.py | grep python:
python:         500 (100.00%)

It currently supports:

  • Arithmetic
  • Pointers
  • int, char, and string constants (no floating point)
  • if, while, do while, for
  • Functions
  • Typedefs
  • (Single dimensional) arrays
  • Some other stuff

Notably, it does not support preprocessor directives or structs.

Running code

You can use the ./run-test script to compile and run C code. Simply run ./run-test <c file> after running mkdir scratch. You'll need bat, wabt, and wasmer installed.

Running tests

You will need to clone the c-testsuite into the repo: https://github.com/c-testsuite/c-testsuite You'll also need all the tools listed in the Running Code section above. Then you can ./run-all. It currently passes 34/220 test cases.

About

a single pass c compiler in 500 lines of python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.8%
  • Shell 4.2%