ich etwas bedeuten wieGibt es jede Änderung von BNF mit Parametern
LISTOF(EL) := "[" EL ("," EL)* "]"
LISTNUM := LISTOF(NUMBER)
LISTID := LISTOF(IDENT)
so, mit Definitionen
NUMBER := ('0'-'9')*
IDENT := ('a'-'z'|'A'-'Z')*
wir
[435,657,44]
folgende haben, ist Beispiel für LISTNUM
,
[dsf,thg,ewre]
ist ein Beispiel für LISTID
.
Oder ein anderes Beispiel (e bedeutet leere Zeichenkette)
A(0) := e
A(n) := "a" A(n-1) | e
so, A (5) aller Strings gesetzt bestehen aus 'a' mit einer Länge von nicht mehr als 5
es irgendwelche Wissenschaft Arbeiten, die etwas Ähnliches beschreiben? Können wir unsere Grammatiken so beschreiben und trotzdem in akzeptabler Zeit parsen?
Natürlich können Sie das * tun *. Eine einfache Möglichkeit besteht darin, Ihre parametrisierten BNF-Regeln als Makros zu behandeln und sie einfach auf konventionelle BNF-Regeln zu erweitern. Die Frage ist * solltest * du das tun? Kauft die zusätzliche Ausdruckskraft in der Praxis etwas? Ich habe viele Grammatiken gebaut; Ich denke nicht. YMMV. –