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. | |
HLT: | Terminate program. |
ARS++ is presented in detail in 'Programmierung pur'
Home
| Home of ARS-Based Programming
| Home of Lambda Bound Lambda Calculus | ARS/A++ | ARSAPI New Book on ARS | Demonstration Program | Links |