Crea auto-suggerimento di editor di codice (come IntelliSense)

6

Se si vuole scrivere auto-suggerimento per un editor IDE / codice (come IntelliSense ), in genere si ha bisogno scrivere un parser per qualsiasi lingua che dovrebbe essere supportata, oppure i compilatori / runtime forniscono queste cose?

Né il PHP Python sembrano supportare solo l'analisi dei file e la generazione di qualche tipo di output non elaborato.

Eclipse sembra tira il proprio parser , ma è questo l'unico modo per farlo? Usare il parser "nativo" sarebbe fantastico su così tanti livelli:)

    
posta Znarkus 03.08.2012 - 22:32
fonte

1 risposta

2

PHP ha token_get_all per analizzare un file e generare l'elenco di token che puoi usare per lavorare con il codice, come fare analisi statiche, controllare lo stile o implementare una funzione di completamento automatico.

Python ha Abstract Syntax Trees (AST) , che sembra ancora più utile, e ha anche alcuni funzioni pulite come la funzione compile che compila l'albero stesso.

In generale, è una pessima idea implementare il parser personalizzato (oltre all'apprendimento). È estremamente difficile e soggetto a errori e diventerà non valido non appena le specifiche della lingua cambiano. Tali cambiamenti sono inusuali con linguaggi ben progettati come C #, ma non sono così insoliti in linguaggi come PHP che hanno molti difetti e caratteristiche mancanti (esempio: la recente implementazione di namespace in PHP). Inoltre, reinventando il tuo parser, stai reinventando la ruota già inventata per un compilatore: invece di fare esclusivamente il tuo lavoro (la funzione di completamento automatico), passi del tempo a scrivere un sacco di codice relativo all'analisi, il codice che devi prova e mantieni più tardi.

Alcuni suggerimenti

Potresti essere interessato a un termine di "compilatore come servizio" . Ad esempio, Microsoft sta lavorando su un compilatore come servizio per C #, che ti consentirà di estrarre a livello di codice le informazioni dal compilatore; tale scenario potrebbe essere utile per una funzionalità di completamento automatico.

Puoi anche cercare pedine statiche per la lingua di tuo interesse. Molti sono open source , quindi esaminare come processano la sorgente del codice può darti alcuni suggerimenti sull'analisi.

Infine, alcuni compilatori sono di per sé open source . A seconda della licenza che utilizzano e di quella che utilizzerai per il tuo prodotto con completamento automatico, potresti non essere in grado di riutilizzare il codice, ma comunque può fornire alcuni suggerimenti.

    
risposta data 04.08.2012 - 09:30
fonte

Leggi altre domande sui tag