Analisador lexico

775 palavras 4 páginas
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 para seu 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 2 operadores 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) para a = 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 das funçõ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 (normalmente tal 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 serão

Relacionados

  • Analisador Lexico
    509 palavras | 3 páginas
  • Analisador Léxico
    770 palavras | 4 páginas
  • Analisador lexico
    18157 palavras | 73 páginas
  • Analisador lexico
    2130 palavras | 9 páginas
  • Código em C de um analisador léxico
    1064 palavras | 5 páginas
  • Construção de um analisador léxico e sintático para a linguagem x++ fazendo uso das ferramenta jflex e cup
    1359 palavras | 6 páginas
  • Analisador L xico
    3900 palavras | 16 páginas
  • Aula 03 An Lise L Xica
    1002 palavras | 5 páginas
  • Análise Léxica de Computadores
    3332 palavras | 14 páginas
  • ANALISE LÉXICAS (LEX)
    2678 palavras | 11 páginas