Programming Languages I contributed to

Warning: this page is probably deprecated.


My first programming language, created before learning compiler theories because I want to put some ideas into practise.
Its syntax looks like Lisp, and I removed all syntax sugars to make the parser’s time complexity proportional to the code length. Encouraged by Marisa, I successfully implemented three evaluation models – call by name (like but not C’s macro), call by value (the most common one) and call by need (lazy evaluation).
It’s written in Kotlin, execute through traversing AST (it’s naive, I know). It also has a unfinished Haskell implementation.
This language doesn’t have reserved words, all the language construct (including control flows like if while, anonymous function creation like lambda expr lazy, very basic stuffs like def def? defexpr) are implemented in the standard library.
The way standard library is provided is bizarre: I write a Kotlin class and bind all their methods to Lice’s symbol table.
Lice’s purpose is to be a scripting language depends on JVM languages, all the complicated programs should be written in JVM languages and invoked in Lice by using Lice’s API.

The worst point of Lice is it’s name – it means a kind of insect, but I didn’t know this when I name it (I was at school, no internet access)

The AST Editor, code formater appeared with the first version are all lost along with the change of my working environment.

Here’s a video about Lice:


This is a programming language created by my friend Michael Lee, written in C++. The detailed description is on it’s website so I’ll just put some comments here. This is a C-like language (at least the function call syntax is of C style), while functions, structs, namespaces are ends with end like Ruby, and it has the concepts of package import using (the module system).
Its parser is hand-written (very complex, although parsers are trivial), which impressed me (I didn’t even think of that when working on Lice, I just wrote an AST evaluator).
This language supports invoking functions written in C++, like JNI.

CovScript mostly features its powerful standard library, which has database, GUI, web access, regular expressions.