-
Notifications
You must be signed in to change notification settings - Fork 0
/
pseudocode.txt
70 lines (60 loc) · 2.78 KB
/
pseudocode.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
class DFAnalyzer:
// Private members:
Define a 2D array 'transitions' to store the transition table (10 states x 26 lowercase letters)
Define an array 'acceptStates' to store accept states information (10 states)
Define a char to store the start state
Define a bool to indicate if the DFA is valid
// Helper function to validate instruction format
isValidInstruction(instruction):
If instruction length is less than 3, return false
If first and last characters are not digits, return false
For each character between the first and last characters:
If the character is not a lowercase letter, return false
Return true
// Public methods:
// Default constructor
DFAnalyzer():
Initialize DFA as invalid
Initialize start state as empty/undefined
Initialize acceptStates as false for all states
// Copy constructor
DFAnalyzer(other):
Copy other's transition table, accept states, start state, and isValidDFA flag
// Assignment operator
operator=(other):
Assign other's transition table, accept states, start state, and isValidDFA flag to the current object
// Destructor
~DFAnalyzer():
// No dynamically allocated resources to release
// Load DFA from a file
Load(fileName):
Open file with the given fileName
If file cannot be opened, mark DFA as invalid and return
For each line in the file:
Remove spaces from the line
If line is not a valid instruction, mark DFA as invalid and return
Extract initialState, symbols, and destinationState from the line
For each symbol in symbols:
Update the transition table
Close the file and mark DFA as valid
// Set start state
SetStartState(state):
If DFA is valid and state is a digit, set startState to state
// Modify accept state
ModifyAcceptState(state):
If DFA is valid and state is a digit, toggle acceptStates for the given state
// Check if an input string is accepted by the DFA
IsAccepted(input):
If DFA is not valid or start state is not defined, return false
Set currentState to startState
For each symbol in input:
If symbol is not a lowercase letter, return false
Update currentState based on the transition table
Return true if currentState is an accept state, else return false
// Convert the DFA's transition table to a string
ToString():
If DFA is not valid, return "Invalid DFA"
Initialize an empty stringstream
For each entry in the transition table:
Add a tuple (initialState, symbol, destinationState) to the stringstream
Return the stringstream's content as a string