Crie uma sugestão automática do editor de código (como o IntelliSense)

6

Se alguém quiser escrever uma sugestão automática para um editor de código IDE (como IntelliSense ), geralmente é necessário escrever um analisador para qualquer idioma que deve ser suportado, ou compiladores / tempos de execução fornecem essas coisas?

Nem o PHP ou Python parecem suportar apenas a análise de arquivos e a geração de algum tipo de saída bruta.

Eclipse parece rolar seu próprio parser , mas esta é a única maneira de fazer isso? Usar o analisador "nativo" seria incrível em muitos níveis:)

    
por Znarkus 03.08.2012 / 22:32
fonte

1 resposta

2

O PHP tem token_get_all para analisar um arquivo e gerar a lista de tokens que você pode usar para trabalhar com código, como fazer análise estática, verificar o estilo ou implementar um recurso de preenchimento automático.

O Python tem Abstract Syntax Trees (AST) , que parece ainda mais útil, e também tem alguns recursos interessantes, como a função compile , que compila a própria árvore.

Em geral, é uma péssima ideia implementar seu próprio analisador (além do aprendizado). É extremamente difícil e propenso a erros e ficará inválido assim que a especificação da linguagem mudar. Essas mudanças são incomuns com linguagens bem desenhadas como o C #, mas não são tão incomuns em linguagens como o PHP, que possuem muitas falhas e recursos ausentes (exemplo: a recente implementação de namespaces no PHP). Além disso, ao reinventar seu próprio analisador, você está reinventando a roda já inventada para um compilador: em vez de fazer exclusivamente seu trabalho (o recurso de preenchimento automático), você gasta muito tempo escrevendo código relacionado à análise. teste e mantenha mais tarde.

Algumas dicas

Você pode estar interessado em um termo de "compilador como um serviço" . Por exemplo, a Microsoft está trabalhando em um compilador como um serviço para C #, que permitirá que você extraia programaticamente as informações do compilador; Esse cenário pode ser útil para um recurso de preenchimento automático.

Você também pode pesquisar verificadores estáticos para o idioma de seu interesse. Muitos são open source , portanto, analisar como eles processam a fonte de código pode dar algumas sugestões sobre a análise.

Finalmente, alguns compiladores são de origem aberta . Dependendo da licença usada e da que você usará para o produto habilitado para o preenchimento automático, talvez não seja possível reutilizar o código, mas ainda assim ele pode fornecer algumas dicas.

    
por 04.08.2012 / 09:30
fonte