Escolar Documentos
Profissional Documentos
Cultura Documentos
Compiladores 10-06
Compiladores 10-06
a e b smbolos terminais a < b, a possui menor precedncia que b a = b, a e b possuem a mesma precedncia a > b, a tem precedncia sobre b - Para essa anlise usa-se uma tabela que indica as relaes de precedncia entre os terminais. Os terminais nas linhas representam os terminais no topo da pilha e os terminais nas colunas representam os terminais, sob o cabeote de leitura. Seja a o terminal mais ao topo da pilha e b o terminal sob o cabeote de leitura ento: 1. se a < b ou a = b empilha 2. se a > b ento reduz E -> E v E E -> E ^ E E -> id | (E) id Id V ^ ( ) $ < < < < V > > > < > < ^ > < > < > < ( < < < < ) > > > = > $ > > > >
Entrada Id v id ^ id $ v id ^ id $ v id ^ id $ id ^ id $ ^ id $ ^ id $ id $ $
$EvE^E $EvE $E
> >
$ $ $
Reduzir Reduzir
Relao < > < < > > < < > >
Entrada Id ^ id v id $ ^ id v id $ ^ id v id $ id v id $ v id $ v id $ v id $ id $ $ $ $
Ao Empilhar Reduzir Empilhar Empilhar Reduzir Reduzir Empilhar Empilhar Reduzir Reduzir
Construo da tabela de Precedncia de operadores 1. Se o operador 01 tem maior precedncia que o operador 02, ento: 01 (na pilha) > 02 (na entrada) 02 (na pilha) < 01 (na entrada) 2. Se 01 e 02 tm igual precedncia e so associativos esquerda ento: 01 > 02 02 > 01 3. As relaes dos operadores com os demais tokens so pr-definidas, para todo o operador 0 temos: 0 < id 0<( 0>) 0>$ Id > 0 (<0 )>0 $<0 4. As relaes entre os tokens que no so operadores tambm so fixas: (>( )>) id > ) $<) $ < id (=) )>$ id > $ ( > id
Exerccio Montar a tabela de precedncia de operadores para a seguinte linguagem: E -> E + E | E * E | E ** E | (E) | id * * maior precedncia associativa direita * Precedncia intermediria associativa esquerda + menor precedncia e associativo esquerda