   "," , ;
 
 M: ast-identifier (literal)
-  dup ast-identifier-vocab [
+  dup vocab>> [
    "factor.get_word(\"" ,
-   dup ast-identifier-vocab ,
+   dup vocab>> ,
    "\",\"" ,
-   ast-identifier-value ,
+   value>> ,
    "\")" ,
   ] [
-   "factor.find_word(\"" , ast-identifier-value , "\")" ,
+   "factor.find_word(\"" , value>> , "\")" ,
   ] if ;
 
 M: ast-identifier (compile)

TUPLE: ast-in name ;
TUPLE: ast-hashtable elements ;

C: <ast-number> ast-number
C: <ast-identifier> ast-identifier
C: <ast-string> ast-string
C: <ast-quotation> ast-quotation
C: <ast-array> ast-array
C: <ast-define> ast-define
C: <ast-expression> ast-expression
C: <ast-word> ast-word
C: <ast-comment> ast-comment
C: <ast-stack-effect> ast-stack-effect
C: <ast-use> ast-use
C: <ast-using> ast-using
C: <ast-in> ast-in
C: <ast-hashtable> ast-hashtable

: identifier-middle? ( ch -- bool )
  [ blank? not ] keep
  [ "}];\"" member? not ] keep

M: quotation fjsc-parse ( object -- ast )
  [
    [ (parse-factor-quotation) , ] each
  ] { } make ast-expression boa ;

: fjsc-compile ( ast -- string )
  [
