ЗОЛОТО (парсер) - GOLD (parser)
Тема этой статьи может не соответствовать Википедии рекомендации по продуктам и услугам.Август 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Эта статья нужны дополнительные цитаты для проверка.Август 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Разработчики) | Девин Кук и 54 других участника[1] |
---|---|
Стабильный выпуск | 5.2.0 / 18 августа 2012 г. |
Операционная система | Windows |
Тип | Парсер LALR |
Лицензия | zlib Лицензия (бесплатно программное обеспечение ) |
Интернет сайт | золотоискатель |
ЗОЛОТО это свободный разбор система, которая предназначена для поддержки нескольких языков программирования.
Дизайн
В системе используется DFA для лексического анализа и LALR алгоритм парсинга. Оба эти алгоритма являются конечными автоматами, которые используют таблицы для определения действий. GOLD разработан на основе принципа логического разделения процесса генерации LALR и DFA таблицы синтаксического анализа из реальной реализации самих алгоритмов синтаксического анализа. Это позволяет реализовать парсеры на разных языках программирования, сохраняя при этом одни и те же грамматики и процесс разработки.
Система GOLD состоит из трех логических компонентов: «Builder», «Engine» и определения файла «Compiled Grammar Table», который функционирует как посредник между Builder и Engine.
Строитель
Builder - это основной компонент и главное приложение системы. Строитель используется для анализа синтаксиса языка (указанного как грамматика) и построения LALR и DFA таблицы. Во время этого процесса будут сообщены любые двусмысленности в грамматике. По сути, это та же задача, которую выполняют компиляторы-компиляторы, такие как YACC и ANTLR.
Однажды LALR и DFA таблицы синтаксического анализа успешно построены, построитель может сохранить эти данные в файл скомпилированной таблицы грамматики. Это позволяет Строителю позже повторно открывать информацию или использовать ее в одном из Механизмов. В настоящее время компонент Builder доступен только для Windows 32-битные операционные системы.
Некоторые особенности Builder:
- Бесплатное ПО лицензия
- Просмотр состояния
- Комплексное тестирование
- Мастер тестирования нескольких файлов
- Создавать веб-страницы (включая диаграммы синтаксиса с гиперссылками)
- Создавайте скелетные программы с помощью шаблонов
- Экспорт грамматик в YACC
- Экспорт таблиц в XML или форматированный текст
Скомпилированный файл таблицы грамматики
Файл Compiled Grammar Table используется для хранения табличной информации, созданной Builder.
Двигатели
В отличие от Builder, который работает только на одной платформе, компонент Engine написан для определенного языка программирования и / или платформы разработки. Движок реализует LALR и DFA алгоритмы. Поскольку разные языки программирования используют разные подходы к разработке программ, каждая реализация Engine будет отличаться. В результате реализация Engine, написанная для Visual Basic 6 будет сильно отличаться от написанного для ANSI C.
В настоящее время движки для GOLD реализованы для следующих языков / платформ программирования. Новые механизмы могут быть реализованы с использованием исходного кода для существующих механизмов в качестве отправной точки.
Грамматики
Грамматики GOLD основаны непосредственно на Форма Бэкуса – Наура, обычные выражения, и установить обозначения.
Следующая грамматика определяет синтаксис минимального языка программирования общего назначения под названием «Простой».
"Name" = 'Simple' "Author" = 'Devin Cook' "Version" = '2.1' "About" = 'Это очень простая грамматика, разработанная для использования в примерах' "Case Sensitive" = False "Start Symbol" ={String Ch 1} = {Printable} - [''] {String Ch 2} = {Printable} - ["] Identifier = {Letter} {AlphaNumeric} *! Строка допускает одинарные или двойные кавычкиStringLiteral = '' {String Ch 1} * '' | '"' {String Ch 2} * '"' NumberLiteral = {Number} + ('.' {Number} +)? Начало комментария = '/ *' Конец комментария = '* / 'Строка комментария =' // '
<Заявления> ::= <Заявления> <Заявление> | <Заявление><Заявление> ::= отображать <Выражение> | отображать <Выражение> прочитать ID | назначить ID '=' <Выражение> | пока <Выражение> делать <Заявления> конец | если <Выражение> тогда <Заявления> конец | если <Выражение> тогда <Заявления> еще <Заявления> конец <Выражение> ::= <Выражение> '>' <Добавить опыт> | <Выражение> '<' <Добавить опыт> | <Выражение> '<=' <Добавить опыт> | <Выражение> '>=' <Добавить опыт> | <Выражение> '==' <Добавить опыт> | <Выражение> '<>' <Добавить опыт> | <Добавить опыт><Добавить опыт> ::= <Добавить опыт> '+' <Mult Exp> | <Добавить опыт> '-' <Mult Exp> | <Добавить опыт> '&' <Mult Exp> | <Mult Exp><Mult Exp> ::= <Mult Exp> '*' <Отменить опыт> | <Mult Exp> '/' <Отменить опыт> | <Отменить опыт><Отменить опыт> ::= '-' <Ценить> | <Ценить><Ценить> ::= Идентификатор | StringLiteral | NumberLiteral | '(' <Выражение> ')'
Обзор разработки
Первый шаг состоит из написания и тестирования грамматики анализируемого языка. Грамматика может быть написана с помощью любого текстового редактора - например, Блокнота или редактора, встроенного в Builder. На этом этапе кодирование не требуется.
Как только грамматика завершена, она анализируется Builder, LALR и DFA создаются таблицы синтаксического анализа, и сообщается о любых двусмысленностях или проблемах с грамматикой. После этого таблицы сохраняются в файл скомпилированной таблицы грамматики для последующего использования механизмом синтаксического анализа. На этом этапе GOLD Parser Builder больше не нужен.
На заключительном этапе таблицы считываются движком. На этом этапе процесс разработки зависит от выбранного языка реализации.