:: Не фоксом единым
Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
есть sql server и сотни хранимых процедур
и нет схемы данных

захотелось получить из хранимок табличку связей
из запросов типа
select ...
from tab1 t1, tab2 t2...
where t1.f1 = t2.f2 and t2.f5 = t1.f2 ...
таблицу
ид_связи|таб1|таб2|поле_таб1|поле_таб2

я подумал сначала натравить на хранимки синт. анализатор antlr
но интересно можно ли решить эту задачу с пом. регулярных выражений.

если знаете ресурс где об этом рассказано или расскажут, порекомендуйте

ЗЫ ага вот еще нашел интересностьhabrahabr.ru
так кофе, как бэ башка не лопнула



Исправлено 3 раз(а). Последнее : alex;, 22.02.17 07:46
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
собственно теория кратко походу здесь
www.ict.edu.ru
и здесь
easy-coding.blogspot.ru
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
ха-ха
гугл сдался на 15 странице,
а яндекс начал предлагать sql-инъекции
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
Цитата:
Кроме того, регулярные выражения .NET не дают возможности исполнения сторонних действий
в процессе нахождения шаблонов в строке.
Как-то странно
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
похоже, так или иначе, придется
перечислять ключевые слова SQL
как терминатор запроса SQL
значит проще поправить грамматику SQL для анализатора
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
select t1.some,
(select t3.other
from t3
where t3.id = t1.id and t3.id2=t2.id2)
from t1 left join
(select id, num1*100+num2 id2
from t0
where discr='K1') t2
on t2.id = t1.id
Ну ка, найди тут взаимосвязи между таблицами - безо всяких регулярных выражений, просто вручную

IMHO максимум что можно поручить "автомату", это найти в каких ХП какие таблицы используются - благо в словаре данных такая инфа должна быть. Далее уже ИИ не справится, да и не всякий "натуральный И" справится


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 22.02.17 14:11
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
S-type

Сообщений: 2969
Дата регистрации: 24.04.2004
Igor Korolyov
Далее уже ИИ не справится, да и не всякий "натуральный И" справится

Ну, если ИИ в шахматы человека обыграл - может и тут справится...
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
S-type

Сообщений: 2969
Дата регистрации: 24.04.2004
alex;
есть sql server и сотни хранимых процедур и нет схемы данных

Похоже, кто то в начале длинного и увлекательного пути.
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Не, ну на самом то деле он справится - оптимизатор СУБД разберёт конструкцию и составит какой-то "хитрый план" её исполнения Правда в нём, скорее всего, не будет в явном виде фигурировать "логическая связанность таблиц по таким-то полям". Тем более что для приведенного примера такого рода "связь" мне лично видится как раз таки "нелогической" Но оно сплошь и рядом встречается в реальном коде - те же сцепки по комбинациям полей год/месяц - когда с равенством, когда со сравнением на >...
Ну не могу я сказать что приход, расход и остатки логически связаны "по году и месяцу" - хотя в коде обработки оно так наверняка будет прописано!

Если в БД в принципе нет констрейнов ссылочной целостности, плюс гениальные 3-4 буквенные имена-аббревиатуры на русско-английском языке, то автору можно лишь посочувствовать - его действительно "послали" далеко и надолго


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
Игорь, приветствую.

Не все так плохо.
Контроль целостности оставим пока за кадром.

Ты прав процедуры скомпилированы соответственно варианты неоднозначности отсечены
я про твой пример.

Работа современного анализатора - это
разбор входного потока символов или токенов,
по имеющейся грамматике. В ходе его работы происходят
какие-то события в т.ч. и исключения.

Немного изменить обработку событий и все.

Я считаю задачка интересная, т.е. ее можно применить к реальным вещам.

Как-то так.

Цитата:
Ну не могу я сказать что приход, расход и остатки логически связаны "по году и месяцу" - хотя в коде обработки оно так наверняка будет прописано!

Это очевидно.

Мне интересна сама задача так как я ее сформулировал. Ни больше, ни меньше.

Остальное что ты упомянул не мое, построение схем дело архитекторов и аналитиков.



Исправлено 1 раз(а). Последнее : alex;, 22.02.17 18:26
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
S-type
alex;
есть sql server и сотни хранимых процедур и нет схемы данных

Похоже, кто то в начале длинного и увлекательного пути.

Учитывая, что жисть - это смертельно опасный и зачастую болезненный трюк,

- ваще насрать.
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
S-type

Сообщений: 2969
Дата регистрации: 24.04.2004
Немножко разовью мою мысль.

alex;
захотелось получить из хранимок табличку связей
из запросов типа

Захотел получить таблицу связей не для того, что бы просто на неё посмотреть. Собственно, табличка связей - это только первый шаг. Наверняка - надо что то доделать/переделать...
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
S-type

Сообщений: 2969
Дата регистрации: 24.04.2004
По поводу "как построить таблицу связей" можно раскинуться мыслью по древу... В институте был курс по лексическим анализаторам и компиляторам. Как сейчас помню аббревиатуры НКА, ДКА... Если посмотреть на сайте Oracl-а синтаксис команды select docs.oracle.com можно увидеть кучу стрелочек, квадратиков и кружочков - это нарисованный конечный автомат (КА). Правда, он нарисован по частям, и ещё надо собрать его в общую кучу. Предположим, собрали. При этом есть "точка входа", из этой точки выходят стрелки, у каждой стрелки подпись. В двух слова - алгоритм таков. Хранимая процедура - это некая последовательность лексем. Становимся на "точку входа", берём по очереди по одной лексеме и сравниваем с ветками, которые выходят из точки. Совпало - переходим в новую точку, берём следующую лексему и сравниваем... Если в итоге все лексемы кончились - значит, разобрали успешно. Если лексема есть, а соответствующая стрелочка отсутствует - либо ошибка в КА (и его надо дорисовать/перерисовать). Либо, ты где то ошибся. Потом то же самое надо реализовать "в коде". По ходу разора лексем будет заполняться таблица связей. Как то так.
Ratings: 0 negative/1 positive
Re: Вопрос знактокам рег. выражений
S-type

Сообщений: 2969
Дата регистрации: 24.04.2004
Можно ли обойтись только регулярными выражениями? Не уверен. Наверное, всё таки можно. Но, нужно ли? Как показывает практика - если тебе надо в "большой куче" найти что то, то - регулярка очень поможет. А если надо что то проанализировать - долго будешь регулярку отлаживать. К тому же, через год и не вспомнишь, как она работает.
Ratings: 0 negative/1 positive
Re: Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
Сергей, спасибо, за ответы.
Блин, сейчас не буду их читать.

Просто мозги не получается выключить.

--небольшое отступление
--мне за 40
--глобальная задача №1
--изменить мир к лучшему

--глобальная задача №2
--не позволить никому мешать пункту №1

--глобальная задача №3
--поскольку гормональные проблемы какбэ уже не так важны
--увеличивать объем и ускорять восприятие полученной информации
--и продолжать давить всех вокруг своим интелектом
--эт поскольку все вокруг мешают пункту №1
--и действительно политика присутствует в нашей жизни в какой-то мере
--моя политика - моя жизнь мои правила
--не стыкуется с политикой других

--шутка

я извиняюсь, честно

отпишусь по-возможности
Ratings: 0 negative/1 positive
Re: Вопрос знактокам рег. выражений
PaulWist

Сообщений: 14616
Дата регистрации: 01.04.2004
Ни разу не видел автоматом сгенеренные бизнес правила, всегда видел кастомные метаданные описывающие бизнес логику, причем с кучей комментов, типа "тут играем, тут не играем, а тут рыбу заворачивали"
Поэтому, скорее всего придется брать "карандаш" и расписывать схему данных "руками"


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/1 positive
Re: Вопрос знактокам рег. выражений
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
А, ну если "практическое использование" не интересует, тогда да, вопросы отпадают
Но я бы тоже не стал это делать регулярками (в смысле ВСЮ задачу). Тут Сергей совершенно прав - регулярки лишь небольшая часть разбора синтаксической конструкции - потом уже она "не катит". И да, разбирать придётся ВСЁ, не только "связи в ON и WHERE".
Естественно разобрать логическую связь которая проходит через другую ХП (такое бывает) не выйдет в любом случае, т.к. все "выходы вовне" будут по сути чёрными ящиками.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
Ребят,
реально что хочется сделать
вот
groups.google.com
habrahabr.ru

а остальное так игры разума

не, сегодня отдыхаю
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
просто, на тек. момент
у меня в избранном вот

[attachment 27093 ]

PS не до netbeans



Исправлено 1 раз(а). Последнее : alex;, 23.02.17 22:59
Ratings: 0 negative/0 positive
Re: Вопрос знактокам рег. выражений
alex;
Автор

Сообщений: 2852
Откуда: Москва
Дата регистрации: 23.11.2004
Всем, спасибо.

Использую antlr.

Если кому интересно...
эта штука генерит лексеры и парсеры на разных языках,
по-умолчанию java.

habrahabr.ru
www.youtube.com

сборка самого antlr
set PATH=c:\apache-maven-3.3.9\bin\;%PATH%
rem mvn -DskipTests install
mvn install -DskipTests=true

генерация парсеров

c:\dev\antlr4\grammars-v4-master\tsql\gen_java.cmd
java -jar c:\dev\antlr4\tool\target\antlr4-4.7-SNAPSHOT-complete.jar -o Generated_Java tsql.g4
pause

добавляем в tsql.g4:
options
{
language = CSharp;
}

c:\dev\antlr4\grammars-v4-master\tsql\gen_csharp.cmd
java -jar c:\dev\antlr4\tool\target\antlr4-4.7-SNAPSHOT-complete.jar -o Generated_Csharp tsql.g4
rem java -jar c:\antlrworks2\antlrworks2\modules\ext\antlr4.jar -o Generated_Csharp tsql.g4
pause

собрать c:\dev\antlr4\runtime\CSharp\runtime\CSharp\Antlr4.vs2013.sln

создать проект и добавить в него ссылку
c:\dev\antlr4\runtime\CSharp\runtime\CSharp\Antlr4.Runtime\bin\net35\Release\Antlr4.Runtime.dll

ну дальше, поправить код парсеров...



Исправлено 1 раз(а). Последнее : alex;, 02.03.17 21:10
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 7 (Гостей: 7)

© 2000-2024 Fox Club 
Яндекс.Метрика