@onfocusacademy/daniellang
v0.5.1
Published
A Lisp-like language with macros for learning about programming languages and interpreters.
Downloads
3
Readme
Daniel Programming Language
A Lisp-like language with macros for learning about programming languages and interpreters.
This implementation is a simple tree-walking interpreter. It uses linked lists as its abstract syntax tree (AST) for homoiconicity between source code and the underlying data structure read by the interpreter.
Namesake
Daniel is named after two people:
- My son, Daniel Barr, who is the joy of my life
- Programming languages professor and researcher Daniel P. Friedman, author of the groundbreaking textbook Essentials of Programming Languages and many other works
Installation
To install the current release version of Daniel, you must have Node.js installed with NPM.
Installation:
npm install -g @onfocusacademy/daniel
Usage
daniel
: start a REPL sessiondaniel -i <filename>
: start a REPL session with the definitions fromfilename
loaded. Definitions will be available as Filename.definition, just as if it were a module.daniel <filename>
: Evaluate the code infilename
.
Note that the CLI assumes you are running the interpreter from the same directory as the entry point to your program. This can matter for things like module resolution.
Documentation
Contributing
In general, we follow the "fork and pull" GitHub workflow.
- Fork the repo on GitHub
- Commit changes to a branch in your fork, with descriptive comments
- Make a pull request upstream with your changes
Be sure you've merged the latest changes from upstream before making your pull request.
Please make sure to only submit code you have the legal ability to claim as your own, and ensure all contributed code can be distributed under the MIT License.