Uso le classi Lexer e Parser generate dallo strumento ANTLR (targeting C#). Supponiamo che abbia analizzato del codice e ottenuto un albero AST per questo. Cosa succede se una parte del mio codice iniziale è cambiata e voglio aggiornare solo le parti corrispondenti dell'albero? C'è un modo comune per farlo? Ad esempio una riga di codice è stata inserita all'interno del corpo di alcune funzioni. E voglio ricostruire solo la parte dell'albero che rappresenta questa funzione e aggiornare le posizioni dei successivi token di funzioniAggiornamento albero AST ANTLR
5
A
risposta
1
Ci sono alcuni progetti là fuori che fanno ciò che si potrebbe desiderare di realizzare. Ma non so se ANTLR lo supporta. Si può dare un'occhiata a: http://en.wikipedia.org/wiki/Incremental_compiler
Per l'evidenziazione della sintassi solo proposta, suggerisco di utilizzare l'espressione regolare per il diverso token nella sintassi. (Se aggiorni solo la linea su cui stai lavorando non dovresti avere problemi di prestazioni.)
Problemi correlati
- 1. regole ANTLR AST fallire con RewriteEmptyStreamException
- 2. Esercitazione per camminare con ANTLR AST in C#?
- 3. Che cos'è un parser ad albero in ANTLR e sono obbligato a scriverne uno?
- 4. ANTLR regola priorità
- 5. Eccezioni di gestione antlr
- 6. SQL Server: aggiornamento colonna in un albero
- 7. Elegante modello AST
- 8. ANTLR: rientranza spaziale?
- 9. parser Haskell su AST
- 10. ANTLR JavaScript Target
- 11. ANTLR "Inaspettata fine della sottostruttura"
- 12. Interprete AST?
- 13. Come costruire manualmente un AST?
- 14. ANTLR ClassCastException
- 15. Come posso costruire un AST usando ANTLR4?
- 16. Parse HQL a AST Struttura e convertire AST torna a HQL
- 17. Aggiornamento di un albero di copertura minimo quando si inserisce
- 18. ANTLR 4 è più veloce di ANTLR 3?
- 19. Annotazione Boilerplate di AST in Haskell?
- 20. Rappresentazione del tipo di record AST OCaml
- 21. Utilizzo di Eclipse AST
- 22. Elaborazione AST Python
- 23. Manipolazione del V8 ast
- 24. Ottenere AST per C++?
- 25. API per confrontare AST?
- 26. Building AST in OCaml
- 27. Erlang and Antlr
- 28. ANTLR Precedenza operatore
- 29. Test ANTLR Grammar
- 30. Token antlr dal file
Dopo aver cambiato l'albero, cosa vuoi fare dopo? Presumo, rigenerare il testo sorgente. Con commenti? Layout originale? ...? –
Voglio solo avere un albero AST pertinente. Diciamo che voglio gestire l'intellisense per alcuni IDE – Natalia
Come sapresti quali parti del tuo AST sono state effettivamente influenzate dal cambiamento? – stryba