summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/uscxml-analyze.cpp210
-rw-r--r--apps/uscxml-browser.cpp4
-rw-r--r--apps/uscxml-transform.cpp140
3 files changed, 177 insertions, 177 deletions
diff --git a/apps/uscxml-analyze.cpp b/apps/uscxml-analyze.cpp
index d9db213..69e403a 100644
--- a/apps/uscxml-analyze.cpp
+++ b/apps/uscxml-analyze.cpp
@@ -35,18 +35,18 @@ void printUsageAndExit(const char* progName) {
printf("%s version " USCXML_VERSION " (" CMAKE_BUILD_TYPE " build - " CMAKE_COMPILER_STRING ")\n", progStr.c_str());
printf("Usage\n");
- printf("\t%s", progStr.c_str());
- printf(" [-a {ASPECTS}] [-lN]");
+ printf("\t%s", progStr.c_str());
+ printf(" [-a {ASPECTS}] [-lN]");
#ifdef BUILD_AS_PLUGINS
- printf(" [-p pluginPath]");
+ printf(" [-p pluginPath]");
#endif
- printf(" [URL]");
- printf("\n");
- printf("Options\n");
- printf("\t-a {ASPECTS} : analyze with regard to comma seperated aspects\n");
- printf("\t 'issues' - find common pitfalls and syntactical errors\n");
- printf("\t 'metrics' - print metrics about the state-chart's complexity\n");
- printf("\t-lN : Set loglevel to N\n");
+ printf(" [URL]");
+ printf("\n");
+ printf("Options\n");
+ printf("\t-a {ASPECTS} : analyze with regard to comma seperated aspects\n");
+ printf("\t 'issues' - find common pitfalls and syntactical errors\n");
+ printf("\t 'metrics' - print metrics about the state-chart's complexity\n");
+ printf("\t-lN : Set loglevel to N\n");
printf("\n");
exit(1);
}
@@ -57,7 +57,7 @@ int main(int argc, char** argv) {
std::string pluginPath;
std::string inputFile;
std::list<std::string> aspects;
-
+
#if defined(HAS_SIGNAL_H) && !defined(WIN32)
signal(SIGPIPE, SIG_IGN);
#endif
@@ -72,7 +72,7 @@ int main(int argc, char** argv) {
struct option longOptions[] = {
{"help", required_argument, 0, 'p'},
{"plugin-path", required_argument, 0, 'p'},
- {"aspect", optional_argument, 0, 'a'},
+ {"aspect", optional_argument, 0, 'a'},
{"loglevel", required_argument, 0, 'l'},
{0, 0, 0, 0}
};
@@ -94,9 +94,9 @@ int main(int argc, char** argv) {
case 'p':
pluginPath = optarg;
break;
- case 'a':
- aspects = InterpreterImpl::tokenize(optarg, ',');
- break;
+ case 'a':
+ aspects = InterpreterImpl::tokenize(optarg, ',');
+ break;
case 'l':
break;
case 'h':
@@ -112,7 +112,7 @@ int main(int argc, char** argv) {
if (optind < argc) {
inputFile = argv[optind];
}
-
+
// register plugins
if (pluginPath.length() > 0) {
Factory::setDefaultPluginPath(pluginPath);
@@ -142,95 +142,95 @@ int main(int argc, char** argv) {
}
// analyze here
- if (aspects.size() == 0 || std::find(aspects.begin(), aspects.end(), "issues") != aspects.end()) {
- std::list<InterpreterIssue> issues = interpreter.validate();
- for (std::list<InterpreterIssue>::iterator issueIter = issues.begin(); issueIter != issues.end(); issueIter++) {
- std::cout << *issueIter << std::endl;
- }
- }
-
- if (aspects.size() == 0 || std::find(aspects.begin(), aspects.end(), "metrics") != aspects.end()) {
-
- Arabica::XPath::NodeSet<std::string> states = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "state");
- Arabica::XPath::NodeSet<std::string> final = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "final");
- Arabica::XPath::NodeSet<std::string> parallels = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "parallel");
- Arabica::XPath::NodeSet<std::string> shallowHistories = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "history[@type='shallow']");
- shallowHistories.push_back(interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "history[not(@type)]"));
- Arabica::XPath::NodeSet<std::string> deepHistories = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "history[@type='deep']");
- Arabica::XPath::NodeSet<std::string> transitions = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "transition");
-
- std::cout << "### Number of XML elements" << std::endl;
- std::cout << "# <state> + <final> + <parallel> + <history>" << std::endl;
- std::cout << "nr_states: " << (states.size() + final.size() + parallels.size() + shallowHistories.size() + deepHistories.size()) << std::endl;
- std::cout << "# <parallel>" << std::endl;
- std::cout << "nr_parallel: " << parallels.size() << std::endl;
- std::cout << "# <history type=\"flat\">" << std::endl;
- std::cout << "nr_hist_flat: " << shallowHistories.size() << std::endl;
- std::cout << "# <history type=\"deep\">" << std::endl;
- std::cout << "nr_hist_deep: " << deepHistories.size() << std::endl;
- std::cout << "# <transition>" << std::endl;
- std::cout << "nr_trans: " << transitions.size() << std::endl;
- std::cout << "#" << std::endl;
-
-
- std::cout << "### Transition Histogram: number of transitions, number of active configurations" << std::endl;
-
- size_t numberOfLegalConfs = 0;
- size_t lastBin = 0;
- std::cout << "th: ";
- std::string seperator = "";
- std::map<size_t, size_t> histogram = Complexity::getTransitionHistogramm(interpreter.getDocument().getDocumentElement());
- for (std::map<size_t, size_t>::iterator binIter = histogram.begin(); binIter != histogram.end(); binIter++) {
- while (binIter->first > lastBin) {
- lastBin++;
- std::cout << seperator << "0";
- seperator = ", ";
- }
- std::cout << seperator << binIter->second;
- seperator = ", ";
- numberOfLegalConfs += binIter->second;
- lastBin = binIter->first + 1;
- }
- std::cout << std::endl << "#" << std::endl;
-
-
- std::stringstream transPowerSetSS;
- std::string transPowerSetSeperator = "";
- for (std::map<size_t, size_t>::reverse_iterator binIter = histogram.rbegin(); binIter != histogram.rend(); binIter++) {
- transPowerSetSS << transPowerSetSeperator << binIter->second << " * " << "2**" << binIter->first;
- transPowerSetSeperator = " + ";
- }
- std::cout << "# Sum of Powersets:" << std::endl;
- std::cout << "ps_sum: " << transPowerSetSS.str() << std::endl;
- std::cout << "#" << std::endl;
-
- std::cout << "### Upper bounds:" << std::endl;
- std::cout << "# \tActive configurations: " << std::endl;
- std::cout << "up_ac: " << numberOfLegalConfs << std::endl;
- std::cout << "# \tGlobal configurations: " << std::endl;
- std::cout << "up_gc: " << Complexity::stateMachineComplexity(interpreter) << std::endl;
-
- std::cout << "# \tGlobal configurations (no history): " << std::endl;
- std::cout << "up_gcnh: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_HISTORY) << std::endl;
-
- std::cout << "# \tGlobal configurations (no nested data): " << std::endl;
- std::cout << "up_gcnd: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_NESTED_DATA) << std::endl;
-
- std::cout << "# \tGlobal configurations (no unreachable): " << std::endl;
- std::cout << "up_gcnu: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_UNREACHABLE) << std::endl;
-
- std::cout << "# \tGlobal configurations (no nested data, no history): " << std::endl;
- std::cout << "up_gcnhd: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_HISTORY | uscxml::Complexity::IGNORE_NESTED_DATA) << std::endl;
-
- std::cout << "# \tGlobal configurations (no history, no unreachable): " << std::endl;
- std::cout << "up_gcnhu: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_HISTORY | uscxml::Complexity::IGNORE_UNREACHABLE) << std::endl;
-
- std::cout << "# \tGlobal configurations (no nested data, no unreachable): " << std::endl;
- std::cout << "up_gcndu: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_NESTED_DATA | uscxml::Complexity::IGNORE_UNREACHABLE) << std::endl;
-
- std::cout << "# \tGlobal configurations (no nested data, no history, no unreachable): " << std::endl;
- std::cout << "up_gcnhdu: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_HISTORY | uscxml::Complexity::IGNORE_NESTED_DATA | uscxml::Complexity::IGNORE_UNREACHABLE) << std::endl;
- }
+ if (aspects.size() == 0 || std::find(aspects.begin(), aspects.end(), "issues") != aspects.end()) {
+ std::list<InterpreterIssue> issues = interpreter.validate();
+ for (std::list<InterpreterIssue>::iterator issueIter = issues.begin(); issueIter != issues.end(); issueIter++) {
+ std::cout << *issueIter << std::endl;
+ }
+ }
+
+ if (aspects.size() == 0 || std::find(aspects.begin(), aspects.end(), "metrics") != aspects.end()) {
+
+ Arabica::XPath::NodeSet<std::string> states = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "state");
+ Arabica::XPath::NodeSet<std::string> final = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "final");
+ Arabica::XPath::NodeSet<std::string> parallels = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "parallel");
+ Arabica::XPath::NodeSet<std::string> shallowHistories = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "history[@type='shallow']");
+ shallowHistories.push_back(interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "history[not(@type)]"));
+ Arabica::XPath::NodeSet<std::string> deepHistories = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "history[@type='deep']");
+ Arabica::XPath::NodeSet<std::string> transitions = interpreter.getNodeSetForXPath("//" + interpreter.getNameSpaceInfo().xpathPrefix + "transition");
+
+ std::cout << "### Number of XML elements" << std::endl;
+ std::cout << "# <state> + <final> + <parallel> + <history>" << std::endl;
+ std::cout << "nr_states: " << (states.size() + final.size() + parallels.size() + shallowHistories.size() + deepHistories.size()) << std::endl;
+ std::cout << "# <parallel>" << std::endl;
+ std::cout << "nr_parallel: " << parallels.size() << std::endl;
+ std::cout << "# <history type=\"flat\">" << std::endl;
+ std::cout << "nr_hist_flat: " << shallowHistories.size() << std::endl;
+ std::cout << "# <history type=\"deep\">" << std::endl;
+ std::cout << "nr_hist_deep: " << deepHistories.size() << std::endl;
+ std::cout << "# <transition>" << std::endl;
+ std::cout << "nr_trans: " << transitions.size() << std::endl;
+ std::cout << "#" << std::endl;
+
+
+ std::cout << "### Transition Histogram: number of transitions, number of active configurations" << std::endl;
+
+ size_t numberOfLegalConfs = 0;
+ size_t lastBin = 0;
+ std::cout << "th: ";
+ std::string seperator = "";
+ std::map<size_t, size_t> histogram = Complexity::getTransitionHistogramm(interpreter.getDocument().getDocumentElement());
+ for (std::map<size_t, size_t>::iterator binIter = histogram.begin(); binIter != histogram.end(); binIter++) {
+ while (binIter->first > lastBin) {
+ lastBin++;
+ std::cout << seperator << "0";
+ seperator = ", ";
+ }
+ std::cout << seperator << binIter->second;
+ seperator = ", ";
+ numberOfLegalConfs += binIter->second;
+ lastBin = binIter->first + 1;
+ }
+ std::cout << std::endl << "#" << std::endl;
+
+
+ std::stringstream transPowerSetSS;
+ std::string transPowerSetSeperator = "";
+ for (std::map<size_t, size_t>::reverse_iterator binIter = histogram.rbegin(); binIter != histogram.rend(); binIter++) {
+ transPowerSetSS << transPowerSetSeperator << binIter->second << " * " << "2**" << binIter->first;
+ transPowerSetSeperator = " + ";
+ }
+ std::cout << "# Sum of Powersets:" << std::endl;
+ std::cout << "ps_sum: " << transPowerSetSS.str() << std::endl;
+ std::cout << "#" << std::endl;
+
+ std::cout << "### Upper bounds:" << std::endl;
+ std::cout << "# \tActive configurations: " << std::endl;
+ std::cout << "up_ac: " << numberOfLegalConfs << std::endl;
+ std::cout << "# \tGlobal configurations: " << std::endl;
+ std::cout << "up_gc: " << Complexity::stateMachineComplexity(interpreter) << std::endl;
+
+ std::cout << "# \tGlobal configurations (no history): " << std::endl;
+ std::cout << "up_gcnh: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_HISTORY) << std::endl;
+
+ std::cout << "# \tGlobal configurations (no nested data): " << std::endl;
+ std::cout << "up_gcnd: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_NESTED_DATA) << std::endl;
+
+ std::cout << "# \tGlobal configurations (no unreachable): " << std::endl;
+ std::cout << "up_gcnu: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_UNREACHABLE) << std::endl;
+
+ std::cout << "# \tGlobal configurations (no nested data, no history): " << std::endl;
+ std::cout << "up_gcnhd: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_HISTORY | uscxml::Complexity::IGNORE_NESTED_DATA) << std::endl;
+
+ std::cout << "# \tGlobal configurations (no history, no unreachable): " << std::endl;
+ std::cout << "up_gcnhu: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_HISTORY | uscxml::Complexity::IGNORE_UNREACHABLE) << std::endl;
+
+ std::cout << "# \tGlobal configurations (no nested data, no unreachable): " << std::endl;
+ std::cout << "up_gcndu: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_NESTED_DATA | uscxml::Complexity::IGNORE_UNREACHABLE) << std::endl;
+
+ std::cout << "# \tGlobal configurations (no nested data, no history, no unreachable): " << std::endl;
+ std::cout << "up_gcnhdu: " << Complexity::stateMachineComplexity(interpreter, uscxml::Complexity::IGNORE_HISTORY | uscxml::Complexity::IGNORE_NESTED_DATA | uscxml::Complexity::IGNORE_UNREACHABLE) << std::endl;
+ }
} catch (Event e) {
std::cout << e << std::endl;
}
diff --git a/apps/uscxml-browser.cpp b/apps/uscxml-browser.cpp
index ede6f06..10f52cc 100644
--- a/apps/uscxml-browser.cpp
+++ b/apps/uscxml-browser.cpp
@@ -139,7 +139,7 @@ int main(int argc, char** argv) {
DebuggerServlet* debugger;
if (options.withDebugger) {
debugger = new DebuggerServlet();
- debugger->copyToInvokers(true);
+ debugger->copyToInvokers(true);
HTTPServer::getInstance()->registerServlet("/debug", debugger);
}
#endif
@@ -171,7 +171,7 @@ int main(int argc, char** argv) {
if (options.verbose) {
StateTransitionMonitor* vm = new StateTransitionMonitor();
- vm->copyToInvokers(true);
+ vm->copyToInvokers(true);
interpreter.addMonitor(vm);
}
diff --git a/apps/uscxml-transform.cpp b/apps/uscxml-transform.cpp
index 95bb60b..64d6b06 100644
--- a/apps/uscxml-transform.cpp
+++ b/apps/uscxml-transform.cpp
@@ -70,24 +70,24 @@ void printUsageAndExit(const char* progName) {
printf(" [-i URL] [-o FILE]");
printf("\n");
printf("Options\n");
- printf("\t-t c : convert to C program\n");
- printf("\t-t pml : convert to spin/promela program\n");
- printf("\t-t flat : flatten to SCXML state-machine\n");
+ printf("\t-t c : convert to C program\n");
+ printf("\t-t pml : convert to spin/promela program\n");
+ printf("\t-t flat : flatten to SCXML state-machine\n");
printf("\t-t min : minimize SCXML state-chart\n");
printf("\t-t tex : write global state transition table as tex file\n");
printf("\t-a {OPTIONS} : annotate SCXML elements with comma seperated options\n");
printf("\t 'priority' - transitions with their priority for transition selection\n");
- printf("\t 'exitset' - annotate all transitions with their exit sets\n");
- printf("\t 'entryset' - annotate all transitions with their entry sets\n");
- printf("\t 'conflicts' - annotate all transitions with their conflicts\n");
- printf("\t 'domain' - annotate all transitions with their domain\n");
+ printf("\t 'exitset' - annotate all transitions with their exit sets\n");
+ printf("\t 'entryset' - annotate all transitions with their entry sets\n");
+ printf("\t 'conflicts' - annotate all transitions with their conflicts\n");
+ printf("\t 'domain' - annotate all transitions with their domain\n");
printf("\t 'step' - global states with their step identifier (-tflat only)\n");
printf("\t 'members' - global transitions with their member transitions per index (-tflat only)\n");
printf("\t 'sends' - transititve number of sends to external queue for global transitions (-tflat only)\n");
printf("\t 'raises' - transititve number of raises to internal queue for global transitions (-tflat only)\n");
- printf("\t 'verbose' - comments detailling state changes and transitions for content selection (-tflat only)\n");
- printf("\t 'progress' - insert comments documenting progress in dociment (-tmin only)\n");
- printf("\t 'nocomment' - surpress the generation of comments in output\n");
+ printf("\t 'verbose' - comments detailling state changes and transitions for content selection (-tflat only)\n");
+ printf("\t 'progress' - insert comments documenting progress in dociment (-tmin only)\n");
+ printf("\t 'nocomment' - surpress the generation of comments in output\n");
printf("\t-v : be verbose\n");
printf("\t-lN : Set loglevel to N\n");
printf("\t-i URL : Input file (defaults to STDIN)\n");
@@ -105,7 +105,7 @@ int main(int argc, char** argv) {
std::string inputFile;
std::string outputFile;
std::list<std::string> annotations;
-
+
#if defined(HAS_SIGNAL_H) && !defined(WIN32)
signal(SIGPIPE, SIG_IGN);
#endif
@@ -180,17 +180,17 @@ int main(int argc, char** argv) {
if (ANNOTATE("USCXML_ANNOTATE_VERBOSE_COMMENTS", "verbose"))
setenv("USCXML_ANNOTATE_VERBOSE_COMMENTS", "YES", 1);
- if (ANNOTATE("USCXML_ANNOTATE_TRANS_EXITSET", "exitset"))
- setenv("USCXML_ANNOTATE_TRANS_EXITSET", "YES", 1);
+ if (ANNOTATE("USCXML_ANNOTATE_TRANS_EXITSET", "exitset"))
+ setenv("USCXML_ANNOTATE_TRANS_EXITSET", "YES", 1);
- if (ANNOTATE("USCXML_ANNOTATE_TRANS_DOMAIN", "domain"))
- setenv("USCXML_ANNOTATE_TRANS_DOMAIN", "YES", 1);
+ if (ANNOTATE("USCXML_ANNOTATE_TRANS_DOMAIN", "domain"))
+ setenv("USCXML_ANNOTATE_TRANS_DOMAIN", "YES", 1);
- if (ANNOTATE("USCXML_ANNOTATE_TRANS_CONFLICTS", "conflicts"))
- setenv("USCXML_ANNOTATE_TRANS_CONFLICTS", "YES", 1);
+ if (ANNOTATE("USCXML_ANNOTATE_TRANS_CONFLICTS", "conflicts"))
+ setenv("USCXML_ANNOTATE_TRANS_CONFLICTS", "YES", 1);
- if (ANNOTATE("USCXML_ANNOTATE_TRANS_ENTRYSET", "entryset"))
- setenv("USCXML_ANNOTATE_TRANS_ENTRYSET", "YES", 1);
+ if (ANNOTATE("USCXML_ANNOTATE_TRANS_ENTRYSET", "entryset"))
+ setenv("USCXML_ANNOTATE_TRANS_ENTRYSET", "YES", 1);
if(ANNOTATE("USCXML_ANNOTATE_GLOBAL_TRANS_MEMBERS", "members"))
setenv("USCXML_ANNOTATE_GLOBAL_TRANS_MEMBERS", "YES", 1);
@@ -204,10 +204,10 @@ int main(int argc, char** argv) {
if(ANNOTATE("USCXML_ANNOTATE_PROGRESS", "progress"))
setenv("USCXML_ANNOTATE_PROGRESS", "YES", 1);
- if(ANNOTATE("USCXML_ANNOTATE_NOCOMMENT", "nocomment"))
- setenv("USCXML_ANNOTATE_NOCOMMENT", "YES", 1);
+ if(ANNOTATE("USCXML_ANNOTATE_NOCOMMENT", "nocomment"))
+ setenv("USCXML_ANNOTATE_NOCOMMENT", "YES", 1);
+
-
// if (outType.length() == 0 && outputFile.length() > 0) {
// // try to get type from outfile extension
// size_t dotPos = outputFile.find_last_of(".");
@@ -215,21 +215,21 @@ int main(int argc, char** argv) {
// outType= outputFile.substr(dotPos + 1);
// }
// }
-
+
// if (outType.length() == 0)
// printUsageAndExit(argv[0]);
if (outType != "flat" &&
- outType != "scxml" &&
- outType != "pml" &&
- outType != "c" &&
- outType != "min" &&
- outType != "tex" &&
- std::find(annotations.begin(), annotations.end(), "priority") == annotations.end() &&
- std::find(annotations.begin(), annotations.end(), "domain") == annotations.end() &&
- std::find(annotations.begin(), annotations.end(), "conflicts") == annotations.end() &&
- std::find(annotations.begin(), annotations.end(), "exitset") == annotations.end() &&
- std::find(annotations.begin(), annotations.end(), "entryset") == annotations.end())
+ outType != "scxml" &&
+ outType != "pml" &&
+ outType != "c" &&
+ outType != "min" &&
+ outType != "tex" &&
+ std::find(annotations.begin(), annotations.end(), "priority") == annotations.end() &&
+ std::find(annotations.begin(), annotations.end(), "domain") == annotations.end() &&
+ std::find(annotations.begin(), annotations.end(), "conflicts") == annotations.end() &&
+ std::find(annotations.begin(), annotations.end(), "exitset") == annotations.end() &&
+ std::find(annotations.begin(), annotations.end(), "entryset") == annotations.end())
printUsageAndExit(argv[0]);
// register plugins
@@ -266,18 +266,18 @@ int main(int argc, char** argv) {
std::cerr << *issueIter << std::endl;
}
}
-
- if (outType == "c") {
- if (outputFile.size() == 0 || outputFile == "-") {
- ChartToC::transform(interpreter).writeTo(std::cout);
- } else {
- std::ofstream outStream;
- outStream.open(outputFile.c_str());
- ChartToC::transform(interpreter).writeTo(outStream);
- outStream.close();
- }
- exit(EXIT_SUCCESS);
- }
+
+ if (outType == "c") {
+ if (outputFile.size() == 0 || outputFile == "-") {
+ ChartToC::transform(interpreter).writeTo(std::cout);
+ } else {
+ std::ofstream outStream;
+ outStream.open(outputFile.c_str());
+ ChartToC::transform(interpreter).writeTo(outStream);
+ outStream.close();
+ }
+ exit(EXIT_SUCCESS);
+ }
if (outType == "pml") {
if (outputFile.size() == 0 || outputFile == "-") {
@@ -327,34 +327,34 @@ int main(int argc, char** argv) {
exit(EXIT_SUCCESS);
}
-
+
#if 1
- if (annotations.size() > 0) {
- ChartToFSM annotater(interpreter);
- if (std::find(annotations.begin(), annotations.end(), "priority") != annotations.end())
- annotater.indexTransitions();
- if (std::find(annotations.begin(), annotations.end(), "conflicts") != annotations.end())
- annotater.annotateConflicts();
- if (std::find(annotations.begin(), annotations.end(), "exitset") != annotations.end())
- annotater.annotateExitSet();
- if (std::find(annotations.begin(), annotations.end(), "entryset") != annotations.end())
- annotater.annotateEntrySet();
- if (std::find(annotations.begin(), annotations.end(), "domain") != annotations.end())
- annotater.annotateDomain();
-
- if (outputFile.size() == 0 || outputFile == "-") {
- std::cout << annotater.getDocument();
- } else {
- std::ofstream outStream;
- outStream.open(outputFile.c_str());
- outStream << annotater.getDocument();
- outStream.close();
- }
- exit(EXIT_SUCCESS);
- }
+ if (annotations.size() > 0) {
+ ChartToFSM annotater(interpreter);
+ if (std::find(annotations.begin(), annotations.end(), "priority") != annotations.end())
+ annotater.indexTransitions();
+ if (std::find(annotations.begin(), annotations.end(), "conflicts") != annotations.end())
+ annotater.annotateConflicts();
+ if (std::find(annotations.begin(), annotations.end(), "exitset") != annotations.end())
+ annotater.annotateExitSet();
+ if (std::find(annotations.begin(), annotations.end(), "entryset") != annotations.end())
+ annotater.annotateEntrySet();
+ if (std::find(annotations.begin(), annotations.end(), "domain") != annotations.end())
+ annotater.annotateDomain();
+
+ if (outputFile.size() == 0 || outputFile == "-") {
+ std::cout << annotater.getDocument();
+ } else {
+ std::ofstream outStream;
+ outStream.open(outputFile.c_str());
+ outStream << annotater.getDocument();
+ outStream.close();
+ }
+ exit(EXIT_SUCCESS);
+ }
#endif
-
+
} catch (Event e) {
std::cout << e << std::endl;
}