Professional Documents
Culture Documents
4Recognition-Token-Reg Exp To DFA
4Recognition-Token-Reg Exp To DFA
•
Syntax tree of (a|b) * a #
• #
4
* a
3 • each symbol is numbered (positions)
| • each symbol is at a leaf
a b
2
1 • inner nodes are operators
For example, ( a | b) * a #
1 2 3 4
followpos(3) = {4}
followpos(4) = {}
CS1352 Principles of Compiler Design 4
How to evaluate firstpos, lastpos, nullable
n nullable(n) firstpos(n) lastpos(n)
leaf labeled ε true Φ Φ
• If firstpos and lastpos have been computed for each node, followpos
of each position can be computed by making one depth-first traversal
of the syntax tree.
• Dtran[T,a}=U
A=firstpos(root)={1,2,3}
⇓ mark A
A on input symbol a: followpos(1) ∪ followpos(3)={1,2,3,4}=B
move(A,a)=B
A on input symbol b: followpos(2)={1,2,3}=A
move(A,b)=A
⇓ mark B
B on input symbol a: followpos(1) ∪ followpos(3)={1,2,3,4}=B
move(B,a)=B
A on input symbol b: followpos(2)={1,2,3}=A
move(B,b)=A b a
a
A B
start state: S1
accepting states: {S2} b