Skip to content

michaelballantyne/syntax-spec

Repository files navigation

syntax-spec

A metalanguage for creating sophisticated DSLs in Racket. You provide a grammar and binding rules, and the metalanguage provides a front-end that checks binding, expands macros to your DSL core langauge, and provides tools for working with binding in your DSL's compiler.

There are a few relatively-complete example DSL implementations: miniKanren, miniclass, and TinyHDL. There is also a small state machine DSL.

A release is available on the Racket package server as syntax-spec-v1.

This is still a prototype: future releases will likely contain breaking changes, and the documentation is incomplete. However, breaking changes will be released under an updated package name.

To use the released package, install via:

raco pkg install syntax-spec-v1

and import as

(require syntax-spec-v1)

To use the latest, unstable version, check out the Git repository, change directory into it, and run:

raco pkg install

Then import as

(require syntax-spec)

Once installed, you can access the documentation via:

raco docs syntax-spec

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published