powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Создание парсера...
16 сообщений из 16, страница 1 из 1
Создание парсера...
    #33198758
Soldat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите выделить функциональные блоки или структуру программы.
Цель: Программа-Парсер pas файлов.
Задача: Анализ всех встречающихся выражений и вынос строковых выражений содержащих русские буквы в Раздел Resourcestring.
Выражения должны собиратся в "жадном" режиме, т.е.
выражение вида
Код: plaintext
myVar:= 'Стандартное сообщение'#$D#$A'Сообщение вида xxx' + ' еще что-то' + IntToStr (myIVar);
Должна выделить весь кусок кроме IntToStr (myIVar), т.е. на выходе должно получится:
Код: plaintext
1.
2.
3.
Resourcestring
RessParam01:= 'Стандартное сообщение'#$D#$A'Сообщение вида xxx' + ' еще что-то';
...
myVar:=  RessParam01 + IntToStr (myIVar);
...
Рейтинг: 0 / 0
Создание парсера...
    #33198796
Paul Sacks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам надо что-то писать по типу ситаксического анализатора.
Мы такое когда-то писали на лабораторных по стекам...
...
Рейтинг: 0 / 0
Создание парсера...
    #33198808
Soldat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно чуть по подробнее?
...
Рейтинг: 0 / 0
Создание парсера...
    #33198837
Paul Sacks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это теория на многих листах. Поищите в интернете, уверен, имеются уже готовые решения.
...
Рейтинг: 0 / 0
Создание парсера...
    #33198856
Soldat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)
Я же не прошу пересказывать теорию...
Хотя может быть это было бы полезным
Я какраз и прошу дать мне "зацепки" ключевые слова и понятия для поиска необходимой информации в сети.
Извените за назойливость.
...
Рейтинг: 0 / 0
Создание парсера...
    #33198881
lou
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большие теоретические работы
Ахо А., Ульман Дж. Том 1. Теория синтаксического анализа, перевода и компиляции. Синтаксический анализ
Том 2. Теория синтаксического анализа, перевода и компиляции. Компиляция

На www.poiskknig.ru по ключевым словам "Ахо Ульман" выпадают ссылки на эти файлы

Успехов
...
Рейтинг: 0 / 0
Создание парсера...
    #33198950
Soldat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Создание парсера...
    #33199827
MegaLamos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще про Lexx и Yacc можешь почитать (ну или про их клоны)
...
Рейтинг: 0 / 0
Создание парсера...
    #33201039
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, вы что - озверели ?
Из-за такой задачки полноценный компилятор писать - это ж
ума лишиться нужно. Взять lex, его должно хватить. можно на Перле
или ПХП строковые выражения анализировать. Нам нужно :
1) выкинуть комменты
2) между ; и ; найти куски, где есть кавычки.
3) выбрать из такого куска наиболее длинные послед. вида
X + Y +...
4) сделать замену.
5) все !

Washington Irving
...
Рейтинг: 0 / 0
Создание парсера...
    #33201548
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SoldatДолжна выделить весь кусок кроме IntToStr (myIVar),
А заодно написать мейл руководителю проекта, чтобы тот настучал по голове тому, кто засунул туда этот IntToStr вместо использования функции Format

Если хотите, возьмите http://softwarer.ru/Files/Colorer.rar . Потребуется только минимально дописать, чтобы он понимал "вкрапления" # и ^ символов.
...
Рейтинг: 0 / 0
Создание парсера...
    #33202570
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видел статейку про синтаксические анализаторы на основе конечных автоматов. Вроде всё просто. На основании этой статьи написал свой синтаксический парсер sql-запросов.
_______________________________________________________
Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...!
...
Рейтинг: 0 / 0
Создание парсера...
    #33202639
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лиман Артём
Читайте лучше классиков - в данном случае Книга дракона .
...
Рейтинг: 0 / 0
Создание парсера...
    #33203916
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Лиман Артём
Читайте лучше классиков - в данном случае Книга дракона .

ну я ж компиляторы не пишу, да и автору топика думаю это не нужно..
...
Рейтинг: 0 / 0
Создание парсера...
    #33204665
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лиман Артём
Нда. Просто нечего сказать.
...
Рейтинг: 0 / 0
Создание парсера...
    #33204715
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лиман Артёмнаписал свой синтаксический парсер sql-запросовнасколько хорошим получился парсер? разбирает ли запросы с union, вложенные подзапросы как поля и как таблицы?
...
Рейтинг: 0 / 0
Создание парсера...
    #33204769
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rcryo Лиман Артёмнаписал свой синтаксический парсер sql-запросовнасколько хорошим получился парсер? разбирает ли запросы с union, вложенные подзапросы как поля и как таблицы?

парсер мне нужен был простой, без полной поддержки 92.
умеет разбирать запросы типа
Код: plaintext
1.
2.
select a,b, c, 'bla bla', getdate(), func( d ) from table
where (f like '%zzz' and g < getdate()) or h =  1 
большего мне просто не нужно было. при желании конечно можно расширить.


softwarerНда. Просто нечего сказать.
не понял, я что, что то не так сказал?
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Создание парсера...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]