Assignment Three
1. Question One
1.1. a
1.2. b
1.3. c
1.4. d
1.5. e
1.6. f
2. Question Two
| State | a | b | e |
| 0 | φ | φ | {1, 3} |
| 1 | {2, 4} | {4} | φ |
| 2 | {2} | φ | φ |
| 3 | φ | {4} | φ |
| 4 | φ | {4} | φ |
3. Question Three
| State | a | b |
| 0 | 1 | 0 |
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 1 | 0 |
4. Question Four
4.1. a
4.2. b
| DFA State | NFA States | a | b | c |
| d0 | {s0, s1, s2, s5, s9} | {s3, s6} (d1) | se | se |
| d1 | {s3, s6} | se | {s4, s8, s9, s1, s2, s5} (d2) | {s7, s8, s9, s1, s2, s5} (d3) |
| d2 | {s4, s8, s9, s1, s2, s5} | {s3, s6} (d1) | se | se |
| d3 | {s7, s8, s9, s1, s2, s5} | {s3, s6} (d1) | se | se |
4.3. c
| partition | a | b | c |
| {d1}, {d0, d2, d3} | {d0, d2, d3} ⇒ {d1, d0, d0} | {d0, d2, d3} ⇒ {-, -, -} | {d0, d2, d3} ⇒ {-, -, -} |
| {d1}, {d0}, {d2, d3} | {d2, d3} ⇒ {d0, d0} | {d2, d3} ⇒ {-, -} | {d2, d3} ⇒ {-, -} |
5. Question Five
5.1. regex 1
5.1.1. NFA
5.1.2. DFA
| DFA State | NFA States | 1 | 0 |
| d0 | {s0, s1, s2, s4, s7} | {s1, s2, s3, s4, s6, s7} (d1) | {s1, s2, s4, s5, s6, s7} (d2) |
| d1 | {s1, s2, s3, s4, s6, s7} | d1 | d2 |
| d2 | {s1, s2, s4, s5, s6, s7} | d1 | d2 |
5.1.3. Minimization
| partition | 1 | 0 |
| {d0, d1, d2} | {d0, d1, d2} ⇒ {d1, d1, d1} | {d0, d1, d2} ⇒ {d2, d2, d2} |
5.2. regex 2
5.2.1. NFA
5.2.2. DFA
| DFA State | NFA States | 1 | 0 |
| d0 | {s0, s1, s2, s3, s5, s11, s6, s12 } | {s1, s2, s3, s5, s6, s7, s8, s10, s11, s12} (d1) | {s1, s2, s3, s4, s5, s11, s6, s12} (d2) |
| d1 | {s1, s2, s3, s5, s6, s7, s8, s10, s11, s12} | d1 | {s1, s2, s3, s4, s5, s9, s11, s6, s12} (d3) |
| d2 | {s1, s2, s3, s4, s5, s11, s6} | d1 | d2 |
| d3 | {s1, s2, s3, s4, s5, s9, s11, s6, s12} | d1 | d2 |
5.2.3. Minimization
| partition | 1 | 0 |
| {d0, d1, d2, d3} | {d0, d1, d2, d3} ⇒ {d1, d1, d1, d1} | {d0, d1, d2, d3} ⇒ {d2, d3, d2, d2} |
6. Question Six
6.1. a
6.1.1. DFA
6.1.2. catMap
{
'-': 'sign',
'+': 'sign',
[0-9]: 'digit',
'e': 'scntfc'
}
6.1.3. transMap
{
's0': {
'sign': 's1',
'digit': 's2',
},
's1': {
'digit': 's2',
},
's2': {
'digit': 's2',
'scntfc': 's3',
},
's3': {
'sign': 's4',
'digit': 's5',
},
's4': {
'digit': 's6',
},
's5': {
'digit': 's6',
},
's6': {
'digit': 's6',
},
}
6.1.4. tokenTypes
{
's2': 'integer',
's6': 'integer,
}
6.2. b
6.2.1. DFA
6.2.2. catMap
{
[a-zA-Z]: 'letter',
'_': 'letter',
[0-9]: 'digit',
}
6.2.3. transMap
{
's1': {
'letter': 's2'
},
's2': {
'letter': 's2',
'digit': 's2',
},
}
6.3. c
6.3.1. DFA
6.3.2. catMap
{
[^(\n)*/]: 'nonc',
'\n': 'newline',
'eof': 'eof',
'/': 'slash',
'*': 'star'
}
6.3.3. transMap
{
's0': {
'slash': 's1',
},
's1': {
'slash': 's2',
'star': 's4',
},
's2': {
'nonc': 's2',
'newline': 's3',
'eof': 's3'
},
's4': {
'nonc': 's4',
'star': 's5',
},
's5': {
'nonc': 's4',
'newline': 's4',
'slash': 's6'
}
}
6.3.4. tokenType
{
's3': 'singleLineComment',
's6': 'multiLineComment',
}