X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=inline;f=parse-common.lisp;h=b8439fab6fffe9eeeecf91dfb69a25cf5ab97aed;hb=aeade16272b79115d3f307906c7a3e9597137e97;hp=bf334ca7edeaf15924b72517f80b6f09309541fd;hpb=9c0bccac3fb46e0cb8ab6d2a63b7fc5a92221002;p=umlisp.git diff --git a/parse-common.lisp b/parse-common.lisp index bf334ca..b8439fa 100644 --- a/parse-common.lisp +++ b/parse-common.lisp @@ -2,15 +2,15 @@ ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; -;;;; Name: parse-common.lisp -;;;; Purpose: Common, stable parsing routines for UMLisp -;;;; Author: Kevin M. Rosenberg -;;;; Date Started: Apr 2000 +;;;; Name: parse-common.lisp +;;;; Purpose: Common, stable parsing routines for UMLisp +;;;; Author: Kevin M. Rosenberg +;;;; Created: Apr 2000 ;;;; -;;;; $Id: parse-common.lisp,v 1.14 2003/05/09 11:04:06 kevin Exp $ +;;;; $Id$ ;;;; ;;;; This file, part of UMLisp, is -;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D. +;;;; Copyright (c) 2000-2004 by Kevin M. Rosenberg, M.D. ;;;; ;;;; UMLisp users are granted the rights to distribute and use this software ;;;; as governed by the terms of the GNU General Public License. @@ -18,9 +18,6 @@ (in-package #:umlisp) -(eval-when (:compile-toplevel) - (declaim (optimize (speed 3) (safety 1) (compilation-speed 0) (debug 3)))) - (defun ensure-ucols+ufiles (&optional (alwaysclear nil)) "Initialize all UMLS file and column structures if not already initialized" (when (or alwaysclear (null *umls-files*)) @@ -72,7 +69,7 @@ Currently, these are the LEX and NET files." (destructuring-bind (filename fields-max fields-av) length-list (let ((file (find-ufile filename))) (unless file - (error "Can't find ~A filename in ufiles")) + (error "Can't find ~A filename in ufiles" filename)) (unless (= (length fields-max) (length (fields file))) (error "Number of file fields ~A not equal to field count in ufile ~S" @@ -90,8 +87,8 @@ Currently, these are the LEX and NET files." (defun ufiles-to-measure () "Returns a list of ufiles to measure" (loop for ufile in *umls-files* - unless (or (char= #\M (char (fil ufile) 0)) - (char= #\m (char (fil ufile) 0))) + unless (or (char= #\M (schar (fil ufile) 0)) + (char= #\m (schar (fil ufile) 0))) collect ufile)) @@ -101,6 +98,7 @@ Currently, these are the LEX and NET files." (defun file-field-lengths (filename) "Returns a list of FILENAME MAX AV" + (declare (optimize (speed 3) (safety 0))) (let (fields-max fields-av num-fields (count-lines 0)) (with-umls-file (line filename) (unless num-fields @@ -176,7 +174,9 @@ Currently, these are the LEX and NET files." (quote-str "'") (custom-value-fun)) (let ((ucol (make-instance 'ucol - :col col :des des :ref ref :min min :av av :max max :fil fil + :col col :des des :ref ref :min min :av av + :max (if (eql max 0) 1 max) ;; ensure at least one char wide + :fil fil :dty dty :sqltype sqltype :quote-str quote-str :parse-fun (ensure-compiled-fun parse-fun) :custom-value-fun (ensure-compiled-fun custom-value-fun))))