Реферат: Интерпретатор 2
else switch(t)// Иначе, если t один из символов:
{
case '>':
return CmpNextSym('=',JG,JGE);// Если за t следует =, то вернуть инедтификатор условия JGE (больше-равно), иначе - JG (больше)
case '<':
return CmpNextSym('=',JL,JLE);// Меньше-равно, или меньше
case '!':
return CmpNextSym('=',JNE,'!');// Не равно, или символ !
case '=':
return CmpNextSym('=',JE,'=');// Равно (условие) или символ =
case ':':
return CmpNextSym('=',EQUAL,':');// Прсвоитьилисимвол :
case '{':
return BEGIN;// Вернутьидентификатор BEGIN
case '}':
return END;// Вернутьидентификатор END
default:// Если что-либо другое, то
tokenval=NONE;
return t;// Вернуть t
}
}
}
int CmpNextSym(int ch,int good,int bad)
{
int nc=fgetc(Open);// считать следующий символ
if(nc==ch) return good;//если следующий символ = ch - вернуть good
ungetc(nc,Open);//иначе, возврат символа во входной поток
return bad;// вернуть bad
}
parser.c