pyPEG

Sagteware kiekie:
pyPEG
Sagteware besonderhede:
Weergawe: 2.4.1
Upload datum: 14 Apr 15
Ontwikkelaar: Volker Birk
Lisensie: Gratis
Populariteit: 108

Rating: 1.3/5 (Total Votes: 3)

Python is 'n mooi script taal. Dit gee ook toegang tot sy eie parser en samesteller. Dit gee ook toegang tot verskeie ander ontleders vir spesiale doeleindes soos XML en string templates.
Maar soms wil jy dalk jou eie parser te hê. Dit is wat is pyPEG vir.
'N vinnige blik op wat gebeur te kry, lees asseblief hierdie artikel oor hoe 'n arbitrêre taal te XML met pyPEG op my blog te ontleed.
Wat is PEG?
PEG beteken Parsing Expression Grammatika. Dit is iets soos die idee van Regular Expressions vir konteks gratis tale; 'n baie duidelike verduideliking wat jy sal vind in die Wikipedia artikel oor PEG.
Met penne kan jy dieselfde tale beskryf soos met BNF (en hulle is selfs soortgelyke).
Wat is 'n Parser-Interpreter?
Algemene parsers nie gebruik penne en top-down parsing, maar LR (n) of LL (n) en bottom-up parsing. Dit lei tot die idee van die implementering van parser kragopwekkers.
Want met LR (n) of LL (n) parsers moet jy eers uit te bereken 'n DFA, gewoonlik jy laat die ontleder kragopwekker doen dit vir jou. Die resultaat is 'n ontleder implementering vir jou BNF grammatika, wat was die insette. 'N Mens kan 'n ontleder kragopwekker 'n samesteller van BNF bel na 'n ontleder implementering.
A Parser-Interpreter werk nie as 'n tolk in plaas van om so 'n samesteller. Net gee jou grammatika as insette, en dit ontleed die beskryf taal uit teks. Daar sal geen program gegenereer word.
Gebruik pyPEG
Dit beteken: die gebruik van pyPEG is baie maklik;-) As jy weet gereelde uitdrukkings reeds, sal jy leer pyPEG om vinnig te gebruik.
'N klein voorbeeld
'N voorbeeld: dink aan 'n eenvoudige taal soos hierdie een:
funksie FAK (n) {
& Nbsp; as (n == 0) {// 0! is 1 per definisie
& Nbsp; terugkeer 1;
& Nbsp;} anders {
& Nbsp; terugkeer N * FAK (n - 1);
& Nbsp;};
}
A pyPEG vir daardie taal lyk soos die volgende kode (sien ook die voorbeeld script):
def kommentaar (): terugkeer [re.compile (r "//.*"), re.compile ("/*.*?*/", re.S)]
def letterlike (): terugkeer re.compile (".? *" r'd * .d * | | d + ')
def simbool (): terugkeer re.compile (r "w +")
def operateur (): terugkeer re.compile (r "+ | - | * | / | ==")
def operasie (): terugkeer simbool, operateur, [letterlik, functioncall]
def uitdrukking (): terugkeer [letterlike, bedryf, functioncall]
def expressionlist (): terugkeer uitdrukking, -1, (",", uitdrukking)
def returnstatement (): terugkeer navraag ("return"), uitdrukking
def ifstatement (): terugkeer navraag ("as"), "(", uitdrukking, ")," blok, navraag ("anders"), blok
def stelling (): terugkeer [ifstatement, returnstatement], ";"
def blok (): return "{", -2, verklaring, "}"
def parameterlist (): return "(", simbool, -1, (",", simbool), ")"
def functioncall (): terugkeer simbool, "(" expressionlist, ")"
def funksie (): terugkeer navraag ("funksie"), simbool, parameterlist, blok
def simpleLanguage (): terugkeer funksie

Wat is nuut in hierdie release:

  • Dit is 'n opruim release. Die kode van parse () en komponeer () is vasgestel.

Wat is nuut in die weergawe 1.4:.

  • Hierdie weergawe is 'n paar foute met packrat parsing

Wat is nuut in die weergawe 1.3:

  • Die vervanging van die tal vir name in pyAST deur die simbool (lys ) klas, wat is redelik geskik, maar ondersteun meer beskrywende kode in samesteller back ends, ook.

Wat is nuut in die weergawe 1.2:.

  • Bugs met Unicode in fouthantering is vasgestel

Wat is nuut in die weergawe 1.1:.

  • Unicode ondersteuning is bygevoeg

Wat is nuut in die weergawe 0.46:.

  • pyPEG.print_trace te True
  • Converting pyPEG te Python 3.x nou moeiteloos werk met behulp van 2to3
  • Die grammatika reëls wat toegepas word kan opsioneel opgespoor word deur die instelling
  • pyPEG sal uitset hierdie spoor te stderr.

Wat is nuut in die weergawe 0.45:.

  • bugfixes

Wat is nuut in die weergawe 0.44:

  • pyPEG versier nou elke pyAST voorwerp met bron lêer naam en lyn nommer.

Vereistes :

  • Python

Soortgelyke sagteware

refactor
refactor

2 Jun 15

Octave
Octave

2 Jun 15

4tH compiler
4tH compiler

20 Feb 15

Bocfel
Bocfel

17 Feb 15

Ander sagteware ontwikkelaar Volker Birk

YML
YML

11 May 15

Kommentaar te pyPEG

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!