(defun generate-graph () (with-open-file (str path :direction :input) (read-line str) ;; to skip the first line (i don't need it ;; (let ((graph-name (make-graph 'graph-container))) (do ((l (read-line str) (read-line str nil :eof))) ((string= l "}")) (let ((trimmed-line (string-trim " \"" l))) (cond ((find #\! trimmed-line) ;; to be changed (add-vertex graph-name (intern (string-trim " \"" (subseq trimmed-line 0 (- (search "pos" trimmed-line) 2) )))));;to be changed ;; i should add an (or) ((search "--" trimmed-line) (print trimmed-line) (let* ((trimmed-line (delete #\" trimmed-line)) (v1 (intern (subseq trimmed-line 0 (position #\- trimmed-line)))) (v2 (intern (subseq trimmed-line (+ 2(search "--" trimmed-line)) (- (position #\[ trimmed-line) 1) ))) ;;to be changed/add an (or) (val nil));; to be changed (add-edge-between-vertexes graph-name v1 v2 :value val)))))) ;; do something) graph-name)))