Geest

Spirit is een object-georiënteerd recursief-afkomst parser generator framework geïmplementeerd met behulp van sjabloon meta-programmeertechnieken
Download nu

Geest Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Boost Software Licen...
  • Prijs:
  • FREE
  • Naam uitgever:
  • Joel de Guzman
  • Uitgever website:
  • http://www.boost.org/doc/libs/1_35_0/libs/spirit/index.html

Geest Tags


Geest Beschrijving

Geest is een object-georiënteerd recursief-afkomst parser generator framework geïmplementeerd met behulp van sjabloon meta-programmeertechnieken Geest is een recursief afkomst object-georiënteerd parser-generator-kader geïmplementeerd met behulp van sjabloon meta-programmeertechnieken. Met expressiesjablonen kunnen we de syntaxis van uitgebreide backus-normale vorm (EBNF) volledig in C ++ benaderen. Het GRATIS-kader kan een doelgrammatica uitsluitend in C ++ worden geschreven. Inline EBNF Grammar-specificaties kunnen vrij mengen met andere C ++ -code en dankzij het generatieve vermogen van C ++ sjablonen zijn onmiddellijk uitvoerbaar. Achteraf te retrospecteren, moeten conventionele compiler-compilers of parser-generatoren een extra vertaling uitvoeren van de bron EBNF-code naar C of C ++ Code.a Simple EBNF Grammar Snippet: Groep :: = '(' Expression ')' Factor :: = integer | Groepstermijn :: = factor (('*' factor) | ('/' factor)) * Expression :: = Term (('+' Term) | ('-' Term)) * is benaderd met behulp van de faciliteiten van Geest In dit codefragment: groep = '(' >> expressie >> ')'; factor = integer | groep; Term = factor >> * (('*' >> factor) | ('/' >> factor)); Expression = Term >> * (('+' >> Term) ('-' >> Termijn)); door de magie van expressiesjablonen is dit volkomen geldige en uitvoerbare C ++ -code. De expressie voor productieleglijn is in feite een object dat een lid van de ledenfunctie heeft die het werk doet, gezien een broncode die is geschreven in de grammatica die we net hebben verklaard. Ja, het is een rekenmachine. We zullen voor het nu vereenvoudigen door de typegegevens over te slaan en de definitie van het integer van het regel dat door factor is aangeroepen. De productieregelsuitdrukking in onze grammatica-specificatie, traditioneel het startsymbool genoemd, kan inputs herkennen zoals: 12345 -12345 +123451 + 21 * 21/2 + 3/41 + 2 + 3 + 41 * 2 * 3 * 4 (1 + 2) * (3 + 4) (-1 + 2) * (3 + -4) 1 + ((6 * 200) - 20) / 6 (1 + (2 + (3 + ( 4 + 5)))) Zeker hebben we enkele aanpassingen gedaan aan de originele EBNF-syntaxis. Dit wordt gedaan om te voldoen aan regels voor C ++ syntaxis. Met name zien we de overvloed aan Shift >> operators. Aangezien er geen 'lege' operators in C ++ zijn, is het gewoon niet mogelijk om iets te schrijven als: een BAS gezien in wiskundige syntaxis, bijvoorbeeld, bijvoorbeeld vermenigvuldiging of, in ons geval, zoals te zien in EBNF-syntaxis voor gemiddelde sequencing (B zou a moeten volgen). Het raamwerk gebruikt de Shift >> -exploitant in plaats daarvan voor dit doel. We nemen de exploitant >>, met pijlen die naar rechts wijzen, te betekenen "wordt gevolgd door". Daarom schrijven we: a >> bthe alternatieve operator | en de haakjes () blijven zoals het is. De opdrachtoperator = wordt gebruikt in plaats van EBNF's :: =. Last but not least, de Kleene Star * die vroeger een postfix-operator in EBNF was, een voorvoegsel. In plaats van: A * // ... in EBNF-syntaxis, schrijven we: * A // ... in spirit.since Er zijn geen Postfix-sterren, "*", in C / C ++. Ten slotte beëindigen we elke regel met de alomtegenwoordige semi-colon, ";". Wat is er nieuw in deze release: · Een integeroverloopbuck opgelost om te mislukken van het parseren op bepaalde grote gehele getallen. Deze bug werd gerapporteerd en vastgesteld door Michael Andersen NEX


Geest Gerelateerde software

Matrixview

MATRIXVIEW is een JavaScript-bibliotheek om eenvoudig en onopvallend rijke functionaliteit toe te voegen aan standaard HTML ongeordende lijsten. ...

117

Downloaden

Buigen

Flexess biedt een uitgebreid beveiligingskader voor Java-toepassingen. ...

124

Downloaden

Tk :: perlmethodlist

TK :: PERLMETHODLIST is een PERL-module om de symbooltabel te vragen voor methoden (subroutines) die zijn gedefinieerd in een klasse (pakket). ...

144

Downloaden

Axyl

Axyl is een PHP-bibliotheek / kader voor de ontwikkeling van websites. ...

142

Downloaden