ЗОЛОТО (парсер) - GOLD (parser)

Система парсинга GOLD
GOLD logo.gif
GOLD Builder v3.4.gif
Разработчики) Девин Кук и 54 других участника
Окончательный релиз
5.2.0 / 18 августа 2012 г . ; 9 лет назад ( 2012-08-18 )
Операционная система Окна
Тип Парсер LALR
Лицензия zlib License ( бесплатное программное обеспечение )
Веб-сайт goldparser .org Отредактируйте это в Викиданных

GOLD - это бесплатная система синтаксического анализа , предназначенная для поддержки нескольких языков программирования.

Дизайн

Система использует DFA для лексического анализа и алгоритм LALR для синтаксического анализа. Оба эти алгоритма являются конечными автоматами, которые используют таблицы для определения действий. GOLD разработан на основе принципа логического разделения процесса создания таблиц синтаксического анализа LALR и DFA от фактической реализации самих алгоритмов синтаксического анализа. Это позволяет реализовать синтаксические анализаторы на разных языках программирования, сохраняя при этом одни и те же грамматики и процесс разработки.

Система GOLD состоит из трех логических компонентов, «Builder», «Engine» и определения файла «Compiled Grammar Table», который функционирует как посредник между Builder и Engine.

Строитель

GOLD Компоненты

Builder - это основной компонент и главное приложение системы. Builder используется для анализа синтаксиса языка (заданного как грамматика) и построения таблиц LALR и DFA . Во время этого процесса будет сообщено о любых двусмысленностях в грамматике. По сути, это та же задача, которую выполняют компиляторы-компиляторы, такие как YACC и ANTLR .

После успешного построения таблиц синтаксического анализа LALR и DFA построитель может сохранить эти данные в файл скомпилированной таблицы грамматики. Это позволяет Строителю повторно открывать информацию позже или использовать ее в одном из Механизмов. В настоящее время компонент Builder доступен только для 32-разрядных операционных систем Windows .

Некоторые особенности Builder:

  • Бесплатная лицензия
  • Просмотр состояния
  • Комплексное тестирование
  • Мастер тестирования нескольких файлов
  • Создавать веб-страницы (включая диаграммы синтаксиса с гиперссылками)
  • Создавайте скелетные программы с помощью шаблонов
  • Экспорт грамматик в YACC
  • Экспорт таблиц в XML или форматированный текст

Скомпилированный файл таблицы грамматики

Файл Compiled Grammar Table используется для хранения табличной информации, созданной Builder.

Двигатели

В отличие от Builder, который работает только на одной платформе, компонент Engine написан для определенного языка программирования и / или платформы разработки. Движок реализует алгоритмы LALR и DFA . Поскольку разные языки программирования используют разные подходы к разработке программ, каждая реализация Engine будет отличаться. В результате, реализация Машине написана для Visual Basic 6 значительно отличаются друг от написанного для ANSI C .

В настоящее время движки для GOLD реализованы для следующих языков / платформ программирования. Новые механизмы могут быть реализованы с использованием исходного кода для существующих механизмов в качестве отправной точки.

Грамматики

Грамматики 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> ')'

Обзор разработки

Image
Приложение GOLD Builder

Первый шаг состоит из написания и тестирования грамматики анализируемого языка. Грамматика может быть написана с помощью любого текстового редактора, например Блокнота или редактора, встроенного в Builder. На этом этапе никакого кодирования не требуется.

После завершения грамматики она анализируется Builder, создаются таблицы синтаксического анализа LALR и DFA , и сообщается о любых двусмысленностях или проблемах с грамматикой. После этого таблицы сохраняются в файл скомпилированной таблицы грамматики для последующего использования механизмом синтаксического анализа. На этом этапе GOLD Parser Builder больше не нужен.

На заключительном этапе таблицы считываются движком. На этом этапе процесс разработки зависит от выбранного языка реализации.

использованная литература

внешние ссылки