This lists the syntax for all of the various types.
The reader syntax is defined in memmgmt/scanner.l and memmgmt/parser.y.
object | (INT :)? ... |
obj_id | = INT |
integer | -?[0-9]+ or 'c' or '\c' |
mmstring | "..." (with backslash escapes) |
or x"..." (hex) | |
Symbol | SYMBOL or PSYMBOL |
Ref | REF object |
link | ? Symbol |
vector | '(' object... ')' |
< linked_vector... > | |
linked_vector - INT : INT | |
linked_vector + object @ INT | |
linked_vector ^ linked_vector @ INT | |
linked_vector [ INT : INT ] | |
hash | & PSYMBOL or & (~ INT)? hb |
hb | (! INT)? { (object => object)... } |
User_object | (. or linked_user_object) | hash |
Wait | INT FAR ("..." or SYMBOL or obj_id) INT ("..." or obj_id) |
arg_cont | CONT { wait INT fun_value } |
std_cont | CONT { wait INT INT (nil or GLOBAL or PSYMBOL or FAR ("..." or SYMBOL or obj_id) INT) } |
fun_value | linked_fun_value , vector @ INT |
or $ linked_vector | |
or * ("..." or SYMBOL or obj_id) | |
or ` INT linked_fun_value o linked_fun_value |