JetPAG

JetPAG
Deweloperzy Tareq H. Sharafy
Wersja stabilna
0.6.1 / 7 lutego 2007 ; 16 lat temu ( 2007-02-07 )
Wersja podglądu
0.6.3 / 2007
Napisane w C++
System operacyjny Niezależne od platformy
Typ Generator parsera
Licencja Powszechna Licencja Publiczna GNU
Strona internetowa Strona główna JetPAG

JetPAG ( J et P arser A uto- G enerator) jest generatorem parserów i analizatorów leksykalnych LL(k) o otwartym kodzie źródłowym , dostępnym na licencji GNU General Public License . Jest to osobiste dzieło Tareqa H. Sharafy'ego i obecnie znajduje się w końcowej fazie rozwoju wersji beta.

Historia

Tareq założył JetPAG jako mały program napisany wyłącznie do celów praktycznych. Wkrótce, gdy zaczął się rozwijać, szybko dodano wiele celów i było oczywiste, że JetPAG jest godny bycia kompletnym projektem. Prawdziwy rozwój JetPAG rozpoczął się pod koniec 2005 roku, mając na celu stworzenie kompletnego frameworka dla potężnego rekurencyjnego i generatora parserów, z naciskiem na łatwość użycia, czytelność kodu i wysoką wydajność generowanego kodu. Po długim okresie wewnętrznego rozwoju i testów, pierwszy pakiet programistyczny JetPAG został wydany przez SourceForge 18 listopada 2006. Rozwój JetPAG jest obecny na faza beta , aktualna wersja to 0.6.1. Rozwój został opóźniony od połowy 2007 do początku 2009 roku, ale później został wznowiony.

Przegląd

Jetpag zawiera kilka modułów: front-end, analizatory i generatory kodu.

Front-end akceptuje metajęzyki gramatyczne jako dane wejściowe.

Analizatory wykonują głównie dwie operacje poprzez przechodzenie przez drzewo . Pierwszym z nich jest obliczanie silnych wyprzedzających dla elementów w gramatyce, a drugim konstruowanie ścieżek wyprzedzających z zestawów wyprzedzających. Ścieżki z wyprzedzeniem grupują, rozkładają na czynniki i wykonują wiele ulepszeń i optymalizacji zestawów z wyprzedzeniem za pomocą specjalnej analizy. Ze ścieżek wyprzedzających zestawy wyprzedzające są przekształcane w zagnieżdżoną formę drzewa, uzyskując w większości przypadków doskonałą ogólną wydajność i poprawę .

Generatory kodu generują na ich podstawie kod źródłowy dla rozpoznawaczy zgodny z gramatyką wejściową wraz z informacjami zebranymi z analizatorów. Obecnie JetPAG generuje kod źródłowy wyłącznie w C++.

Charakter metajęzyka i struktury JetPAG sprawia, że ​​integracja wygenerowanych aparatów rozpoznawania z większymi aplikacjami jest łatwa i prosta. JetPAG zawiera również pewne udogodnienia w dostarczonym środowisku, aby pomóc programistom z małymi narzędziami i zaoszczędzić czas programowania od wielu minimalnych zadań związanych z rozpoznawaniem języka.

Gramatyki JetPAG

Gramatyki JetPAG są napisane w metajęzyku opartym na formie EBNF i wyrażeniach regularnych , z rozbudowanymi dodatkami i poprawkami. Metajęzyk gramatyk JetPAG został zaprojektowany tak, aby maksymalnie elastycznie obsługiwać zarówno proste gramatyki, jak i duże, skomplikowane gramatyki. Parsery i analizatory leksykalne są podobnie definiowane i generowane dla prostoty i łatwości użytkowania. Oto prosty przykład gramatyki podstawowego kalkulatora:

gramatyka Calc: parser CalcP: wyrażenie: multiplikatywna ( '+' multiplikatywna | '-' multiplikatywna )* ; mnożnik: czynnik ( czynnik '*' | czynnik '/' )* ; czynnik: LCAŁK | '(' wyrażenie ')'  ; skaner CalcS: INT: '0'-'9'+; DODATKOWO: „+”; MINUS: '-'; GWIAZDKA: „*”; UKOŃCZENIE: „/”; LP: „(”; RP: „)”;

Zobacz też

Linki zewnętrzne