Реферат: Системное программное обеспечение

cin.putback(ch);

cin >> number_value;

return curr_tok=NUMBER;

Поскольку оператор >> может читать константу с плавающей точкой типа double, программа тривиальна: прежде всего начальный символ (цифра или точка) возвращается назад в cin, а затем константу можно считать в number_value. Имя, т.е. лексема NAME, определяется как буква, за которой может идти несколько букв или цифр:

if (isalpha(ch)) {

char* p = name_string;

*p++ = ch;

while (cin.get(ch) && isalnum(ch)) *p++ = ch;

cin.putback(ch);

*p = 0;

return curr_tok=NAME;

}

Этот фрагмент программы заносит в name_string строку, оканчивающуюся нулевым символом. Функции isalpha() и isalnum() определены в <ctype.h>.

Результат isalnum(c) ненулевой, если c - буква или цифра, и нулевой в противном случае.

Приведем функцию ввода полностью:

token_value get_token()

{

char ch;

do { // пропускает обобщенные пробелы за исключением '\n'

if(!cin.get(ch)) return curr_tok = END;

} while (ch!='\n' && isspace(ch));

switch (ch) {

case ';':

case '\n':

cin >> ws; // пропуск обобщенного пробела

return curr_tok=PRINT;

case '*':

case '/':

case '+':

К-во Просмотров: 512
Бесплатно скачать Реферат: Системное программное обеспечение