Python yra gražus skriptų kalba. Ji netgi suteikia jums prieigą prie to paties analizatorius ir sudarytojas. Ji taip pat suteikia jums prieigą prie įvairių kitų analizatorių specialiais tikslais, pavyzdžiui, XML ir styginių šablonus.
Bet kartais galite turėti savo analizatorius. Tai, kas pyPEG už.
Norėdami gauti greitą nuomonę apie tai, kas vyksta, prašome perskaityti šį straipsnį apie tai, kaip apdoroti savavališkai kalbą XML su pyPEG mano dienoraštyje.
Kas yra PEG?
PEG reiškia apdorojant Expression gramatikos. Tai kažkas panašaus į reguliariųjų išraiškų konteksto nemokamai kalbomis idėja; labai aiškus paaiškinimas jums rasti Vikipedijos straipsnio apie PEG.
Su vinys galite aprašyti pačias kalbas kaip su BNF (ir jie net panašūs).
Kas yra parser-vertėjas?
Bendrosios analizatoriai nenaudojate vinys iš viršaus į apačią gramatikos, bet LR (n) arba LL (n) ir "iš apačios į viršų apdorojant. Tai lemia įgyvendinimo analizatorius generatoriai idėja.
Kadangi su LR (n) arba LL (n) analizatorius jums reikia apskaičiuoti iš DFA pirma, paprastai leisite analizatorius generatorius padaryti tai už jus. Rezultatas yra analizatorius įgyvendinimas jūsų BNF gramatikos, kuri buvo įėjimas. Galima skambinti analizatorius generatorius iš BNF sudarytojas analizatorius įgyvendinimą.
Parser-vertėjas daro darbą, kaip vertėjo, o ne yra toks kompiliatorius. Tiesiog duoti savo gramatiką kaip įėjimo, ir jis suvokia, aprašytą kalbą iš teksto. Nebus programa generuoja.
Naudojant pyPEG
Tai reiškia, kad: naudojant pyPEG yra labai lengva;-) Jei žinote reguliarios išraiškos jau, jūs išmoksite naudoti pyPEG greitai.
Nedidelis pavyzdys
Pavyzdys: manau, paprasta kalba kaip šis:
funkcija FAK (n) {
& Nbsp; jei (n == 0) {// 0! yra 1 pagal apibrėžimą
& Nbsp; return 1;
& Nbsp;} else {
& Nbsp; grąža n * FAK (n - 1);
& Nbsp;};
}
PyPEG tos kalbos atrodo šį kodą (taip pat žr mėginio scenarijų):
Def komentaras (): grįžti [re.compile (R "//.*"), re.compile ("/*.*?*/" re.S)]
Def pažodinis (): grįžti re.compile (".? *" r'd * .D * | | D +)
Def simbolis (): grįžti re.compile (R "W +")
Def operatorius (): grįžti re.compile (r + | - | * | / | == ")
Def operacija (): grįžti simbolis, operatorius, [pažodinis, functioncall]
Def išraiška (): grįžti [pažodinis, operacija, functioncall]
Def expressionlist (): grįžti išraiška, -1, (",", išraiška)
Def returnstatement (): grįžti raktažodis ("grįžti"), išraiška
Def ifstatement (): grįžti raktažodis ("jei"), "(" išraiška ")", blokuoti, raktažodžių ("kitas"), blokas
Def pareiškimas (): grįžti [ifstatement, returnstatement], ";"
Def blokas (): grįžti "{", -2, pareiškimas, "}"
Def parameterlist (): grįžti "(" simbolis, -1, (",", simbolis), ")"
Def functioncall (): grįžti simbolis "(" expressionlist ")"
Def funkcija (): grįžti raktažodis ("funkcija"), simbolis, parameterlist, blokas
Def simpleLanguage (): grįžti funkcija
Kas naujo , šioje laidoje:
- Tai valymas spaudai. buvo nustatyta iš parse kodas () ir rašyti ().
Kas naujo versija 1.4:.
- Ši versija išsprendžia kai su packrat apdorojant klaidas
Kas naujo versijoje 1.3:
- keitimas už pavadinimų pyAST Tuple simboliu (sąrašas ) klasė, kuri yra gana suderinamas, tačiau palaiko daugiau aprašomojo kodą sudarytojas backends, taip pat.
Kas naujo 1.2 versijoje:.
- buvo Suremontuota su Unicode klaidą tvarkymo
Kas naujo 1.1 versijoje:.
- Unicode buvo įtraukta li>
Kas naujo versija 0,46:.
- pyPEG.print_trace True
- Konvertavimas pyPEG Python 3.x dabar veikia sklandžiai, naudojant 2to3
- gramatikos taisyklės, taikomos pasirinktinai gali būti atsekti pagal nustatymo
- pyPEG atras tai pėdsakų stderr.
Kas naujo versija 0,45:.
- Klaidų ištaisymas "
Kas naujo versija 0,44:
- pyPEG dabar puošia kiekvieną pyAST objektą šaltinis failo pavadinimas ir linijos skaičius.
Reikalavimai :
- Python
Komentarai nerastas