summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--impl/EquationSystem.g1
-rw-r--r--impl/TODO.org9
-rw-r--r--impl/main.cpp17
3 files changed, 14 insertions, 13 deletions
diff --git a/impl/EquationSystem.g b/impl/EquationSystem.g
index 3a6598a..07e8e71 100644
--- a/impl/EquationSystem.g
+++ b/impl/EquationSystem.g
@@ -30,6 +30,7 @@ expr : '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' -> ^(GUARD expr expr e
term : NUMBER
| VARIABLE
+ | '-'^ term
| '('! expr ')'! ;
diff --git a/impl/TODO.org b/impl/TODO.org
index 4d14b64..a33f685 100644
--- a/impl/TODO.org
+++ b/impl/TODO.org
@@ -33,14 +33,15 @@
- [ ] info
print the initial system we're working with
-* TODO make test [0/4]
-- [ ] write test cases [/]
+* TODO make test [2/4]
+- [-] write test cases [1/4]
+ - [X] examples from paper
- [ ] best cases
- [ ] worst cases
- [ ] average cases
- [ ] work out correct outputs for each test case
-- [ ] write a script to run over each test case and return pass/fail
-- [ ] consolidate into makefile as `make test`
+- [X] write a script to run over each test case and return pass/fail
+- [X] consolidate into makefile as `make test`
* TODO Parametrise EquationSystem for Variable, too [0/1]
- [ ] Give EquationSystem a template parameter for Variable
diff --git a/impl/main.cpp b/impl/main.cpp
index 726fa3e..2b7a9a1 100644
--- a/impl/main.cpp
+++ b/impl/main.cpp
@@ -98,7 +98,7 @@ void treeToSystem(pANTLR3_BASE_TREE node, EquationSystem<T>& system) {
typedef Complete<int> ZBar;
int main (int argc, char* argv[]) {
if (argc <= 3) {
- cout << "Usage: " << argv[0] << " filename fixpoint strategy [log]" << endl
+ cerr << "Usage: " << argv[0] << " filename fixpoint strategy [log]" << endl
<< " fixpoint: naive | smart" << endl
<< " strategy: naive | repeat | smart" << endl
<< " log: section[,section[,section[...]]]" << endl;
@@ -135,12 +135,12 @@ int main (int argc, char* argv[]) {
FixpointAlgorithm<ZBar>* algorithm = NULL;
if (!strcmp(argv[2], "naive")) {
algorithm = new NaiveFixpointAlgorithm<ZBar>(system);
- cout << "Naive fixpoint" << endl;
+ log::info << "Naive fixpoint" << endl;
} else if (!strcmp(argv[2], "smart")) {
algorithm = new SmartFixpointAlgorithm<ZBar>(system);
- cout << "Smart fixpoint" << endl;
+ log::info << "Smart fixpoint" << endl;
} else {
- cout << "Unknown fixpoint algorithm." << endl;
+ cerr << "Unknown fixpoint algorithm." << endl;
}
// PARSE ARGUMENTS - strat improvement
@@ -148,15 +148,15 @@ int main (int argc, char* argv[]) {
ImprovementOperator<ZBar>* improvement = NULL;
if (!strcmp(argv[3], "repeat")) {
improvement = new RepeatedImprovementOperator<ZBar>(*naiveImprovement);
- cout << "Repeated strategy improvement" << endl;
+ log::info << "Repeated strategy improvement" << endl;
} else if (!strcmp(argv[3], "naive")) {
improvement = naiveImprovement;
- cout << "Naive strategy improvement" << endl;
+ log::info << "Naive strategy improvement" << endl;
} else if (!strcmp(argv[3], "smart")) {
improvement = new SmartImprovementOperator<ZBar>(system);
- cout << "Smart strategy improvement" << endl;
+ log::info << "Smart strategy improvement" << endl;
} else {
- cout << "Unknown strategy improvement algorithm." << endl;
+ cerr << "Unknown strategy improvement algorithm." << endl;
}
if (!improvement || !algorithm) {
exit(1);
@@ -182,7 +182,6 @@ int main (int argc, char* argv[]) {
log::debug << "Changed: " << (changed ? "true" : "false") << std::endl;
} while(changed);
- cout << endl;
for (unsigned int i = 0, size = system.variableCount(); i < size; ++i) {
Variable<ZBar>& var = system.variable(i);
cout << var.name() << " = " << result[var] << endl;