Здравствуйте, Ikemefula, Вы писали:
I>А ежели формат файлов может меняться довольно часто и там будут необязательные значения, что тогда ?
А он и меняется довольно часто, но в основном остается тем же. Просто конфигуришь и все.
Здравствуйте, Pzz, Вы писали:
Pzz>А если язык, на котором написаны эти файлы, не является регулярным языком, а, следовательно, не может быть разобран с использованием регулярных выражений?
Тогда пишешь подключаемую сборку на C#. Получаешь то же, что и при использовании самописного языка, но сборка скомпилируется, все будет летать и не будет прикольных багов.
Pzz>Ну это не говорит ни о чем.
Это говорит только о том, что нефиг писать парсер языка, если есть готовые.
Здравствуйте, olegkr, Вы писали:
Pzz>>А если язык, на котором написаны эти файлы, не является регулярным языком, а, следовательно, не может быть разобран с использованием регулярных выражений? O>Тогда пишешь подключаемую сборку на C#. Получаешь то же, что и при использовании самописного языка, но сборка скомпилируется, все будет летать и не будет прикольных багов.
Я не понимаю, каким образом подключаемая сборка на C# помогает парсить текст на языке, отличном от C#?
Pzz>>Ну это не говорит ни о чем. O>Это говорит только о том, что нефиг писать парсер языка, если есть готовые.
А если нет готового? Вот выдал вам заказчик задание — понимать текстовые файлы, которые выплевывает из себя программа, написаная на Коболе. Синтаксис этих файлов более-менее известен, но поменять его нельзя, поскольку Кобола никто уже не знает (да и вообще, кто ж вас пустит ковырать драгоценный доисторический код, написанный на нем?). Синтаксис при этом такой, что регулярными выражениями не обойдешься.
Здравствуйте, Pzz, Вы писали:
Pzz>Я не понимаю, каким образом подключаемая сборка на C# помогает парсить текст на языке, отличном от C#?
Про то, что бы парсить исходники программы ты не писал. Речь шла про текстовые файлы
А что вы будете делать, если вам поставят задачу читать данные из текстовых файлов в определенном формате, и при этом этот формат будет не XML?
Pzz>Ну и чего вы делать будете?
Зависит от того, что именно выплевывает.
Здравствуйте, olegkr, Вы писали:
Pzz>>Я не понимаю, каким образом подключаемая сборка на C# помогает парсить текст на языке, отличном от C#? O>Про то, что бы парсить исходники программы ты не писал. Речь шла про текстовые файлы
Я и сейчас об этом не пишу. Я спрашиваю, каким образом вы собираетесь парсить текстовые файлы, если нет готового парсера? И при чем здесь сборка на C#, раз уж вы ее приплели к вопросу?
Здравствуйте, Pzz, Вы писали:
Pzz>>>Я не понимаю, каким образом подключаемая сборка на C# помогает парсить текст на языке, отличном от C#? O>>Про то, что бы парсить исходники программы ты не писал. Речь шла про текстовые файлы
Pzz>Я и сейчас об этом не пишу. Я спрашиваю, каким образом вы собираетесь парсить текстовые файлы, если нет готового парсера? И при чем здесь сборка на C#, раз уж вы ее приплели к вопросу?
Предположу
Изобретет пару велосипедов, наплодит кучу багов, потом возьмет Dragon book.
Где-нибудь через полгода задача будет решена.
Шуткую. Не принимайте на свой счет.
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Предположу SVZ>Изобретет пару велосипедов, наплодит кучу багов, потом возьмет Dragon book. SVZ>Где-нибудь через полгода задача будет решена. SVZ>Шуткую. Не принимайте на свой счет.
Нет, потому что уважаемый olegkr — убежденный противник взятия в руки Dragon Book'а
Здравствуйте, Pzz, Вы писали:
Pzz>Я спрашиваю, каким образом вы собираетесь парсить текстовые файлы, если нет готового парсера?
Элементарно. Воспользуюсь методам класса String. И точно не буду городить лексический анализ логов типа
Здравствуйте, olegkr, Вы писали:
Pzz>>Я спрашиваю, каким образом вы собираетесь парсить текстовые файлы, если нет готового парсера? O>Элементарно. Воспользуюсь методам класса String. И точно не буду городить лексический анализ логов типа O>
Здравствуйте, olegkr, Вы писали:
O>Здравствуйте, Pzz, Вы писали:
Pzz>>Я спрашиваю, каким образом вы собираетесь парсить текстовые файлы, если нет готового парсера? O>Элементарно. Воспользуюсь методам класса String. И точно не буду городить лексический анализ логов типа O>
Здравствуйте, Ikemefula, Вы писали:
I>Вот не самый большой пример
Аналогично. Не вижу проблем разобрать его регулярными выражениями или тупым стрингом.
Здравствуйте, alf_kadett, Вы писали:
_>No hire, sorry.
Кстати, да. Неплохой тест на собеседовании. Позволяет отсеить "умников", которые ради решения элементарной задачи на пару дней будут год городить огород с зоопарком вместе взятые.
Здравствуйте, olegkr, Вы писали:
_>>No hire, sorry. O>Кстати, да. Неплохой тест на собеседовании. Позволяет отсеить "умников", которые ради решения элементарной задачи на пару дней будут год городить огород с зоопарком вместе взятые.
Да лучше сразу в объявлении писать: "в нашей компании самый умный оказывается самым крайним" — глядишь, умники сами отсеятся.
Здравствуйте, olegkr, Вы писали:
_>>No hire, sorry. O>Кстати, да. Неплохой тест на собеседовании. Позволяет отсеить "умников", которые ради решения элементарной задачи на пару дней будут год городить огород с зоопарком вместе взятые.
У нас используется тот подход, что ты забраковал. Парсер+свой язык+конфигуряние.
До того пять лет кодили всякое, с конфигурянием и без при том целой бандой. Теперь со всем справляется один человек, а файлов несколько сотен.
Что характерно, почти каждый новый челвоек задаётся тем же вопросом что и ты, только ни один не предложил достойную замену.
Собственно к языку пришлось прибегнуть по той причине, что объем текста для конфигуряния превысил все мыслимые и немыслимые пределы.
Здравствуйте, Ikemefula, Вы писали:
I>Что характерно, почти каждый новый челвоек задаётся тем же вопросом что и ты, только ни один не предложил достойную замену.
Стоит призадуматься почему так происходит.
I>Собственно к языку пришлось прибегнуть по той причине, что объем текста для конфигуряния превысил все мыслимые и немыслимые пределы.
Чем не подходит в качестве языка стандартный C#?
Здравствуйте, olegkr, Вы писали:
I>>Что характерно, почти каждый новый челвоек задаётся тем же вопросом что и ты, только ни один не предложил достойную замену. O>Стоит призадуматься почему так происходит.
Потому что ткнуть пальцем в известную всем проблему очень, очень легко. А закрыть её так, чт бы не потратить лишнего времени очень, очень сложно. Новичкам очень хорошо удаётся первое и очень плохо — второе.
I>>Собственно к языку пришлось прибегнуть по той причине, что объем текста для конфигуряния превысил все мыслимые и немыслимые пределы. O>Чем не подходит в качестве языка стандартный C#?
Каким образом ты это себе представляешь ? Слишком общий вопрос.
файлы(всё множество) хранят состояние объектной модели с рутовым объектом.
Подобное в БД решается через хибернейт, только ни один движок БД не дает нужного перформанса да и sql нам ни к чему.
с каждым файлом проводятся две операции чтения и две операции записи, для каждой из них свой конфиг и файлов таких пару сотен, точно не помню.
конфиг задаёт структуру и типы данных(формат) + определенный код для выполнения каждой из операций на поле, строку, файл.
при этом входной/выходной файл может быть как текстовый с разделителями так и xml.
при чтении нужно проверять возможные ошибки и тд и тд.
все конфигуряние в одном xml файле, который около 100 кб. весом.
как образом ты хочешь пользовать здесь C# что бы все было достаточно наглядно, быстро и гладко ?
Поначалу был вариант такой — в конфиге просто прописывались методы из сборки на C#. Слишком много кода было и этот подход умер сам собой.
разумеется, общие фразы вроде "если задача решается на языке X то она решается и на языке Y" можешь оставить себе.
Здравствуйте, olegkr, Вы писали:
I>>Вот не самый большой пример O>Аналогично. Не вижу проблем разобрать его регулярными выражениями или тупым стрингом.
Разобрать что бы просто прочтать в память так и делается, поддержваютя обязательные-необязателные значения, кавычки и даже обязательные-необязательные колонки, произвольный порядок колонок этих и тд и тд.
все это делатся просто — разбором, правда безо всяких регулярных выражений, на выходе получается заполненый data-table.
А далее надо над каждым элементом, над каждой строчкой и над всем файлом выполнить определенные операции в зависимости от операции.
Здравствуйте, Ikemefula, Вы писали:
I>как образом ты хочешь пользовать здесь C# что бы все было достаточно наглядно, быстро и гладко ?
Пишешь на C# сборку, которая берет в качестве параметра конфиг и по нему разбирает текстовый файл. Подключаешь ее, как плагин к основной программе. Если надо разбирать хитровы..тый формат, пишешь сборку заточенную под него, если есть варианты данного формата, то цепляешь к ней еще и конфиг. Потом ассоциируешь тип файла со сборкой и конфигом. Все.
I>разумеется, общие фразы вроде "если задача решается на языке X то она решается и на языке Y" можешь оставить себе.
Я не вижу преимуществ использования собственного языка в данном случае. Как я понял он делает точно то же самое, что я написал выше.
Здравствуйте, Ikemefula, Вы писали:
I>А далее надо над каждым элементом, над каждой строчкой и над всем файлом выполнить определенные операции в зависимости от операции.
Описываешь эти операции на C#. Если есть повторяющиеся или похожии операции, то группируешь их в одну сборку и цепляешь к ней конфиг. Нет, я правда не понимаю в чем сложности.