ARS++ is an implementaion of A++ with a rich set of primitive abstractions providing the functionality of Scheme and more. (The primary name is ARS++ but because some search engines have problems with special characters in keywords, an alternate name ARSIP was chosen, standing for 'ars in progress'.) The implementation is built on ARSAPI for C and includes a Compiler and an Interpreter for the compiled code.
The Compiler ACOMP is written in Scheme and generates code for a virtual machine called AVIM, which is modelled after the SECD-Machine invented by J. Landin.
|LDCT:||Load a constant into the S register.|
|LDVR:||Load a variable into the S register.|
|LDVRI:||Indirect addressing of variable.|
|LDFN:||Load the definition of a function into the S register.|
|LOAD:||Load instructions from a code file into the C register.|
|NIL:||Mark the beginning of a list of arguments or a list of declarations of variables.|
|BIND:||Bind the topmost two entries as a 'name value' pair and insert the pair into the open symbol table on the stack.|
|ARG:||Definition of an argument for a following function call.|
|ADDF:||Add a symbol table to the current environment.|
|DELF:||Remove the youngest symbol table from the current environment.|
|DEF:||Definition or modification of a variable in the current environment.|
|STVL:||Store a value from the S register into a variable of the current environment.|
|POP:||Remove the topmost value in the S register.|
|IF:||Open a conditional construct.|
|ENDIF:||Close a conditional construct.|
|EOX:||End of expression.|
|CCALL:||Call a function passing the current continuation as argument.|
|TCALL:||Tail recursive call of a function.|
|ACALL:||Apply a function to its arguments.|
|RTN:||Return from function to caller.|
ARS++ is presented in detail in 'Programmierung pur'
| Lambda Calculus
| New Book on ARS
| Demonstration Programs
© 1999-2005 Georg P. Loczewski. All Rights Reserved.