ASM* is a multipurpose programming language suitable for hacking of all sorts. It is a Lisp-like language designed to be as simple and expressive as a programming language can get.
Thanks to all kinds of first-class goodies and an extensible reader macro facility ASM does not impose any limits on the programmer.
Not even the parentheses:
# ASM code sample** # Extend the language however you please. (syntax (Ternary < Expression (: "\\?") Expression (: ":") Expression) `($(car Ternary) ($(ternary-to-if (caadr Ternary))))) # Use the whole language to your advantage. (function (ternary-to-if t) `(if $(car t) $(cadr t) $(caddr t))) # Interaction with the rest of the grammar is well-defined. # No more hard to find bugs! (syntax (Expression < (/ Quote Tuple Vector String Ternary Atom)) # It's that simple! (function (abs x) (> 0 x) ? (- x) : x )
ASM‘s interpreter, found here, is a testbed for high-level features that will make it into the final specification of the language.
It’s open source, licensed under the MIT license, feel free to contribute!
To get the most recent version of ASM from the repository do the following:
git clone https://code.google.com/p/asm-programming-language/ asm cd asm make
make defaults to the GDC compiler, if you wish to use DMD type
make dmd in the third step.