;;; -*- Mode: LISP; Package: CGP; BASE: 10; Syntax: ANSI-Common-Lisp; -*- ;; ;; Constraint Grammar Parser ;; (See Fred Karlsson et.al.: Constraint Grammar, Mouton de Gruyter 1995) ;; Version 0.7 ;; Copyright (C) Paul Meurer 1999, HIT-centre, UiB. All rights reserved. ;; paul.meurer@hit.uib.no ;; some useful conversion stuff (defmacro with-stream-chars ((char stream) &body body) `(loop for ,char = (read-char ,stream nil nil) while ,char do ,@body)) (defmacro with-file-chars ((char path) &body body) (let ((stream (gensym))) `(with-open-file (,stream ,path) (with-stream-chars (,char ,stream) ,@body)))) (defun unix-to-mac (path out-path) (with-open-file (out-stream out-path :direction :output :if-does-not-exist :create :if-exists :supersede) (with-file-chars (char path) (write-char (case char ; thats all we need (#\Linefeed #\Newline) (#\ #\) (#\ #\) (#\ #\) (#\ #\) (#\ #\) (#\ #\) (#\ #\) (otherwise char)) out-stream)))) (defun mac-to-unix (path out-path) (with-open-file (out-stream out-path :direction :output :if-does-not-exist :create :if-exists :supersede) (with-file-chars (char path) (write-char (case char (#\Newline #\Linefeed) (#\ #\) (#\ #\) (#\ #\) (#\ #\) (#\ #\) (#\ #\) (#\ #\) (otherwise char)) out-stream)))) (unix-to-mac "projects:cgp;rules;norsk-map_v2.rle" "projects:cgp;rules;norsk-map-v2.rle") (unix-to-mac "projects:cgp;rules;norsk-syn_v2.rle" "projects:cgp;rules;norsk-syn-v2.rle") (unix-to-mac "projects:cgp;rules;norsk_v2.rle" "projects:cgp;rules;norsk-v2.rle") (unix-to-mac "projects:cgp;training;delkorp.cor" "projects:cgp;training;delkorp-mac.cor") (unix-to-mac "projects:cgp;training;delkorp.dis" "projects:cgp;training;delkorp-mac.dis") (unix-to-mac "projects:cgp;training;delkorp.map" "projects:cgp;training;delkorp-mac.map") (unix-to-mac "projects:cgp;training;delkorp.syn" "projects:cgp;training;delkorp-mac.syn") (mac-to-unix "projects:cgp;cgp-package.lisp" "projects:cgp;unix;cgp-package.lisp") (mac-to-unix "projects:cgp;cgp.lisp" "projects:cgp;unix;cgp.lisp") (mac-to-unix "projects:cgp;rules;norsk-v2.lisp" "projects:cgp;unix;norsk-v2.lisp") (defun nbo-upper-case-p (char) (and (not (find char "")) (or (upper-case-p char) (find char "")))) ;; changes \" to % in names that should denote symbols rather than strings (defun quotes-to-% (line) (let ((len (length line))) (dotimes (i len) (when (and (char= (char line i) #\") (or (and (> i 0) (nbo-upper-case-p (char line (1- i)))) (and (< i (1- len)) (nbo-upper-case-p (char line (1+ i)))))) (setf (char line i) #\%)))) line) (defun transform-quotes (path out-path) (with-open-file (out-stream out-path :direction :output :if-does-not-exist :create :if-exists :supersede) (with-file-lines (line path) (write-line (quotes-to-% line) out-stream)))) #| (transform-quotes "projects:cgp;rules;norsk-v2.rle" "projects:cgp;rules;norsk-v2.lisp") (transform-quotes "projects:cgp;rules;norsk-map-v2.rle" "projects:cgp;rules;norsk-map-v2.lisp") (transform-quotes "projects:cgp;rules;norsk-syn-v2.rle" "projects:cgp;rules;norsk-syn-v2.lisp") |#