pyPEG

Software screenshot:
pyPEG
Software detaljer:
Version: 2.4.1
Upload dato: 14 Apr 15
Udvikler: Volker Birk
Licens: Gratis
Popularitet: 29

Rating: 1.5/5 (Total Votes: 2)

Python er en dejlig scriptsprog. Det giver endda dig adgang til sin egen parser og compiler. Det giver også adgang til forskellige andre parsere til særlige formål som XML og streng skabeloner.
Men nogle gange kan du have din egen parser. Dette er, hvad der er pyPEG for.
For at få et hurtigt overblik over, hvad der sker, skal du læse denne artikel om, hvordan man analysere en vilkårlig sprog til XML med pyPEG på min blog.
Hvad er PEG?
PEG betyder parsing Expression Grammatik. Det er noget som tanken om regulære udtryk for sammenhæng uden sprog; en meget klar forklaring, du finder i Wikipedia artiklen om PEG.
Med PEG kan du beskrive de samme sprog som med BNF (og de er endda lignende).
Hvad er en Parser-Interpreter?
Fælles parsere ikke bruger pløkker og top-down parsing, men LR (n) eller LL (n) og bottom-up parsing. Dette resulterer i ideen om gennemførelse parser generatorer.
For med LR (n) eller LL (n) parsere skal du beregne en DFA første, normalt du lader parser generator gøre dette for dig. Resultatet er en parser gennemførelse til BNF grammatik, som var input. Man kunne kalde en parser generator en compiler fra BNF til en parser gennemførelse.
En Parser-Tolk virker som tolk i stedet for at være sådan en compiler. Bare giv din grammatik som input, og det analyserer den beskrevne sprog ud af teksten. Der bliver ingen program genereret.
Brug pyPEG
Det betyder: at bruge pyPEG er meget nemt;-) Hvis du allerede kender regulære udtryk, vil du lære at bruge pyPEG hurtigt.
En lille prøve
Et eksempel: tænk på et enkelt sprog som denne:
funktion Fak (n) {
& Nbsp; hvis (n == 0) {// 0! er 1 definition
& Nbsp; returnere 1;
& Nbsp;} else {
& Nbsp; tilbagevenden n * fak (n - 1);
& Nbsp;};
}
En pyPEG for sproget ligner følgende kode (se også prøven skrift):
def kommentar (): afkast [re.compile (r "//.*") re.compile ("/*.*?*/", re.S)]
def bogstavelig (): tilbage re.compile (".? *" r'd * .D * | | d +)
def symbol (): tilbage re.compile (r "w +")
def operatør (): tilbage re.compile (r "+ | - | * | / | ==")
def operation (): tilbage symbol, operatør, [bogstavelig, functioncall]
def udtryk (): Tilbage [bogstavelig, drift, functioncall]
def expressionlist (): returnerer udtryk, -1, (",", udtryk)
def returnstatement (): tilbage søgeord ("vende tilbage"), udtryk
def ifstatement (): tilbage søgeord ("hvis"), "(", udtryk, ")", blok, søgeord ("andet"), blok
def erklæring (): Tilbage [ifstatement, returnstatement], ";"
def blok (): return "{", -2, udsagn, "}"
def parameterlist (): return "(", symbol, -1, (",", symbol), ")"
def functioncall (): returnerer symbol, "(", expressionlist, ")"
def function (): tilbage søgeord ("funktion"), symbol, parameterlist, blok
def simpleLanguage (): tilbage funktion

Hvad er nyt i denne udgivelse:

  • Dette er en oprydning udgivelse. Koden af ​​parse () og komponere () blev fastsat.

Hvad er nyt i version 1.4:.

  • Denne version løser nogle bugs med packrat parsing

Hvad er nyt i version 1.3:

  • Udskiftning af tupel for navne i pyAST med symbolet (liste ) klasse, som er temmelig kompatibel, men understøtter mere beskrivende kode i compiler backends, også.

Hvad er nyt i version 1.2:.

  • Bugs med Unicode i fejlhåndtering blev fastsat

Hvad er nyt i version 1.1:.

  • sattes Unicode support

Hvad er nyt i version 0.46:.

  • pyPEG.print_trace til True
  • Konvertering pyPEG til Python 3.x nu fungerer problemfrit at bruge 2to3
  • De grammatiske regler, der anvendes, kan eventuelt spores ved at sætte
  • pyPEG vil output denne spor til stderr.

Hvad er nyt i version 0.45:.

  • Fejlrettelser

Hvad er nyt i version 0,44:

  • pyPEG nu pryder hver pyAST objekt med kilde filnavn og line nummer.

Krav :

  • Python

Lignende software

Qg
Qg

11 May 15

runawk
runawk

19 Feb 15

pdftools
pdftools

2 Jun 15

Andre software developer Volker Birk

YML
YML

11 May 15

Kommentarer til pyPEG

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!