Kann mir jemand beantworten, wie ich eine EBNF erstelle, die beliebige Binärzahlen erzeugt. Es sollen zudem keine führenden Nullen erlaubt sein?

2 Antworten

bindigit= "1" | "0" ;
num = "1" ,{bindigit} ;

Müßte eigentlich schon reichen.

Nachtrag: Hatte die Semikola vergessen.


katrinl767 
Beitragsersteller
 03.02.2020, 17:50

Danke! Woran kann ich sehen, dass ich die Zahl dann beliebig lang werden kann?

0
KarlRanseierIII  03.02.2020, 17:53
@katrinl767

Bei der EBNF bedeutet {} keine oder beliebig viele Wiederholungen, wäre also der Abschluß nach Kleen in regulären Sprachen. Die positive Hülle (+) ist üblicherweise [] in der EBNF.

Ich kann allerdings nicht sagen, ob ihr die EBNF nach ISO-Standard nutzt.

1

S-> 1B | [Epsilon]

B-> 1B | 0B | [Epsilon];

Sollte funktionieren, wnen cih keinen Fehler gemacht habe.

[Epsilon] ist das leere Wort.

Woher ich das weiß:Studium / Ausbildung