Von Johannes:
Pattern: ( !_2 ) _PIIP (
IP !_
ICP 2
IIC )
IC _P
IIF ) end of pattern
Template: _P _I 0_0IC _P
C _I
IF n_k-form folgt
P 0
P 0
IIC ) end of template
Match (für den Rest CFPC )CF -> [ CF ] environment
P -> geprüft und ignoriert
C -> bleibt stehen (nicht im Pattern)
Replace (ausgehend von Template)_P -> P
_I -> I
0_0 -> CF (aus Environment, 0-mal quotiert) C blieb stehen.
Tja. Da müssen wir also zwei Interpreter schreiben: execute und build.
Evtl. erstmal prototypen, die das direkt so machen,
wie in der Spec bescrieben (es steht ja alles da).
Dabei dann über Optimierungen nachdenken.
Es wird ja wohl in die Richtung gehen, daß man das ewige Stringmatchen
vermeidet
und stattdessen direkt auf einer Baumstruktur arbeitet.
Problem ist natürlich, daß die nicht lokal eindeutig ist
(wenn man nur einen Ausschnitt sieht, weiß man z. B. nicht,
ob IIC Klammer zu ist oder Teil einer Binärzahl).
Deswegen könnte man ein Typsystem erfinden (mit Typchecker) für
"sichere" Programme
(z. B.: was einmal binärzahl ist, bleibt binärzahl)
und dann hoffen, daß die verwendeten Programme auch diese Eigenschaft haben
(typisierbar sind). Man könnte die Typen bei der Ausführung prüfen
oder aber schon vorher.