Skip to content

kaepr/cljcc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cljcc

A toy C Compiler implementation in Clojure.

Browser version: cljcc

Follows the book Writing a C Compiler by Nora Sandler.

Post about my experience implementing the book writing-a-c-compiler-in-clojure.

Post on how to compile to WASM compiling-clojure-to-webassembly.

Prerequisites

Only Linux and Mac OS is supported. For Windows, run through WSL.

Tasks

To see all available tasks in the project, run bb tasks:

bb tasks
The following tasks are available:

clean            Removes target folder.
nrepl            Starts a nrepl session.
storm            Starts a nrepl session with storm debugger.
lib:run:main     Run's main only for cljcc library.
lib:build:jar    Builds uberjar only for cljcc lib.
lib:build:wasm   Builds native WASM image.
cli:run:main     Run's main CLI function.
cli:build:jar    Builds uberjar for CLI.
cli:run:jar      Runs CLI jar.
cli:build:native Builds native image for CLI.

Build

To build native image, run:

( This requires having native-image tool installed locally. Use the appropriate JDK distribution. )

bb cli:build:native

This produces a binary cljcc-cli at /target/cli. Pass the path to the C file.

./target/cli/cljcc-cli "path/to/file.c"

Run Jar

bb cli:run:jar

References

Some talks / projects which helped in implementation.

About

Toy C compiler implemented in Clojure

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published