Forum: PC-Programmierung eigene IDE + Sprache --> Wie funktioniert so etwas?


von ttime (Gast)


Lesenswert?

Hallo zusammen,

eine vorhandene Schaltung benötigt ein Konfigurationsfile (Upload via 
USB, tut aber hier nichts zur Sache), in dem relativ "hardwarenah", 
sprich der Reihenfolge von Speicherzellen folgend einige Paramter und 
Regeln stehen, z.B.

'Testparameter
ff000001 ffff0001
ff000002 ffff0002
ff000003 ffff0003
ff000004 ffff0004
ff000005 ffff0005
ff000006 ffff0006

'Multiplikatoren
00000001 00ff0001
(... usw.)

Das ist jetzt hier eine reichlich vereinfachte Darstellung, und die 
einzelnen Werte setzen sich teils aus durchaus komplexeren Regeln 
zusammen (z.B. in Abhängigkeit von digitalen und analogen Eingängen, ... 
aber ich will auch hier nicht zu sehr ins Detail gehen). Ich habe daher 
vor, eine eigene einfache Progammiersprache (oder ist es eher eine 
Beschreibungssprache???) der Form

// Inputs deklarieren
DIGITAL INPUT CHANNEL 0 NAME mein_sprechender_Name_für_di_0;
DIGITAL INPUT CHANNEL 1 NAME mein_sprechender_Name_für_di_1;
ANALOG  INPUT CHANNEL 0 NAME mein_sprechender_Name_für_ai_0;

// Outputs deklarieren
DIGITAL OUTPUT CHANNEL 0 NAME mein_sprechender_Name_für_do_0;

// "Regeln" und "Berechnungen"
ON CHANGE mein_sprechender_Name_für_di_0
    SET VALUE_XY = mein_sprechender_Name_für_ai_0 * 0.01;

FORWARD VALUE OF mein_sprechender_Name_für_di_0 TO 
mein_sprechender_Name_für_do_0

// ENDE

Das ist jetzt erstmal sehr exemplarisch gehalten und noch nicht sehr 
ausgegoren wie ihr seht. Ich hoffe trotzdem, dass der Sinn meiner 
Fragestellung klar wird: Aus eigener Syntax möchte ich mir möglichst 
innerhalb einer IDE eingangs gezeigte Konfig-Datei "kompilieren" lassen. 
Ähnliches habe ich für eine andere Hardware mit einer an Eclipse 
angelehnten  von Eclipse abgespeckten  ??? IDE gesehen. Fürs googeln 
fehlen mir hier in erster Linie mal die richtigen Stichpunkte, kann hier 
jemand helfen?

Danke schonmal,
ttime

von eingast (Gast)


Lesenswert?

hier ein paar Suchworte:

Interpreterbau,
Parser,
Tokenizer

von TomA (Gast)


Lesenswert?

Weitere Stichworte "lex & yacc"

http://dinosaur.compilertools.net/

Hier ein Link dazu.

Gruß. Tom

von Sebastian (Gast)


Lesenswert?

Wenns unbedingt eclipse sein muss, dann suchst du vielleicht Xtext:

http://www.eclipse.org/Xtext/

oder EMF (Eclipse Modeling Framework):

http://www.eclipse.org/modeling/emf/

Oder ganz allgemein als Stichwort: 
http://en.wikipedia.org/wiki/Model-driven_engineering

Ich hab aber den Verdacht, der Aufwand da was ans Laufen zu bringen ist 
relativ hoch- musst du selbst wissen, ob sich das lohnt.

Einfacher könnte eine EDSL (Embedded Domain Specific Language) sein. 
Buzzword für eine ganz normale Bibliothek, wo das programmieren in 
deiner "Sprache" darin besteht, ein paar Funktionen aufzurufen.

Beispiel für deinen Anwendungsfall, mit python (alles andere tuts auch):
1
# Inputs deklarieren
2
DIGITAL_INPUT(CHANNEL=0, NAME="mein_sprechender_Name_für_di_0")
3
DIGITAL_INPUT(CHANNEL=1, NAME="mein_sprechender_Name_für_di_1")
4
ANALOG_INPUT(CHANNEL=0, NAME="mein_sprechender_Name_für_ai_0")
5
6
# Outputs deklarieren
7
DIGITAL_OUTPUT(CHANNEL=0, NAME="mein_sprechender_Name_für_do_0")
8
9
# "Regeln" und "Berechnungen"
10
ON_CHANGE("mein_sprechender_Name_für_di_0",
11
    SET("VALUE_XY", "mein_sprechender_Name_für_ai_0 * 0.01")
12
13
FORWARD_VALUE(
14
    OF="mein_sprechender_Name_für_di_0",
15
    TO="mein_sprechender_Name_für_do_0")
16
17
# ENDE

Damit sparst du dir den Parser und hast noch den Vorteil, dass du bei 
Bedarf auf die dahinterliegende "richtige" Programmiersprache 
zurückgreifen kannst (z.B. um mehrere gleichförmige Regeln zu 
generieren).

von foo (Gast)


Lesenswert?

Riecht nach python, oder auch excel + ein bissl VBA.

von Sebastian (Gast)


Lesenswert?

Hier ist noch eine Übersichtsseite zum Thema eclise und modeling:

http://www.eclipse.org/modeling/

von Georg (Gast)


Lesenswert?

Sebastian schrieb:
> Hier ist noch eine Übersichtsseite zum Thema eclise und modeling:
>
> http://www.eclipse.org/modeling/

Ähnliche Probleme habe ich mit Macros in Assembler gelöst - ohne 
Prozessorbefehle zu benutzen. Ist nicht jedermanns Sache, dazu muss man 
die Macrosprache beherrschen und das Wort Assembler löst sowieso 
meistens reine Panik aus. Aber nur mal so als Beispiel:
1
;
2
;       *****************
3
;       * reverse table *
4
;       *****************
5
;
6
; ! important ! all hexadecimal values must be written
7
; with 2 digits, e.g. 0f for 15; however, "db","dd" and
8
; "df" are reserved words and must be enclosed as <db> !
9
;
10
; define characters to be exchanged for reverse table
11
; in the form RExch 4e,4f to replace "N" by "O"
12
;
13
;       RExch 4e,4f     ;N -> O
14
;
15
       RExch dc,fc        ;Ü -> ü
16
;
17
; define characters to be removed for reverse table
18
; in the form RRemv 4e for the char "N"
19
;
20
;       RRemv 4e        ; rem N
21
;
22
       RRemv 5e        ; rem ^
23
;

Die "Befehle" RExch und RRemv legen eine Tabelle (ASCII-Zeichen) an und 
machen die gewünschten Einträge für zu ändernde und zu entfernende 
Zeichen, in die anderen Positionen wird ein NOP eingetragen. In 
Wirklichkeit sind RExch und RRemv MASM-Macros.

Eine IDE gibts nicht, ist aber auch nicht nötig. Die Definition wird mit 
Notepad geschrieben und mit MASM übersetzt. Macros gibts übrigens auch 
anderswo.

Georg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.