2012-02-23 10 views
8

Есть ли код для парсера или компонент анализа для Delphi или программа, которая будет принимать нотацию BNF (Backus-Naur Form) в качестве входных данных и выдавать код Delphi (или паскаль) выполнить синтаксический анализ?Производит код Delphi, который будет анализировать файл с заданным форматом BNF

Причина этого заключается в том, что я попытаюсь идеально разбирать наборы данных, следуя различным версиям the GEDCOM standard (используется для генеалогии), и вам нужно будет обработать файл из состояния в состояние по достижению токенов. Я бы предпочел автоматическую программу, чтобы выполнить грубую работу по настройке базового кода паскаля, чтобы сделать состояние для обработки состояния для меня.

В противном случае мне придется вручную самостоятельно строить государственные структуры.

Я видел следующий вопрос (и TinyPG выглядит хорошо, но мне нужен Delphi код): Parser-generator that outputs C# given a BNF grammar?

Если нет такого зверя, есть какие-либо другие инструменты, которые сделают эту задачу ?

ответ

6

Я рекомендую вам синтаксическую систему GOLD. GOLD-грамматики основаны на форме Backus-Naur и регулярных выражениях.

Ресурсы

Двигатели

двигателя s для Delphi указаны в списке here.

Этот one для Object Pascal Rob van den Brink может представлять интерес.

Цитата:

Роб ван ден Бринк обновил свой двигатель для Object Pascal Программирование языка. Его реализация использует шаблон программы для создания полнофункциональной программы . Этот подход вставляет таблицы анализа непосредственно в исходный код. В результате вам не нужно загружать файл скомпилированной грамматической таблицы . Загрузка содержит шаблон программы , а также несколько примеров.

Пример проекта с использованием золота

золото мощный, он используется в качестве разборе двигателя dcu2pas, Delphi Составитель Unit (DCU файлы) декомпилятор, который размещается here (bitbucket.org). Обратите внимание, что это написано в .

+1

Мне очень нравится система разбора GOLD, особенно редактор и отладчик. К сожалению, реализация движка Delphi длится десятилетие, Readme.txt для кода «Rob van den Brink» говорит «24 апреля 2002 года». Это предшествовало Delphi Unicode на хорошие 7 лет. –

+0

Да, они стареют, но могут быть улучшены. В современных реализациях C# используется кратковременная конструкция. Двигатель Matthias Piepkorn D (Digital Mars D) вдохновлен этими двигателями Delphi, и я нахожу его действительно превосходным. Настало время, когда сообщество Delphi вернет себе все лучшее и приступит к работе. – menjaraz

+1

Это похоже на инструмент, который я надеялся найти. Спасибо, что указали! – lkessler