Analisador lexico

Disponível somente no TrabalhosFeitos
  • Páginas : 4 (775 palavras )
  • Download(s) : 0
  • Publicado : 15 de novembro de 2011
Ler documento completo
Amostra do texto
Operação unária

Uma operação unária é uma função com somente uma variável de entrada.
Abaixo segue alguns exemplos de operações unárias.
Endereçamento: &x;
Incremento e decremento: ++i ou i++;−−i ou i−−;
Negação lógica: !x;
Complemento: ~x.

Funções de Precedência

Compiladores reais não precisam armazenar a tabela de precedência. Podemos estabelecer funções computacionais para isso.São estabelecidas 2 funções, F e G, chamadas 'de precedência', que irão mapear os símbolos terminais existentes para números inteiros.
Com o uso das funções de precedência, gasta-se menos espaço paraseu armazenamento do que se gastaria para armazenar toda a tabela.
Entretanto, algumas tabelas podem não ser representadas por funções de precedência.
Para se estabelecer qual a precedência entre 2operadores a e b, compara-se o valor de f(a) com o valor de g(b).
Para isso, devemos observar que, para quaisquer símbolos a e b existentes, deveremos ter:
f(a) < g(b) para a < b
f(a) = g(b) paraa = b
f(a) > g(b) para a > b
Na prática, a função F será calculada para os símbolos que estiverem na pilha e a função G para os tokens que estão sendo lidos.
Problema: Como sempre a comparação dasfunções retorna um valor, as entradas inválidas, sem representação na tabela de precedência, não serão identificadas, e portanto em princípio tais erros não serão detectados. A detecção do erro seráfeita quando, ao se fazer uma redução, não for possível identificar um handle na pilha.
Exemplo de tabela de funções de precedência:



Observa-se, pela tabela de funções acima, que * > +,pois F(*) = 4 e g(+) = 1 e 4 > 1.
Entretanto, podemos concluir, dado que f(id) = 6 e g(id) = 5 , que id > id, o que não é verdade, porque não existe precedência entre dois identificadores (normalmentetal entrada fica vazia na tabela de precedência).
Para encontrar as funções de precedência, usamos o seguinte algoritmo, cuja entrada será uma matriz de precedência de operadores e cuja saída...
tracking img