AGB  ·  Datenschutz  ·  Impressum  







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

Parser - billige Lösung

Ein Thema von bernhard_LA · begonnen am 3. Apr 2012 · letzter Beitrag vom 4. Apr 2012
Antwort Antwort
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.488 Beiträge
 
Delphi 12 Athens
 
#1

AW: Parser - billige Lösung

  Alt 3. Apr 2012, 11:44
Lua
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Parser - billige Lösung

  Alt 3. Apr 2012, 12:24
@bernhard_LA

Das ist nicht so kompliziert wie es sich anhört. Ich habe inzwischen mehrere kleine Scriptsprachen geschrieben, und zufällig arbeite ich momentan wieder an einer.

Zuerst muß man sich bewußt werden was man alles damit machen will. Was ist nötig, was unnötig. Meine erste Scriptsprache die ich für eine Anwendung schrieb konnte ich sogar als einen kleinen Basicinterpreter verwenden. Was ich jetzt mache ist dagegen sehr simpel, da es sich an Anwender richtet die auch ohne Programmierkenntnisse programmieren können sollen. Aber egal für was du dich entscheidest, es ist einfacher als man denkt.

Hier ein sehr einfaches Konzept: Variablen beginnen mit einem $, Bezeichner für Funktionen und Variablen dürfen nur aus A-Z, a-z, _ und 0-9 Zeichen bestehen (und Kommentare nicht vergessen). Am Anfang ignorierst du die Leerzeichen und liest das erste Wort bis zu einem Sonderzeichen oder Ende. Sehr einfach, schon hast du den Befehl oder Variable. Als nächstes eine Funktion schreiben die ein Parameter ausliest. Das ist etwas komplexer, denn du mußt erkennen ob es eine Variable ist oder ein Wert, und wenn Wert, String oder Zahl. Das wäre einfach, denn man könnte bis zu einem Komma lesen, aber ein String kann auch ein Komma enthalten. Also eine Funktion schreiben die einen String in Anführungzeichen liest. Aber all das kann man sich sparen wenn du bereit bist paar Abstriche hinzunehmen. TStrings DelimiterText. Mach Komma zum Delimiter und schon hast du mit einer Zeile die Parameter als Liste. Wie gesagt, das funktioniert, man muß dann aber die Eigenarten von DelimiterText akzeptieren. Ich hab da was eigenes geschrieben, aber gehen, geht es. Nur wie gesagt, mit Vorsicht.

Also, ganz einfach: zuerst das erste Wort auslesen das den regeln entspricht, dann die Parameter über DelimiterText zerlegen. Für etwas simpeles reicht es. Und Schleifen sind auch kein so großes Problem.
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
575 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Parser - billige Lösung

  Alt 3. Apr 2012, 12:26
Oder Pascal Script Habe ich auch schon in einer Anwendung erfolgreich eingesetzt
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: Parser - billige Lösung

  Alt 3. Apr 2012, 12:41
Ich würde in Anbetracht dessen, dass es auch nicht Programmierer benutzen sollen eher auf µBASIC o.ä. setzen.
Funktionen sind da eher unverständlich und eine mögliche Fehlerquelle.
Delphi programming
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#5

AW: Parser - billige Lösung

  Alt 3. Apr 2012, 13:42
Bei MSSQL (Task management) kann man solche Sequenzen sehr leicht und intuitiv erstellen.
Man hat keine Schleifen, aber bedingte Ausführung von Schritten

Stell Dir vor, eine Tabelle mit 3 Spalten (Nummer, Befehl, Aktion nach Beenden)
Entscheidend ist "Aktion nach Beenden" dort gibt es zur Auswahl
"Bei Erfolg: Beenden"
"Bei Erfolg: Weiter bei Schritt xy"
"Bei Fehler: Beenden"
"Bei Fehler: Weiter bei Schritt xy"

Damit kann man einfache Verzweigungen und sogar Schleifen "programmieren"

Sollte sich auch als INI-Datei ablegen lassen.
Code:
[Schritt1]
Befehl=Essen
Parameter_1=Nudeln
Parameter_2=Gulasch
Naechster_Schritt_Bei_Erfolg=Schritt_Nachtisch
Naechster_Schritt_Bei_Fehler=Schritt_Herr_Ober

[Schritt_Nachtisch]
Befehl=Essen
Parameter_1=Torte
Parameter_2=Sahne
Naechster_Schritt_Bei_Erfolg=Schritt_Zahlen
Naechster_Schritt_Bei_Fehler=Schritt_Herr_Ober

[Schritt_Herr_Ober]
Befehl=Meckern
Parameter_1=Was für ein Saftladen!
Parameter_2=Ich werde nicht zahlen.
Naechster_Schritt_Bei_Erfolg=ENDE
Naechster_Schritt_Bei_Fehler=Schritt_Zahlen

[Schritt_Zahlen]
Befehl=Bezahlen
Naechster_Schritt_Bei_Erfolg=ENDE
Naechster_Schritt_Bei_Fehler=Schritt_Herr_Ober
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz