int main() { std::string strAlphabet; std::string strRegex; std::string strPostfixRegex; std::vector<std::string> vecAlphabet; regexTree = NULL; // read the alphabet getline(inFile, strAlphabet); TokenizeAlphabetString(strAlphabet, vecAlphabet); // read the Regex getline(inFile, strRegex); TransformToPostfixForm(strRegex, strPostfixRegex); vecAlphabet.push_back("#"); CreateRegexTree(strPostfixRegex); nrGlobal = 0; setLeafNodesOrderNumber(regexTree); SDR(regexTree); PrintFollowPosMatrix(); CreateDFA(vecAlphabet); PrintDFA(); system("pause"); }
BOOL CDFA::ConstructDFA() { BOOL bRet = FALSE; CHECK_BOOL ( CreateSyntaxTree() ); CHECK_BOOL ( m_pSyntaxNode->CalculateAllFunction() ); m_pSyntaxNode->ShowAllFunction(m_pSyntaxNode); CHECK_BOOL ( CreateDFA(m_pSyntaxNode) ); CHECK_BOOL ( MinimizeDFA(m_lstSet.size(), m_lstNodeRelation, m_setAcceptingIdx, m_lstFinalSet) ); assert(m_lstFinalSet.size() <= m_lstSet.size()); bRet = TRUE; Exit0: return bRet; }