Ho sviluppato un po 'di linguaggio nel mio tempo e ho un prototipo abbastanza semplice che implementa alcune delle funzionalità più basilari. Ora sto cercando di aumentare e non voglio fare un brutto errore architettonico in cui devo rifoderare in modo massivo tutto per supportare queste funzionalità. Quindi mi piacerebbe conoscere le funzionalità chiave dell'API richieste. In questo momento, ho
Il lexer può operare su qualsiasi buffer di input usando gli iteratori, i token sono disponibili per l'ispezione prima di passare al parser e fornisco anche un hook per i commenti.
Il parser può operare su qualsiasi flusso di token (non codificato per il mio lexer), e la costruzione di AST può essere scambiata. Ho anche annotato il mio AST con le informazioni sulla posizione. Inoltre, l'AST è prontamente disponibile per l'ispezione prima dell'analisi.
Infine, molte delle funzioni di analisi sono ponderate, quindi è facile ottenere la loro rappresentazione semantica dall'AST. Ma non sono sicuro di quali caratteristiche queste rappresentazioni semantiche debbano essere prontamente disponibili per tali sforzi.
Qualche suggerimento su ciò che è necessario a questo proposito?