Separate the toString and toDOT methods.

This commit is contained in:
Nathan Braswell
2013-05-20 22:59:57 -04:00
parent d2698cf203
commit 200cff6ab4
5 changed files with 27 additions and 6 deletions

View File

@@ -20,6 +20,7 @@ class ParseRule {
void appendToRight(Symbol* appendee); void appendToRight(Symbol* appendee);
std::string toString(); std::string toString();
std::string toDOT();
private: private:
int pointerIndex; int pointerIndex;

View File

@@ -21,6 +21,7 @@ class Parser {
void loadGrammer(std::string grammerInputString); void loadGrammer(std::string grammerInputString);
std::string grammerToString(); std::string grammerToString();
std::string grammerToDOT();
private: private:
StringReader reader; StringReader reader;
std::map<std::string, Symbol*> symbols; std::map<std::string, Symbol*> symbols;

View File

@@ -41,15 +41,16 @@ int main(int argc, char* argv[]) {
Parser parser; Parser parser;
parser.loadGrammer(inputFileString); parser.loadGrammer(inputFileString);
std::cout << inputFileString << std::endl;
std::cout << parser.grammerToString();
outFile << "digraph Kraken { \n" + parser.grammerToString() + "\n}" << std::endl; std::cout << inputFileString << std::endl;
std::cout << parser.grammerToString() << std::endl;
std::cout << parser.grammerToDOT() << std::endl;
outFile << parser.grammerToDOT() << std::endl;
inFile.close(); inFile.close();
outFile.close(); outFile.close();
return(0); return(0);
} }

View File

@@ -22,6 +22,14 @@ std::string ParseRule::toString() {
for (int i = 0; i < rightSide.size(); i++) { for (int i = 0; i < rightSide.size(); i++) {
concat += rightSide[i]->toString() + " "; concat += rightSide[i]->toString() + " ";
} }
return(concat + ";"); return(concat);
}
std::string ParseRule::toDOT() {
std::string concat = "";
for (int i = 0; i < rightSide.size(); i++) {
concat += leftHandle->toString() + " -> " + rightSide[i]->toString() + ";\n";
}
return(concat);
} }

View File

@@ -57,8 +57,18 @@ std::string Parser::grammerToString() {
std::cout << "About to toString\n"; std::cout << "About to toString\n";
std::string concat = ""; std::string concat = "";
for (int i = 0; i < loadedGrammer.size(); i++) { for (int i = 0; i < loadedGrammer.size(); i++) {
concat += loadedGrammer[i]->toString() + "\n";//->toString();// + std::endl; concat += loadedGrammer[i]->toString() + "\n";
} }
return(concat); return(concat);
} }
std::string Parser::grammerToDOT() {
//Iterate through the vector, adding DOT representation of each grammer rule
std::cout << "About to DOT export\n";
std::string concat = "";
for (int i = 0; i < loadedGrammer.size(); i++) {
concat += loadedGrammer[i]->toDOT();
}
return("digraph Kraken_Grammer { \n" + concat + "}");
}