Question: Help complete code! this is the pda.h file #ifndef PDA _ H 2 #define PDA _ H 3 4 #include 5 #include 6 #include 7
Help complete code! this is the pda.h file #ifndef PDAH #define PDAH #include #include #include using namespace std; class TableEntry public: TableEntrychar stackSymbol, char inputSymbol, string pushPop, uint state setStackSymbolstackSymbol; setInputSymbolinputSymbol; setPushPoppushPop; setNextStatestate; void setStackSymbolchar ch stackSymbol ch; Figure usrlocalincludepdah Part of CS Algorithmic Languages and Compilers Page Lab Due Date: See Blackboard void setInputSymbolchar ch inputSymbol ch; void setPushPopstring s pushPop s; void setNextStateuint state nextState state; char getStackSymbol const return stackSymbol; char getInputSymbol const return inputSymbol; string getPushPop const return pushPop; uint getNextState const return nextState; private: char stackSymbol; char inputSymbol; string pushPop; uint nextState; ; class PDA public: default constructor initializes private data members name, labNumber, and description PDA; Member function InitializeMachine initializes the private data member machine, a multimap where the key is the current state and the value is a class object containing the stack symbol, input symbol, pushpop, and next state void initializeMachine; Figure usrlocalincludepdah Part of Page CS Algorithmic Languages and Compilers Lab Due Date: See Blackboard Member function OutputID writes name, class, lab number, and lab description to output stream out void outputIDostream& out const; Member function ImplementPDA returns true if dataLine is recognized by the PDA as valid and false otherwise bool implementPDAstring dataLine const; private: string name; int labNumber; string description; multimap machine; ; #endif and here is the main.C file #include #include using namespace std; int main PDA myPDA; string dataLine; myPDA.initializeMachine; myPDA.outputIDcout; while getlinecin dataLine cout "Input: dataLine ; dataLine ; if myPDAimplementPDAdataLine cout "Result: accepted endl endl; else cout "Result: NOT accepted endl endl; return ; Figure usrlocalsrclabmain.C Part of CS Algorithmic Languages and Compilers Page Lab Due Date: See Blackboard void PDA::outputIDostream& out const out name endl; out CS endl; out "Lab labNumber endl; out description endl endl; bool PDA::implementPDAstring dataLine const int currentState ; string::iterator dataItr dataLine.begin; multimap::constiterator pdaItr; stack pdaStack; bool done; pdaStack.push@; while currentState Use find to return an iterator to the first entry with a key of currentState pdaItr machine.findcurrentState; if pdaItr machine.end found a key of currentState done false; while done && pdaItr machine.upperboundcurrentState if pdaItrsecond.getInputSymbol && pdaItrsecond.getStackSymbolpdaStack.empty && pdaItrsecond.getStackSymbol pdaStack.top done true; else if pdaItrsecond.getInputSymboldataItr && pdaItrsecond.getStackSymbolpdaStack.empty && pdaItrsecond.getStackSymbol pdaStack.top done true; else pdaItr; Figure usrlocalsrclabmain.C Part of Page CS Algorithmic Languages and Compilers Lab Due Date: See Blackboard if pdaItr machine.upperboundcurrentState if pdaItrsecond.getStackSymbolpdaStack.empty && pdaItrsecond.getStackSymbol pdaStack.top currentState pdaItrsecond.getNextState; switch pdaItrsecond.getPushPop case : pdaStack.pushpdaItrsecond.getPushPop; break; case : if pdaStackempty currentState ; if pdaItrsecond.getPushPop pdaStack.top currentState ; pdaStack.pop; if dataItr && pdaItrsecond.getInputSymboldataItr; else currentState ; else currentState ; else currentState ; return currentState && dataItr && pdaStack.size && pdaStack.top@;
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
