users own dictionaries (if any) userdict where user defines variables systemdict operators defined (ie add) ATTRIBUTES access attributes: unlimited, read-only, execute only, none fonts execute only? every obj is literal or executable /name => literal [ any1 ... anyn ] => literal array object { any1 ... anyn } => executable array object STACKS operand, dictionary, execution EXECUTION Immediate: 40 60 add 2 div Deferred: ie /foo { any1 ... anyn } def ... foo Execution of types: (ie stuff with executable not literal attribute) int, real, bool, dict... => still treated as data name => top down search of dicts then exec assoc val operator => built-in operator function called array => directly => operand stack indirectly => execution stack and exec elts until done EX: /inch {72 mul} def 4 inch /inch => inch on operand stack { 72 mul } => onto operand stack def => enter it to userdict (or other current dict) { foo } directly => operand stack indirectly => execution stack