Разработчик (и) | Девин Кук и 54 других участника |
---|---|
Стабильная версия | 5.2.0 / 18 августа 2012 г.; 8 лет назад (18.08.2012) |
Операционная система | Windows |
Тип | Парсер LALR |
Лицензия | Лицензия zlib (бесплатное ПО ) |
Веб-сайт | goldparser.org |
GOLD - это бесплатная система синтаксического анализа, предназначенная для поддержки нескольких языков программирования.
Система использует DFA для лексического анализа и алгоритм LALR для синтаксического анализа. Оба этих алгоритма являются конечными автоматами, которые используют таблицы для определения действий. GOLD разработан на основе принципа логической отделение процесса создания таблиц синтаксического анализа LALR и DFA от фактической реализации самих алгоритмов синтаксического анализа. Это позволяет реализовать синтаксические анализаторы на разных языках программирования, сохраняя при этом те же грамматики и разработку процесс.
ЗОЛОТО Система состоит из трех логических компонентов: «Builder», «Engine» и определения файла «Compiled Grammar Table», который функционирует как посредник между Builder и Engine.
Строитель - это основной компонент и главное приложение системы. Builder используется для анализа синтаксиса языка (указанного как грамматика) и построения таблиц LALR и DFA. Во время этого процесса будут сообщены любые двусмысленности в грамматике. По сути, это та же задача, которая выполняется компиляторами-компиляторами, такими как YACC и ANTLR.
После того, как таблицы синтаксического анализа LALR и DFA После успешного построения, Builder может сохранить эти данные в файле Compiled Grammar Table. Это позволяет Строителю позже повторно открывать информацию или использовать ее в одном из Механизмов. В настоящее время компонент Builder доступен только для 32-разрядных операционных систем Windows.
Некоторые из функций Builder:
Файл скомпилированной таблицы грамматики используется для хранения табличной информации, сгенерированной построителем.
В отличие от Builder, который работает только на одной платформе, компонент Engine написан для определенного языка программирования и / или платформы разработки. Механизм реализует алгоритмы LALR и DFA. Поскольку разные языки программирования используют разные подходы к разработке программ, каждая реализация Engine будет отличаться. В результате реализация движка, написанного для Visual Basic 6, будет сильно отличаться от реализации, написанной для ANSI C.
. В настоящее время движки для GOLD реализованы для следующих языков / платформ программирования.. Новые механизмы могут быть реализованы с использованием исходного кода для существующих механизмов в качестве отправной точки.
Грамматики GOLD основаны непосредственно на форме Бэкуса – Наура, регулярных выражениях и заданной нотации.
Следующая грамматика определяет синтаксис минимального языка программирования общего назначения, называемого «Простой».
"Name" = 'Simple' "Author" = 'Devin Cook' "Version" = '2.1' "About" = 'Это очень простая грамматика, разработанная для использования в примерах' "С учетом регистра" = Ложь "Начальный символ" ={String Ch 1} = {Printable} - [''] {String Ch 2} = {Printable} - ["] Идентификатор = {Letter} {AlphaNumeric} *! Строка допускает одно или двойные кавычки StringLiteral = '' {String Ch 1} * '' | '"' {String Ch 2} * '"' NumberLiteral = {Number} + ('.' {Number} +)? Начало комментария = '/ * 'Comment End =' * / 'Comment Line =' // '
:: = | :: = display | display ID чтения | присвоить ID' = ' | while do end | if then end | if then else end :: = '>' | '<' | '<=' | '>=' | '==' | '<>' | :: = '+' | '-' | '' | :: = '*' | '/' | :: = '-' | :: = Identifier | StringLiteral | NumberLiteral | '(' ')'
Первый шаг состоит из написания и тестирования грамматики для анализируемого языка. грамматика может быть написана с помощью любого текстового редактора, например Блокнота или редактора, встроенного в Builder. На этом этапе кодирование не требуется.
После завершения грамматики она анализируется Builder, создаются таблицы синтаксического анализа LALR и DFA и сообщается о любых двусмысленностях или проблемах с грамматикой.. После этого таблицы сохраняются в файл скомпилированной таблицы грамматики для последующего использования механизмом синтаксического анализа. На этом этапе GOLD Parser Builder больше не нужен.
На заключительном этапе таблицы считываются движком. На этом этапе процесс разработки зависит от выбранного языка реализации.
Викискладе есть медиафайлы, связанные с GOLD (парсер). |