Я использую цикл while для итерации строки, если она находится внутри a-z, но она не работает? Я нахожу это странным, потому что я использую тот же метод в другой функции, кроме 0-9, и она работает просто отлично.
Это проблемный код:
int lexicalAnalyzer::analyzeIdentifiers(char* program, int eos){
location = 0;
int num = 0;
int tempNum;
while(location != eos){
tempNum = 0; //resetting counter
while(program[location] >= 'a' && program[location] <= 'z'){ #ERROR here Thread 1: EXC_BAD_ACCESS (code=1, address=0x101d00000)
tempNum++; //using tempNum to catch whether identifiers are being
found
location++;
}
if(tempNum == 1){
//meaning only 1 char was caught
num++;
identifiers[0] = identifiers[0] + 1;
}else if(tempNum > 0){
//meaning char ident was caught
num++;
identifiers[1] = identifiers[1] + 1;
}
location++;
}//end of while
return num;
}
и это тот, который отлично работает
int lexicalAnalyzer::analyzeIntegers(char* program, int eos){
location = 0;
int num = 0;
int tempNum;
while(location != eos){
tempNum = 0; //resetting counter
while(program[location] >= '0' && program[location] <= '9'){
tempNum++; //using tempNum to catch whether integers are
being found
location++;
}
if(tempNum == 1){
//meaning only a digit was found
num++;
integers[0] = integers[0] + 1;
}else if(tempNum > 0){
//meaning integer was caught
num++;
integers[1] = integers[1] + 1;
}
location++;
}//end of while
return num;
}
Я не уверен, что что-то не так, я не вижу, но я буквально скопировал и вставил функцию analyInteger и просто слегка изменил ее для analyIIndiers, и все же он не будет работать ??
location - это инициализированная переменная частного класса