Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения, проанализировать текстовый файл через РВ 
:(
    Опции темы
Роман2
Дата 5.5.2014, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 23.6.2011

Репутация: нет
Всего: нет



На вход программы подается текстовый файл содержащий только описания переменных на Паскале. 
Проанализировать переменные при помощи регулярных выражений и выдать результат проверки о корректности, синтаксической ошибке или дублировании имени.
Я составил блок-схему. Но у меня не получается CASE и цикл в нормальной форме. 
Помогите, пожалуйста!  
Заранее благодарен. Роман.
PM MAIL   Вверх
Akella
Дата 5.5.2014, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Забыл задать вопрос.
PM MAIL   Вверх
Poseidon
Дата 5.5.2014, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Без формата текстового файла даже и подсказать нечего.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Роман2
Дата 6.5.2014, 02:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 23.6.2011

Репутация: нет
Всего: нет



как составить эту программу?
Текстовый файл:
Цитата

var i1,j2: integer;
r1,r2: real;
st1: string;
st2: string[5];
ar1: array [1..10,1..10] integer;


Это сообщение отредактировал(а) Poseidon - 6.5.2014, 08:48
PM MAIL   Вверх
Akella
Дата 6.5.2014, 09:03 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Роман2 @  6.5.2014,  02:48 Найти цитируемый пост)
как составить эту программу?


Открываешь Delphi, создаёшь новый проект и пишешь программу.
PM MAIL   Вверх
Роман2
Дата 6.5.2014, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 23.6.2011

Репутация: нет
Всего: нет



Допустим я составил программу по открытию файла txt.
Но мне нужно пробежаться по всем строкам через регулярные выражения и проверить, не ошибся ли я в правильности команд и переменных.


Как организовать построчную проверку?
Вначале я думаю нужно /^var/
А дальше?




Вот пример - извлечение чисел из введённой строки.
Код

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  // добавляем нужный модуль
  RegExpr in 'RegExpr.pas';

var
  // нам необходим экземпляр класса TRegExpr
  RegExp: TRegExpr;
  s: string;
  
begin
  // выводим запрос и считываем строку
  Write('Enter a string containing numbers: ');
  Readln(s);

  // создаём объект
  RegExp := TRegExpr.Create;

  // гарантирует освобождение занятой объектом памяти
  try
    // регулярное выражение находится в свойстве Expression
    RegExp.Expression := '-?\d+';
    // ищем первое совпадение с помощью функции
    // Exec(const AInputString : string) : boolean, которая вернет true,
    // если в строке AInputString будет найдено совпадение c
    // регулярным выражением, хранящимся в свойтве Expression
    if RegExp.Exec(s) then
    // если находим
    begin
      Writeln('Entered string contains numbers: ');
      repeat
      // выводим найденное выражение, которое хранится в Match[0]
        Writeln(RegExp.Match[0]);
      // и продолжаем поиск
      until not RegExp.ExecNext;
    end
    else
    // иначе - сообщаем, что ничего не нашли
      Writeln('Entered string contains no numbers!');
  finally
    RegExp.Free;
  end;
  Readln;
end.



M
Poseidon
Пользуйтесь кнопкой user posted image


Это сообщение отредактировал(а) Poseidon - 6.5.2014, 11:40
PM MAIL   Вверх
Akella
Дата 6.5.2014, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Модератор: пользуйтесь кнопкой КОД!!!!!!!!!!!!!!!!!!!

Добавлено через 20 секунд
Отредактируй своё сообщение.

Добавлено через 42 секунды
читать до просветления http://forum.vingrad.ru/forum/topic-353769.html
PM MAIL   Вверх
Роман2
Дата 6.5.2014, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 23.6.2011

Репутация: нет
Всего: нет



Как организовать построчную проверку?
Вначале я написал /^var/
А дальше?
у меня не получается CASE и цикл в нормальной форме
PM MAIL   Вверх
Poseidon
Дата 6.5.2014, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Роман2 @  6.5.2014,  10:52 Найти цитируемый пост)
Как организовать построчную проверку?

Самый простой способ - при помощи TStringList.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Роман2
Дата 6.5.2014, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 23.6.2011

Репутация: нет
Всего: нет



Или подскажите, где найти пример и разъяснение, как это сделать...
У меня не получается что-то.
PM MAIL   Вверх
bems
Дата 7.5.2014, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Нисходящий парсер, не регулярки


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Роман2
Дата 7.5.2014, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 23.6.2011

Репутация: нет
Всего: нет



Как нисходящий парсер мне поможет?
Ну, может быть, есть у кого-нибудь идеи?
PM MAIL   Вверх
Poseidon
Дата 7.5.2014, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Роман2 @  7.5.2014,  11:49 Найти цитируемый пост)
Ну, может быть, есть у кого-нибудь идеи? 

Какие идеи ты ждешь? Готовый код? Тебе тут подсказывают как могут, пора и свою голову включать. Начни с того, что справильно сформулируй вопрос. Потому как по фразам 
Цитата(Роман2 @  5.5.2014,  11:35 Найти цитируемый пост)
Я составил блок-схему. Но у меня не получается CASE и цикл в нормальной форме. 
Помогите, пожалуйста!  
Цитата(Роман2 @  6.5.2014,  02:48 Найти цитируемый пост)
как составить эту программу?
Цитата(Роман2 @  6.5.2014,  09:15 Найти цитируемый пост)
Как организовать построчную проверку?
Вначале я думаю нужно /^var/
А дальше?
 Не очень-то и понятно, а что вообще надо? Сначала case приплел, потом какой-то /^var/, потом построчную проверку. Потом пишешь, что нисходящий парсер тебе не поможет. Что надо вообще?



Это сообщение отредактировал(а) Poseidon - 7.5.2014, 13:23


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
bems
Дата 7.5.2014, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(Роман2 @  7.5.2014,  11:49 Найти цитируемый пост)
Как нисходящий парсер мне поможет?
сначала разбиваешь входной текст на лексемы, потом парсишь его сверху вниз. оригинальный паскаль парсился так, современные диалекты чуть посложнее

Добавлено через 11 минут и 16 секунд
Цитата(Poseidon @  7.5.2014,  13:22 Найти цитируемый пост)
 Сначала case приплел, потом какой-то /^var/, потом построчную проверку
ну case может быть в объявлении рекорда, а вот как в описании переменных может встретиться цикл "в нормальной форме" это да, загадка



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Poseidon
Дата 7.5.2014, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(bems @  7.5.2014,  15:30 Найти цитируемый пост)
ну case может быть в объявлении рекорда

Case вообще много где может быть в коде, но только каким он боком вообще тут упомянут
Цитата(Роман2 @  5.5.2014,  11:35 Найти цитируемый пост)
Я составил блок-схему. Но у меня не получается CASE и цикл в нормальной форме. 
???



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0970 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.