Slang Programming Language

At university, I opted to create a programming language for my senior design project. Slang was the result. Over the years, I have tweaked the grammar and added features. The compiler is written in C++ and translates Slang programs into Java, then calls javac and jar to create an executable archive of class files. The distribution uses a couple third-party libraries, and the Slang runtime uses specialized variants of the two components listed below.

Download (ZIP) Download (7-Zip) [v0.26 (14 Feb 2011)]

overview libref grammar slideshow sample programs changelog

LibTomMath – Java port

A straight port of LibTomMath to Java plus an OOP interface similar to java.math.BigInteger. Asymptotically faster for large multiplies and squares using the Karatsuba and Toom-Cook-3 algorithms. Not competitive with GMP, but then, what is?

Download [updated: 21 Jan 2011]

Hinze & Paterson 2-3 Finger Tree

This is a complete Java implementation of a 2-3 finger tree as specified in Finger Trees: A Simple General-purpose Data Structure. With the definition of appropriate monoids, this finger tree can implement several popular data structures. The most common examples include deques, priority queues, random-access sequences, and ordered sequences. Performs most operations in amortized constant or logarithmic time.

Download [updated: 16 Jan 2011]