Zum Inhalt springen

Algo zum parsen folgender Kosntrukte:


dragi

Empfohlene Beiträge

Hallo,

ich benötige dringend eure Hilfe! Ich muß eine bestimmte Art von Dokumenten parsen in denen Objekte beschreiben sind. Nun benötige ich einen Tip wie ich das algorithmisch am besten umsetzen kann.

Folgendes kommt in dem Dokument vor:

Einfaches Objekt:


object NAME: TYP

  Wert1 = 1

  Wert2 = 2

  ...

end

kompliziertes Objekt:

objekt NAME: TYP

  objekt NAME: TYP

    Wert1 = 1

    Wert2 = 2

    ...

  end

  objekt NAME: TYP

    Wert1 = 1

    Wert2 = 2

    ...

  end

end

Ich habe nun Klassen die ein Objekt und dessen unterobjekt repäsentieren aber wie soll ich das Dokument am besten durchgehen? Das Dokument gehe ich Zeile für Zeile durch bis ich einen Match auf object NAME: TYP habe. Nun weiß ich nicht wie ich weiter machen soll um die Unterobjekte, falls es welche gibt, zu bekommen. Und zu wissen wann ein Objekt mit unterobjekten zu ende ist. Zwischen den Objekten ist immer eine Leerzeile und ich denke das hilft mir. Aber ein Objekt kann aus N Unterobjekten bestehen...das ist mir echt zu hoch.

Habt ihr einen Tip für einen Algo?

Danke

Dragi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie wäre es mit einem Stapel? Immer, wenn du eine object-Zeile findest, legst du ein neues Datenobjekt auf den Stapel. Bei den wert-Zeilen bearbeitest du das oberste Datenobjekt. Bei end-Zeilen nimmst du das oberste Objekt vom Stapel weg (und speicherst es, z.B. als Kindobjekt im nächstunteren Datenobjekt).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich glaube ich kann dir einigermassen folgen, habe aber folgendes Problem:

Ich beginne mit einer for-Schleife. Von 0 bis Dokument Ende gehe ich die Zeilen durch. Nun finde ich das erste object NAME: TYP und arbeite mich ja dann in anderen funktionen durch das Objekt. Gehe ich nun zurück zu meiner Vorschleife geht die einen Schritt weiter und findet das objekt NAME: TYP des Unterobjektes das ich doch aber schon abgelegt habe. Das ist für mich total verwirrend. Hier mal mein angefangener Code:

C#


using System;

using System.Collections.Generic;

using System.Text;

using System.Text.RegularExpressions;

using System.IO;

using System.Windows.Forms;


namespace ParsIni

{

    class parseStructFct

    {

        public List<StFctObject> parseSTFct(string StFctPath)

        {

            List<StFctObject> StFctObjList = new List<StFctObject>();

            string[] sa = File.ReadAllLines(StFctPath); 

            Regex reg = new Regex(@"object\s+(?<name>[A-Za-z0-9 _ - # *]+)\s*:\s*(?<type>\w+)");


            for (int i = 0; i < sa.Length; i++)

            {

                if (reg.Match(sa[i]).Success)

                {

                    StFctObject TempStFctObj = new StFctObject();

                    TempStFctObj.SetObjName(reg.Match(sa[i]).Groups["name"].ToString());

                    TempStFctObj.SetObjType(reg.Match(sa[i]).Groups["type"].ToString());

                    if (sa[i] + 1 != "") // ???? keine Ahnung wie es weiter geht

                    {


                    }

                }

            }

            return StFctObjList;

        }

    }

}

Vielleicht denke ich einfach total verkehrt. Ist mien erster Parser und ich bin der einzige hier der programmiert, von daher steh ich hier allein auf weiter Flur... :(

Gruß

dragi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...