BNF vs EBNF-vs ABNF: welche wählen?
Ich will mit einer Sprache, die syntax. Ich habe ein bisschen gelesen über diese drei, und kann nicht wirklich finden Sie alles, was man tun kann, die andere nicht können. Gibt es irgendeinen Grund für die Verwendung einer über dem anderen? Oder ist es nur eine Frage der Einstellung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zu denken, EBNF und ABNF als Erweiterungen, die Ihnen helfen, nur um mehr prägnant und ausdrucksstark, während die Entwicklung Ihrer Grammatik.
Denken Sie zum Beispiel über eine optionale nicht-terminal-symbol, in einer BNF Grammatik definieren Sie es durch die Verwendung von intermediate-Symbole wie:
während mit EBNF Sie können direkt über optionale syntax:
Dann, da es keine Möglichkeit zum express Vorrang in einer BNF verwenden Sie immer dazwischenliegende Symbole auch für verschachtelte Auswahl:
Gilt das für viele syntax zulässig sind, die in einem EBNF oder ABNF Grammatik Dank der syntaktischen Zucker, aber nicht mit einem normalen BNF. ABNF erstreckt EBNF, so dass Sie mehr tun, komplizierte Dinge, wie Sie angeben, wie viele vorkommen eines symbols gefunden werden können, zusammen (also
4*DIGIT
)So dass die Wahl ein ABNF oder eine EBNF als Sprache der Wahl für Ihre Grammatik machen die Arbeit noch einfacher, da Sie mehr Ausdruckskraft, ohne Füllung Sie Grammatik mit nutzlosen Symbole, die erzeugt werden sowieso durch Ihre parser-generator, aber Sie werden keine sorgen über Sie!
Laut Wikipedia ABNF s double quoted string-Literale sind case-insensitive und case-sensitive Spiele müssen definiert werden als numerischer ASCII-Werte. Ich halte das für einen Nachteil.
https://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_Form#Terminal_values
Jedoch RFC-7405 scheint, hinzufügen, groß- /Kleinschreibung string-Literale zu ABNF.
https://tools.ietf.org/html/rfc7405
Die EBNF ist die erweiterte/neuere version der BNF, also das problem wird einfacher: EBNF-vs ABNF. Ich bin kein Experte, denke aber, dass es, sollte davon abhängen, eine Sprache, deren syntax, die Sie definieren möchten. Auch gibt es einige Visualisierungen für EBNF (http://www.google.co.il/search?sourceid=chrome&ie=UTF-8&q=Ebnf-Visualizer), aber nicht sehen, keine für ABNF,
Einer angemessenen Wahl würde vorschlagen, Sie gehen mit EBNF, aus dem Grund, es ist ein ISO-standard: ISO/IEC 14977 : 1996(E) [pdf]. Als ein Beispiel, es ist für die OMG UML-Human-Usable Textual Notation.
Können Sie erreichen, was Sie wollen, indem Sie irgendwelche von Ihnen, aber jeder ist prägnant und wirkungsvoll in der Vertretung Ihrer Sprache abhängig, was sind die Merkmale, Ihrer Sprache besteht.
Habe ich gelesen,BNF, EBNF und ABNF von wikipedia und es wird beschrieben, einige Unterschiede und warum EBNF und ABNF kam in Bildern, basierend auf der BNF -