А кто-нибудь пробовал написать СУБД?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: А кто-нибудь пробовал написать СУБД?

Сообщение MIT » 29.01.2009 (Чт) 2:09

Нет. По второму нашел кучу теории, время будет - почитаю, а по первому быстрый поиск по Яндексу умного много не выявил, так, по мелочи.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: А кто-нибудь пробовал написать СУБД?

Сообщение SLIM » 30.01.2009 (Пт) 2:23

tyomitch писал(а):Гениально. Такое описание языка называется грамматикой. (Она может быть рекурсивной и в этом принципиально сложнее регэкспа.)
Для грамматик есть стандартные форматы, и есть "общепринятые" тулзы, которые по грамматике генерируют парсер.

Парсер сам по сути состоит из синтаксического\грамматического анализатора...например сначала можно проверять ситаксис, потом грамматику....или наоборот. Тут на самом деле гениального то ничего нет (или это ты меня так подколол?)

По поводу рекурсии....там вообще очень сложно. Начиная от построения деревьев заканчивая....хз чем

tyomitch писал(а):Я свой "универсальный парсер", слава богу, не писал. Взял готовый с полки, когда писал недо-компилятор недо-бейсика.

А недо-компилятор недо-
tyomitch писал(а):Тем не менее, курс парсинга у меня за плечами есть, и как примерно работают такие парсеры, -- я представляю себе.
бэйсика еще валяется на полке? :alien:
Я и не говорил что ты прям писал универсальный парсер. Просто предполагаю что в этой области ты знаешь много, и если бы возникла нужда написать такой - написал бы
tyomitch писал(а):Уверяю, там всё гораздо интереснее, чем в типичных дилетантских поделках из Split/Mid, вороха условий, и рулона изоленты, чтобы всё не развалилось.
Это я к тому, что написание парсера стоит начинать с теории.

Я сначала тоже думал что все только в работе со строками....ан нет. Там действительно интересная область.

Теорию же я изучать начал еще месяц назад. Первой мне попалась книжка "Синаксический анализатор" изданная...внимание.....в 1985 г. Там даже примеры на паскале есть. Но ценна она свое теорией посторения алгоритмов (к сожалению тогда не было слова парсинг, и применялось аналогичное ему синаксический анализ)

Хакер писал(а):Дело в том, что многие языки настолько сложны (в плане грамматики), что не могут быть описаны такими вот правилами. А то, что описываешь ты, по сути — регулярные выражения.


Вот только недавно я наткнулся на регулярные выражения и понял что это то же самое (почти)
Хакер писал(а):Но на деле же оказывается, что большинство языков нельзя разобрать используя regexp-ы. Более того, то, что ты сейчас написал, вызывает подозрение о неполном знании SQL (это не упрек, я его, например, тоже не досканально знаю).

Ну это только пример был ведь. С те же select куча вариантов (и ты ихперечислил). Просто первое что пришло на ум...

Хакер писал(а):Разбиение — это очень сложно. Чтобы правильно разбить, нужно обработать полностью.

Так я и не сказал что это просто, я сказал что это стандартно. По сути же разбиение - это половина парсера. Вторая половина - "узнать" правильное положение токенов

Хакер писал(а):Вот например VB-код. Чтобы разбить его на statement-ы, нельзя просто взять и сделать Split(..., vbCrLf). Во-первых, vbCrLf не всегда означает конец statement-а, если перед CRLF стоит символ _ , то данный CRLF не является концом Statement-а. Во-вторых, Statement заканчивается не только на CRLF, а ещё двоеточие может разделять statement-ы.

Предположим, у нас VB-шный сплит понимал бы рег. выражения. Но мы всё равно не могли бы заюзать (\r\n|:) в качестве разделителя. Потому что двоеточике не всегда однозначно делит два statement-а. Оно может быть элементом конструкции := (при передачи некоторых именованых аргументов), оно может быть концом метки, не говоря уже о том, что оно может находиться внутри строки.

Возвращаясь к CRLF, то там символ _ будет подавлять CRLF только в том случае, если это отдельный символ, а не часть идентификатора (например CallMe_ ).


Тут у меня мысли такие. В любом случае допустим пробелы есть. Первично можно разбить по пробелам. Потом пробовать проверять "орфографию". Например на тот же :=. Допустим "...select(a,b,c) from" Мы разделим на две части "select(a,b,c)" и "from". Где по правилу from-это kwd, а вот с первым будем работать - его мы разобьем тоже на kwd-ы - скобки, запятые, переменные и сам select.

По поводу например _ - тут нужно анализировать правый и левый токены от текущего. Если правый токен - "_", то его мы просто отбросим и будем анализировать дальше...

Ну это все так - наметки, сейчас совсем не до этого, поэтому ничего еще не подтверждено практикой...


В остальном - имея универсальный парсер, недалеко и до анализа синтаксиса, орфографии, лексики и т.д. своего компилятора например. Или например той же СУБД. Это уже 1\4. А я как говорил хотел бы диплом написать....
Пишите жизнь на чистовик.....переписать не удастся.....

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: А кто-нибудь пробовал написать СУБД?

Сообщение tyomitch » 30.01.2009 (Пт) 11:45

SLIM писал(а):В остальном - имея универсальный парсер, недалеко и до анализа синтаксиса, орфографии, лексики и т.д. своего компилятора например. Или например той же СУБД. Это уже 1\4. А я как говорил хотел бы диплом написать....

Разница в том, что в продвинутых институтах свой компилятор -- это не диплом, а обязательная работа на зачёт по одному из курсов ;-)

Написать нормальный унипарсер всем форумом было бы весьма интересно :-)
Изображение

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: А кто-нибудь пробовал написать СУБД?

Сообщение SLIM » 30.01.2009 (Пт) 12:09

tyomitch писал(а):Разница в том, что в продвинутых институтах свой компилятор -- это не диплом, а обязательная работа на зачёт по одному из курсов ;-)

Возможно. Я пока на первом курсе. Может и у меня будет
tyomitch писал(а):Написать нормальный унипарсер всем форумом было бы весьма интересно :-)

Не получится. Ты же сам об этом знаешь. Вот если кто-то начнет и начнется обсуждение, то да, возможно что-то выйдет
Пишите жизнь на чистовик.....переписать не удастся.....

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: А кто-нибудь пробовал написать СУБД?

Сообщение tyomitch » 30.01.2009 (Пт) 12:19

Так что, начинай ;-)
Обсуждение уже есть.

Если будут предметные вопросы, охотно поддержу.
Изображение

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: А кто-нибудь пробовал написать СУБД?

Сообщение SLIM » 30.01.2009 (Пт) 12:40

tyomitch писал(а):Так что, начинай ;-)
Обсуждение уже есть.

Если будут предметные вопросы, охотно поддержу.

Ок, это очень хорошо.

Вот скачал твой eval. Сижу разбираюсь.

Начать нужно видимо с определений
1. Что такое парсер
2. Что такое эвалютар
3. Что такое КА
4. Что такое регулярные выражения
Пишите жизнь на чистовик.....переписать не удастся.....

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: А кто-нибудь пробовал написать СУБД?

Сообщение tyomitch » 30.01.2009 (Пт) 14:00

1. анализатор текста
2. вычислитель выражений
3. конечный автомат (см. учебник или вики)
4. способ задать язык, распознаваемый КА (см. учебник или вики)

3,4: каждому посвящён здоровый кусок теории. Я могу и сюда скопипастить, но не вижу в этом смысла.
Изображение

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: А кто-нибудь пробовал написать СУБД?

Сообщение SLIM » 30.01.2009 (Пт) 14:22

ыы, уже посмотрел
Пишите жизнь на чистовик.....переписать не удастся.....

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Re: А кто-нибудь пробовал написать СУБД?

Сообщение Zenitchik » 31.01.2009 (Сб) 22:24

Очень рекомендую книгу "Основы построения трансляторов" Ю.Г.Карпова. Купил со скуки, когда почитать было нечего, но теперь это моя настольная книга. Увы, не все пока освоил, но уверенно пишу КА, немного менее уверенно МП-автоматы и чую, что на верном пути.

Единственное что не понял - как проектировать язык. Все известные мне формы записи грамматик Хомского слишком громоздки, чтобы ими было удобно описывать синтаксис в процессе его (синтаксиса) разработки.
Знание английского языка - затрудняет понимание кода

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: А кто-нибудь пробовал написать СУБД?

Сообщение SLIM » 31.01.2009 (Сб) 23:57

Есть у меня такая книжка. Скоро начну читать.
Zenitchik писал(а):и чую, что на верном пути.

А какой твой путь?
Пишите жизнь на чистовик.....переписать не удастся.....

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Re: А кто-нибудь пробовал написать СУБД?

Сообщение Zenitchik » 02.02.2009 (Пн) 12:05

Я имел в виду путь к освоению методов разработки формальных языков.

Вчера в ходе разработки очередного КА (состояний на 30) допер до следующих шагов:
1. Описание языка в формате расширенной нотации Бэкуса - Наура, только немного подробнее (если правые части продукций совсем не похожи - записывал в разные строки) - удобно делать в текстовом редакторе типа np++;
2. По нотации строил синтаксическую диаграмму - тут лучше ручки бумаги еще ничего не придумали;
3. По диаграмме - граф переходов;
4. По графу - писал код (помечая галочками узлы по мере их описания :D ).

UPD:
Жаль, не придумал, как граф переходов в коментарии засунуть :D Обошелся нотацией.
Знание английского языка - затрудняет понимание кода

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: А кто-нибудь пробовал написать СУБД?

Сообщение tyomitch » 02.02.2009 (Пн) 13:49

Zenitchik писал(а):Жаль, не придумал, как граф переходов в коментарии засунуть :D Обошелся нотацией.

Картинку в base64 и в каменты :lol:


Серьёзно: в проект можно добавлять как related files хоть рисунки, хоть доки. При компиляции игнорируются. Вроде бы, именно для таких случаев нужная возможность.
Изображение

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: А кто-нибудь пробовал написать СУБД?

Сообщение SLIM » 02.02.2009 (Пн) 22:32

Люди а посвятите о чем вы. А то что-то я не въехал. Состояний "не въехал" бывает два
1) Не въехал
2) Не въехал вааще

У меня второе
Пишите жизнь на чистовик.....переписать не удастся.....

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Re: А кто-нибудь пробовал написать СУБД?

Сообщение Zenitchik » 02.02.2009 (Пн) 22:46

SLIM
Книжку почитай :D
Знание английского языка - затрудняет понимание кода

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: А кто-нибудь пробовал написать СУБД?

Сообщение SLIM » 02.02.2009 (Пн) 23:20

Ты кстати тоже не пропадай на всякий случай ))))
Пишите жизнь на чистовик.....переписать не удастся.....

Пред.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

    TopList  
cron