Solidez Documentación vs Gramática, ¿cuál es la más correcta?

Estaba usando la especificación de gramática de solidez https://github.com/ethereum/solidity/blob/develop/docs/grammar.txt para escribir un analizador en Smalltalk. Después de codificar una primera versión del analizador, comencé a probar ejemplos de la documentación de solidity https://media.readthedocs.org/pdf/solidity/develop/solidity.pdf . Me sorprendió que muchos ejemplos no funcionaran, principalmente porque la documentación no es consistente con la especificación gramatical.

Solo voy a mostrar un ejemplo simple de estas inconsistencias. En la gramática, los literales de cadena se escriben solo con comillas dobles (línea 125). Por otro lado, la documentación especifica que los literales de cadena se escriben con comillas simples o dobles (página 41). Esta es solo una de las muchas inconsistencias que encontré al echar un vistazo rápido a la documentación.

Entonces, mi pregunta es ¿cuál es la más correcta? ¿La gramática o la documentación? Necesito saber cuál debo tener en cuenta para escribir un analizador que pueda manejar la solidez.

Editar: Aquí está el analizador actual de Pharo/Smalltalk Solidity, en caso de que alguien quiera verlo. https://github.com/hscrocha/SmaCC-Solidez

Edición 2: vi que hace unos días se actualizó la gramática de Solidity en github. Esta actualización no solucionó las inconsistencias que encontré entre la gramática y la documentación.

Gracias y un saludo,

  • Henrique
Leería el código fuente del [compilador de solidez] y lo usaría como una fuente de verdad. [compilador de solidez]: github.com/ethereum/solidity

Respuestas (1)

Perdón por las inconsistencias. No mucha gente usa grammar.txt para escribir analizadores. ¡Sería genial si pudiera informar cualquier inconsistencia que encuentre abriendo un problema en github!

En lo que respecta a su pregunta: diría que el código es el más correcto, pero los tres, documentos, código y gramática pueden tener errores.

Gracias por la respuesta. ¿Alguna idea de si el código del compilador oficial se implementa manualmente o si se crea (automático o semiautomático) mediante una herramienta generadora de analizador? Si usa un generador, entonces debería tener algún tipo de especificación gramatical para alimentar el generador.
@HenriqueRocha es un analizador de arriba hacia abajo implementado manualmente con una anticipación limitada.