Estoy tratando de construir un analizador para Solidity, y ayudaría si pudiera construir una versión funcional del analizador existente. Intenté mirar el código fuente en el git oficial , pero nunca antes había trabajado en un proyecto de esta magnitud y es confuso. ¿Alguien podría decirme cómo puedo aislar los módulos de análisis y AST para poder leer un script y construir un AST a partir de él?
(Entiendo que el alcance puede ser demasiado amplio para esta pregunta, pero realmente agradecería cualquier sugerencia)
Si usa solc --ast
, el compilador generará una representación json del AST (esto también se incluye en la versión npm del compilador). ¿Es eso suficiente para sus propósitos? Si no, venga a Gitter para discutir.
Además de la respuesta de chriseth, también está el proyecto solidity -parser que es útil si A) está desarrollando en un contexto de Javascript, o B) no quiere que el analizador tenga un error si hay importaciones sin resolver (desafortunadamente solc --ast
, tendrá un error si hay importaciones que no puede encontrar).
Además de la respuesta de Tim, también hay un python-solidity-parser basado en la sintaxis ANTLR y el formato AST utilizado en solidity-parser-antlr que puede usar si desea evitar depender del compilador. Nota: el compilador AST es la verdad.
He usado 3 herramientas, tal vez puedas probar:
Use flag --ast-compact-json
, que proporciona el "AST de todos los archivos de origen en un formato JSON compacto".
solc --ast-compact-json contract.sol
lluvia reverencia