Quiero encontrar una sintaxis de lenguaje. He leído un poco acerca de estos tres, y realmente no puedo ver nada que uno pueda hacer que otro no pueda ver. ¿Hay alguna razón para usar una sobre otra? ¿O es solo una cuestión de preferencia?BNF vs EBNF vs ABNF: ¿cuál elegir?
Respuesta
Usted tiene que pensar en EBNF y ABNF como extensiones que te ayuda a ser más conciso y expresivo mientras desarrollas tus gramáticas.
Por ejemplo pensar en un símbolo no terminal opcional, en un BNF la gramática lo defina mediante el uso de símbolos intermedios como:
A ::= OPTIONAL OTHER
OPTIONAL ::= opt_part | epsilon
mientras que con EBNF puede hacerlo directamente a través de opcional sintaxis:
A ::= [opt_part] OTHER
a continuación, ya que no hay manera de expresar preferencia en un BNF tienes que nos e siempre símbolos intermedios también para opciones anidadas:
BNF
A ::= B C
B ::= a | b | c
EBNF
A ::= (a | b | c) C
Esto es cierto para muchos problemas de sintaxis que se permiten en una EBNF o ABNF gramática, gracias al azúcar sintáctico, pero no con una normal de BNF. ABNF extiende EBNF, que le permite hacer las cosas más complicadas, como especificando cuántos ocurrencia de un símbolo se puede encontrar en conjunto (es decir 4*DIGIT
)
Así que la elección de un ABNF o un EBNF como lengua de La elección de su gramática facilitará su trabajo, ya que será más expresivo sin llenar su gramática con símbolos inútiles que su generador de analizadores generará de todos modos, ¡pero no le importará!
Puede lograr lo que quiere mediante el uso de cualquiera de ellos, pero cada uno es conciso y eficaz en la representación de su idioma en función de las características que comprende su idioma.
He leído BNF, EBNF y ABNF de Wikipedia y se ha descrito algunas diferencias y por qué EBNF y ABNF entraron en la imagen basada en BNF
EBNF es la versión extendida/nueva de BNF, por lo que el problema es más simple: EBNF frente a ABNF. No soy un experto, pero creo que debería depender de un lenguaje cuya sintaxis quieras definir. También hay algunos visualizadores para EBNF (http://www.google.co.il/search?sourceid=chrome&ie=UTF-8&q=Ebnf-Visualizer), pero no vio ninguno para ABNF,
Una opción razonable sugeriría ir con EBNF, por la razón es un estándar ISO: ISO/IEC 14977 : 1996(E) [pdf]. Como ejemplo, se usa para OMG UML Human-Usable Textual Notation.
De acuerdo con Wikipedia, los literales de cadena de doble cita de ABNF no distinguen entre mayúsculas y minúsculas, y las concordancias entre mayúsculas y minúsculas se deben definir como valores numéricos ASCII. Considero que es una desventaja.
El texto literal se especifica mediante el uso de una cadena entre comillas (
"
). Estas cadenas no distinguen entre mayúsculas y minúsculas y el conjunto de caracteres utilizado es (US-) ASCII. Por lo tanto, la cadena "abc" coincidirá con "abc", "Abc", "aBc", "abC", "ABc", "AbC", "aBC" y "ABC". Para una coincidencia sensible a mayúsculas y minúsculas, deben definirse los caracteres explícitos: para que coincida con "aBc", la definición será%d97.66.99
.
https://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_Form#Terminal_values
Sin embargo, RFC 7405 parece añadir cadenas literales entre mayúsculas y minúsculas a ABNF.
- 1. Convirtiendo EBNF a BNF
- 2. canvas vs. webGL vs. CSS 3d -> ¿cuál elegir?
- 3. Memcached vs APC ¿cuál debo elegir?
- 4. JavaScript vs validación de ASP.NET, ¿cuál elegir?
- 5. mixin vs plugin. ¿Qué elegir?
- 6. EBNF o BNF para el lenguaje de programación LOGO
- 7. Function.bind vs Closure en Javascript: ¿cómo elegir?
- 8. J2ME VS Android VS iPhone VS Symbian VS Windows CE
- 9. ¿Cuál es la diferencia entre() vs [] vs {}?
- 10. Rhino simulacro vs Typemock vs JustMock vs
- 11. TagSoup vs Jsoup vs HTML Analizador vs vs HotSax
- 12. ¿Cuál es el BNF de BNF? es decir, ¿cómo definimos una meta gramática BNF?
- 13. Implementaciones de colecciones de Java (por ejemplo, HashMaps vs HashSet vs HashTable ...), ¿cuál es el costo de elegir el incorrecto?
- 14. MySQL vs Firebird vs SQLite
- 15. diseño trivial vs. estándar vs. POD
- 16. ¿Cómo representar la negación en BNF?
- 17. Cuál es la diferencia entre colorWithSRGBRed vs colorWithDeviceRed vs colorWithCalibratedRed
- 18. ListFragment vs ListActivity - ¿Cuál usar?
- 19. Procmail vs. Maildrop - ¿cuál usar?
- 20. ¿Cuál usar: onSaveInstanceState vs. onRetainNonConfigurationInstance?
- 21. Nodo-PerfectAPI vs Restify.js vs ExpressJS vs Node-APIServer
- 22. Elegir entre VS 2005/2008/2010 para aprendizaje independiente
- 23. ListBox vs. ListView: cómo elegir el enlace de datos
- 24. ¿Guía para elegir entre servicios REST vs SOAP?
- 25. SignalR: ¿Por qué elegir Hub vs. Persistent Connection?
- 26. IQueryable <T> vs IEnumerable <T> con Lambda, ¿cuál elegir?
- 27. Vaadin vs Apache Haga clic en cuál elegir para mi desarrollo de aplicaciones web
- 28. webforms vs asp.net mvc para la aplicación de una sola página, ¿cuál elegir?
- 29. SpiderMonkey vs JavaScriptCore vs.
- 30. pyparsing - cargar ABNF?
relativa a 4 * dígito: el mismo se puede hacer en EBNF utilizando la misma sintaxis. – Kamarey
Además: IETF usa ABNF. ABNF es mucho más útil que EBNF. –