Publicação
Scope rules in Ztrategic
| Resumo: | A atribuição de nomes é crucial nas linguagens de programação, identificando declarações de entidades como variáveis, funções, tipos e módulos. A resolução de nomes liga cada referência à declaração pretendida, o que é fundamental para operações como a verificação estática, a tradução, a semântica mecanizada e os serviços IDE. Este processo é complexo, atravessando a estrutura do programa tal como descrita por uma árvore de sintaxe abstrata AST. Por exemplo, um nome introduzido numa parte de uma AST pode ser referenciado muito longe, tornando a resolução difícil. Os espaços de nomes explícitos, como os do Java, aumentam a complexidade ao exigirem uma resolução em várias etapas: primeiro, a resolução do nome da classe ou do pacote e, posteriormente, o nome do membro dentro desse contexto. Apesar das variações entre as linguagens, conceitos semelhantes de resolução de nomes são muito comuns em linguagens com âmbito lexical. Esta consistência sublinha a importância da resolução de nomes, mas nenhuma técnica modular e reutilizável fornece uma solução universal. Cada linguagem requer algoritmos adaptados que, muitas vezes, necessitam de múltiplas passagens AST para garantir a ligação correcta do nome e a adesão à regra de Scope, reflectindo a natureza intrincada e abrangente da nomeação na conceção de linguagens de programação. Resolvemos este problema apresentando uma solução genérica de resolução de nomes que oferece uma interface simples e intuítiva que abstrai a maior parte das complexidas relativas às regras de Scope e permite a deteção e anotação de erros referentes às mesmas no código fonte. |
|---|---|
| Autores principais: | Nunes, André Bernardo Coelho |
| Assunto: | Programação estratégica Scope Análise de nomes Regras de Scope Ztrategic Strategic programming Name resolution Scope rules Engenharia e Tecnologia::Outras Engenharias e Tecnologias |
| Ano: | 2024 |
| País: | Portugal |
| Tipo de documento: | dissertação de mestrado |
| Tipo de acesso: | acesso aberto |
| Instituição associada: | Universidade do Minho |
| Idioma: | inglês |
| Origem: | RepositóriUM - Universidade do Minho |
| Resumo: | A atribuição de nomes é crucial nas linguagens de programação, identificando declarações de entidades como variáveis, funções, tipos e módulos. A resolução de nomes liga cada referência à declaração pretendida, o que é fundamental para operações como a verificação estática, a tradução, a semântica mecanizada e os serviços IDE. Este processo é complexo, atravessando a estrutura do programa tal como descrita por uma árvore de sintaxe abstrata AST. Por exemplo, um nome introduzido numa parte de uma AST pode ser referenciado muito longe, tornando a resolução difícil. Os espaços de nomes explícitos, como os do Java, aumentam a complexidade ao exigirem uma resolução em várias etapas: primeiro, a resolução do nome da classe ou do pacote e, posteriormente, o nome do membro dentro desse contexto. Apesar das variações entre as linguagens, conceitos semelhantes de resolução de nomes são muito comuns em linguagens com âmbito lexical. Esta consistência sublinha a importância da resolução de nomes, mas nenhuma técnica modular e reutilizável fornece uma solução universal. Cada linguagem requer algoritmos adaptados que, muitas vezes, necessitam de múltiplas passagens AST para garantir a ligação correcta do nome e a adesão à regra de Scope, reflectindo a natureza intrincada e abrangente da nomeação na conceção de linguagens de programação. Resolvemos este problema apresentando uma solução genérica de resolução de nomes que oferece uma interface simples e intuítiva que abstrai a maior parte das complexidas relativas às regras de Scope e permite a deteção e anotação de erros referentes às mesmas no código fonte. |
|---|