Theoretical Aspects of Lexical Analysis/Exercise 8: Difference between revisions

From Wiki**3

Root (talk | contribs)
Root (talk | contribs)
 
(One intermediate revision by the same user not shown)
Line 7: Line 7:
The following is the result of applying Thompson's algorithm. State '''4''' recognizes the first expression (token '''T1'''); state '''12''' recognizes token '''T2'''; and state '''20''' recognizes token '''T3'''.
The following is the result of applying Thompson's algorithm. State '''4''' recognizes the first expression (token '''T1'''); state '''12''' recognizes token '''T2'''; and state '''20''' recognizes token '''T3'''.


<kroki>
<kroki lang="graphviz">
digraph nfa {
digraph nfa {
     { node [shape=circle style=invis] s }
     { node [shape=circle style=invis] s }
Line 130: Line 130:
Graphically, the DFA is represented as follows:
Graphically, the DFA is represented as follows:


<dot-hack>
<kroki lang="graphviz">
digraph dfa {
digraph dfa {
     { node [shape=circle style=invis] s }
     { node [shape=circle style=invis] s }
Line 145: Line 145:
   fontsize=10
   fontsize=10
}
}
</dot-hack>
</kroki>


The minimization tree is as follows. Note that before considering transition behavior, states are split according to the token they recognize.
The minimization tree is as follows. Note that before considering transition behavior, states are split according to the token they recognize.


<dot-hack>
<kroki lang="graphviz">
digraph mintree {  
digraph mintree {  
   node [shape=none,fixedsize=true,width=0.3,fontsize=10]
   node [shape=none,fixedsize=true,width=0.3,fontsize=10]
Line 162: Line 162:
   fontsize=10
   fontsize=10
}
}
</dot-hack>
</kroki>


Given the minimization tree, the final minimal DFA is as follows. Note that states 2 and 4 cannot be the same since they recognize different tokens.
Given the minimization tree, the final minimal DFA is as follows. Note that states 2 and 4 cannot be the same since they recognize different tokens.


<dot-hack>
<kroki lang="graphviz">
digraph mindfa {
digraph mindfa {
     { node [shape=circle style=invis] s }
     { node [shape=circle style=invis] s }
Line 180: Line 180:
   fontsize=10
   fontsize=10
}
}
</dot-hack>
</kroki>


== Input Analysis ==
== Input Analysis ==

Latest revision as of 17:06, 6 August 2025

Compute the non-deterministic finite automaton (NFA) by using Thompson's algorithm. Compute the minimal deterministic finite automaton (DFA).
The alphabet is Σ = { a, b }. Indicate the number of processing steps for the given input string.

  • G = { a*, a*|b, a|b* }, input string = aababb

NFA

The following is the result of applying Thompson's algorithm. State 4 recognizes the first expression (token T1); state 12 recognizes token T2; and state 20 recognizes token T3.

DFA

Determination table for the above NFA:

In α∈Σ move(In, α) ε-closure(move(In, α)) In+1 = ε-closure(move(In, α))
- - 0 0, 1, 2, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 17, 19, 20 0 (T1)
0 a 3, 8, 15 2, 3, 4, 7, 8, 9, 12, 15, 20 1 (T1)
0 b 11, 18 11, 12, 17, 18, 19, 20 2 (T2)
1 a 3, 8 2, 3, 4, 7, 8, 9, 12 3 (T1)
1 b - - -
2 a - - -
2 b 18 17, 18, 19, 20 4 (T3)
3 a 3, 8 2, 3, 4, 7, 8, 9, 12 3 (T1)
3 b - - -
4 a - - -
4 b 18 17, 18, 19, 20 4 (T3)

Graphically, the DFA is represented as follows:

The minimization tree is as follows. Note that before considering transition behavior, states are split according to the token they recognize.

Given the minimization tree, the final minimal DFA is as follows. Note that states 2 and 4 cannot be the same since they recognize different tokens.

Input Analysis

In Input In+1 / Token
0 aababb$ 13
13 ababb$ 13
13 babb$ T1 (aa)
0 babb$ 2
2 abb$ T2 (b)
0 abb$ 13
13 bb$ T1 (a)
0 bb$ 2
2 b$ 4
4 $ T3 (bb)

The input string aababb is, after 10 steps, split into three tokens: T1 (corresponding to lexeme aa), T2 (b), T1 (a), and T3 (bb).