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 |