Estoy escribiendo un intérprete C# desde cero para la experiencia de aprendizaje, y hasta ahora todo ha ido bien. Tengo un lector de C# completamente funcional que genera todo tipo de tokens para el analizador. Sé cómo voy a analizar los tokens, pero no estoy seguro de cómo debería estructurar mi AST (árbol de sintaxis abstracta).¿Cómo diseñar partes de un árbol de sintaxis abstracto?
Por ejemplo, si tengo un fragmento de código simple:
using System.Xml;
lo que sería el árbol verá como cuando analizado?
como esta?
UsingDirective
Identifier(System)
Identifier(Xml)
o ¿como?
UsingDirective
Identifier(System)
Identifier(Xml)
Si pudiera conseguir algunas sugerencias y/o ejemplos en cuanto a cómo podría estructurar cosas como identificadores con los puntos en ellos, si/else if/else, declaración de variables/asignación combinados en una declaración (int i = 0;), definiciones de funciones, etc. que serían útiles. Solo necesito tener una mejor idea de cómo estructurar el árbol y puedo descubrir el resto yo mismo. Gracias.
Esa va a ser una larga experiencia de aprendizaje, si quieres implementar todo C# :-) – svick
Bueno, estoy dejando de lado la mayoría de la biblioteca de clases. Básicamente estoy implementando lo que necesita implementarse para definiciones básicas de clase/función, creación/uso de variables y llamadas a funciones. –