Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> написал лексический анализатор, вот... 
:(
    Опции темы
setq
Дата 28.12.2005, 03:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











написал на питоне лексический анализатор. (как говорится "ещё один"). сейчас буду на его примере учиться создавать "устанавливающийся пакет".

оставляю здесь для интересующихся.

(советы всегда интересны)

Это сообщение отредактировал(а) setq - 28.12.2005, 03:16

Присоединённый файл ( Кол-во скачиваний: 44 )
Присоединённый файл  scanner.rar 2,97 Kb
  Вверх
bialix
Дата 5.1.2006, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.7.2005

Репутация: нет
Всего: нет



а что такое "устанавливающийся пакет"?

PM MAIL WWW   Вверх
setq
Дата 6.1.2006, 00:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ну. который грамотно прописывает себя в site-packages/ . в общем, на самом деле хотелось бы познакомиться с пакетом distutils (кажется так называется).
  Вверх
cardinal
Дата 6.1.2006, 03:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



А что без установки работать не будет? И где .exe в архиве? Хотел запустить, а запускать нечего... smile Видать потому, что это какая-нибудь особенность Python'а.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
setq
Дата 6.1.2006, 10:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











анализатор представляет из себя модуль на языке Python (scan.py) smile

.exe пока нет
  Вверх
svg
Дата 6.1.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 13.4.2005

Репутация: 1
Всего: 18



Спасибо, посмотрел, только это несколько не то, что обычно понимают под
лексическим анализом, хотя в его основе обычно тоже лежит регулярная
грамматика. С помощью "чистых" регулярных выражений можно сканировать
только весьма простые грамматики, да и слишком медленно это.

Ежели интересуетесь вопросом, то лучше всего найдите "dragon book" Ахо,
она есть в продаже. Кнут тоже ничего, но Ахо гораздо понятнее и конкретнее
(для меня по крайней мере).

Google можно попытать на предмет "deterministic finite automata" и
"nondeterministic finite automata".

Вторые проще кодировать и легче генерировать, первые - на несколько
порядков быстрее.

Есть и нерегулярные лексеры (в ANTLR, например), кодируются как
LALR парсеры, но я такие никогда сам не программировал.

PM MAIL   Вверх
Sardar
Дата 6.1.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Питон - переполнен магией smile
Из недостатков вижу, что требуеться постоянно подгружать модуль с классами-правилами, хотя это не проблема. Более серьёзная проблема в подходе к лексическому анализу, у тебя это список регов, что один за другим применяються к строке.
Во первых постоянное сканирование подстроки это не эффективно, во вторых нет проверки на ошибки регов. Представь что вышестоящий рег полностью включает в себя диапазон строк нижестоящего рега, тем самым нижестоящий рег никогда не будет найден. Это конечно проблема многих лексеров (и компиляторов формальных грамматик вообще), но они строят общий ДКА, в котором такая бага всё равно может быть найдена и компилер ругнёться. Иначе можно часами думать почему же лексема не приходит, а виной тому опечатка smile

Это не фича лексеров вообще, но хорошая спосбность flex'а (потомок lex'а, лексер на C) держать состояния. Состояние можно представить как некий механизм пространств имён. Каждый рег может находиться в одном или нескольких пространствах имён. На каждом шаге текущим может быть только одно пространство имён. Таким образом доступное множество регов включает в себя только те реги, что находяться в текущем пространстве имён, сменив состояние (=сменив пространство имён) мы получаем возможно уже другие реги.
Это очень удобно, например для PHP выделять два режима строк: 'одинарные кaвычки' - где пермеенные не парсяться и "двойные кaвычки {$variable}" где парсяться переменные и большинство escape цепочек (\n и т.д.). Тем самым облегчаем реализацию синтаксического анализатора smile

А вообще классная вещь, нравиться мне когда малым кодом получаeться мощный софт smile

Сам буквально на днях написал синтаксический анализатор для SAX XML парсера. Идея в том что бы парсить большие XML получая "высокоуровневые события" типа "создать ресурс", "добавить значение" и т.д., а не SAX события "открываемый тег", "закрываемый тег" и "текст". Анализатор на магазинном автомате, немного разбухший на вид (ибо строки, PHP), если интересно, выложу smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
setq
Дата 6.1.2006, 20:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











выкладывай %)
  Вверх
Sardar
Дата 7.1.2006, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Выложил здесь: http://forum.vingrad.ru/index.php?showtopic=77053&hl= smile
Это иодин из многих парсеров.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
bialix
Дата 19.1.2006, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.7.2005

Репутация: нет
Всего: нет



Ребяты. Все украдено до нас.
Смотрите и выбирайте на любой вкус:
http://www.nedbatchelder.com/text/python-parsers.html
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1144 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.