![]() |
![]() |
![]() |
|
v8: Парсим язык запросов. GOLDParser из кода 1С | ☑ | ||
---|---|---|---|---|
0
TormozIT
гуру
03.11.07
✎
00:44
|
У меня есть текст запроса.
Хочу из 1С передать его КУДА ТО, чтобы мне вернули XML-файл синтаксического разбора. Допустим грамматика уже есть. Как сделать малой кровью? |
|||
1
TormozIT
гуру
03.11.07
✎
00:45
|
Если кому интересно, вот родственная тема v8: Грамматика 8-ки. Кто-нить делал?
|
|||
2
Immortal
03.11.07
✎
04:49
|
да да , я тожа такое хочу=)
|
|||
3
Jolly Roger
03.11.07
✎
09:07
|
У автора голдпарсера есть движок в виде com-сервера. Жутко медленный, правда.
На выходе получишь AST, ну а из него - XML. |
|||
4
TormozIT
гуру
03.11.07
✎
09:44
|
Ну вот эта dll http://www.devincook.com/goldparser/engine/vb6/cook-engine-dll-v3.0.0.zip
Как ее из 1С то заюзать? |
|||
5
TormozIT
гуру
03.11.07
✎
09:49
|
Так вот щас допер уже до
|
|||
6
Jolly Roger
03.11.07
✎
10:05
|
(5) Там есть пример скрипта, который рисует дерево в текстововм режиме
|
|||
7
TormozIT
гуру
03.11.07
✎
16:56
|
Нашел пример скрипта, com-server.
Заюзал на готовой грамматике для встроенного языка 8.0. Вроде все заработало, но очень медленно. Дерево
на 3.3Core2Duo строится 0.3сек А 500 строк строит целую секунду. Есть ли альтернативы? |
|||
8
Jolly Roger
03.11.07
✎
17:25
|
А я предупреждал, что медленный.
Есть, например, Calitha под .net - он довольно быстро работает. Он самый навороченый по функционалу. Есть полегче, например, by Vladimir Morozov - он еще быстрее должен работать. |
|||
9
Хранимая Процедура
03.11.07
✎
17:42
|
Голд Парсер - гавно, на больших файлах тормозит.
Калита - говно, строит хреновые большие таблицы. Написана профессором-неучем. Coco/R рулит. Быстрый, LL. |
|||
10
Хранимая Процедура
03.11.07
✎
17:45
|
АНТЛР - тоже отстой. Че эти придуры LL-откаты на исключениях делают. Тормозня конченная.
|
|||
11
TormozIT
гуру
03.11.07
✎
19:40
|
ANTLR3 заюзал в самом начале.
Но закопался в C# с версиями рантайм библиотек для него. Так и не смог заставить работать сгенеренный код по своей грамматике. |
|||
12
Хранимая Процедура
03.11.07
✎
20:33
|
Юзай SharpCoco из SharpDevelop. Он быстрый, правда Lexer самому надо писать. Но там есть Lexer по С# и VB.NET. Если LR-грамматику больше любишь, то кроме GoldParser есть еще CSTools (http://cis.paisley.ac.uk/crow-ci0/), но он падла тормозит. Да и вообше какой-то он "непрофессиональный". А в ParserGenerator (http://www.bumblebeesoftware.com/features.htm) до сих пор для С# парсер не сделали, для Явы есть. А программа то шареварная, в общем, тоже придурки.
|
|||
13
TormozIT
гуру
03.11.07
✎
20:53
|
Спасибо за просвещение!
Раньше особо не интересовался подобным софтом настолько. А щас смотрю - все инструменты какие то неудобные, убогие, доисторические, тормозные. |
|||
14
Худой
04.11.07
✎
06:15
|
Вообще, по моему, формат XML говно. Поэтому, все что с ним связано, ессно, будет так же работать. На более менее больших объемах, именно, сама структура и дает тормоз. Чем его не крути. Надеюсь, с ним, когда нить(чем быстрее, тем лучше) будет покончено, как попытка в воспаленных умах теоретиков реализовать "красивость" на нескольких записях. Идея, вроде, красивая. Но реализация, формат...
Пардон за офф. |
|||
15
MMF
04.11.07
✎
11:10
|
(13) интересено, чего ты ждал от реализации парсера в СОМ-виде?
|
|||
16
quest
04.11.07
✎
12:35
|
А flex/bison - не рулят? С выводом нужной ифы в XML вызовом из командной строки?
|
|||
17
MMF
04.11.07
✎
12:52
|
и кстати, нафига тут нужен этот самый xml? ИМХО, только для того, чтобы замедлить и без того медленный разбор.
|
|||
18
trdm
04.11.07
✎
13:16
|
(17) есть альтернатива для данной задачи?
|
|||
19
TormozIT
гуру
04.11.07
✎
14:33
|
Ну я уже без XML обошелся, т.к. com-server можно использовать прямо из 1с.
Прямо в 1С строю дерево и работаю с ним. Немного неудобно и медленно, но задача решена. По поводу XML - согласен, с ним было бы вообще очень медленно, даже если сам парсер построит дерево быстро, то засовывание дерева в XML и потом поиск по этому дереву будут довольно медленными. На скорость пока забил, но потом нужно будет что то придумывать дальше. NET dll от Морозова для Gold parserа заюзать хотелось бы, но это сделать из 1С пока не представляю. Ковыряться MS VC# уже порядком поднадоело. Хочется готовый пример. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |