Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/exbotanical/idl

a Lisp that leverages continuation-passing style, dynamic stack frames, and tail call optimization to dramatically enhance JavaScript runtime performance. interpreter, runtime, and transpiler
https://github.com/exbotanical/idl

continuation-passing-style custom-programming-language functional-programming lisp-dialect lisp-variant reducer-pattern scheme-dialect transduction

Last synced: 1 day ago
JSON representation

a Lisp that leverages continuation-passing style, dynamic stack frames, and tail call optimization to dramatically enhance JavaScript runtime performance. interpreter, runtime, and transpiler

Awesome Lists containing this project

README

        

## IDL - A Lisp-like syntax for functional programming

## Table of Contents

- [Introduction](#intro)
* [Packages](#packages)
* [Features](#features)
- [Documentation](#docs)
* [Demos](#demo)

## Introduction

## Packages

- [Recursive Descent Parser](https://github.com/MatthewZito/IDL/tree/master/packages/parser)
* [Input Stream Processor](https://github.com/MatthewZito/IDL/blob/master/packages/parser/process-input-stream.js)
* [Lexer / Tokenizer](https://github.com/MatthewZito/IDL/blob/master/packages/parser/lexer.js)
* [Core Parser](https://github.com/MatthewZito/IDL/blob/master/packages/parser/parser.js)
- [Interpreter](https://github.com/MatthewZito/IDL/tree/master/packages/interpreter)
* [CPS Evaluator](https://github.com/MatthewZito/IDL/blob/master/packages/interpreter/context.js)
* [Constructs and Primitives](https://github.com/MatthewZito/IDL/blob/master/packages/interpreter/constructs.js)
- [Compiler Set](https://github.com/MatthewZito/IDL/tree/master/packages/compiler)
* [CPS Transformer](https://github.com/MatthewZito/IDL/blob/master/packages/compiler/CPS-transformer.js)
* [JavaScript Transpiler](https://github.com/MatthewZito/IDL/blob/master/packages/compiler/transpiler.js)
- [CPS Optimizer](https://github.com/MatthewZito/IDL/blob/master/packages/optimizer/CPS-optimizer.js)
- [Node.js Runtime](https://github.com/MatthewZito/IDL/blob/master/packages/environment/synthetic-runtime.js)

## Features

- Stack monitoring and garbage collection
- CPS / Continuations (specifically, IDL control flow is recursively bound by continuation-passing)
- Recursive Descent Parser
- Concurrent Lexer for rendering ASTs
- Compiles to JavaScript (cross-maps IDL ASTs into JavaScript syntax)

## Documentation

Docs coming soon...

## Abstractions

### IDL Code Samples
IDL code samples have been relocated to [this directory](https://github.com/MatthewZito/IDL/blob/master/examples)

### Compiling to JavaScript (and optimizing)

IDL:
```
(resolver(){
let (a = 2) {
let (a = 3) {
print(a);
};
print(a);
};
})();
```

JavaScript (pre-optimization):
```
(function ε_CC(ε_K1) {
STACK_GUARD(arguments, ε_CC);
(function ε_CC(ε_K2, a) {
STACK_GUARD(arguments, ε_CC);
(function ε_CC(ε_K3, a) {
STACK_GUARD(arguments, ε_CC);
print((function ε_CC(ε_R4) {
STACK_GUARD(arguments, ε_CC);
ε_K3(ε_R4)
}), a)
})
((function ε_CC(ε_R5) {
STACK_GUARD(arguments, ε_CC);
print((function ε_CC(ε_R6) {
STACK_GUARD(arguments, ε_CC);
ε_K2(ε_R6)
}), a)
}), 3)
})
((function ε_CC(ε_R7) {
STACK_GUARD(arguments, ε_CC);
ε_K1(ε_R7)
}), 2)
})
((function ε_CC(ε_R8) {
STACK_GUARD(arguments, ε_CC);
ε_R8
}))
```

Post-optimization:
```
(function (ε_K1) {
var a, ε_K3, ε_a$1;
((a=2), ((ε_K3 = (function (ε_R5) {
print(ε_K1, a)
})), ((ε_a$1=3),
print((function (ε_R4) {
ε_K3(ε_R4)
}), ε_a$1)))) })((function (ε_R8) {
ε_TOPLEVEL(ε_R8)
}));
```