Publicação

Scope rules in Ztrategic

Ver documento

Detalhes bibliográficos
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
Descrição
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.