|
Программирование >> Формирование пользовательского контейнера
Давайте рассмофим пример, иллюстрирующий применение описанных типов лексем. Задан оператор for ( X = 0; X * 10; х++) { num = num + х; В табл. 9.3 приведены составляющие его лексемы. Таблица 9.3. Лексемы, содержащиеся в операторе Лексема Категория
Несмотря на то, что интерпретатор Mini С++ распознает те же лексемы которые описаны в стандарте ANSI/ISO для языка С++, он несколько иначе делит их на категории для облегчения процесса интерпретации. В табл. 9.2 приведены категории лексем, используемые в интерпретаторе Mini С++. Таблица 9.2. Категории лексем интерпретатора Mini С++ Таблица 9.3 (окончание) Лексема Категория
кода лексемы для интерпретатора Mini С++, toktypes getL-tokenO { char *temp; token type = UNDEFTT; tok = UNDEFTOK; terap = token; ♦temp = \0; Пропускает пробелы. while(isspace(*prog) && *prog) ++prog; Пропускает переход на новую строку, while(*prog == \r) { ++prog; ++prog; Снова пропускает пробелы. while(isspace{*prog) && *prog) ++prog; Проверяет, не конец ли програьллл. 386 , Gaeas if(*prOg == \0) { *token = \0; tok = END; return (token type = DELIMITER); Проверяет ограничители блока, if(strchrC , *prog)) { *teinp = *prog; teannp++; *tenp = \0; prog++; return (tok v type = BLOCK); Ищет комментарии. if(*prog == V) if(*(prog+l> - * ) ( знак комментария /* prog += 2j do { находит конец комментария while(*prog != *) prog++; prog++; } while (*prog != V); prog++; return (token type - DELIMITER); } else if(*Cprog+l) == /) { знак комментария prog += 2,- Находич? конец комментария. while{*prog != \r && *prog != \0) prog++; if(*prog == -Xr) prog +=2; return (token type = DELIMITER); Проверяет двойные знаки операций, if (strchr ( !<:=+- , *prog)) { switch (*progr) { case =: if(*(proig+l) == = ) { prog+-b; prog++;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |