Parser



  • was hast du denn für eine antwort erwartet?



  • ein HTML-Parser geht wahrscheinlich noh mit regulären Ausdrücken aber bei richtigen programmiersprachen und javascript (für mich keine richtige programmiersprache) wirds schon schwieriger



  • Mhhh,
    ich meinte mehr so:
    Wie machen die aus dem Code eine grafische Oebrfläche.
    Also wie machen die aus <select name="lala"><option>Dadidu</option></select> ein Drop-Down-Menü?

    MfG



  • Mann kompimiert das Wissen aus dem Compilerbau und Kenntnisse wie man Grafiken visualisert.



  • Schauen was da steht, und wenn da halt was von "select" steht, dann bastel mir ein neues Menü?!



  • g00k schrieb:

    ein HTML-Parser geht wahrscheinlich noh mit regulären Ausdrückenr

    Ganz sicher nicht.



  • Apollon schrieb:

    g00k schrieb:

    ein HTML-Parser geht wahrscheinlich noh mit regulären Ausdrückenr

    Ganz sicher nicht.

    Ganz sicher wohl.



  • nein das geht allein wegen der recurrence nicht 🙄



  • g00k schrieb:

    Apollon schrieb:

    g00k schrieb:

    ein HTML-Parser geht wahrscheinlich noh mit regulären Ausdrückenr

    Ganz sicher nicht.

    Ganz sicher wohl.

    So so. Dann gib uns doch bitte einen DFA/NFA oder einen regulaeren Ausdruck an, der wenigstens einen Teil von HTML - die Tabellen (also <table>, </table>, <tr>, </tr>, <td>, /td>) - korrekt erkennt.



  • Soweit ich mich erinnern kann arbeitet der Scanner schon mit regulären Ausdrücken. Aber nicht so wie ihr das meint, dass eine Tabelle erkannt wird, sondern nur einzelne Wörter.
    http://de.wikipedia.org/wiki/Compilerbau
    http://de.wikipedia.org/wiki/Lexikalischer_Scanner
    http://de.wikipedia.org/wiki/Parser

    # HTML-Code ist beispielsweise für einen Computer zunächst einmal nichts anderes als ein Text, also eine Aneinanderreihung von Buchstaben und Zeichen. Der in einem Webbrowser enthaltene Parser analysiert das HTML und erstellt daraus eine Beschreibung der Webseite als Datenstruktur, welche die Grafik-Maschine des Browsers anschließend graphisch auf den Bildschirm überträgt.

    Zur Analyse des Texts verwenden Parser in der Regel einen separaten lexikalischen Scanner (auch Lexer genannt). Dieser zerlegt die (als simple Aneinanderreihung von Zeichen vorliegenden) Eingabedaten in Token (Eingabesymbole bzw. „Wörter“, die der Parser versteht); weil die Zerlegung in Tokens einer regulären Grammatik folgt, ist der Scanner meist ein endlicher Automat. Diese Token dienen als atomare Eingabezeichen des Parsers.

    Der eigentliche Parser als Implementierung eines abstrakten Automaten (meist realisiert als Kellerautomat) kümmert sich dagegen um die Grammatik der Eingabe, führt eine syntaktische Überprüfung der Eingangsdaten durch und erstellt in der Regel aus den Daten einen Ableitungsbaum (in Anlehnung an das Englische gelegentlich auch als Parse-Baum bezeichnet). Dieser wird danach zur Weiterverarbeitung der Daten verwendet; typische Anwendungen sind die semantische Analyse, Codegenerierung in einem Compiler oder Ausführung durch einen Interpreter.

    Im obigen HTML-Beispiel würde ein lexikalischer Scanner die HTML-Datei in HTML-Tags und Fließtext zerlegen und diese Bestandteile an den Parser weiterreichen – d. h. den Scanner „interessiert“ nur das Aussehen der Syntaxelemente („wenn es in spitzen Klammern steht, ist es ein HTML-Tag“). Der Parser dagegen verarbeitet die syntaktischen Zusammenhänge, d. h. untersucht, welche Paare von Tags zusammen gehören bzw. wie die Tags ineinander verschachtelt sind; die inhaltliche Bedeutung der Tags interessiert den Parser dagegen nicht, sondern wird erst von der darauf folgenden Weiterverarbeitung berücksichtigt.

    Anschaulich dargestellt ist ein Parser diejenige Software, welche die Anweisungen im Quelltext des Anwenders überprüft, weiterverarbeitet und weiterleitet.

    Mit sommerlichen Grüßen aus meinem Zimmer
    Hochachtungsvoll euer
    sumpfmonster



  • Man kombiniere nun den Titel des Threads mit dem zweitem Wiki-Zitat.



  • Es ging nicht um einen Lexer sondern um einen Parser, und HTML Parser kann man mit reinen Regexen nicht machen.
    Selbst wenn man den Lexer als Teil des Parsers ansieht kann man immer noch keinen Parser mit reinen Regexen bauen. Dass man Regexe irgendwo verwenden kann ist ja schön und gut, aber wahrscheinlich kann man auch strtol() verwenden wenn man will, die Aussage "mit strtol() kann man einen Parser bauen" bleibt trotzdem Quatsch.



  • glan schrieb:

    Hallo,
    ich hab da mal 'ne Frage:
    Wie programmiert man 'nen HTML-Parser oder einen Javascript-Interpreter?
    Nur so aus interesse, weil ich mich schon immer frag, wie das geht.

    Zum Thema Parserbau kann dir das eBook weiterhelfen:
    http://www.cs.vu.nl/~dick/PTAPG.html



  • Du liest einfach die Html-Tag-Inhalte ein und Wertest sie mittels Stringfunktionen wie z.B. strstr aus.

    Alles was außerhalb der Tags ist

    [i]> außerhalb <[/i]
    

    ist automatisch Text pur.

    Desweiteren stellt sich die Frage, was du mit deinem Parser bezwecken willst,
    z.B. einen DOM-Tree für eine Anzeige programmieren, einen eigenen Browser programmieren, usw.



  • Easy Parser schrieb:

    Desweiteren stellt sich die Frage, was du mit deinem Parser bezwecken willst,
    z.B. einen DOM-Tree für eine Anzeige programmieren, einen eigenen Browser programmieren, usw.

    Ich zitiere mich selbst:

    glan schrieb:

    Nur so aus interesse, weil ich mich schon immer frag, wie das geht.

    MfG glan



  • Also ich hab mir mal einen einfachen HTML-Parser in C geschrieben. Tags gehen mit < an, haben Attribute und deren Werte /> ist ein Endtag. Und die Attributtnamen werden mit den Attributwerten als Stringpaare gespeichert.

    HTML-Quelle initialisieren
    Schleife: Tag parsen
    HTML-Quelle aufräumen



  • keksekekse schrieb:

    Also ich hab mir mal einen einfachen HTML-Parser in C geschrieben. Tags gehen mit < an, haben Attribute und deren Werte /> ist ein Endtag. Und die Attributtnamen werden mit den Attributwerten als Stringpaare gespeichert.

    HTML-Quelle initialisieren
    Schleife: Tag parsen
    HTML-Quelle aufräumen

    lol, dein posting hatte null aussage 😃


Anmelden zum Antworten