Sie sind auf Seite 1von 13

1-)

X a | BA | c |
A aX | bX |cB
B aB | bX
cadeia: baccbcaa

Pilha

Cadeia

Regra

baccbcaa$

empilha

$b

accbcaa$

empilha

$ba

ccbcaa$

empilha

$bac

cbcaa$

reduz

$baX

cbcaa$

reduz

$bA

cbcaa$

empilha

$bAc

bcaa$

reduz

$bAX

bcaa$

empilha

$bAXb

caa$

empilha

$bAXbc

aa$

reduz

$bAXbX

aa$

reduz
Erro de ambiguidade

Falha devido a no se poder empilhar ou redizir nenhuma produo.


2.1)
S SS+ | SS* | a
cadeia: aaa*+a
Pilha

Cadeia

Regra

aaa*+a $

empilha

$a

aa*+a$

reduz

$S

aa*+a$

empilha

$Sa

a*+a$

reduz

$SS

a*+a$

empilha

$SSa

*+a$

reduz

$SSS

*+a$

empilha

$SSS*

+a$

reduz

$SS

+a$

empilha

$SS+

a$

reduz

$S

a$

empilha

$Sa

reduz

$SS

rejeita

2.2
S 0S1 | 01
cadeia: 0001110
Pilha

Cadeia

Regra

0001110$

empilha

$0

001110$

empilha

$00

01110$

empilha

$000

1110$

empilha

$0001

110$

reduz

$00S

110$

empilha

$00S1

10$

reduz

$0S

10$

empilha

$0S1

0$

reduz

$S

0$

empilha

$S0

rejeita

3)
a)
primeiros

ultimos

+,*,^,(,x

+,*,^,),x

*,^,(,x

*,^,),x

^,(,x

^,),x

(,x

),x

id

>

<

<

<

>

<

>

>

>

<

<

>

<

>

>

>

>

<

>

<

>

<

<

<

<

>

>

>

>

>

id

>

>

>

>

>

<

<

<

<

'='

<

<

G = ({S, T, P, F}, {+, *, ^, (, ), x}, P, S)


P = { <S> <S> + <T> | <T>
<T> <T> * <P> | <P>
<P> <P> ^ <F> | <F>
<F> ( <S> ) | x }
Entrada: x * ( x + ( x ^ x ) * x )
Pilha

Cadeia

Regra

x*(x+(x^x)
*x)$

$<

x*(x+(x^x)
*x)$

$<id

*(x+(x^x)*
x)$

$<id>

*( x + ( x ^ x ) * x
)$

$<F>*

(x+(x^x)*x)
$

$<F>*

(x + ( x ^ x ) * x )
$

$<F>*(

x+(x^x)*x)
$

$<F>*(<

x+(x^x)*x)
$

$<F>*(<id

+(x^x)*x)$

$<F>*(<id>

+(x^x)*x)$

reduz

$<F>*(<F>

+(x^x)*x)$

empilha

$<F>*(<F>+

(x^x)*x)$

$<F>*(<F>+

(x^x)*x)$

$<F>*(<F>+<(

x^x)*x)$

$<F>*(<F>+<(<

x^x)*x)$

$<F>*(<F>+(<id

^x)*x)$

$<F>*(<F>+(<id>

^x)*x)$

empilha

reduz

empilha

empilha

empilha
empilha
reduz

$<F>*(<F>+(<F>

^x)*x)$

empilha

$<F>*(<F>+(<F>^

x)*x)$

$<F>*(<F>+(<F>^<

x)*x)$

$<F>*(<F>+(<F>^<id

)*x)$

$<F>*(<F>+(<F>^<id>

)*x)$

reduz

$<F>*(<F>+(<F>^<F>

)*x)$

reduz

$<F>*(<F>+(<P>

)*x)$

empilha

$<F>*(<F>+(<P>)

*x)$

reduz

$<F>*(<F>+<F>

*x)$

reduz

$<F>*(<S>

*x)$

empiha

$<F>*(<S>*

x)$

$<F>*(<S>*<

x)$

$<F>*(<S>*<id

)$

$<F>*(<S>*<id>

)$

$<F>*(<T>

)$

$<F>*(<T>=

)$

$<F>*(<T>=

)$

$<F>*(<T>=)

$<F>*<F>

reduz

$<F>

reduz

$<P>

reduz

$<T>

reduz

$<S>

aceita

empilha

empilha
reduz

empilha

b) x + ( x ^ + x ) ) ( x * x x
Pilha
$<

Cadeia

Regra

x + ( x ^ + x ) ) ( x * x x $ empilha

$<x>

+(x^+x))(x*xx$

reduz

$<

+(x^+x))(x*xx$

empilha

$<+<

(x^+x))(x*xx$

empilha

$<+<(<

x^+x))(x*xx$

empilha

$<+<(< x >

^+x))(x*xx$

reduz

$<+<(<

^+x))(x*xx$

empilha

$<+<(<^>

+x))(x*xx$

reduz

$<+<(<

+x))(x*xx$

empilha

$<+<(<+<

x))(x*xx$

empilha

$<+<(<+<x>

))(x*xx$

reduz

$<+<(<+>

))(x*xx$

reduz

$<+<(

))(x*xx$

empilha

$<+<()>

)(x*xx$

reduz

$<+>

)(x*xx$

reduz

)(x*xx$

Erro x3

4)
Pilha

Cadeia

Regra

$<

(id&(idvid)vid)$

empilha

$<(<

id&(idvid)vid)$

empilha

$<(<id>

&(idvid)vid)$

reduz

$<(<&<

(idvid)vid$

empilha

$<(<&<(<

idvid)vid$

empilha

$<(<&<(<id>

vid)vid$

reduz

$<(<&<(<

vid)vid$

empilha

$<(<&<(<v<

id)vid$

empilha

$<(<&<(<v<id>

)vid$

reduz

$<(<&<(<v>

)vid$

reduz

$<(<&<(

)vid$

empilha

$<(<&<()>

vid$

reduz

$<(<&>

vid$

reduz

$<(<

vid$

empilha

$<(<v<

id$

empilha

$<(<v<id>

reduz

$<(<v>

reduz

$<(

Erro 1

5)
entrada : (id & (v id))

Pilha

Cadeia

Regra

$<

(id & (v id)) $

empilha

$<(<

id & (v id)) $

empilha

$<(<id>

&(v id))$

reduz

$<(<

&(v id))$

empilha

$<(<&<

(vid))$

empilha

$<(<&<(<

vid))$

empilha

$<(<&<(<v<

id))$

empilha

$<(<&<(<v<id>

))$

reduz

$<(<&<(<v>

))$

reduz

$<(<&<(

))$

Erro 4

6)
B' B(0)
BP&B (1)
BP (2)
Px (3)
Py (4)
I0 = { B'->.B, B.P&B, B .P, P .x, P .y }
T(I0, B) = { B' B. } = I1
T(I0, P) = { B P.&B, B P. } = I2
T(I0, x) = { P x.} = I3
T(I0,y) = { P y.} = I4
T(I2,&) = { B P&.B, B .P&B, B .P, P .x, P .y} = I5
T(I5,B) = { B P&B.} = I6
T(I5,P) = { B P.&B, B P.} = I2
T(i5,x) = { P x.} = I3
T(i5,y) = { P y.} = I4
Follow(B) = {$}
Follow(P) = {&,$}

Estados

Aes
&

Transies

s3

s4

aceita

s5

r2

r3

r3

r4

r4

s3

s4

r1

b)
I0
x
I1
I2

&
$
I4

I5
$, &

I3

I6

c)
a) x&y&x

Pilha
$0

Cadeia
x&y&x $

Regra
Empilha x

$0x3

&y&x $

Reduz r3

$0P2

&y&x $

empilha

$0P2&5

y&x $

empilha

$0P2&5y4

&x $

&x $

x$

Reduz r4

Reduz r2

Reduz r1

Reduz r1

aceita

b) x&y&

Pilha

Cadeia

Regra

$0

x&y& $

Empilha x

$0x3

&y& $

Reduz r3

$0P2

&y& $

Empilha

$0P2&5

y& $

empilha

$0P2&5y4

&$

Reduz r4

$0P2&5P2

&$

empilha

$0P2&5P2&5

empilha

$0P2&5P2&5

rejeita

9-) A funo da anlise semntica a verificao do uso adequado dos


elementos. Bsicamente ela faz realiza anlise contextual, checagem de tipos e
unicidade . Na anlise contextual ele verifica as declaraes prvias de
variveis, procedimentos, etc. Na checagem de tipos, ele verifica se os tipos
atribuidos so compatveis com a varivel. Na unicidade, ele checa se o
identificador nico no escopo.
10-) A gramtica de atributos uma forma de descrever(ou de auxiliar) a
semntica, que ocorre junto da anlise sinttica e que agrega os atributos aos
smbolos no terminais da anlise sinttica.
11-)

Regras Gramaticais
L.valor

E.valor

E.valor

E1.valor + T.valor

E.valor

T.valor

T.valor

T1.valor * F.valor

T.valor

F.valor

F.valor

E.valor

F.valor

Digito.valorLexico

12)
a) (4 + 7 + 1) * 2

13)
a) x := (y + z) * (k 10)
t1 := k 10;
t2 := y + z
t3 := t1*t2
x := t3
b) x := k - y / 3
t1 := y/3
t2 := k -t1
x := t2
c)x := 2 * 5 - k / 3
t1 := 2*5
t2 := k/3
t3 := t1 t2
d) x := 4 * a * b + h / 2
t1 := 4*a
t2 := t1*b
t3 := h/2
t4 := t2 + t3
x := t4

14)
a) x := (y + z) * (k 10)

int t1

DS.W

Int t2

DS.W

Int t3

DS.W

Int x

DS.W

Int y

DS.W

Int z

DS.W

Int k

DS.W

MOVE.W

k,d1

SUB.W

#10, d1

MOVE.W

d1, t1

MOVE.W

Y,d1

ADD.W

Z,d1

MOVE.W

D1, t2

MOVE.W

T1, d1

MULS.W

T2,d1

MOVE.W

D1,t3

MOVE.W

T3, d1

MOVW.W

D1, x

15) Operaes que se repetem sem que seus argumentos sejam alterados, podem
ser realizadas uma nica vez .
No otimizado
otimizado
T1 := a + b

T1 := a + b

t2 := t1*c

T2 := t1*c

t3 := a + b

T3 := t1*d

T4 := t3 + d

As oportunidades so identificadas quando ocorre repetio de cdigo

asm
int a,b,valor;
a = 10;
b = 20;
valor = a * ( b + 20)
3 end
a = 10;
b = 20;
t1 = b + 20;
t1 = a * t1;
valor = t1;

VTMP
a
b
valor

DS.W
DS.W
DS.W
DS.W

1
1
1
1

MOVE.W
MOVE.W

#10, d1
d1, a

MOVE.W
MOVE.W

#20, d1
d1, b

MOVE.W
MOVE.W

#20, d1
d1, a

Das könnte Ihnen auch gefallen