Linguagens formais e compiladores

Keywords: Linguagens formais e compiladores, Assembly, Autômatos, Compilador, Compiladores, Complexidade computacional, Hierarquia de Chomsky, Interpretadores

Entende-se por Teoria das Linguagens Formais e dos autômatos o estudo de modelos matemáticos que possibilitam a especificação e o reconhecimento de linguagens (no sentido amplo da palavra), suas classificações, estruturas, propriedades, características e inter-relacionamentos.

A importância desta Teoria na Ciência da Computação é dupla: ela tanto apóia outros aspectos teóricos da Ciência da Computação (decidibilidade, computabilidade, complexidade computacional, por exemplo), como fundamenta diversas aplicações computacionais tais como processamento de linguagens, reconhecimento de padrões, modelagem de sistemas.

Para definir o que é a Teoria das Linguagens Formais é necessário definir o que é Linguagem e o que é Linguagem formal. Inicialmente, de maneira bastante informal, podemos definir uma linguagem como sendo uma forma de comunicação. Elaborando um pouco mais esta definição, podemos definir uma linguagem como sendo "um conjunto de elementos (símbolos) e um conjunto de métodos (regras) para combinar estes elementos, usado e entendido por uma determinada comunidade". São exemplos as "linguagens naturais" (ou idiomas), "linguagens de programação" e os "protocolos de comunicação". Assim, podemos dizer que "Linguagens formais" são mecanismos formais para representação/especificação de linguagens, baseados na chamada "Teoria da Computação". As representações podem ser feitas por reconhecedores e geradores. Os reconhecedores são dispositivos formais que servem para verificar se uma sentença pertence ou não à determinada linguagem. São os autômatos: autômatos finitos, autômatos de pilha e Máquina de Turing. Os sistemas geradores são dispositivos formais que permitem a geração sistemática de todas as sentenças de uma linguagem. Os principais sistemas geradores disponíveis são as gramáticas, onde se destacam as gramáticas de Chomsky. Então, linguagens formais podem ser representadas de maneira finita e precisa através de sistemas com sustentação matemática.

Um compilador é um programa que traduz um texto escrito em uma "linguagem fonte" em um texto equivalente escrito em uma "linguagem alvo ou destino". Em geral, quando se fala em compilador o texto fonte é um programa de computador (mas não necessariamente). Tradicionalmente, um compilador traduz de uma linguagem de alto nível para uma linguagem de máquina (ou Assembly). Também esta idéia é muito estrita, pois na classe de compiladores podem ser encontrados aqueles que traduzem código de alto nível para outra linguagem também de alto nível. Outras vezes, o compilador não gera código de máquina como resultado, mas um código considerado de nível intermediário (como é o caso do compilador Java que gera código em Java Byte Code).

==

  1. REDIRECT Predefinição:Ver também==

Links externos

Keywords: Linguagens formais e compiladores, Assembly, Autômatos, Compilador, Compiladores, Complexidade computacional, Hierarquia de Chomsky, Interpretadores