Add "to" to prepositions
[mudsync.git] / mudsync / parser.scm
index 305f43d2ca49e6f7d080f0766a181f1e8de34a04..6bba8dd7fd14c446e1be03bf220738e7848c8621 100644 (file)
@@ -61,7 +61,7 @@
 
 ;; definite and indefinite, but not partitive articles
 (define article '(or "the" "a" "an"))
-(define preposition '(or "with" "in" "on" "out of" "at"))
+(define preposition '(or "with" "in" "on" "out of" "at" "as" "to"))
 
 (define indirect-irx
   (sre->irregex
   (sre->irregex
    `(: (? (: ,preposition (+ space)))  ; possibly a preposition (ignored)
        (? (: ,article (+ space)))     ; possibly an article (ignored)
-       (=> direct-obj (* any)))))  ; direct object (kept)
+       (=> direct-obj (+ any)))))  ; direct object (kept)
 
 (define (cmatch-direct-obj phrase)
   (match-to-kwargs direct-irx phrase))
 
 (define (cmatch-empty phrase)
-  (if (equal? (string-trim phrase) ")")
+  (if (equal? (string-trim phrase) "")
       '()
       #f))
 
 (define (cmatch-direct-obj-greedy phrase)
   ;; Turns out this uses the same semantics as splitting verb/rest
-  (match (split-verb-and-rest string)
+  (match (split-verb-and-rest phrase)
     ((direct-obj . rest)
      (list #:direct-obj direct-obj
            #:rest rest))
     (#f #f)))
 
 (define (cmatch-greedy phrase)
-  `((line . ,phrase)))
+  `(#:phrase ,phrase))
 
 ;; (define say-example "say I really need to get going.")
 ;; (define attack-sword-example "hit goblin with sword")