Autómatos recursivos - Vieira, Filipe dos Santos (2009)
As sociedades humanas são complexas. Essa complexidade tende a aumentar sendo a tecnologia um dos motores desse percurso. Não só promotora de certo progresso, a tecnologia requer a construção e gestão de sistemas cada vez mais sofisticados. Numa perspectiva histórica, só recentemente é que se deram avanço significativos no enquadramento teórico da tecnologia, com a Cibernética (em inglê cybernetics, «Ciência que estuda os mecanismos de comunicação e de -controlo nas máquinas e nos seres vivos.» [PRI]) e a Teoria dos Autómatos (RMO1]. Na vertente aplicada destes progressos teóricos, encontramos uma variedade de sistemas implementados com vista a: • geração de código; • análise sintáctica e lexical; • construção e validação de sistemas digitais; • demonstração automática de teoremas; • pesquisa de soluções-caminhos nos espaços de estados de problemas. Desta variedade resulta que cada implementação particular tende a especializar-se numa determinada tarefa/objectivo. Resulta então que uma aplicação que use um biblioteca especializada (digamos, de análise sintáctica) fica limitada à especialidade dessa biblioteca. Também acontece que certas aplicações acabam por implementar as suas próprias ferramentas. Neste trabalho foi definido um certo tipo de autómato (AR, autómato recursivo) que acreditamos ter a mesma capacidade computacional dos autómatos de pilha (AP, em inglês push-down automata, PDA) mas mais simples e intuitivo. Além dessa definição, associam-se metadados/acções a símbolos terminais e palavras aceites. Com essa base teórica implementou-se uma biblioteca que procura facilitar o de senvolvimento de aplicações onde seja necessário ou útil a construção e execução de autómatos. A título demonstrativo foi construída uma aplicação, um gerador de analisadores sintácticos e lexicais, através de especificações FBNA (Forma Backus-Naur Aumentada, em inglês Augmented Backus-Naur Form) (NetOS]. / Abstract: Human societies are complex. This complexity tends to increase, technology being one of the drivers of this progress. Technology not only promotes a certain progress but requires the construction and management of highly sophisticated systems. ln a historical perspective, it was only recently that significant advances were made in the theoretical framework of technology, with Cybernetics (the science of the mechanisms of communication and control in machines and living things.) and Automata Theory [RMO1]. ln the applied aspects of these theoretical progress, we find a variety of systems implemented with the objective of: • Generation of a code; • Making syntactic and lexical analysis; • Construction and validation of digital systems; • Automatically proving theorems; • Searching solutions-paths in problem's state-space. From this variety follows that each particular implementation tends to specialize in a particular task/objective. lt follows then that an application that uses a specialized library (say, parsing) is limited to that library expertise. It also happens that some applications ultimately implement their own tools. ln this work is defined a certain type of automaton (RA, recursive automaton) with the computing power of pushdown automata but simpler and more intuitive. Besides this definition, we associate meta-data/actions to the terminal symbols and the accepted words. With this theoretical basis a library was implemented that seeks to facilitate the development of applications where it is necessary or useful the construction and implementation of automata. Based ·on the definition a library is implemented that allows applications to develop based on the construction and implementation of automata. For demonstration purposes, an example application was built, through ABNF (Augmented Backus-Naur Form) grammars specifications [Net08], a syntax/lexical parser generator.