Skip to content

yjhmelody/lambda-language

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The lambda-language

complier version npm


Install

$ npm install lambda-language

Syntax

ref the example

API

The following are located in the corresponding file in src

  • InputStream: output lex
  • TokenStream: output token
  • parser: output ast
  • codeGen: complier the ast to JS
  • Environment: store variables
  • Environment.Execute: execute ast with guarding stack
  • Environment.evalute: eval ast expression with an env

Run the language

$ bin/lambda demo

Compile the language to JS

$ bin/code-to-js demo2 [demo2.js]

Some examples about syntax

print_range = λ(a, b) if a <= b {
                        println(a);
                        if a + 1 <= b {
                          print_range(a + 1, b);
                        } 
                        else 
                          println("");
                      };
print_range(1, 10);

output:

1
2
3
4
5
6
7
8
9 
10
cons = λ(a, b) λ(f) f(a, b);
car = λ(cell) cell(λ(a, b) a);
cdr = λ(cell) cell(λ(a, b) b);
NIL = λ(f) f(NIL, NIL);

x = cons(1, cons(2, cons(3, cons(4, cons(5, NIL)))));
println(car(x));                      # 1
println(car(cdr(x)));                 # 2
println(car(cdr(cdr(x))));            # 3
println(car(cdr(cdr(cdr(x)))));       # 4
println(car(cdr(cdr(cdr(cdr(x))))));  # 5

output:

1
2
3
4
5

binded with some nodejs functions

code = fs-readFileSync("./demo");
println(code);
println(os-arch());

About

A lisp-style language written by Recursive Descent. This is my first compiler by imitating a blog.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy