JetPAG - JetPAG
Vývojáři | Tareq H. Sharafy |
---|---|
Stabilní uvolnění | 0.6.1 / 7. února 2007 |
Náhled verze | 0.6.3 / 2007 |
Napsáno | C ++ |
Operační systém | Nezávislé na platformě |
Typ | Analyzátor generátoru |
Licence | GNU General Public License |
webová stránka | Domovská stránka JetPAG |
JetPAG (Jet Parser AautomatickyGenerator) je open-source LL (k) analyzátor a lexikální analyzátor generátor, s licencí pod GNU General Public License. Je to osobní dílo Tareqa H. Sharafyho a je v současné době v závěrečné fázi beta vývoje.
Dějiny
Tareq spustil JetPAG jako malý program napsaný pouze pro praktické účely. Brzy, když se začalo rozšiřovat, bylo rychle přidáno mnoho cílů a bylo zřejmé, že JetPAG si zaslouží být úplným projektem. Skutečný vývoj JetPAG byl zahájen koncem roku 2005 a zaměřil se na kompletní rámec silného rekurzivní sestup lexikální analyzátor a generátor syntaktických analyzátorů s důrazem na snadné použití, čitelnost kódu a vysoký výkon generovaného kódu. Po dlouhém období interního vývoje a testování byl vydán první vývojový balíček JetPAG SourceForge dne 18. listopadu 2006. Vývoj JetPAG je aktuální na beta fáze, aktuální verze je 0.6.1. Vývoj byl zpožděn od poloviny roku 2007 do začátku roku 2009, ale poté byl obnoven.
Přehled
Jetpag obsahuje několik modulů: front-end, analyzátory a generátory kódu.
Rozhraní frontend přijímá jako vstup metajazyky gramatiky.
Analyzátory provádějí hlavně dvě operace traversal strom. První je silný výpočet dívat se dopředu sady pro prvky v gramatice a druhá vytváří cesty vyhledávací hlavy ze sad vyhledávací hlavy. Lookahead cesty seskupit, faktorizovat a provést mnoho vylepšení a optimalizace hledat sady pomocí speciální analýzy. Z vyhledávacích cest se sady vyhledávacích dotazů transformují do vnořeného stromového tvaru, čímž se získá velká celková účinnost a vylepšení ve většině případů.
Generátory kódu generují zdrojový kód pro rozpoznávače kompatibilní se vstupními gramatikami na jejich základě spolu s informacemi shromážděnými z analyzátorů. V současné době JetPAG generuje zdrojový kód pouze v C ++.
Díky povaze metajazyka a rámce JetPAG je snadné a snadné integrovat generované rozpoznávače do větších aplikací. JetPAG také obsahuje některá zařízení v poskytnutém rámci, která pomáhají vývojářům s malými obslužnými programy a šetří čas vývoje z mnoha úkolů minimálního rozpoznávání jazyka.
Gramatiky JetPAG
Gramatiky JetPAG jsou psány v a meta jazyk založeno na EBNF formulář a regulární výrazy, s rozsáhlými doplňky a vylepšeními. Meta jazyk gramatik JetPAG byl navržen tak, aby byl maximálně flexibilní a snadno zvládal jak jednoduché gramatiky, tak velké a komplikované. Analyzátory a lexikální analyzátory jsou podobně definovány a generovány pro jednoduchost a snadné použití. Toto je jednoduchý příklad gramatiky základní kalkulačky:
gramatika Calc: parser CalcP: výraz: multiplikativní ('+' multiplikativní | '-' multiplikativní) *; multiplikativní: faktor ('*' faktor | '/' faktor) *; faktor: INT | '(' výraz ')'; skener CalcS: INT: '0' - '9' +; PLUS: '+'; MINUS: '-'; HVĚZDA: '*'; SLASH: '/'; LP: '( '; RP:') ';