Você está na página 1de 3

Anlise de Precedncia de operadores - Baseiam-se em relaes de precedncia entre os tokens - So 3 relaes de precedncia entre os terminais: <, > e = - Sendo

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 > > > < > < ^ > < > < > < ( < < < < ) > > > = > $ > > > >

Pilha $ $ id $E $Ev $ E v id $EvE $EvE^ $ E v E ^ id

Relao < > < < > < < >

Entrada Id v id ^ id $ v id ^ id $ v id ^ id $ id ^ id $ ^ id $ ^ id $ id $ $

Ao Empilhar Reduzir Empilhar Empilhar Reduzir Empilhar Empilhar Reduzir

$EvE^E $EvE $E

> >

$ $ $

Reduzir Reduzir

Pilha $ $ id $E $E^ $ E ^ id $E^E $E $Ev $ E v id $EvE $E

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

id id + * ** ( ) $ < < < < <

+ > > > > < > <

* > < > > < > <

** > < < < < > <

( < < < < <

) > > > > = >

$ > > > > > Aceita

Você também pode gostar