From 12b86dc91316a5591c22160a9312e62c77a65b2f Mon Sep 17 00:00:00 2001 From: Carlo Zancanaro Date: Thu, 17 May 2012 01:58:42 +1000 Subject: Fix a segfault and a stupid parser decision. --- impl/EquationSystem.g | 2 +- impl/Expression.hpp | 4 ++-- impl/MaxStrategy.hpp | 8 +++++++- impl/antlr/test-file | 5 ++--- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/impl/EquationSystem.g b/impl/EquationSystem.g index d7e55a7..6db7045 100644 --- a/impl/EquationSystem.g +++ b/impl/EquationSystem.g @@ -27,7 +27,7 @@ term : NUMBER | VARIABLE ; NUMBER : (DIGIT)+ ; -VARIABLE: (LETTER)+ ; +VARIABLE: (LETTER) (LETTER | DIGIT)* ; WHITESPACE : ( '\t' | ' ' | '\u000C' )+ { $channel = HIDDEN; diff --git a/impl/Expression.hpp b/impl/Expression.hpp index 913bf7a..5cf82d4 100644 --- a/impl/Expression.hpp +++ b/impl/Expression.hpp @@ -1,7 +1,7 @@ #ifndef EXPRESSION_HPP #define EXPRESSION_HPP -//#include +#include #include "VariableAssignment.hpp" #include "Operator.hpp" @@ -50,7 +50,7 @@ struct MaxExpression : public Expression { if (value > best.first) best = std::pair(value, i); } - std::cout << "Best strategy: (" << best.first << ", " << best.second << ")" << std::endl; + std::cerr << "Best strategy: (" << best.first << ", " << best.second << ")" << std::endl; return best; } private: diff --git a/impl/MaxStrategy.hpp b/impl/MaxStrategy.hpp index e52fd99..f4e4055 100644 --- a/impl/MaxStrategy.hpp +++ b/impl/MaxStrategy.hpp @@ -1,6 +1,7 @@ #ifndef MAX_STRATEGY_HPP #define MAX_STRATEGY_HPP +#include #include "Expression.hpp" #include "EquationSystem.hpp" #include "VariableAssignment.hpp" @@ -69,7 +70,12 @@ struct MaxStrategy { if (best.first > oldValue) newStrategy[*expr] = best.second; } - std::cout << "Strat improvement: " << newStrategy[*s.getMax(0)] << std::endl; + std::cerr << "Strat improvement: "; + if (_length > 0) + std::cerr << newStrategy[*s.getMax(0)]; + else + std::cerr << "no max expressions"; + std::cerr << std::endl; return newStrategy; } diff --git a/impl/antlr/test-file b/impl/antlr/test-file index 6f2cff5..8c865bf 100644 --- a/impl/antlr/test-file +++ b/impl/antlr/test-file @@ -1,3 +1,2 @@ -x = max(0, min(x, y)) -y = max(0, x+5, x) -z = max(0, z+1, x) +y = min(0-1, z) +z = min(0, y+1) -- cgit v1.2.3