OSSP CVS Repository

ossp - Check-in [5575]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 5575
Date: 2004-Nov-02 17:05:33 (local)
2004-Nov-02 16:05:33 (UTC)
User:rse
Branch:
Comment: remember how to parse the RDF (the non-flexible but sufficient way)
Tickets:
Inspections:
Files:
ossp-pkg/quos/TODO      1.9 -> 1.10     27 inserted, 1 deleted

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)
+

CVSTrac 2.0.1