¿Cómo manipular C # AST?

votos
2

Estoy trabajando en un proyecto de escuela de ingeniería inversa, que requiere traducir manipular AST del proyecto compilado C #. He visto la publicación en Traducir código C # en AST? en este sitio web, pero no se parece a la que estoy buscando. De acuerdo con lo que sabía, actualmente C # no proporciona una clase de biblioteca que sea así para Java: http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.cdt.doc. isv / reference / api / org / eclipse / cdt / core / dom / ast / ASTVisitor.html Si existe tal clase de biblioteca en C #, todo aquí está resuelto.

He consultado con alguien, y aquí están las posibles soluciones. Pero también tengo problemas para trabajar en las soluciones. 1) Encuentre otro compilador que proporcione una biblioteca que permita exponer su AST para su manipulación. Pero no puedo encontrar un compilador así. 2) Usar ANTLR Parser Generator para sacar mi propio compilador que lo haga (será un proceso mucho más difícil y más largo). La descarga proporciona gramáticas de muestra para diferentes idiomas, pero no C # (tiene gramáticas escritas en varios idiomas, incluido C #, pero no para producir gramática C #). Por lo tanto, el problema es que no puedo encontrar la gramática C #.

¿Cuál es la forma más rápida y más corta de abordar este problema? Si realmente tomo una de las alternativas anteriores, ¿cómo debo solucionar esos problemas que enfrenté?

¡Le estaría muy agradecido si puede ayudarme a resolver mi problema!

Publicado el 04/08/2009 a las 12:16
fuente por usuario
En otros idiomas...                            


5 respuestas

votos
1

¿Por qué no pruebas NRefectory ? Lo he visto discutido por AST en algunos foros de SharepDevelop .

Aquí hay un artículo sobre CodeProject con respecto a este tema.

Respondida el 04/08/2009 a las 12:40
fuente por usuario

votos
0

Un analizador de C # 3.0 completo está disponible con nuestro DMS Software Reengineering Toolkit (DMS para abreviar). Se ha utilizado para procesar decenas de miles de archivos C # con precisión. Proporciona construcción automática de AST, recorridos de árbol, coincidencia y transformación de patrones de sintaxis de superficie y mucho más. Como producto comercial, podría no funcionar para un proyecto de estudiante.

ANTLR podría decirse que ofrece un analizador C #, pero no sé si es completo o robusto, o si realmente construye AST.

[EDIT 25 de enero de 2010: analizador C # 4.0 ahora disponible para DMS con todas las propiedades anteriores]

[EDITAR mayo de 2016: analizador C # 6.0 disponible para DMS.]

Respondida el 21/08/2009 a las 02:34
fuente por usuario

votos
0

ANTLR no es una buena opción. Ahora estoy probando usando Mono Cecil. Mono Cecil es bueno para analizar cualquier código souce que pueda compilarse en Common Intermediate Language (CIL). La desventaja es que no tiene la documentación adecuada.

Respondida el 03/10/2009 a las 10:10
fuente por usuario

votos
0

Yo sólo he respondido en otro hilo aquí en StackOverflow una solución en la que he implementado una API para crear y manipular AST desde C # Código Fuente

Respondida el 06/02/2010 a las 22:52
fuente por usuario

votos
4

Sé la respuesta de éste fue aceptado hace mucho tiempo. Pero yo tenía una pregunta similar y no estaba seguro de las opciones que hay. Hice un poco de investigación de la biblioteca NRefactory que se incluye como parte de SharpDevelop. Se hace generar un AST de código C #.

Aquí está una imagen de la aplicación de demostración NRefactory que forma parte del código fuente SD. Escriba algo de código C # y genera y muestra la AST en una vista de árbol.

texto alternativo

Respondida el 29/12/2010 a las 11:36
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more