           :MCP (let [threshold (read-string (last (last (first ast))))]
                  (mcp-operation state threshold))
           :F (f-operation state)
+          :ST (st-operation state)
           (println "Command not implemented: " command))))))
 
 (defn interactive [state]

  (printOperation finalizersOp (:cus state) nil)
  (interactive state))

(defn- process [state input]
  (let
   [ast (command-parser input)]


(def commands-grammar
  (str
   "<COMMAND> = HELP | EXIT | LOAD | LIST | MC | MCP | F | ST   \n"
   "HELP = 'help' | 'h'                                         \n"
   "EXIT = 'exit' | 'quit' | 'q'                                \n"
   "LOAD = 'load' <WS> STR                                      \n"
   "LIST = 'list'                                               \n"
   "MC  = ('mc'|'many-constructors') <WS> 'th' <WS> NUM         \n"
   "MCP = ('mcp'|'many-costructor-params') <WS> 'th' <WS> NUM   \n"
   "F = ('f'|'finalizers')                                      \n"
   "ST = ('st'|'singletons')                                    \n"
   "WS  = #'[\t ]+'                                             \n"
   "NUM = #'[0-9]+'                                             \n"
   "STR = #'\"[^\"]*\"'                                         \n"))

(def command-parser
  (insta/parser commands-grammar))
