Quali API sono richieste per il completamento del codice / evidenziazione della sintassi / caratteristiche IDE simili?

5

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?

    
posta DeadMG 08.03.2013 - 15:23
fonte

2 risposte

1

Per esempi di quali funzionalità possono essere offerte, vedere Usare Clang come libreria . La corrispondenza AST di Clang utilizza modelli e macro C ++, il che fa sembrare fata diversi esempi di compilatori in ML o Haskell. Considera questo esempio che "catturerà tutte le dichiarazioni for che definiscono una nuova variabile inizializzata a zero. "

StatementMatcher LoopMatcher =
  forStmt(hasLoopInit(declStmt(hasSingleDecl(varDecl(
    hasInitializer(integerLiteral(equals(0)))))))).bind("forLoop");
    
risposta data 09.03.2013 - 19:41
fonte
1

Per quanto riguarda la tua domanda, titolo: "Quali API sono richieste per il completamento del codice / evidenziazione della sintassi / caratteristiche IDE simili?", potrebbe essere utile controllare la Qt Creator Development Suite se stai cercando di sviluppare il tuo IDE. Qt consente la distribuzione di software multipiattaforma e supporta molte delle funzionalità sopra elencate (completamento del codice, evidenziazione della sintassi, ecc.). Non sono sicuro se questo è ciò che stavi cercando, ma tra il titolo della domanda e la descrizione della domanda mi sono un po 'confuso.

    
risposta data 20.03.2013 - 15:45
fonte

Leggi altre domande sui tag