AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie am besten Parsen?

Ein Thema von malo · begonnen am 30. Apr 2005 · letzter Beitrag vom 28. Nov 2005
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#1

Wie am besten Parsen?

  Alt 30. Apr 2005, 17:59
Hi!

Ich hab mir mal überlegt eine kleine Scriptsprache zu entwickeln... allerdings weiß ich grade nicht, wie ich am besten den Script-Quellcode parsen kann (also welche Technik ich verwenden soll). Ich könnte ja prinzipiell den ganzen Code mit einer Schleife durchlaufen, aber das halte ich nicht für eine gute Idee... besonders, wenn ich nicht nach Zeichen suche, sondern nach Strings (und die mit solch einer Schleife schwieriger zu finden sind).

Kennt jemand zufällig einen Trick, wie man leicht den Code parsen kann? Oder hat überhaupt jemand Ideen, wie man das machen könnte?



Danke schonmal im Vorraus!
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Wie am besten Parsen?

  Alt 30. Apr 2005, 18:03
Ich habs zwar mal gemacht, aber im erklären bin ich nicht so sehr großartig

Also, wenn du eine Sprache haben willst, musst du verschiedene syntaktische Elemente festlegen, darunter auch Begrenzer für Statements usw. in Pascal gibt es jede Menge dieser Dinger: ";,()[] begin end for in do out var type" usw.. Du gehts eigentlich beim parsen nur von einem Begrenzer zum nächsten und wertest aus, was dazwischen steht, gekoppelt mit der Bedeutung des Begrenzers selbst.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#3

Re: Wie am besten Parsen?

  Alt 30. Apr 2005, 18:06
Zitat von Dax:
Ich habs zwar mal gemacht, aber im erklären bin ich nicht so sehr großartig

Also, wenn du eine Sprache haben willst, musst du verschiedene syntaktische Elemente festlegen, darunter auch Begrenzer für Statements usw. in Pascal gibt es jede Menge dieser Dinger: ";,()[] begin end for in do out var type" usw.. Du gehts eigentlich beim parsen nur von einem Begrenzer zum nächsten und wertest aus, was dazwischen steht, gekoppelt mit der Bedeutung des Begrenzers selbst.
Aber wie lese ich die Begrenzer am besten aus? Mit Pos(PosEx)? Oder mit Copy? Oder wie genau sollte man das am besten machen?
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Wie am besten Parsen?

  Alt 30. Apr 2005, 18:14
Du könntest dir eine Funktion schreiben, die dir zurückgibt, ob ein Zeichen eine Ziffer ist, ein + oder - oder * oder / Zeichen ist oder ein Buchstabe.
Dann durchläufst du mit ner while-Schleife (z.B. ob ein Zeichen eine Ziffer ist) den String und suchst nach Zahlen.
Dann machst du das ganze mit den Rechenzeichen und schaust, wie alles gerechnet werden muss.

Natürlich musst du auf Klammern aufpassen
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#5

Re: Wie am besten Parsen?

  Alt 30. Apr 2005, 18:19
Ein sehr einfacher, aber hilfreicher Parser wäre z.B. die Klasse TParser aus der Unit Classes. Darauf könntest du deinen eigenen Parser aufbauen.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#6

Re: Wie am besten Parsen?

  Alt 30. Apr 2005, 18:34
Zitat von Sprint:
Ein sehr einfacher, aber hilfreicher Parser wäre z.B. die Klasse TParser aus der Unit Classes. Darauf könntest du deinen eigenen Parser aufbauen.
Gibts da vielleicht eine Dokumentation oder so zu? Weil ich in der OH nichts unter "Parser" oder "TParser" finde
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#7

Re: Wie am besten Parsen?

  Alt 30. Apr 2005, 18:38
Zitat von malo:
Gibts da vielleicht eine Dokumentation oder so zu? Weil ich in der OH nichts unter "Parser" oder "TParser" finde
Hab bis jetzt noch keine Doku zu TParser gesehen. In Borland's Newsgroups zu Delphi kannst du einige Beispiele finden.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#8

Re: Wie am besten Parsen?

  Alt 1. Mai 2005, 13:08
Naja, ich such immer noch nach einer guten Methode, einen String nach anderen Teil-Strings zu durchsuchen.

Meine Script-Syntax soll in etwa so aussehen:

Code:
int $EineIntVariable; //an Sprachen wie PHP, Perl oder C angelehnt
$EineIntVariable = 10; //Wert 10 zuweisen
Message('Hier Text'); //Messagebox
int $ZweiteIntVariable; // noch eine IntVariable erstellen
$EineIntVariable = $ZweiteIntVariable + 1;
Etwa so... jetzt brauche ich aber eine vernünftige Möglichkeit, den Code von oben bis unten durchzulaufen und zu prüfen, ob eines der Schlüsselwörter zu finden ist bzw. ob eine Funktion aufgerufen wird. Mit Pos oder PosEx zu arbeiten halte ich für ungeschickt, weil ich den Quellcode ja von oben nach unten durcharbeiten will. Bei Pos sucht der ja nur nach einzelnen Schlüsselwörtern im Zeilstring...

@Dax: Wie hast du denn zum Beispiel in deiner Scriptsprache nach den Bezeichnern gesucht? Also mit welcher Funktion? Eine komplett selbstgeschriebene, oder wie genau?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#9

Re: Wie am besten Parsen?

  Alt 1. Mai 2005, 13:14
Ich hab meine Funktion komplett selbst geschrieben, nur mit Pos, Schleifen und Pointern. Ziemlich unsichere Sache, die ich da hatte, und extrem spezifisch.. die hier zu posten und deinen Wünschen entsprechend umzuändern würde länger dauern, als eine komplett neue, flexiblere Funktion zu schreiben..
  Mit Zitat antworten Zitat
Mephistopheles
(Gast)

n/a Beiträge
 
#10

Re: Wie am besten Parsen?

  Alt 1. Mai 2005, 13:28
Such mal nach "Tokenizer". Der kommt nämlich noch vor dem Parser. Der Tokenizer zerlegt Quelltext in seine Bestandteile (z.B. Schlüsselwörter, Stringliterale, Numerische Konstanten, Operatoren) und danach kommt der Parser, der ja auch weiß, ob bestimmte Token in einer gewissen Reihenfolge auftauchen dürfen. Nehmen wir mal:

for x := 0 do 78 to Der Tokenizer würde hier finden: for, x, :=, 0, do, 78, to!

Aber erst der Parser kann ermitteln, daß das DO zwischen den beiden Zahlen syntaktisch inkorrekt ist.

Alternativ kannst du bei Bloodshed mal nach CoPascal suchen - einem Miniinterpreter von N. Wirth, dem Erfinder von Pascal - dort sind ja alle benötigten Techniken mehr oder minder implementiert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz