Python egy szép programozási nyelv. Ez még akkor is hozzáférést biztosít, saját elemző és fordító. Azt is hozzáférést biztosít a különböző más értelmezők speciális célokra, mint például XML és vonós sablonok.
De néha érdemes, hogy a saját elemző. Ez az, amit pyPEG számára.
Ahhoz, hogy egy gyors áttekintést, hogy mi történik, kérjük, olvassa el ezt a cikket, hogyan kell elemezni az önkényes nyelv XML pyPEG a blogomban.
Mi PEG?
PEG jelenti Parsing Expression Gimnázium. Ez valami olyasmi, mint az ötletet Szabályos kifejezések összefüggésben szabad nyelv; Nagyon világos magyarázatot talál a Wikipedia cikket PEG.
A PEG lehet leírni a nyelveken, mint a BNF (és ők is hasonló).
Mi a Elemző-Tolmács?
Közös értelmezők nem használ csapok és top-down elemzés, de LR (n), vagy LL (n) és az alulról felfelé elemzés. Ez azt eredményezi, az elképzelést, végrehajtó elemző generátorok.
Mivel a LR (n), vagy LL (n) értelmezők meg kell kiszámítani ki a DFA első, általában akkor hagyja az elemző generátor ezt az Ön számára. Az eredmény egy elemző megvalósítja saját BNF nyelvtan, ami a bemenet. Nevezhetjük a parser generátor egy fordítót BNF egy elemző végrehajtását.
A Értelmező-Tolmács működik, mint egy tolmács, ahelyett, hogy egy ilyen fordítót. Csak adja meg a nyelvtan a bemenet, és akkor feldolgozza a leírt nyelvi ki a szöveget. Nem lesz program által generált.
A pyPEG
Ez azt jelenti: a pyPEG nagyon egyszerű;-) Ha tudja a reguláris kifejezések már, meg fogod használni pyPEG gyorsan.
Egy kis minta
Egy példa: gondoljunk egy egyszerű nyelvet, mint ez:
funkciót FAK (n) {
& Nbsp; if (n == 0) {// 0! 1 definíció
& Nbsp; return 1;
& Nbsp;} else {
& Nbsp; visszatérése n * fak (n - 1);
& Nbsp;};
}
A pyPEG az adott nyelven néz ki, mint a következő kódot (lásd még a minta script):
def comment (): return [re.compile (r "//.*"), re.compile ("/*.*?*/", re.S)]
def szó (): return re.compile (r'd * .d * | d + | ". *?" ")
def szimbólum (): return re.compile (r "w +")
def üzemeltető (): return re.compile (r "+ | - | * | / | ==")
def működés (): visszatérő szimbólum, üzemeltető, [szó, functioncall]
def kifejezést (): return [szó, üzemeltetése, functioncall]
def expressionlist (): vissza kifejezés, -1, ("," kifejezés)
def returnstatement (): return ("visszatérés"), a véleménynyilvánítás
def ifstatement (): return ("ha"), "(", kifejezés, ")", blokk, kulcsszó ("más"), block
def nyilatkozatot (): return [ifstatement, returnstatement], ";"
def blokk (): return "{", -2, nyilatkozta, "}"
def parameterlist (): return "(", szimbólum, -1, ("," jelképe), ")"
def functioncall (): vissza jelképe, "(", expressionlist, ")"
def function (): return ("funkció"), szimbólum, parameterlist, blokk
def simpleLanguage (): visszatérítéssel
Mi az új ebben a kiadásban:
- Ez egy razzia kiadás. A kódex parse (), és állítsa össze () rögzítették.
Mi az új 1.4-es:
- Ez a verzió javít néhány hibát a packrat elemzés.
Mi az új 1.3 verzió:
- cseréje a leíró nevek pyAST a Symbol (lista ) osztály, ami elég kompatibilis, de támogatja a több leíró kódot fordító backends is.
Mi az új a 1.2-es verzió:
- Hibák Unicode a hibakezelés rögzítették.
Mi az új 1.1-es verzióban:
- Unicode támogatást adunk hozzá.
Mi az új verzióban 0,46:
- pyPEG.print_trace True.
- konvertálása pyPEG a Python 3.x működik zökkenőmentesen a 2to3
- A nyelvtani szabályok alkalmazása tetszőlegesen vezethető beállításával
- pyPEG kiírja, hogy ennek nyoma a stderr.
Mi az új verzióban 0,45:
- hibajavítás.
Mi az új verzióban 0,44:
- pyPEG most díszíti minden pyAST objektum forrás file nevet és száma.
követelmények :
- Python
Hozzászólás nem található