Separate the toString and toDOT methods.
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
9
main.cpp
9
main.cpp
@@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 + "}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user