Parsen?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

So wie du das geschrieben hst macht sich aber StringField() besser...
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Monstalocke
Beiträge: 12
Registriert: 04.01.2005 14:38

Beitrag von Monstalocke »

ich würde das in etwa so machen:

Code: Alles auswählen

Procedure cutter(befehl.s)
  s_z_ein=1
  startpos=endpos=1
  befehl=Trim(befehl)
  laenge=Len(befehl)
  For position=1 To laenge
    If position=laenge
      endpos=laenge+1
      eingabe=""
    EndIf
    zeichen.s=Mid(befehl,position,1)
    If s_z_ein=1
      Select zeichen
        Case " "
          If position<>startpos
            endpos=position
          Else
            startpos+1
          EndIf
      EndSelect
    EndIf
    If zeichen=Chr(34)
      If s_z_ein=-1
        endpos=position
      Else
        startpos+1
      EndIf
      s_z_ein*-1
      Debug s_z_ein
    EndIf
    If endpos<>0
      count+1
      befehle(count)=Mid(befehl,startpos,endpos-startpos)
      startpos=position+1
      endpos=0
    EndIf
  Next
EndProcedure
the one and only
Beiträge: 696
Registriert: 26.09.2004 20:17
Kontaktdaten:

Beitrag von the one and only »

Ich würds ganz anders machen.

Der erste Teil des Compilers (=lexikalischer Scann oder Lexer) zerlegt den Source für gewöhnlich erstmal in die einzelnen Token (=Bestandteile des Sources, +, -, *, / sind zum Beispiel arithmetische Token, Variablen und Funktionen usw.)

Der Parser untersucht Token für Token. Es gibt verschieden Parser, Tabellengesteuerte oder Rekursive. Den Unterschied kenn ich auch nicht so genau. Ich würd den Parser so schreiben dass er Token für Token vielleicht in eine Art Bytecode übersetzt. Irgendein anderer Programmteil macht dann halt Assembler- oder Binärcode draus. Da gehören aber noch viele andere Teile dazu.

Zum erzeugen von Parsern und Lexern gibt es die Compilerbauwerkzeug Yacc und Lex bzw. die Gnu Pendants Bison und Flex. Bei WikiPedia gibts einige Artikel zum Thema -> http://de.wikipedia.org/wiki/Compilerbau
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

Meines wissens von einem Tut her, ist der Parser das, der alles in Tokens schneidet, oder?

Ich meine nähmlich das, und nciht wie ich den Code interpretiere, das kriege ich hin!

Hoffe, ich habe euch nciht umsonst bemüht, tschuldigung.
the one and only
Beiträge: 696
Registriert: 26.09.2004 20:17
Kontaktdaten:

Beitrag von the one and only »

Der Parser analysiert den Code. Der Lexer zerschneidet.

Aber genaugenommen ist der Lexer auch nur Teil des Parsers :mrgreen:
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

ich habs so gelernt, das der Parser schneidet, der Scaner interpretiert, der LExer irgendwas mit arrays macht und die Heuristische analyse alles ricxhtig notiert.
the one and only
Beiträge: 696
Registriert: 26.09.2004 20:17
Kontaktdaten:

Beitrag von the one and only »

Ne das hast du falsch gelernt. Les dir erstmal die Wikipedia Artikel durch, falls du gut Englisch kannst vielleicht auch noch das eine Compiler Tut von Jack Crenshaw (Auf der Robsite unter Zeug oder so) das allerdings nur für Pascal ist aber von der Theorie her denk ich ganz interessant.
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

Ein tut habe ich jetzt gelesen, um die begriuffe zu klären, sonst habe ich alles verstanden, ich habe aber keinen ansatz wie ich das in POB machen soll, das ich eine File öffne, und er mir die richtig zerschneidet!

:cry:

Könnt ihr mir net nen tipp geben? :)
the one and only
Beiträge: 696
Registriert: 26.09.2004 20:17
Kontaktdaten:

Beitrag von the one and only »

Nehm dir ein Blatt Papier (Din A 4, mehrere vielleicht) einen Kuli (Farbe Blau) und benutz deinen gesunden Menschenverstand. Schreibt dir auf wie man das am besten realisieren könne und versuch das danach in Purebasic umzusetzen.

Ohne dich jetzt verunsichern zu wollen: Das wird nix vergiss es. Eher gewinnst du im Lotto. Eher tritt George Bush zurück. Eher verschwinden nervige Werbungen für überflüssige verrückte Frösche oder besoffene Elche aus dem Fernsehn!!!!! :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

Wieso, so schwer kanns doch net sein! Und ich vergesse es sicher net, ich habe alles andere schon gecodet! Da gebe ich nach Monaten das Arbeit doch net auf!
Antworten