Separate the toString and toDOT methods.
This commit is contained in:
@@ -20,6 +20,7 @@ class ParseRule {
|
||||
void appendToRight(Symbol* appendee);
|
||||
|
||||
std::string toString();
|
||||
std::string toDOT();
|
||||
|
||||
private:
|
||||
int pointerIndex;
|
||||
|
||||
@@ -21,6 +21,7 @@ class Parser {
|
||||
|
||||
void loadGrammer(std::string grammerInputString);
|
||||
std::string grammerToString();
|
||||
std::string grammerToDOT();
|
||||
private:
|
||||
StringReader reader;
|
||||
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.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();
|
||||
outFile.close();
|
||||
|
||||
return(0);
|
||||
|
||||
}
|
||||
|
||||
@@ -22,6 +22,14 @@ std::string ParseRule::toString() {
|
||||
for (int i = 0; i < rightSide.size(); i++) {
|
||||
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::string concat = "";
|
||||
for (int i = 0; i < loadedGrammer.size(); i++) {
|
||||
concat += loadedGrammer[i]->toString() + "\n";//->toString();// + std::endl;
|
||||
concat += loadedGrammer[i]->toString() + "\n";
|
||||
}
|
||||
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