sábado, 4 de dezembro de 2010

Breve Diferenciação de SINTAXE X SEMÂNTICA

Descrevendo a Sintaxe e a Semântica Paulo de Almeida Ourives

1. Introdução
Na descrição de linguagens um dos maiores problemas é o fato de uma infinidade de pessoas ter que entendê-las. Com isso os implementadores devem poder definir como as instruções, as expressões e as unidades de programa são construídas e como isso vai influenciar durante a execução. Por esse lado, percebe-se que o nível de dificuldade do trabalho destas pessoas está diretamente relacionado com a clareza e a precisão da descrição da linguagem com que elas trabalham.

A sintaxe de uma linguagem de programação é a forma de suas expressões, de suas instruções e de suas unidades de programa; já sua semântica é o significado dos três. Apesar de serem freqüentemente estudadas separadamente, a semântica e a sintaxe estão estreitamente ligadas de forma a forma de uma deve ser o que a outra quer realizar.

2. O problema geral de descrever a sintaxe Linguagens são conjuntos de seqüência de caracteres que obedecem a algum alfabeto pré-definido, essas seqüências são chamadas de instruções ou sentenças onde são especificadas pelas regras de sintaxe, ou seja, quais as seqüências de caracteres do alfabeto da linguagem estão nelas. Na sintaxe das linguagens de programação, para uma maior simplificação do entendimento, não incluem-se descrições em um nível mais baixo. As unidades presentes nesse nível mais baixo são chamadas de lexemas. Nisso estão inclusos seus identificadores, seus literais, seus operadores e suas palavras especiais. Um token de uma linguagem é uma categoria de seus lexemas. 

2.1. Reconhecedores da Linguagem As duas maneiras possíveis de se definir formalmente uma linguagem são por reconhecimento ou por geração. O reconhecedor não precisa testar todas as seqüências possíveis de caracteres de um conjunto para determinar se cada uma delas está na linguagem. 

2.2. Geradores de Linguagem Trata-se de um dispositivo que pode ser usado na geração de sentenças. Ele funciona como um tradutor dentro do compilador. Alguns os preferem aos reconhecedores pelo fato do melhor entendimento, de fato os geradores podem ser mais fáceis de manipular. 

3. Métodos Formais para Descrever a Sintaxe 3.1. Forma de Backus-Naur e Gramática Livre de Contexto 3.1.1. Gramática de Livre Contexto Os tokens destas podem ser descritas por meio da gramática comum. Linguagens inteiras de programação, com pequenas exceções, podem ser descritas pela gramática de livre contexto. 3.1.2. Origens da Forma de Backus-Naur A forma de Backus-Naur ou somente BNF foi um dos primeiros métodos de análise da sintaxe das linguagens, tornou-se ainda muito popular fazendo um trabalho de descrição concisa das linguagens de programação. Uma singularidade presente na BNF é a sua semelhança com os dispositivos generativos de Chomsky para linguagens livre de contexto. 3.1.3. Fundamentos Existem linguagens que são usadas para descrever outras linguagens chamadas de metalinguagens. A BNF se encaixa nesse aspecto, ela usa abstrações para estruturas sintáticas. A definição é chamada de regra ou produção. As abstrações em uma descrição ou em uma gramática BNF freqüentemente são chamadas símbolos não-terminais e os lexemas e os tokens das regras são chamados de símbolos terminais. Uma descrição BNF ou gramática é um conjunto de regras. Múltiplas definições podem ser escritas como uma única regra com duas definições diferentes separadas pelo símbolo | (ou lógico). Em particular pode-se descrever listas de construções similares a ordem que diferentes construções devem aparecer, as estruturas aninhadas em qualquer profundidade, à precedência de operadores e a associatividade de operadores. 3.1.4. Descrevendo Listas Para a descrição de listas, diferentemente de como são definidas os tamanhos das listas variáveis em matemática, usando três ponteiros, a alternativa mais usada é a recursão. 3.1.5. Gramáticas, Derivações e Reconhecedores A partir de uma gramática de livre contexto, umreconhecedor gerado por ela pode ser algoritmicamente gerado. A derivação é caracterizada pela geração de sentenças que surgem a partir de uma seqüência de aplicações das regras gramaticais, sempre precedidas por um termo comum, um símbolo não-terminal chamado de símbolo de início. Cada string da derivação é chamada de forma sentencial. 



Postado por: Danielle Cruz

Nenhum comentário:

Postar um comentário