Sto scrivendo un interprete C# da zero per l'esperienza di apprendimento, e finora tutto è andato liscio. Ho un lexer C# completamente funzionale che emette tutti i tipi di token per il parser. So come analizzerò i token, ma non sono sicuro di come strutturare il mio AST (abstract syntax tree).Come progettare parti di un Abstract Syntax Tree?
Per esempio, se ho un semplice frammento di codice:
using System.Xml;
quale sarebbe l'albero simile a quando analizzati?
Ti piace questo?
UsingDirective
Identifier(System)
Identifier(Xml)
o simile?
UsingDirective
Identifier(System)
Identifier(Xml)
Se potessi ottenere alcuni suggerimenti e/o esempi quanto a come avrei potuto strutturare le cose come identificatori con i puntini in loro, if/else if/else, dichiarazione di variabile/assegnazione combinati in un unico prospetto (int i = 0;), definizioni di funzioni, ecc. Che sarebbero utili. Ho solo bisogno di avere un'idea migliore di come strutturare l'albero e posso capire io stesso il resto. Grazie.
Questa sarà una lunga esperienza di apprendimento, se si desidera implementare tutto il C# :-) – svick
Beh, sto tralasciando la maggior parte della libreria di classi. Fondamentalmente sto solo implementando ciò che deve essere implementato per le definizioni di classi/funzioni di base, creazione/utilizzo di variabili e chiamate di funzione. –