ЗОЛОТО (парсер)
Тема этой статьи может не соответствовать рекомендациям Википедии по известности продуктов и услуг . ( август 2017 г. ) |
Эта статья нуждается в дополнительных цитатах для проверки . ( август 2017 г. ) |
Разработчик(и) | Девин Кук и еще 54 участника [1] |
---|---|
Финальный выпуск | 5.2.0
/ 18 августа 2012 г |
Операционная система | Окна |
Тип | LALR-парсер |
Лицензия | Лицензия zlib ( бесплатное программное обеспечение ) |
Веб-сайт | золотой парсер |
GOLD — это бесплатная система синтаксического анализа , предназначенная для поддержки нескольких языков программирования.
Дизайн
[ редактировать ]Система использует DFA для лексического анализа и алгоритм LALR для синтаксического анализа. Оба эти алгоритма представляют собой конечные автоматы, использующие таблицы для определения действий. GOLD разработан на основе принципа логического разделения процесса создания таблиц синтаксического анализа LALR и DFA от фактической реализации самих алгоритмов синтаксического анализа. Это позволяет реализовать парсеры на разных языках программирования, сохраняя при этом одни и те же грамматики и процесс разработки.
Система GOLD состоит из трех логических компонентов: «Builder», «Engine» и определения файла «Скомпилированная таблица грамматики», которое действует как посредник между Builder и Engine.
Строитель
[ редактировать ]Builder является основным компонентом и основным приложением системы. Builder используется для анализа синтаксиса языка (заданного как грамматика) и построения таблиц LALR и DFA . В ходе этого процесса будет сообщено о любых неясностях в грамматике. По сути, это та же задача, которую выполняют компиляторы-компиляторы, такие как YACC и ANTLR .
После успешного создания таблиц анализа LALR и DFA построитель может сохранить эти данные в файл скомпилированной таблицы грамматики. Это позволяет разработчику позднее повторно открыть информацию или использовать ее в одном из механизмов. В настоящее время компонент Builder доступен только для Windows 32-разрядных операционных систем .
Некоторые особенности конструктора:
- Бесплатная лицензия
- Просмотр состояния
- Комплексное тестирование
- Мастер проверки нескольких файлов
- Создание веб-страниц (включая синтаксические диаграммы с гиперссылками)
- Создание скелетных программ с использованием шаблонов
- Экспорт грамматик в YACC
- Экспортируйте таблицы в XML или форматированный текст.
Скомпилированный файл таблицы грамматики
[ редактировать ]Файл скомпилированной таблицы грамматики используется для хранения табличной информации, созданной Builder.
Двигатели
[ редактировать ]В отличие от Builder, который работает только на одной платформе, компонент Engine написан для конкретного языка программирования и/или платформы разработки. Движок реализует алгоритмы LALR и DFA . Поскольку в разных языках программирования используются разные подходы к разработке программ, каждая реализация Engine будет отличаться. В результате реализация Engine, написанная для Visual Basic 6, будет сильно отличаться от реализации, написанной для ANSI C.
На данный момент Engines for GOLD реализованы для следующих языков/платформ программирования. Новые движки могут быть реализованы с использованием исходного кода существующих движков в качестве отправной точки.
- Сборка - Intel x86
- АНСИ С
- С#
- Д
- Дельфи
- Ява
- Паскаль
- Питон
- Визуальный Бейсик
- Визуальный Бейсик .NET
- Визуальный С++
Грамматика
[ редактировать ]Грамматики GOLD основаны непосредственно на форме Бэкуса-Наура , регулярных выражениях и обозначениях множеств.
Следующая грамматика определяет синтаксис минимального языка программирования общего назначения, называемого «Простой».
"Name" = 'Simple' "Author" = 'Devin Cook' "Version" = '2.1' "About" = 'This is a very simple grammar designed for use in examples' "Case Sensitive" = False "Start Symbol" = <Statements> {String Ch 1} = {Printable} - [''] {String Ch 2} = {Printable} - ["] Identifier = {Letter}{AlphaNumeric}* ! String allows either single or double quotes StringLiteral = '' {String Ch 1}* '' | '"' {String Ch 2}* '"' NumberLiteral = {Number}+('.'{Number}+)? Comment Start = '/*' Comment End = '*/' Comment Line = '//'
<Statements> ::= <Statements> <Statement>
| <Statement>
<Statement> ::= display <Expression>
| display <Expression> read ID
| assign ID '=' <Expression>
| while <Expression> do <Statements> end
| if <Expression> then <Statements> end
| if <Expression> then <Statements> else <Statements> end
<Expression> ::= <Expression> '>' <Add Exp>
| <Expression> '<' <Add Exp>
| <Expression> '<=' <Add Exp>
| <Expression> '>=' <Add Exp>
| <Expression> '==' <Add Exp>
| <Expression> '<>' <Add Exp>
| <Add Exp>
<Add Exp> ::= <Add Exp> '+' <Mult Exp>
| <Add Exp> '-' <Mult Exp>
| <Add Exp> '&' <Mult Exp>
| <Mult Exp>
<Mult Exp> ::= <Mult Exp> '*' <Negate Exp>
| <Mult Exp> '/' <Negate Exp>
| <Negate Exp>
<Negate Exp> ::= '-' <Value>
| <Value>
<Value> ::= Identifier
| StringLiteral
| NumberLiteral
| '(' <Expression> ')'
Обзор разработки
[ редактировать ]Первый шаг состоит из написания и тестирования грамматики анализируемого языка. Грамматику можно написать с помощью любого текстового редактора – например, Блокнота или редактора, встроенного в Конструктор. На этом этапе кодирование не требуется.
После того как грамматика готова, она анализируется Builder, LALR и DFA создаются таблицы анализа , и сообщается о любых двусмысленностях или проблемах с грамматикой. После этого таблицы сохраняются в файле скомпилированной таблицы грамматики, который позже будет использоваться механизмом синтаксического анализа. На этом этапе GOLD Parser Builder больше не нужен.
На заключительном этапе таблицы читаются Engine. На этом этапе процесс разработки зависит от выбранного языка реализации.
Ссылки
[ редактировать ]- ^ «Соавторы» . goldparser.org . Проверено 28 августа 2017 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- GOLD Yahoo Group на Wayback Machine (архивировано 14 декабря 2020 г.)