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

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


} while(parencount > 0); fout ) ;

Транслирует оператор typeof. void typeof0 {

string token;

string tercp;

fout typeldC;

skipspaces();

gettoken(token); do {

t&pp = token;

if(Igettoken(token))

throw SyntaxExc( Unexpected EOF encountered. );

if(token != same ) fout temp; } while(token != same );

skipspaces();

gettoken(token);

if(token != as ) throw SyntaxExc( as expected. );

fout ) == typeid( ;

skipspaces(); do {

if(!gettoken(token))

throw SyntaxExc( Unexpected EOF encountered. );

fout token; } while(token != ) ); fout ) ;



ргширение С++ Уб7

id skipspacesO { char ch;

do {

ch = fin.getO ; ) vAiile(isspace(ch)); fin.putback(ch);

Применение транслятора

Для использования транслятора сначала создайте файл, содержащий про-1рамму, в которой встречаются экспериментальные ключевые слова. Для ясности файлам, включающим экспериментальные конструкции, присваивайте расширение ехр. Понятно, что большая часть кода в файле с расширением ехр будет написана на стандартном языке С++. Но в нем обязательно должно быть одно или несколько расширений, которые будут преобразованы транслятором в стандарт С++. В листинге 4.2 приведено содержимое ехр-файла, в котором используется цикл foreach. Обратите внимание на то, что большая часть профаммы - это обычный код на языке С++.

Листинг 4.2. Демонстрация применения цикла foreach

#include <iostreain> using namespace std;

int main О {

int nums[] = { 1, 6. 19. 4. -10, 88 }; int min;

Находит минимальное значение, roin = nums[0] ; foreach(int x in nums) if(min > X) min = x;

cout Minimum is min endl; return 0;



Листинг 4.3. Код, содержащийся в файле foreach.cpp

Оттранслирован из исходного файла с расширением ехр. Демонстрирует применение цикла foreach. #include <iostream> using namespace std;

int main() [

int nums[] = { 1, 6, 19, 4, -10, 88 } ; int min;

Находит минимальное значение.

min = nums[0];

int ia = 0;

for(int X = nums[0];

ia < ((sizeof nums)/(sizeof nums[0]));

ia++, X = nums[ ia]) if(min > x) min = x;

cout Minimum is min endl;

return 0;

В оставшейся части главы описывается принцип работы транслятора.

Как работает транслятор?

принцип работы транслятора прост. Он читает входной файл и записывает его в выходной файл. Если в этот момент транслятор обнаруживает проверяемое ключевое слово, то замещает его эквивалентным кодом на языке С++. Свойственная транслятору простота делает его очень полезным ДЛЯ

Для преобразования ехр-файла в стандартный файл с расширением срр обработайте его транслятором. Предположим, что исходный файл называется foreach.exp, тогда приведенная далее командная строка позволит транслировать его в чистый код на языке С++, который далее можно обрабатывать компилятором С++: trans foreach.exp foreach.срр

После трансляции с помощью приложения trans полученный файл foreach.cpp содержит профамму, приведенную в листинге 4.3.



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

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