@@ -69,9 +69,10 @@ bool isCharInStr(const char c, const std::string& s) {
6969size_t ANF::readFileForMaxVar (const std::string& filename)
7070{
7171 // Read in the file line by line
72- size_t maxVar = 0 ;
7372 size_t maxes[26 ] = {0 };
7473 char varLetter;
74+ size_t var = 0 ;
75+ bool start_bracket = false ;
7576
7677 std::ifstream ifs (filename.c_str ());
7778 if (!ifs) {
@@ -93,16 +94,35 @@ size_t ANF::readFileForMaxVar(const std::string& filename)
9394 // simply search for consecutive numbers
9495 // however "+1" is a NUMBER but not a MONOMIAL
9596 // so we have to take that into consideration
96- size_t var = 0 ;
97+
9798 bool isMonomial = false ;
9899 for (uint32_t i = 0 ; i < temp.length (); ++i) {
99100 // At this point, only numbers are valid
100101 if (!std::isdigit (temp[i])) {
101102 var = 0 ;
102- char temp_char = tolower (temp[i]);
103+ char temp_char = temp[i];
104+ if (temp_char >= ' A' && temp_char <= ' Z' )
105+ temp_char += ' a' - ' A' ;
103106 if (temp[i] == ' _' )
104107 continue ;
105- if (isCharInStr (temp_char,var_letters) || (isMonomial && temp[i] == ' (' )) {
108+
109+ if (temp[i] == ' )' ) {
110+ if (!start_bracket) {
111+ cout << " ERROR: close bracket but no start bracket?" << endl;
112+ exit (-1 );
113+ }
114+ start_bracket = false ;
115+ continue ;
116+ }
117+ if (temp[i] == ' (' ) {
118+ if (start_bracket) {
119+ cout << " ERROR: start bracket but previous not closed?" << endl;
120+ exit (-1 );
121+ }
122+ start_bracket = true ;
123+ continue ;
124+ }
125+ if (isCharInStr (temp_char,var_letters)) {
106126 varLetter = temp_char;
107127 isMonomial = true ;
108128 } else {
@@ -111,13 +131,16 @@ size_t ANF::readFileForMaxVar(const std::string& filename)
111131 } else if (isMonomial) {
112132 var = var * 10 + (temp[i] - ' 0' );
113133 int index = (varLetter-' a' ); // variables are zero based
114- if (maxes[index] < (var+1 )) {
115- maxes[index] = (var+1 );
134+ printf (" %c %zu " , varLetter, var);
135+ if (maxes[index] <= var) {
136+ maxes[index] = var+1 ;
116137 }
117138 }
118139 }
119140 }
120141 ifs.close ();
142+
143+ size_t maxVar = 0 ;
121144 for (size_t i=0 ;i<26 ;i++) {
122145 maxVar += maxes[i];
123146 }
@@ -129,7 +152,7 @@ size_t ANF::readFile(const std::string& filename)
129152{
130153 // Read in the file line by line
131154 vector<std::string> text_file;
132- int maxes[26 ] = {0 };
155+ size_t maxes[26 ] = {0 };
133156
134157 size_t currentVar = 2 ;
135158 bool proj_set_found = false ;
0 commit comments