|
 |
CS 3723
Programming Languages |
DFA Runs
|
|
DFA Runs:
First for reference we give the code again for the module
dfa.py:
dfa.py:
code to simulate DFA |
# dfa.py: simulate a dfa
import auto
import sys
auto.read_fa("dfa4.auto")
auto.printfa()
sys.stdout.write("\n")
f = open("dfa4.input",'r')
instr = f.readline()
sys.stdout.write("Input: " + instr + "\n")
sys.stdout.write("Simulation Run ...\n")
s1 = auto.get_start_state()
for ch in instr:
if ch != '$':
s2 = auto.lookup(s1, ch)[0]
sys.stdout.write(str(s1) + " " +
ch + " " + str(s2))
if auto.is_terminal(s2):
sys.stdout.write(" term")
sys.stdout.write("\n")
s1 = s2
else:
break
|
Runs with
Four Example DFAs:
First DFA
(file: dfa1.auto ) |

DFA for
/(a|b)*(aa|bb)(a|b)*/
DFA: States 4, Symbols: ab
0s :(1, [('a', 1), ('b', 2)])
1 :(0, [('a', 3), ('b', 2)])
2 :(0, [('a', 1), ('b', 3)])
3 t:(2, [('a', 3), ('b', 3)])
|
Input: ababaabbabaaa$
Simulation Run ...
0 a 1
1 b 2
2 a 1
1 b 2
2 a 1
1 a 3 term
3 b 3 term
3 b 3 term
3 a 3 term
3 b 3 term
3 a 3 term
3 a 3 term
3 a 3 term |
Second DFA
(file: dfa2.auto ) |

DFA for (a|b)*abb
DFA: States 4, Symbols: ab
0s :(1, [('a', 1), ('b', 0)])
1 :(0, [('a', 1), ('b', 2)])
2 :(0, [('a', 1), ('b', 3)])
3 t:(2, [('a', 1), ('b', 0)])
| Input: abaababbaabbb$
Simulation Run ...
0 a 1
1 b 2
2 a 1
1 a 1
1 b 2
2 a 1
1 b 2
2 b 3 term
3 a 1
1 a 1
1 b 2
2 b 3 term
3 b 0
|
Third DFA
(file: dfa3.auto ) |

DFA for C-style Comments
DFA: States 5, Symbols: /*XYZ
0s :(1, [('/', 1), ('*', 0), ('X', 0)])
1 :(0, [('/', 1), ('*', 2), ('X', 0)])
2 :(0, [('/', 2), ('*', 3), ('X', 2)])
3 :(0, [('/', 4), ('*', 3), ('X', 2)])
4 t:(2, [('/', 1), ('*', 0), ('X', 0)])
Input: X/**/XX/*/*/XX/***//*X*X*/XX/X/*X*/XX$
Simulation Run ...
| 0 X 0
0 / 1
1 * 2
2 * 3
3 / 4 term
4 X 0
0 X 0
0 / 1
1 * 2
2 / 2
2 * 3
3 / 4 term
4 X 0
0 X 0
0 / 1
1 * 2
2 * 3
3 * 3
3 / 4 term
| 4 / 1
1 * 2
2 X 2
2 * 3
3 X 2
2 * 3
3 / 4 term
4 X 0
0 X 0
0 / 1
1 X 0
0 / 1
1 * 2
2 X 2
2 * 3
3 / 4 term
4 X 0
0 X 0
|
Fourth DFA
(file: dfa4.auto ) |

FSM for doubles, where "d" stands for any digit
|
DFA: States 10, Symbols: d.e+-X
0s :(1, [('d', 1), ('.', 2), ('X', 0)])
1 :(0, [('d', 1), ('.', 3), ('e', 6), ('X', 9)])
2 :(0, [('d', 3), ('X', 4)])
3 :(0, [('d', 3), ('e', 6), ('X', 9)])
4 t:(2, [])
5 t:(2, [('d', 1), ('.', 1), ('X', 0)])
6 :(0, [('d', 8), ('+', 7), ('-', 7), ('X', 5)])
7 :(0, [('d', 8), ('X', 5)])
8 :(0, [('d', 8), ('X', 9)])
9 t:(2, [('d', 1), ('.', 1), ('X', 0)])
Input: Xdd.dXdde+dX.ddX.dedXdeddXd.deX.dde+X$
Simulation Run ...
| 0 X 0
0 d 1
1 d 1
1 . 3
3 d 3
3 X 9 term
9 d 1
1 d 1
1 e 6
6 + 7
7 d 8
8 X 9 term
9 . 1
1 d 1
1 d 1
1 X 9 term
9 . 1
1 d 1
1 e 6
6 d 8
8 X 9 term
| 9 d 1
1 e 6
6 d 8
8 d 8
8 X 9 term
9 d 1
1 . 3
3 d 3
3 e 6
6 X 5 term
5 . 1
1 d 1
1 d 1
1 e 6
6 + 7
7 X 5 term
|
(Revision date: 2014-06-17.
Please use ISO 8601,
the International Standard.)
|