der Begriff Scriptsprache ist vielleicht gar nicht richtig, aber ich bin auf keinen passenderen Begriff gekommen.
Aufgabe: Ein Meßgerät kann mit unterschiedlicher Hardware bestückt werden. Je nach Hardware sind unterschiedliche Aktionen und Abläufe möglich. Ich suche nun eine Möglichkeit so ein "Messprotokoll" zunächst simple per ?Textdatei, später mit einer GUI zu realisieren.
Mein Ansatz: Mir schwebt nun folgendes vor: Die einzelnen "Befehle" werden in einer XML - Datei hinterlegt. Für jede "Hardware" - Bestückung existiert eine Schemadefiniton. Dann könnte bei der Eingabe gleich über einen XML Editor eine Validierung erfolgen. Die Klassen, die die vergleiche Hardwarebaugruppen repräsentieren implementieren jeweils ein Interface mit einem entsprechenden "Befehlssatz".
Meine Bedenken: Wenn dann aber eine "neuer" Typ für eine Baugruppe kommt, der "mehr kann", brauche ich wieder ein Interface oder, oder, oder. Das ganze ist also nicht offen für Veränderung? Wenn ich alternativ als Befehl immer einen String mit dem Befehl als Text und noch ein "Parameterobjekt" übergebe (simples "Befehlsinterfaces"), dann gibt es wenig Compilerfehler, sondern die Fehler tauchen u. U. erst zur Laufzeit auf.
Alternativen? Oder ist das ganze sowieso Unsinn und es gibt "XYZ" für so etwas?
Deiner Beschreibung nach hört sich das für mich wie ein Kandidat für eine DSL (Domain Specific Language) an. Statt das Ganze in XML abzubilden (was ich auch für möglich halte) entwickelst Du eine eigene für die Domäne der Messgeräte spezifische Sprache mit einem von Dir festgelegten Sprachumfang. Ich kann als Toolkit, um so etwas zu relaisieren, uneingeschränkt ANTLR empfehlen. ANTLR erlaubt es Dir, Grammatiken in einer formalisierten Sprache (ANTLR eigene DSL) zu entwickeln und danach z.B. Java oder C# Parser daraus zu generieren, mit denen Du Deine eigene DSL parsen kannst. Danach hast Du einige Möglichkeiten, von Parser-Actions im einfachen Fall bis hin zu Tree-Pattern Mathcing im AST, alles ist mit ANTLR (verglichen damit, dass man sowas zu Fuß macht) einfach möglich. Als Lektüre kann ich
empfehlen. Mit Deinem Parser kannst Du dann die von Dir angesprochene syntaktische Validierung (so wie Du es mit deinem XSD Schema vor hast) durchführen. Interessanter wird danach aber die semantische Validierung, was einer Daten bzw. Konsistenzprüfung innerhalb Deiner XML Files entsprechen würde. Mit ANTLR kannst Du dann z.B. auch Code generieren oder während eines Parserdurchlaufs oder eines Treewalks direkt in der Laufzeit arbeiten (kann man alles in den Büchern nachlesen). Damit eröffnen sich natürlich auch Möglichkeiten hinsichtlich der von Dir geforderten Erweiterbarkeit: Wenn Du die Baugruppen in deiner domänenspezifischen Sprache definieren kannst (analog einem z.B. Interface in C#), dann hast Du auch einfache Erweiterbarkeit. Entsprechende DomainExperts Deiner Kunden können dann Bauteile auch selbst definieren... usw. Die Prüfung deiner "Skripts" erfolgt also dann mit Mitteln, die man aus dem Compilerbau kennt, allerdings nimmt einem ANTLR viel Arbeit ab und erlaubt es, den BusinessCase schneller abzubilden.