IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Парсим код GOLDParser'ом
Палыч
сообщение Sep 19 2005, 12:36
Сообщение #1


Продвинутый
***

Группа: Пользователи
Сообщений: 198
Регистрация: 19-September 03
Пользователь №: 577



На досуге сделал описание языка семерки в BNF для GOLD Parser'a.
Может, кому-нибудь пригодится.

Приложенный архив содержит:
1C-BNF.grm - исходный файл грамматики
1C-BNF.cgt - скомпилированная грамматика
parser.js - скрипт для Опенконфа, с помощью которого можно проверить работу парсера. (Для работы скрипта необходимо зарегистрировать в системе ActiveX-движок голдпарсера и поместить файл 1C-BNF.cgt в Configurator::BinDir)
Прикрепленные файлы
Прикрепленный файл  gold.zip ( 15.54 килобайт ) Кол-во скачиваний: 159
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
alest
сообщение Sep 29 2005, 09:16
Сообщение #2


Продвинутый
***

Группа: Пользователи
Сообщений: 212
Регистрация: 19-January 05
Из: Гродно, Беларусь
Пользователь №: 3047



Как им определить, например, номер строки начала функции от заданного номера строки, если, конечно, эта строка входит в функцию?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Палыч
сообщение Sep 29 2005, 10:40
Сообщение #3


Продвинутый
***

Группа: Пользователи
Сообщений: 198
Регистрация: 19-September 03
Пользователь №: 577



Если речь идет об ActiveX-движке, тогда Token::ColumnNumber и Token::LineNumber укажут нам положение соответствующего терминала, например слова "функция".
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
alest
сообщение Sep 30 2005, 10:02
Сообщение #4


Продвинутый
***

Группа: Пользователи
Сообщений: 212
Регистрация: 19-January 05
Из: Гродно, Беларусь
Пользователь №: 3047



Почитал, там модуль разбирается до запятых. Зачем мне токен с запятой между параметрами функции??
Да и работает, по-моему, не совсем быстро.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
alest
сообщение Sep 30 2005, 10:06
Сообщение #5


Продвинутый
***

Группа: Пользователи
Сообщений: 212
Регистрация: 19-January 05
Из: Гродно, Беларусь
Пользователь №: 3047



Так еще надо по дереву пройтись и текст сравнивать с "Функция". Если б там сразу были разделены эти токены. Или так и есть?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Палыч
сообщение Sep 30 2005, 10:53
Сообщение #6


Продвинутый
***

Группа: Пользователи
Сообщений: 198
Регистрация: 19-September 03
Пользователь №: 577



alest

Цитата
Почитал, там модуль разбирается до запятых. Зачем мне токен с запятой между параметрами функции??

Чем тебе запятые мешают?

Цитата
Да и работает, по-моему, не совсем быстро

Действительно, ActiveX-движок работает очень медленно - он самый медленный. Я привел ссылку на него только ввиду простоты его использования (зарегил, запустил скрипт, убедился, что грамматика работает).
"Взрослые" движки работают достаточно быстро (скажем, Calitha парсит модуль из 15000 строк меньше секунды)

Цитата
Так еще надо по дереву пройтись и текст сравнивать с "Функция". Если б там сразу были разделены эти токены. Или так и есть?

Конечно, пройтись по дереву (только сравнивать не текст а Symbol.Id или Rule.Id). Все там разделено как надо ;-)

Может, сразу скажешь чего хочешь или будешь задавать наводящие вопросы? ;-)

зы: наверно, нужо было предупредить сразу, что это не готовое решение. ;-)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
alest
сообщение Sep 30 2005, 18:09
Сообщение #7


Продвинутый
***

Группа: Пользователи
Сообщений: 212
Регистрация: 19-January 05
Из: Гродно, Беларусь
Пользователь №: 3047



Скажу, конечноsmile.gif начал делать рефакторер для 1с. Метод Выделить модуль уже есть. Но я там просто по строкам выбираю. Думаю, все равно понадобится переходить на парсер какой-то. Потому и инетересуюсь
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
trdm
сообщение Oct 3 2005, 23:26
Сообщение #8


Продвинутый
***

Группа: Пользователи
Сообщений: 140
Регистрация: 22-April 04
Из: Ростов-на-Дону
Пользователь №: 1496



Цитата(alest @ Sep 30 2005, 18:09)
Скажу, конечноsmile.gif начал делать рефакторер для 1с. Метод Выделить модуль уже есть. Но я там просто по строкам выбираю. Думаю, все равно понадобится переходить на парсер какой-то. Потому и инетересуюсь

Возьми Бизона, бесплатно отдам. По GPL-расценкам.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
alest
сообщение Oct 8 2005, 18:46
Сообщение #9


Продвинутый
***

Группа: Пользователи
Сообщений: 212
Регистрация: 19-January 05
Из: Гродно, Беларусь
Пользователь №: 3047



так это, наверное, на сях его использовать можно, а я думал обойтись опенконфом и js
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Kwadr2
сообщение Aug 13 2006, 11:32
Сообщение #10


Начинающий
*

Группа: Пользователи
Сообщений: 2
Регистрация: 13-August 06
Пользователь №: 8032



А файлик-то не качается ;(
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Палыч
сообщение Aug 14 2006, 07:15
Сообщение #11


Продвинутый
***

Группа: Пользователи
Сообщений: 198
Регистрация: 19-September 03
Пользователь №: 577



Kwadr2
Залил
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Kwadr2
сообщение Aug 14 2006, 19:03
Сообщение #12


Начинающий
*

Группа: Пользователи
Сообщений: 2
Регистрация: 13-August 06
Пользователь №: 8032



Сэнкс wink.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 25th March 2017 - 06:46