Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2011, 15:32   #1
Alexar Makken
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 19
По умолчанию Программа разделения текста на лексемы

Задание
1.Написать программу разделения текста на лексемы
Входные данные: файл с текстом программы
Выходные данные: файл с номерами групп лексем, 1 лексема в строке.

2.Программа должна обрабатывать, по крайней мере одну ошибочную ситуацию: использование недопустимых символов.

Помогите справиться со вторым пунктом. Например при наличии в файле с текстом программы "Program1" русских символов, в файл "test.Lex" должно выводиться сообщение об ошибке
Программа в которой должна происходить обработка ошибок "Выделяет только текстовые лексемы".
Обработка должна происходить примерно в куске кода
Код:
while i <= length(str)do
   begin
    {в зависимости от типа текущего символа переходим на выделение слов, чисел,разделителей,знаков операций,скобок и других нам нужных конструкций}
    case str[i] of
     'A'..'Z', 'a'..'z': begin
                          lex:=getword(str, i);
                          writeln(fout, lex, '- 1');
                          i:=i+length(lex);
                         end;
     '0'..'9':          begin
                          writeln(fout, str[i], '- 2');
                          i:=i+1;
                         end;
     '+','-','*','/':   begin
                          writeln(fout, str[i], '- 3');
                          i:=i+1;
                         end;
   else
    i:=i+1;
   end;
  end;
 end;
 {закрываем файлы в обратном порядке,если файлы не закрыть,то данные могут быть утеряны}
 close(fout);
 close(f);
End.
Вложения
Тип файла: zip Архив.zip (2.0 Кб, 10 просмотров)
Alexar Makken вне форума Ответить с цитированием
Старый 21.05.2011, 04:12   #2
xakkkkker
Форумчанин
 
Аватар для xakkkkker
 
Регистрация: 15.12.2007
Сообщений: 226
По умолчанию

А что тут такого трудного. Работал с Ascii кодами?
Вот смотри ты в цикле перебираешь каждую букву в строке.
Смотришь ее Ascii код и проверяешь русская ли эта буква.
ее код должен быть больше или равно кода наименьшей русской буквы и меньше или равно
наибольшего кода русской буквы. Это будет русская буква. Выводишь ошибку.
Примерно так, если я правильно понял задачу.
xakkkkker вне форума Ответить с цитированием
Старый 21.05.2011, 04:20   #3
xakkkkker
Форумчанин
 
Аватар для xakkkkker
 
Регистрация: 15.12.2007
Сообщений: 226
По умолчанию

А что тут такого трудного. Работал с Ascii кодами?
Вот смотри ты в цикле перебираешь каждую букву в строке.
Смотришь ее Ascii код и проверяешь русская ли эта буква.
ее код должен быть больше или равно кода наименьшей русской буквы и
меньше или равно наибольшего кода русской буквы. Это будет русская
буква. Выводишь ошибку.
Примерно так, если я правильно понял задачу.
Вот ASCII код для русских букв http://www.industrialnets.ru/files/misc/ascii.pdf
xakkkkker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа разделения экрана на несколько частей ArtInt Софт 8 14.05.2012 10:29
Разбивка строки на лексемы Proger_1 Общие вопросы C/C++ 3 29.03.2010 20:38
Лексемы в С\С++ Айдар Помощь студентам 9 08.03.2010 21:22
Delphi лексемы Toni Milano Помощь студентам 3 17.11.2009 07:30
Команда разделения дробного числа Drakulov Общие вопросы C/C++ 18 27.05.2009 10:05