Graphical Interaction in Logic Programming
José Paulo Leal
Departamento de Ciência de Computadores & LIACC
Faculdade de Ciências, Universidade do Porto
Rua do Campo Alegre, 823 4150 Porto, Portugal
Novembro 1997
Resumo
Nesta tese é apresentado um novo esquema de interacção desenhado
especificamente para interacção com dados estruturados em Programação
em Lógica (PL). O esquema de interacção proposto deu origem a um motor
de interacção cujas funcionalidades foram testadas em
Magritte,
um ambiente de de desenvolvimento de programas lógicos.
A interacção em Magritte é baseada num modelo de edição de termos. Este
modelo permite uma definição do interface baseada no conceito de termo
e introduz uma nova abordagem na definição de interacção em PL.
Como consequência, em Magritte a interacção é vista com um caso
particular da edição de um conjunto de termos. Nesta abordagem a
definição da semântica do interface usa termos e a sintaxe do
interface associa regras de visualização aos functores.
Esta visão da interacção simplifica a definição da interacção em tarefas
complexas como a edição de estruturas e a interacção como a execução de
programas lógicos.
O Magritte usa no seu interface conceitos que provaram a sua utilidade
em outros contextos mas que nunca foram utilizados em ambientes de
PL. Das folhas de calculo Magritte toma por empréstimo a ideia de
integração de dados, programas e execuções num único espaço de
trabalho, e da edição estrutural toma por empréstimo a ideia de edição
assistida. As contribuições deste trabalho de investigação foram a
adaptação destas ideias à PL. Assim, na visão de Magritte das folhas
de calculo o modelo matricial foi substituído pelo modelo hierárquico,
e a edição estrutural não usa gramaticas de contexto livre mas é
baseada no conceito de tipos de termos.
O esquema de interacção propõem uma linguagem para a definição da
sintaxe gráfica dos termos. Esta linguagem associa a uma classe de
functores um conjunto de regras de calculo dos diversos atributos dos
termos. Quer a linguagem quer os algoritmos de avaliação são baseados
em conceitos de gramáticas de atributos, e foram adaptados aos
requisitos de um ambiente para PL.