Suporte à Edição para Linguagens de Software: Práticas de Implementação com Language Server Protocol
Ano de defesa: | 2022 |
---|---|
Autor(a) principal: | |
Orientador(a): | , |
Banca de defesa: | , , |
Tipo de documento: | Dissertação |
Tipo de acesso: | Acesso aberto |
Idioma: | por |
Instituição de defesa: |
Universidade Estadual do Oeste do Paraná
Cascavel |
Programa de Pós-Graduação: |
Mestrado em Ciência da Computação
|
Departamento: |
Centro de Ciências Exatas e Tecnológicas
|
País: |
Brasil
|
Palavras-chave em Português: | |
Palavras-chave em Inglês: | |
Área do conhecimento CNPq: | |
Link de acesso: | https://tede.unioeste.br/handle/tede/6835 |
Resumo: | Effectively using software languages, be it programming or domain-specific languages, requires effective editing support. Modern IDEs, modeling tools, and code editors typically provide sophisticated support to create, comprehend, or modify instances (programs or models) of particular languages. Unfortunately, building such editing support is challenging. While the engineering of languages is well understood and supported by modern model driven techniques, there is a lack of engineering principles and best practices for realizing their editing support. Especially domain-specific languages (often created by smaller organizations or individual developers, sometimes even for single projects) would benefit from better methods and tools to create proper editing support. We study aspects for implementing editing support in 30 language servers—implementations of the language server protocol (LSP), some of which support multiple languages. The LSP is a recent de facto standard to realize editing support for languages, separated from the editing tools (e.g., IDEs or modeling tools), enhancing the reusability and quality of the editing support. Witnessing the LSP’s popularity there are 125 language servers catalogated in a curated list. We identify concerns that developers need to take into account when developing editing support, and we synthesize implementation practices to address them, based on a systematic analysis of the servers’ source code |