count가 정의가 안되있는게 논리오류인가요??


#include "std_lib_facilities.h"


class Token{

public:

char kind;

double value;

};


class Token_stream{

public:

void putback(Token t);

Token get();

private:

bool full{ false };

Token buffer;


};


void Token_stream::putback(Token t){

buffer = t;

full = true; 

}


Token Token_stream::get(){

if (full){

full = false;

return buffer;

}


char ch;

double d = LONG_MAX; 

cin >> ch;

switch (ch){  

case 'q':

case ';':

case'(': case')': case'+': case'-': case'*': case'/':

return Token{ ch };

case'_':

case'0': case'1': case'2': case'3': case'4':

case'5': case'6': case'7': case'8': case'9':

{

cin.putback(ch);

cin >> d;

return Token{ '8', d };

}

}

}


Token_stream ts;

double [removed]);  // 전방 선언(오류 방지를 위해 미리 선언해 주는 것

double primary() {

Token t = ts.get();

double d = LONG_MAX;

switch (t.kind){

case '(':

d = [removed]);

t = ts.get();

if (t.kind != ')') error(" ')'가 와야함");

return d;

case '8':

return t.value;

defalut:

error("잘못된 primary 입력");

}

}

double term() {

double left = primary();

double d = LONG_MAX;

Token t = ts.get();

while (true){

switch (t.kind){

case '*':

left *= primary();

t = ts.get();

break;

case '/':

d = primary();

if (d == 0) error("0으로 나눔");

left /= d;

t = ts.get();

break;

default:

ts.putback(t);

return left;

}

}

}


double [removed]){

double left = term();

Token t = ts.get();

while (true){

switch (t.kind){

case '+':

left += term();

t = ts.get();

break;

case '-':

left -= term();

t = ts.get();

break;

default:

ts.putback(t);

return left;

}

}

}


int main(){

double d;

while (cin){

Token t = ts.get();

if (t.kind == 'q') break;

if (t.kind == ';')

cout << "=" << d << '\n';

else

ts.putback(t); 

d = [removed]);

}

return 0;

}