Jump to content

ЗОЛОТО (парсер)

Система парсинга GOLD
Разработчик(и) Девин Кук и еще 54 участника [1]
Финальный выпуск
5.2.0 / 18 августа 2012 г .; 11 лет назад ( 18 августа 2012 )
Операционная система Окна
Тип LALR-парсер
Лицензия Лицензия zlib ( бесплатное программное обеспечение )
Веб-сайт золотой парсер .org  Edit this on Wikidata

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

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

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

Строитель

[ редактировать ]
ЗОЛОТЫЕ Компоненты
GOLD Components

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 реализованы для следующих языков/платформ программирования. Новые движки могут быть реализованы с использованием исходного кода существующих движков в качестве отправной точки.

Грамматика

[ редактировать ]

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

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

[ редактировать ]
Приложение GOLD Builder

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

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

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

  1. ^ «Соавторы» . goldparser.org . Проверено 28 августа 2017 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cf9ff40570361eb4c7ff197ff5fdc30b__1656150660
URL1:https://arc.ask3.ru/arc/aa/cf/0b/cf9ff40570361eb4c7ff197ff5fdc30b.html
Заголовок, (Title) документа по адресу, URL1:
GOLD (parser) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)