Autor Beitrag
Hagbard Celine
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 119



BeitragVerfasst: Mi 18.09.02 09:52 
Hi ich möchte einen miniParser schreiben welcher teill einer neuen Klasse wird,

es geht darumdas ich zur Kommunikation zwischen zwei Sockets ein Format festelegen möchte. ind diesem Format soll es erst mal nut zwei Sorten von Werten geben :

headers und tags

headers können in einer Zeile wie folgt dargestellt werden :
ausblenden Quelltext
1:
{headername}					

oder
ausblenden Quelltext
1:
<header>headername					


tags sollen wie folgt dargestellt werden :
ausblenden Quelltext
1:
<tagname>tagwert					


Ja und das wärs in der ersten Version schon!
Der Parser sollte aber auf jeden Fall einfach erweiterbar sein!

Ich habe zwar Parserbau in der UNi gehabt, aber das hat mir so gestunken dass ich das Thema freundlich übergangen habe!

Wir nutzen aber in der UNi Tools für Java welcheCompiler für bestimmte Funktionne erzeugen! Gibt es so etwas auch für Delphi????
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 18.09.02 10:08 
Hi!

Ja... Das klingt vielleicht ein bisschen doof... Was ist eigentlich dein Problem? :oops:

Du sendest also Text zwischen den Sockets hin und her. Ich hätte es in einem bandbreitesparenden Format (binär) gemacht, aber gut.

Wenn du nun auf den Text "<header>" stösst, grabscht du dir den Rest, der dahinter steht. Triffst du auf eine Klammer "{" und eine Klammer dahinter "}", so schnappst du dir den Wert zwischen Klammern. Schon hast du einen Header ausgelesen. Genauso gehst du mit den Tags vor.

BTW: Empfehlenswert ist da die Unit RXStrUtils von den RX-Tools, die Routinen WordCount und ExtractWord sind für diese Fälle ideal.

Cu, :D
Udontknow
Hagbard Celine Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 119



BeitragVerfasst: Mi 18.09.02 10:31 
Udontknow hat folgendes geschrieben:
Du sendest also Text zwischen den Sockets hin und her. Ich hätte es in einem bandbreitesparenden Format (binär) gemacht, aber gut.


Das Format ist momentan ein erster Schritt und kann sich irgendwan bestimmt zugunsten eines besseren ändern!

Udontknow hat folgendes geschrieben:

Wenn du nun auf den Text "<header>" stösst, grabscht du dir den Rest, der dahinter steht. Triffst du auf eine Klammer "{" und eine Klammer dahinter "}", so schnappst du dir den Wert zwischen Klammern. Schon hast du einen Header ausgelesen. Genauso gehst du mit den Tags vor.


Ich möchte nicht selbst anfangen irgendwelche kleinen Routinen zu schreiben welche Einzellfälle abarbeiten aber sich nicht erweitern lassen!
Es sollen später verschiednene Abfragen, Definitionen oder sogar Dateien übertragen werden können!

Udontknow hat folgendes geschrieben:
BTW: Empfehlenswert ist da die Unit RXStrUtils von den RX-Tools, die Routinen WordCount und ExtractWord sind für diese Fälle ideal.


Hab mal im Netz gesucht, wenn das richtig ist, so ist die Seite der RX-Componenten gerade nicht verfügbar!

Habe auf einer anderen Seite die RXComps 2.5 gefunden sind das auch die richtigen???

Parsen die einen String und geben Fehlermeldungen wenn er nicht einem vorgegebenen Muster entspricht???

Ich hänge aber immernoch ein wenig am eigenen Parser!
Damit kann man einfach mehr System in die Übertragung bringen, und um verschiedene Messages zu analysieren und zu vergleichen und zu verarbeiten sind strukturen nun mal nötig!
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 18.09.02 11:08 
Zitat:
Ich möchte nicht selbst anfangen irgendwelche kleinen Routinen zu schreiben welche Einzellfälle abarbeiten aber sich nicht erweitern lassen!


Hmmm irgendwie ist das ein Widerspruch in sich... :?

Wie willst du denn sonst anfangen zu parsen? du musst nunmal erst einmal auf von dir festgelegte Schlüsselwörter in irgendeiner Art und weise reagieren, und das musst du nun einmal coden! Und wieso ist das dann nicht erweiterbar? Was ist das Problem, dann später Code einzuhäckeln, um auf "If/Then"-Strukturen zu oder ähnliches zu reagieren?

Vielleicht verstehe ich ja irgendetwas falsch... :?:

Cu,
Udontknow
Hagbard Celine Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 119



BeitragVerfasst: Mi 18.09.02 11:31 
Hi Udontknow,

Udontknow hat folgendes geschrieben:

Vielleicht verstehe ich ja irgendetwas falsch... :?:


Ich muss meine Formulierungen optimieren!!!!
Irgendwann hab ich sie bestimmt perfekt! Hoffentlich!

Also :

Ich kenne Grundzüge des Parserbaus, in Java! Sollte ja ziemlich das gleiche sein!

Ich suche einen Ansatz in Delphi!
Einer nach dem Moto :

entferne erst alle unnötigen Zeichen,
dann untersuche die Zeichenfolge auf xyz
dann erzeuge abc,....

Muss nicht für Dummis geschrieben sein! Einfach nur eine Idee!
Vielleicht ist das Beispiel auch wirklich zu simple für einen Parser!
Aber ich wollte nicht gleich mit Formeln etc. anfangen! Ausserdem käme dan der Verweis auf zig vorhandene mathe-Parser!!!

Ich möchte die mögliche Struktur später erweitern, so sollen z.B. Parameter an einen Tag angehängt werden können!

Oder an einen Header ein authCode der den Header für bestimmte Clients sperrt!

Ich bin nicht zu blöde selbst Abfragen zu coden, ich möchte nur nicht das Rad neu erfinden und hoffe durch etwas Hilfe Fehler nicht zu machen wekche tausend andere vor mir schon gemacht haben!
Eisenherz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Mi 18.09.02 14:39 
Hi Hagbard,

wenn Du Compilerbau besucht hast, dann ist Dir vielleicht LEX und YACC ein Begriff. Für Delphi gibt es hier einen. Wenn Deine Sprache aber nicht noch deutlich umfangreicher wird, hieße das mit Kanonen auf Spatzen schießen.

_________________
aloa Eisenherz
Hagbard Celine Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 119



BeitragVerfasst: Mi 18.09.02 15:27 
Danke erst mal! Werde mir das Teil mal zu Gemüte führen!

Eisenherz hat folgendes geschrieben:
Wenn Deine Sprache aber nicht noch deutlich umfangreicher wird, hieße das mit Kanonen auf Spatzen schießen.


Ich gehe davon aus dass wenn die erste Stufe mal erreicht ist mir noch jede Menge Erweiterungsmöglichkeiten einfallen!

Im Endeffekt bin ich ja dabei eine Sprache zur Kommunikation zwischen verschiedenen Programmen zu definieren!

Wenn die Unterteilung in Tags und Headers erstmal klappt, dann wird der Parameterbereich geparst!