ossp-pkg/quos/TODO 1.9 -> 1.10
--- 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([^>]+)>(.+?)<\/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([^>]+)>(.+?)<\/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)
+
|
|