The code for the implementation is shown below.
// Mark Motl
// CS 4301
// Lab PDT Example
#include <pdt.h>
using namespace std;
PDT::PDT()
{
name = "Your Name";
labNumber = 8;
description = "{x,c^i | x is in {a,b}* and i = # of a's in x = # of b's in x}";
}
void PDT::initializeMachine()
{
/*
*-----------------------------------------------------------output symbol
*---------------------------------------------------------next state |
*--------------------------------------------------------push pop | |
*----------------------------------------------input symbol | | |
*-----------------------------------------stack symbol | | | |
*------------------------current state | | | | | */
machine.insert(pair<uint, TableEntry>(1, TableEntry('*', 'a', "+a", 2, 'c')));
machine.insert(pair<uint, TableEntry>(1, TableEntry('*', 'b', "+b", 3, '*')));
machine.insert(pair<uint, TableEntry>(1, TableEntry('@', '%', " *", 0, '*')));
machine.insert(pair<uint, TableEntry>(2, TableEntry('a', 'a', "+a", 2, 'c')));
machine.insert(pair<uint, TableEntry>(2, TableEntry('a', 'b', "-a", 2, '*')));
machine.insert(pair<uint, TableEntry>(2, TableEntry('@', '*', " *", 1, '*')));
machine.insert(pair<uint, TableEntry>(3, TableEntry('b', 'a', "-b", 3, 'c')));
machine.insert(pair<uint, TableEntry>(3, TableEntry('b', 'b', "+b", 3, '*')));
machine.insert(pair<uint, TableEntry>(3, TableEntry('@', '*', " *", 1, '*')));
}