Index: ossp-pkg/quos/TODO RCS File: /v/ossp/cvs/ossp-pkg/quos/TODO,v rcsdiff -q -kk '-r1.9' '-r1.10' -u '/v/ossp/cvs/ossp-pkg/quos/TODO,v' 2>/dev/null --- TODO 2004/11/02 15:48:24 1.9 +++ TODO 2004/11/02 16:05:33 1.10 @@ -133,7 +133,7 @@ * creation of web formular (render query) sub_render_form (cgi-Object | expression, row, column -- Parsing: +- Parsing CFG: OSSP shiela (with tricks) OSSP ac (uses Parse::RecDescent) @@ -168,3 +168,29 @@ | m/'[^']*'/ | m/[^\s+;]+/ +- Parsing RDF: + + my $str = ...; # string representation + my $rdf = {}; # AST representation + + $str =~ s/]+)>(.+?)<\/Repository>/&do_repository($rdf, $1, $2)/sge; + sub do_repository { + my ($rdf, $attr, $str) = @_; + my ($name) = ($attr =~ m/rdf:resource="([^"]+)"/s); + $rdf->{$name} = {}; + $str =~ s/]+)>(.+?)<\/rdf:Description>/&do_destription($rdf->{$name}, $1, $2)/sge; + sub do_description { + my ($rdf, $attr, $str) = @_; + $rdf->{...} = ...; + } + } + + 1. geht nur, wenn die Sprache keine rekursiven Elemente enthält, d.h. ein + Element kann nicht in sich selber (in beliebiger Tiefe) vorkommen + (Hinweis: Für Compilerbauer uninteressant) + + 2. Blockstruktur der Sprache wird direkt Substitution+Funktionsaufruf umgesetzt + + 3. Auf jeder Ebene wird die bereits erkannte Information in einer internen + Datenstruktur aufgesammelt ($rdf) +