Necesidad de construir una representación XML para el código C #
Pregunta
Necesito convertir el código C # en una representación XML equivalente.
Planeo convertir el código C # (fragmentos de código C # 2.0, sin genéricos o tipos anulables) a un AST y luego convertir el AST a XML.
Buscando un simple lexer / parser para C # que genere un AST.
Cualquier indicador sobre la conversión de código C # a una representación XML (que se puede convertir de nuevo a C #) también sería muy útil.
Saludos cordiales,
Solución
MinosseCC: un generador lexer / parser para C #
También SO preguntas:
¿Parser-generator que genera C # dado una gramática BNF? lo que sugiere el uso de ANTLR
¿Traducir el código C # a AST?
Otros consejos
Como dice Mitch, Antlr puede ser tu solución. Puede transformar la salida AST de Antlr según sus necesidades y luego serializarla con xstream. Ese es el enfoque que estoy usando en mi proyecto bs, si alguien conoce una mejor manera, también será genial para mí.
Puede encontrar ejemplos de gramática csharp como, por ejemplo, http: //www.antlr. org / grammar / 1127720913326 / tkCSharp.g o http: // www. antlr.org/grammar/1151612545460/CSharpParser.g pero es posible que deba adaptarlo a ANTLRV3 o a sus propias necesidades.
Nuestro DMS Software Reengineering Toolkit es un ecosistema para crear analizadores de código y transformadores DMS está parametrizado por una definición de lenguaje y tiene definiciones de lenguaje para C #, Java, C ++, C, PL / SQL, PHP, JavaScript, COBOL y una variedad de otros idiomas. Cuando DMS analiza de acuerdo con una definición de idioma, crea automáticamente un AST. Una biblioteca AST proporcionada por DMS puede imprimir el árbol en forma de paréntesis tipo Lisp, o en formato XML. En lugar de convertir XML nuevamente en código fuente, DMS puede regenerar el código fuente directamente desde el AST. DMS también proporciona transformaciones de fuente a fuente para permitir la manipulación del AST.