Ergebnis 1 bis 7 von 7

Thema: Interessantes Problem: Generierung von Bäumen aus flachen Daten

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Ein interessanter Ansatz, den ich aber um negative Zahlen erweitern würde, um Fälle abzudecken, wo mehrere Elemente auf einmal enden.

  2. #2
    Deine "Erweiterung" versteh ich nicht so ganz, da ein !2<text> ja alle bisherigen Objekte schliesst, die auf den letzten 2 Ebenen noch offen waren.

    Vielleicht sollte das ganze ein Beispiel verdeutlichen.
    Wir definieren jetzt, das Scene-Objekte weitere Scene-Objekte enthalten duerfen (was mir als Subszenen einzig sinnvoll erscheint). Alles andere bleibt beim alten.

    Beispiel 1
    #152: Herbert stirbt im Wald
    <Im Wald>
    Herbert: Hallo.
    <Auf dem Friedhof>
    Herbert: Ich lebe noch

    Das generiert wie gehabt folgende struktur
    Code:
    <episode>
      <scene "Im Wald">
        <line>Hallo</line>
      </scene>
      <scene "Auf dem Friedhof">
        <line>Ich lebe noch</line>
      </scene>
    <episode>
    Erklaehrung:
    #152: Herbert stirbt im Wald -> Erstes Objekt (Episode) = Wurzel
    <Im Wald> -> Episode kann Scene enthalten. -> Episode.insert(new Scene)
    Herbert: Hallo. -> Scene kann Line enthalten, Episode aber nicht -> Scene.insert(new Line)
    <Auf dem Friedhof> -> Sowohl Episode als auch Scene koennen Scene enthalten. Da kein ! angegeben ist, soll es auf die gleiche Ebene, wie andere Scene objekte -> Alle offenen Tags unterhalb von Episode schliessen (rekursiv) -> Episode.insert(new Scene)
    Herbert: Ich lebe noch -> nur Scene kann line enthalten -> oberster offener Scene Knoten bekommt zuschlag -> Scene.insert(new line)
    EOF -> Implizites Close All


    Beispiel 2:
    #152: Herbert stirbt im Wald
    <Im Wald>
    Herbert: Hallo.
    !<Auf dem Friedhof>
    Herbert: Ich lebe noch

    Das generiert folgende struktur
    Code:
    <episode>
      <scene "Im Wald">
        <line>Hallo</line>
        <scene "Auf dem Friedhof">
          <line>Ich lebe noch</line>
        </scene>
      </scene>
    <episode>
    Bis zum !<Auf dem Friedhof> ist alles wie gehabt.
    <Auf dem Friedhof> -> Sowohl Episode als auch Scene koennen Scene enthalten. Da ! angegeben ist, soll es eine Ebene hoeher hinein -> Scene.insert(new Scene) -> Basiszeiger eine Ebene hoeher

    Bei Beispiel 3 fuegen wir Beispiel 2 eine weitere Szene hinzu.

    Beispiel 2:
    #152: Herbert stirbt im Wald
    <Im Wald>
    Herbert: Hallo.
    !<Auf dem Friedhof>
    Herbert: Ich lebe noch
    !1<Herberts Haus>
    Herbert: Hier wohne ich schon lange

    Das generiert folgende struktur
    Code:
    <episode>
      <scene "Im Wald">
        <line>Hallo</line>
        <scene "Auf dem Friedhof">
          <line>Ich lebe noch</line>
        </scene>
      </scene>
      <scene "Herberts Haus">
        <line>Hier wohne ich schon lange</line>
      </scene>
    <episode>
    Bis zu !1<> ist alles wie in Beispiel 2.
    !2<Herberts Haus> -> Die neue scene koennte innerhalb der Friedhofsszene liegen (das waere bei !<> der Fall) oder parallel dazu (ohne !). Sie koennte aber auch parallel zur Waldszene liegen. Momentan befinden wir uns innerhalb der Waldszene, denn wenn wir kein ! angeben, wuerden wir eine weitere Szene parallel zur Friedhofsszene einfuegen. Das !1 sagt uns aber, wie sollen eine Ebene tiefer gehen und alle offenen tags schliessen -> Scene (Friedhof).close -> Scene(Wald).close -> Nun sind wir eine Ebene unterhalb und fuegen die neue Szene ein -> Episode.insert(new Szene(Haus))

    Soweit alles klar ?

    Wenn du willst, kannst du natuerlich auch statt der (![0..9])? notation auch eine ([+]|[-]+)? notation verwenden, das ist vielleicht intuitiver

    <scene> fuegt eine szene parallel ein
    +<scene> fuegt die szene innerhalb des letzten sinnvollen offenen objekts ein
    -<scene> geht eine Ebene im baum tiefer, schliesst offene Tags und fuegt dort die szene ein
    ---<scene> geht drei ebenen in richtung wurzel, schliesst alle offenen tags auf dem weg und fuegt dann die szene ein

    Geändert von Ineluki (09.04.2008 um 18:18 Uhr)

  3. #3
    Ah. Ich hatte deine Notation vorher verkehrt herum interpretiert.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •