Ищу интерактивную утилиту для создания контекстно-свободных грамматик парсера

Мне нужна утилита, с помощью которой я могу дать фрагмент текста (в текстовом поле) и поэкспериментировать с грамматикой синтаксического анализатора (через редактирование аналогичной БНФ) и структурой токенов, пока я могу видеть, как будет выглядеть дерево синтаксического анализа (и если оно не в состоянии разобрать текст, используя мою текущую грамматику, я бы посмотрел, где он остановился).

Ключевое слово — интерактивность. Я мог бы сделать это, например, используя flex и bison, но мне постоянно приходилось бы заново создавать свой лексер и парсер.

Есть ли что-нибудь подобное? Я не нашел ни одного. В идеале он должен работать в Linux и быть бесплатным, если это не вариант, он все еще представляет интерес.


person Community    schedule 16.05.2009    source источник
comment
Это инструмент, который был бы полезен для меня. Если вы в конечном итоге пойдете по пути моего ответа, я могу дать вам свою электронную почту, и мы могли бы сотрудничать. Было бы здорово для экспресс-тестирования грамматики.   -  person Aiden Bell    schedule 16.05.2009
comment
Я нашел это, jscc.jmksf.com/jscc_on_web.png добавил его к ответу.   -  person Aiden Bell    schedule 26.05.2009


Ответы (3)


вы могли бы сделать это с помощью pyBison и друзей, используя GTKSourceView

Я ничего не видел, но вы могли бы написать программу для этого, если хотите. Я бы либо портировал исходный код Bison на DSO, чтобы вы могли загрузить его и запустить через него свой BNF и вытащить таблицы автоматов. Затем прикрепите оценку к текстовому полю просмотра исходного кода GTK.

-- or --

Создайте интерфейс (GTKSourceView снова кажется хорошим) и прикрепите его к некоторым системным вызовам, чтобы записать ваши flex.c и bison.c и сформировать некоторый общий объект output.so, который затем загружается и выгружается в приложение, которое вы затем можете запустить источник через.

Что я обычно делаю при разработке грамматики, так это использую pyBison и другие языковые инструменты высокого уровня для увеличения скорости разработки. Затем используйте C/Flex/Bison с файлами .l и .y позже. GTK должно быть очень легко использовать в Python, чтобы достичь вышеизложенного без необходимости использования DSO и фанданго dlopen().

Очень похоже на цикл Read-Eval-Print, в котором синтаксис BNF и теста находится в цикле с некоторыми бэкэнд-генераторами D/NFA.

некоторое время спустя

Я нашел это, отвечая на другой вопрос:

http://jscc.jmksf.com/jscc_on_web.png

Это инструмент, похожий на Yacc/Bison, для создания парсеров в JavaScript. Вы можете легко использовать это для отладки своих грамматик C, поскольку все они в любом случае являются BNF! Я обязательно буду использовать его.

person Aiden Bell    schedule 16.05.2009
comment
Привет! Извините, что не ответил вам до сих пор. Это испытание в свободное время, и на работе все было довольно беспокойно. :-) Я не думаю, что у меня есть время, чтобы участвовать в подобном проекте, мне также может не хватать знаний, так как я только немного пробовал Python и никогда ничего не делал с использованием GTK. Но это хорошая идея, я бы хотел, чтобы у меня было больше времени, чтобы инвестировать в хобби-проекты. Инструмент, который вы связали, кажется достаточно хорошим! Я еще не проверял это, но я с нетерпением жду этого! Спасибо за ответ! - person ; 27.05.2009
comment
@Kent - Не беспокойтесь, я ждал этого;) этот инструмент выглядит довольно круто. Только вчера нашел :P Удачи! - person Aiden Bell; 27.05.2009

ANTLRWORKS (http://www.antlr.org/works/index.html) — лучшая интерактивная среда разработки грамматики, которую я когда-либо видел. Это позволяет вам визуализировать и отлаживать грамматики LL (*), написанные в ANTLR.

person Indhu Bharathi    schedule 15.10.2009

Взгляните на VisualBNF.

person Raffaele    schedule 13.01.2010