ZLATO (analyzátor) - GOLD (parser)

GOLD Parsing System
GOLD logo.gif
GOLD Builder v3.4.gif
VývojářiDevin Cook a 54 dalších přispěvatelů[1]
Stabilní uvolnění
5.2.0 / 18. srpna 2012; před 8 lety (2012-08-18)
Operační systémOkna
TypAnalyzátor LALR
Licencelicence zlib (svobodný software )
webová stránkazlatý parser.org Upravte to na Wikidata

ZLATO je volný, uvolnit analýza systém, který je navržen tak, aby podporoval více programovacích jazyků.

Design

Systém používá a DFA pro lexikální analýzu a LALR algoritmus pro analýzu. Oba tyto algoritmy jsou stavové stroje, které k určení akcí používají tabulky. GOLD je navržen na principu logického oddělení procesu generování LALR a DFA analyzovat tabulky ze skutečné implementace samotných algoritmů syntaktické analýzy. To umožňuje implementaci analyzátorů v různých programovacích jazycích při zachování stejné gramatiky a vývojového procesu.

Systém GOLD se skládá ze tří logických komponent, „Builder“, „Engine“ a definice souboru „Compiled Grammar Table“, která funguje jako prostředník mezi Builderem a Engine.

Stavitel

Zlaté komponenty

Builder je primární komponenta a hlavní aplikace systému. Builder se používá k analýze syntaxe jazyka (zadaného jako gramatika) a konstrukce LALR a DFA tabulky. Během tohoto procesu budou nahlášeny jakékoli nejasnosti v gramatice. Jedná se v podstatě o stejný úkol, který provádějí kompilátoři-kompilátoři, jako je YACC a ANTLR.

Jednou LALR a DFA analyzované tabulky jsou úspěšně vytvořeny, Tvůrce může tato data uložit do souboru kompilované gramatické tabulky. To umožňuje, aby byly informace později znovu otevřeny Tvůrcem nebo použity v jednom z motorů. V současné době je komponenta Builder k dispozici pouze pro Okna 32bitové operační systémy.

Některé z funkcí Builderu jsou:

  • Freeware licence
  • Stát procházení
  • Integrované testování
  • Průvodce testováním více souborů
  • Generovat webové stránky (včetně hypertextových odkazů na grafy syntaxe)
  • Generujte kostrové programy pomocí šablon
  • Exportovat gramatiky do YACC
  • Exportujte tabulky do XML nebo formátovaného textu

Zkompilovaný soubor tabulky gramatiky

Soubor Zkompilovaná tabulka gramatiky se používá k ukládání informací o tabulce vygenerovaných Tvůrcem.

Motory

Na rozdíl od Builderu, který běží pouze na jedné platformě, je komponenta Engine napsána pro konkrétní programovací jazyk nebo vývojovou platformu. Motor implementuje LALR a DFA algoritmy. Jelikož různé programovací jazyky používají různé přístupy k navrhování programů, bude se každá implementace Engine lišit. Výsledkem je implementace Engine napsaná pro Visual Basic 6 se bude značně lišit od jednoho napsaného pro ANSI C..

V současné době byly Engines for GOLD implementovány pro následující programovací jazyky / platformy. Nové motory lze implementovat pomocí zdrojového kódu pro stávající motory jako výchozí bod.

Gramatiky

Zlaté gramatiky jsou založeny přímo na Backus – Naurova forma, regulární výrazy a nastavit notaci.

Následující gramatika definuje syntaxi minimálního univerzálního programovacího jazyka s názvem „Simple“.

"Name" = 'Simple' "Autor" = 'Devin Cook' "Verze" = '2.1' "About" = 'Jedná se o velmi jednoduchou gramatiku určenou pro použití v příkladech "" Rozlišovat velká a malá písmena "= Falešný" Počáteční symbol "=  {String Ch 1} = {Printable} - [''] {String Ch 2} = {Printable} - ["] Identifier = {Letter} {AlphaNumeric} *! String allows either single or double quotesStringLiteral = '' {String Ch 1} * '' | '"' {String Ch 2} * '"' NumberLiteral = {Number} + ('.' {Number} +)? Komentář Začátek = '/ *' Komentář Konec = '* / 'Comment Line =' // ' 
<Prohlášení>  ::= <Prohlášení> <Tvrzení>               |  <Tvrzení><Tvrzení>   ::= Zobrazit <Výraz>               | Zobrazit <Výraz> číst ID | přiřadit ID '=' <Výraz>               | zatímco <Výraz> dělat <Prohlášení> konec | -li <Výraz> pak <Prohlášení> konec | -li <Výraz> pak <Prohlášení> jiný <Prohlášení> konec <Výraz>  ::= <Výraz> '>'  <Přidat exp>               |  <Výraz> '<'  <Přidat exp>               |  <Výraz> '<=' <Přidat exp>               |  <Výraz> '>=' <Přidat exp>               |  <Výraz> '==' <Přidat exp>               |  <Výraz> '<>' <Přidat exp>               |  <Přidat exp><Přidat exp>     ::= <Přidat exp> '+' <Mult Exp>               |  <Přidat exp> '-' <Mult Exp>               |  <Přidat exp> '&' <Mult Exp>               |  <Mult Exp><Mult Exp>    ::= <Mult Exp> '*' <Negativní exp>               |  <Mult Exp> '/' <Negativní exp>               |  <Negativní exp><Negativní exp>  ::= '-' <Hodnota>               |  <Hodnota><Hodnota>       ::= Identifikátor | StringLiteral | NumberLiteral | '(' <Výraz> ')'

Přehled vývoje

Aplikace GOLD Builder

První krok spočívá v psaní a testování gramatiky analyzovaného jazyka. Gramatiku lze psát pomocí libovolného textového editoru - například Poznámkového bloku nebo editoru zabudovaného do Tvůrce. V této fázi není nutné žádné kódování.

Jakmile je gramatika kompletní, analyzuje ji Tvůrce, LALR a DFA jsou sestaveny syntaktické tabulky a jsou nahlášeny jakékoli nejasnosti nebo problémy s gramatikou. Poté se tabulky uloží do souboru zkompilované tabulky gramatiky, který se později použije při analýze. V tomto okamžiku již není GOLD Parser Builder potřeba.

V závěrečné fázi čte tabulky stroj. V tomto okamžiku je vývojový proces závislý na vybraném implementačním jazyce.

Reference

  1. ^ „Přispěvatelé“. goldparser.org. Citováno 28. srpna 2017.

externí odkazy