#! /usr/bin/gosh -I.

(use srfi-27)
(load "stream.ss")
(load "prefixtree.ss")

(define (main args)
  (if (null? (cdr args)) (set-cdr! args '("")))
  (case (string->symbol (cadr args))
    ((build)
     (let ((pt (make-ptree))
	   (depth (string->number (caddr args)))
	   (fname (cadddr args)))
       (ptree-learn pt (port->stream (open-input-file fname)) depth)
       (write pt)))
    ((analyse)
     (let* ((fname (cadddr args))
	    (pt (read (open-input-file fname)))
	    (precision (string->number (caddr args)))
	    (input (port->stream (current-input-port)))
	    (result (ptree-morphemes pt input precision)))
       (let loop ((rest result))
	 (if (snull? rest) #t
	   (begin (display (scar rest)) (display #\|)
		  (loop (scdr rest)))))))
    ((generate)
     (let* ((fname (cadddr args))
	    (len (string->number (caddr args)))
	    (pt (read (open-input-file fname))))
       (display (ptree-generate pt len))
       (newline)))
    (else
     (display "Usage: ptmorph build <depth> <filename> >result.db")
     (newline)
     (display "Usage: ptmorph analyse <precision> <database> <data.txt")
     (newline)
     (display "Usage: ptmorph generate <length> <database>")
     (newline)
     (error "Unknown operation: " (cadr args)))))

; vim:ft=scheme:

