Skip to content

Programming language interpreters, including LISP, Scheme, and Prolog.

License

Notifications You must be signed in to change notification settings

tom-weatherhead/thaw-interpreter

Repository files navigation

thaw-interpreter

Programming language interpreters, including LISP, Scheme, and Prolog.

Obligatory BadgeFest:

apple atom circleci codeclimate git github npm packagephobia terminal typescript

status build status npm version latest tag npm total downloads watchers stars issues forks contributors branches releases commits last commit types install size known vulnerabilities lines of code technical debt maintainability test coverage tested with jest code style: prettier license

Much of the code in this library was based on or inspired by the book 'Programming Languages: An Interpreter-Based Approach', by Samuel N. Kamin, 1990, Addison Wesley, ISBN 0-201-06824-9.

Building and Installing the App

Build and install the app via:

$ npm run all
$ npm link

Launching the App

Start an interpreter via the command:

$ intrp [language-name]

... where [language-name] is one of:

  • minimal
  • chapter1
  • lisp
  • apl
  • scheme
  • sasl
  • clu
  • smalltalk
  • prolog

Session Example

$ intrp scheme

This is the command line interface for thaw-interpreter

Starting the read-evaluate-print loop:

> (+ 2 3)
5

> exit
Exiting...

$

The Script Runner

The interpreter provides a limited facility for running scripts. Currently, it is capable of reducing Lambda calculus expressions.

Example: Addition of two Church numerals using pure Lambda calculus:

$ ./run-script.js lcaug examples/scripts/lambda-calculus-augmented-syntax/test1.lca 

Expression as string: (+ 2 3) 

Parsed expression: λf.λx.((λf.λx.(f (f (f x))) f) ((λf.λx.(f (f x)) f) x))

Reduced expression: Integer 5

License

MIT