Программирование >>  Формирование пользовательского контейнера 

1 ... 50 51 52 [ 53 ] 54 55 56 ... 156


fout indent + forvamame < ( (sizeof token )/ (sizeof token [0]));\n ;

fout indent + forvamame ++, vamame = arrayname t forvamame ]) ;

skipspacesO ;

Считывает ) . gettoken(token); if (token [0] != ) )

throw SyntaxExc( ) expected in foreach. );

Транслирует оператор cases, void cases () {

string token;

int start, end;

skipspaces ();

Получает начальное значение, gettoken (token); if(isdigit(token[0])) {

получена константа int

start = atoi(token.c str0);

else if(token[0] == \) { II получена константа char gettoken(token);

start = (int) token[0];

отбрасывает закрывающий (апостроф)

gettoken(token);

if (token [0] != -X )

throw SyntaxExc( expected in cases. );



else

throw SyntaxExc( Constant eзфected in cases. ); skipspaces();

Читает и отбрасывет to . gettoken(token); if(token != to )

throw SyntaxExc ( to ejqjected in cases. );

skipspaces ();

Получает конечное значение.

gettoken(token);

if(isdigit(token[0])) {

Получена константа int

end = atoi(token.c str());

else if (token[0] == \ ) { Получена константа char gettoken(token);

end =t (int) token[0];

Отбрасывает закрьшающий

gettoken(token);

if(token[0] != Ч )

throw SyntaxExc( expected in cases . ) ;

else

throw SyntaxExc( Constant eзфected in cases. ) skipspaces();

Читает и отбрасывает : . gettoken(token);

if(token != : )

throw SyntaxExc( : expected in cases. ) ;



Генерирует стопочные case-операторы, fout case start :\n ; for(int i = start+1 ; i <= end; i++) (

fout indent case i : ;

if(i != end) fout endl;

Транслирует repeat, void repeat 0 { fout do ;

Транслирует until, void until 0 {

string token;

int parencount = 1;

fout while ; skipspaces ();

Читает и запоминает ( ,

gettoken (token); if(token != ( ) throw SyntaxExc( ( expected in typeof . ); fout ( ;

Начинает цикл while, заменяя на противоположное и заключая в скобки условное выражение.

fout ! ( ;

Теперь читает выражение, do (

if(!gettoken(token))

throw SyntaxExc( Unexpected EOF encountered. ); if(token == ( ) parencount++; if (token == ) ) parencount-; fout token;



1 ... 50 51 52 [ 53 ] 54 55 56 ... 156

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика