Hi everybody
I have a (UNIX-shell) program with an output like this:
(root
(class living_thing
(spec human
(prop has_legs))
(spec bird (prop has_wings))))
The program spits that kind of code out whenever it has computed its input.
Now I have three problems:
1. How do I feed my program time after time?
2. How do i lookup the data:
here the problems are:
1. I dont know the structures depht (which is variable) 2. I dont know how to retrieve the information once stored because of 1.
3. The set of tags is variable.
3. How to store it in a DB (solved conceptually by my own)
I am WILLED to RTFM but i couldn't find an algorythm in Perl so i'm trying in Lisp now.
Any ideas?
Best regards
PS: Linux on x86
handling nested data in LISP
Re: handling nested data in LISP
This format looks very much like native lisp; but the example doesn't make it clear whether common lisp, scheme, or another variant.
Here's a simple common-lisp program that reads your data.
If you don't need to preserve the distinction between uppercase and lowercase, simply remove the readtable stuff.
Use the standard lisp tools (first, second, ..., nth, car, cdr, mapX, etc.) to access the data structure returned by (parse-shell-output "filename").
Here's a simple common-lisp program that reads your data.
Code: Select all
;; create a package to store the shell output
(defpackage :shell-output)
;; read the output from a file
(defun parse-shell-output (filename)
(with-open-file (infile filename :direction :input)
(let ((*package* (find-package :shell-output))
(*readtable* (copy-readtable)))
(setf (readtable-case *readtable*) :preserve)
(read infile))))
Use the standard lisp tools (first, second, ..., nth, car, cdr, mapX, etc.) to access the data structure returned by (parse-shell-output "filename").