Реферат: Интерпретатор 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

К-во Просмотров: 1033
Бесплатно скачать Реферат: Интерпретатор 2