Theoretical Aspects of Lexical Analysis/Exercise 6

From Wiki**3

< Theoretical Aspects of Lexical Analysis
Revision as of 10:36, 5 March 2016 by Root (talk | contribs) (→‎DFA)

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 = { aa, aaaa, a|b}, input string = aaabaaaaa

NFA

The following is the result of applying Thompson's algorithm.

NFA built by Thompson's algorithm
b)*abb(a

DFA

Determination table for the above NFA:

In α∈Σ move(In, α) ε-closure(move(In, α)) In+1 = ε-closure(move(In, α))
- - 0 0, 1, 4, 9, 10, 12 0
0 a 2, 5, 11 2, 5, 11, 14 1 (T3)
0 b 13 13, 14 2 (T3)
1 a 3, 6 3, 6 3 (T1)
1 b - - -
2 a - - -
2 b - - -
3 a 7 7 4
3 b - - -
4 a 8 8 5 (T2)
4 b - - -
5 a - - -
5 b - - -
Graphical representation of the DFA
b)*abb(a
DFA minimization tree
{{{2}}}

Input Analysis

In Input In+1 / Token
0 aaabaaaaa$ 1
1 aabaaaaa$ 3
3 abaaaaa$ 4
4 baaaaa$ error (backtracking)
3 abaaaaa$ T1 (aa)
0 abaaaaa$ 1
1 baaaaa$ T3 (a)
0 baaaaa$ 2
2 aaaaa$ T3 (b)
0 aaaaa$ 1
1 aaaa$ 3
3 aaa$ 4
4 aa$ 5
5 a$ T2 (aaaa)
0 a$ 1
1 $ T3 (a)

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