Professional Documents
Culture Documents
Syntax Part 2
Syntax Part 2
Bottom-Up Parsing
LR Parsing
Also called “Shift-Reduce Parsing”
LR Grammars
Can be parsed with an LR Parser
LR Languages
Can be described with LR Grammar
Can be parsed with an LR Parser
Regular Languages
!
LL Languages
!
LR Languages Proper Subset
!
Unambiguous Languages
!
All Context-Free Languages
!
All Languages
LR Parsing Techniques:
LR Parsing
Most General Approach
SLR
Simpler algorithm, but not as general
LALR
More complex, but saves space
T F
F id
id
( id + id ) * id
$
(
Initialize
© Harry H. Porter, 2005 7
(
$
(
Shift
© Harry H. Porter, 2005 8
Syntax Analysis - Part 2 1. E " E + T
2. E " T
An LR Parse 3. T " T * F
4. T " F
5. F " ( E )
6. F " id
Rules Used: Right-Sentential Forms:
(id + id) * id
(
$
( id
id
id (
$
( id +
Shift
© Harry H. Porter, 2005 10
Syntax Analysis - Part 2 1. E " E + T
2. E " T
An LR Parse 3. T " T * F
4. T " F
5. F " ( E )
6. F " id
Rules Used: Right-Sentential Forms:
(id + id) * id
F " id
(F + id) * id
F
F
id (
$
( id +
Reduce
© Harry H. Porter, 2005 11
F
T
id (
$
( id +
Reduce
© Harry H. Porter, 2005 12
Syntax Analysis - Part 2 1. E " E + T
2. E " T
An LR Parse 3. T " T * F
4. T " F
5. F " ( E )
6. F " id
Rules Used: Right-Sentential Forms:
(id + id) * id
F " id
(F + id) * id
T " F
(T + id) * id
E " T
(E + id) * id
F
E
id (
$
( id +
Reduce
© Harry H. Porter, 2005 13
E +
T
F +
E
id (
$
( id + id
Shift
© Harry H. Porter, 2005 14
Syntax Analysis - Part 2 1. E " E + T
2. E " T
An LR Parse 3. T " T * F
4. T " F
5. F " ( E )
6. F " id
Rules Used: Right-Sentential Forms:
(id + id) * id
F " id
(F + id) * id
T " F
(T + id) * id
E " T
(E + id) * id
E +
T
id
F id +
E
id (
$
( id + id )
Shift
© Harry H. Porter, 2005 15
E +
T F
F
F id +
E
id (
$
( id + id )
Reduce
© Harry H. Porter, 2005 16
Syntax Analysis - Part 2 1. E " E + T
2. E " T
An LR Parse 3. T " T * F
4. T " F
5. F " ( E )
6. F " id
Rules Used: Right-Sentential Forms:
(id + id) * id
F " id
(F + id) * id
T " F
(T + id) * id
E " T
(E + id) * id
F " id
(E + F) * id
T " F (
(E + T) * id
E + T
T F
T
F id +
E
id (
$
( id + id )
Reduce
© Harry H. Porter, 2005 17
T F
F id
E
id (
$
( id + id )
Reduce
© Harry H. Porter, 2005 18
Syntax Analysis - Part 2 1. E " E + T
2. E " T
An LR Parse 3. T " T * F
4. T " F
5. F " ( E )
6. F " id
Rules Used: Right-Sentential Forms:
(id + id) * id
F " id
(F + id) * id
T " F
(T + id) * id
E " T
(E + id) * id
F " id
(E + F) * id
T " F ( E )
(E + T) * id
E " E + T
(E) * id E + T
T F
F id )
E
id (
$
( id + id ) *
Shift
© Harry H. Porter, 2005 19
F id
id F
$
( id + id ) *
Reduce
© Harry H. Porter, 2005 20
Syntax Analysis - Part 2 1. E " E + T
2. E " T
An LR Parse 3. T " T * F
4. T " F
5. F " ( E )
6. F " id
Rules Used: Right-Sentential Forms:
(id + id) * id
F " id
(F + id) * id T
T " F
(T + id) * id
E " T F
(E + id) * id
F " id
(E + F) * id
T " F ( E )
(E + T) * id
E " E + T
(E) * id E + T
F " ( E )
F * id
T " F T F
T * id
F id
id T
$
( id + id ) *
Reduce
© Harry H. Porter, 2005 21
Pre-Computed Tables:
ACTION GOTO
Handles
Definition: “Handle”
In other words...
let
# = %$w
then
S &RM* %Aw &RM %$w
Handles: Example
Handles: Example
Shift-Reduce Parsing
Goal:
Find handles and perform reductions.
Possible Actions:
Shift
Push current input symbol onto stack
Advance input to next symbol
Reduce
A handle is on the top of the stack
Pop the handle )
Push the lefthand side of the rule E
Accept ( F
Report success and terminate $ $
Error
Reduce by F " ( E )
Report error and terminate
Shift-Reduce Actions
(Initial Setup)
STACK INPUT ACTION
$ ...input...$
Shift
Push current input symbol onto stack
Advance input to next symbol
STACK INPUT ACTION
$XYZ abc...$
$XYZa bc...$ Shift
Reduce
A handle is on the top of the stack )
Pop the handle E
Push the lefthand side of the rule ( F
STACK INPUT ACTION Z Z
$XYZ(E) ...$ Y Y
$XYZF ...$ Reduce by F " ( E ) X X
Accept $ $
Report success and terminate
STACK INPUT ACTION
$S ...$ Accept
Error
Report error and terminate
LR Parsing
One Parsing Algorithm
Several Ways to Build the Tables
LR(1) Parsing
The knowledge of what we’ve parsed so far is in the stack.
Some knowledge is buried in the stack.
We need a “summary” of what we’ve learned so far.
id S5
+ S3
E S8
( S7
$ S0
S5
id
S3
+
S8
E
S7
( Note: The $ will not be needed.
S0 State S0 will signal the stack bottom.
© Harry H. Porter, 2005 37
What next?
What next?
id
LR Grammars
“LR(1)”
What to do next?
•!Look at the stack
•!Look at the next input symbol Scan the input left-to-right
LR(1) Typical
LR(k) Look at the next k input symbols Find a rightmost derivation
Regular Languages
!
LL Languages
!
LR Languages
!
Unambiguous Languages
!
All Context-Free Languages
!
All Languages