for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Не фоксом единым
   :: Помощь сайту :: 

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

Сообщений: 1750
Откуда: Москва
Дата: 22.02.17 05:27:27ОтветитьЦитировать
есть 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
так кофе, как бэ башка не лопнула



Исправлено: alex;, 22.02.17 06:46
Ratings: 0 negative/0 positive

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

Сообщений: 1750
Откуда: Москва
Дата: 22.02.17 05:50:37ОтветитьЦитировать
собственно теория кратко походу здесь
www.ict.edu.ru
и здесь
easy-coding.blogspot.ru
Ratings: 0 negative/0 positive

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

Сообщений: 1750
Откуда: Москва
Дата: 22.02.17 06:38:53ОтветитьЦитировать
ха-ха
гугл сдался на 15 странице,
а яндекс начал предлагать sql-инъекции
Ratings: 0 negative/0 positive

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

Сообщений: 1750
Откуда: Москва
Дата: 22.02.17 07:02:57ОтветитьЦитировать
Цитата:
Кроме того, регулярные выражения .NET не дают возможности исполнения сторонних действий
в процессе нахождения шаблонов в строке.
Как-то странно
Ratings: 0 negative/0 positive

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

Сообщений: 1750
Откуда: Москва
Дата: 22.02.17 08:12:24ОтветитьЦитировать
похоже, так или иначе, придется
перечислять ключевые слова SQL
как терминатор запроса SQL
значит проще поправить грамматику SQL для анализатора
Ratings: 0 negative/0 positive

Re: Вопрос знактокам рег. выражений
Igor Korolyov

Сообщений: 32006
Дата: 22.02.17 13:11:34ОтветитьЦитировать
  
  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




Исправлено: Igor Korolyov, 22.02.17 13:11
Ratings: 0 negative/0 positive

Re: Вопрос знактокам рег. выражений
S-type

Сообщений: 2353
Дата: 22.02.17 14:23:01ОтветитьЦитировать
Igor Korolyov
Далее уже ИИ не справится, да и не всякий "натуральный И" справится

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

Re: Вопрос знактокам рег. выражений
S-type

Сообщений: 2353
Дата: 22.02.17 14:25:19ОтветитьЦитировать
alex;
есть sql server и сотни хранимых процедур и нет схемы данных

Похоже, кто то в начале длинного и увлекательного пути.
Ratings: 0 negative/0 positive

Re: Вопрос знактокам рег. выражений
Igor Korolyov

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

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


------------------
WBR, Igor
Ratings: 0 negative/0 positive

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

Сообщений: 1750
Откуда: Москва
Дата: 22.02.17 17:22:21ОтветитьЦитировать
Игорь, приветствую.

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

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

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

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

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

Как-то так.

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

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

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

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



Исправлено: alex;, 22.02.17 17:26
Ratings: 0 negative/0 positive

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

Сообщений: 1750
Откуда: Москва
Дата: 22.02.17 17:58:27ОтветитьЦитировать
S-type
alex;
есть sql server и сотни хранимых процедур и нет схемы данных

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

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

- вообще насрать.
Ratings: 0 negative/0 positive

Re: Вопрос знактокам рег. выражений
S-type

Сообщений: 2353
Дата: 22.02.17 18:20:32ОтветитьЦитировать
Немножко разовью мою мысль.

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

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

Re: Вопрос знактокам рег. выражений
S-type

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

Re: Вопрос знактокам рег. выражений
S-type

Сообщений: 2353
Дата: 22.02.17 18:47:25ОтветитьЦитировать
Можно ли обойтись только регулярными выражениями? Не уверен. Наверное, всё таки можно. Но, нужно ли? Как показывает практика - если тебе надо в "большой куче" найти что то, то - регулярка очень поможет. А если надо что то проанализировать - долго будешь регулярку отлаживать. К тому же, через год и не вспомнишь, как она работает.
Ratings: 0 negative/1 positive

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

Сообщений: 1750
Откуда: Москва
Дата: 22.02.17 19:31:22ОтветитьЦитировать
Сергей, спасибо, за ответы.
Блин, сейчас не буду их читать.

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

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

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

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

--шутка

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

отпишусь по-возможности
Ratings: 0 negative/1 positive

Re: Вопрос знактокам рег. выражений
PaulWist

Сообщений: 12947
Дата: 23.02.17 10:47:08ОтветитьЦитировать
Ни разу не видел автоматом сгенеренные бизнес правила, всегда видел кастомные метаданные описывающие бизнес логику, причем с кучей комментов, типа "тут играем, тут не играем, а тут рыбу заворачивали"
Поэтому, скорее всего придется брать "карандаш" и расписывать схему данных "руками"


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

Re: Вопрос знактокам рег. выражений
Igor Korolyov

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


------------------
WBR, Igor
Ratings: 0 negative/0 positive

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

Сообщений: 1750
Откуда: Москва
Дата: 23.02.17 21:34:46ОтветитьЦитировать
Ребят,
реально что хочется сделать
вот
groups.google.com
habrahabr.ru

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

не, сегодня отдыхаю
Ratings: 0 negative/0 positive

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

Сообщений: 1750
Откуда: Москва
Дата: 23.02.17 21:55:20ОтветитьЦитировать
просто, на тек. момент
у меня в избранном вот

[attachment 27093 ]

PS не до netbeans



Исправлено: alex;, 23.02.17 21:59
Ratings: 0 negative/0 positive


Вложения:
[Безымянный.jpg (44.9KB)]  

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

Сообщений: 1750
Откуда: Москва
Дата: 01.03.17 21:55:19ОтветитьЦитировать
Всем, спасибо.

Использую 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

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



Исправлено: alex;, 02.03.17 20:10
Ratings: 0 negative/0 positive



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

On-line: 43 Ytuzov  and Guests: 42


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