anchor.diff:  	      (match? (cdr tokens) (cdr rls) (append bindings  (list (caar rls) (car tokens))))
   	      nil))))
   
  +(defun match-token (token pattern)
  +  (if (null pattern)
  +      t
  +      (let* ((condition (car pattern))
  +	     (field  (car condition))
  +	     (regex (cadr condition)))
  +	(if (cl-ppcre:scan-to-strings regex (slot-value token (intern (symbol-name field) :cl-conllu)))
  +	    (match-token token (cdr pattern))
  +	    nil))))
  +
  +
   (defun apply-rhs (bindings rhs)
     (if (null rhs)
         (values)
  
positive.code: 	(apply-conditions-in-token (cdr conditions) token))))
  
  
  ;; rules
  
  (defun rls (rule)
    (cadr rule))
  
  (defun rhs (rule)
    (caddr rule))
  
  (defun read-rules (filename)
    (with-open-file (stream filename)
      (loop for i = (read stream nil) while i collect i)))
  
  
  
negative.code: 
  ;; Nossas regras:
  ;;
  ;; rule       ::= => rls rhs
  ;; rls, rhs   ::= (pattern+)
  ;; pattern    ::= (var condition+)
  ;; condition  ::= (field expression)
  ;; expression ::= string | regex
  ;;
  ;; (=> ((a (pos "VERB") (lemma "co.*"))
  ;;      (b (lemma "de.*")))
  ;;     ((b (pos "PART"))))
  
  
  
  
  ;; START
  
  (defun corte-e-costura (conllu-file rules-file new-conllu-file)
    (let ((sentences (read-conllu conllu-file))
  	(rules (read-rules rules-file)))
      (apply-rules sentences rules)
      (write-conllu sentences new-conllu-file)))
  ;;acessores e leitor de regras
  
  
  (defun rls (rule)
    (cadr rule))
  
  
  (defun rhs (rule)
    (caddr rule))
  
  
  (defun read-rules (filename)
    (with-open-file (stream filename)
      (loop for i = (read stream nil) while i collect i)))
  
  
  ;; 
  
  
  (defun apply-rules (sentences rules)
    (dolist (sentence sentences)
      (dolist (rule rules) (apply-rule-in-sentence sentence rule))))
  
  
  (defun apply-rule-in-sentence (a-sentence rule)
  