LR

Syntax Analysis(LR)

Ahmad Yoosofan

Compiler course

University of Kashan

https://yoosofan.github.io/course/compiler.html

Simple Add(I)

  1. E → E + a
  2. E → a

Simple Add(II)

  1. E → E + a
  2. E → a

Simple Add(III)

  1. E → E + a
  2. E → a

Simple Add(IV)

  1. E → E + a
  2. E → a

Simple Add(V)

  1. E → E + a
  2. E → a

Simple Add(VI)

  1. E → E + a
  2. E → a

Simple Add(VII)

  1. S → E
  2. E → E + a
  3. E → a

Simple Add(VII)

  1. S → E
  2. E → E + a
  3. E → a

Simple Calculator(I)

  1. E → E + T
  2. E → E - T
  3. E → T
  4. T → T * F
  5. T → T / F
  6. T → F
  7. F → (E)
  8. F → a

Simple Calculator(II)

  1. E → E + T
  2. E → E - T
  3. E → T
  4. T → T * F
  5. T → T / F
  6. T → F
  7. F → (E)
  8. F → a

Simple Calculator(XX)

  1. E → E + T
  2. E → E - T
  3. E → T
  4. T → T * F
  5. T → T / F
  6. T → F
  7. F → (E)
  8. F → a

LR Table

id

(

)

$

E

T

F

I0

s5

s4

acc

I1

s6

I2

s7

I3

I4

s5

s4

8

2

3

I5

I6

s5

s4

9

3

I7

10

I8

Ambiguous Grammar

IF x = 2 THEN
    x = 3
ELSE
    x = 4
  1. S → i S
  2. S → i S e S
  3. S → o
  • S` → S
  1. S → i S
  2. S → i S e S
  3. S → o

i

e

o

$

S

I0

s2

s3

1

I1

acc

I2

s2

s3

4

I3

r3

r3

r3

r3

I4

r1

s5/r1

r1

r1

I5

s2

s3

6

I6

r2

r2

r2

r2

  1. S → i S
  2. S → i S e S
  3. S → o
  1. S → i S M
  2. M → e S
  3. M → λ
  4. S → o

An Especial Grammar

  1. S → a L
  2. S → S b
  3. L → L a
  4. L → b

Augmented Grammer

  • S' → S
  • S → a L
  • S → S b
  • L → L a
  • L → b

An Especial Grammar(II)

  1. S → L = R
  2. S → R
  3. L → * R
  4. L → a
  5. R → L

Augmented Grammer

  • S' → S
  1. S → L = R
  2. S → R
  3. L → * R
  4. L → a
  5. R → L

t

a

=

$

S

L

R

I0

s5

s4

1

2

3

I1

acc

I2

s8/

I3

I4

I5

I6

I7

I8

Look ahead

LALR

t

a

=

$

S

L

R

I0

s5

s4

1

2

3

I1

acc

I2

s8/

I3

I4

I5

I6

I7

I8

END

1