pyPEG

Software screenshot:
pyPEG
Dettagli del software:
Versione: 2.4.1
Data di caricamento: 14 Apr 15
Sviluppatore: Volker Birk
Licenza: Libero
Popolarità: 29

Rating: 1.5/5 (Total Votes: 2)

Python è un linguaggio di scripting bella. Dà anche di accedere a un proprio parser e compilatore. Essa dà anche accesso a diversi altri parser per scopi speciali come modelli XML e di stringa.
Ma a volte si consiglia di avere il proprio parser. Questo è ciò che è pyPEG per.
Per ottenere una rapida visione su ciò che sta accadendo, si prega di leggere questo articolo su come analizzare un linguaggio arbitrario XML con pyPEG sul mio blog.
Che cosa è PEG?
PEG significa Parsing Expression Grammar. E 'qualcosa di simile l'idea di espressioni regolari per il contesto lingue gratuiti; una chiara spiegazione troverete in questo articolo di Wikipedia su PEG.
Con PEG è possibile descrivere le stesse lingue come con BNF (e loro sono anche simili).
Che cosa è un parser-interprete?
Parser comuni non stanno usando PEG e top-down parsing, ma LR (n) o LL (n) e l'analisi bottom-up. Il risultato è l'idea di attuare generatori di parser.
Perché con LR (n) o LL (n) parser è necessario calcolare un DFA prima, di solito si lascia il generatore di parser fare questo per voi. Il risultato è una implementazione parser per la grammatica BNF, che era l'ingresso. Si potrebbe chiamare un generatore di parser un compilatore da BNF a un'implementazione parser.
A Parser-interprete funziona come interprete, invece di essere un tale compilatore. Basta dare la grammatica come input, e analizza il linguaggio descritto dal testo. Non saranno programma generato.
Utilizzo pyPEG
Ciò significa: utilizzando pyPEG è molto semplice;-) Se si conosce già le espressioni regolari, si impara ad utilizzare pyPEG rapidamente.
Un piccolo campione
Un esempio: pensare ad un linguaggio semplice come questo:
Funzione FAK (n) {
& Nbsp; if (n == 0) {// 0! è 1 per definizione
& Nbsp; ritorno 1;
& Nbsp;} else {
& Nbsp; ritorno n * FAK (n - 1);
& Nbsp;};
}
Un pyPEG per tale lingua sembra il seguente codice (vedi anche lo script di esempio):
Commento def (): ritorno [re.compile (r "//.*"), re.compile ("/*.*?*/", re.S)]
def letterale (): ritorno re.compile (".? *" r'd * .d * | | d + ')
simbolo def (): ritorno re.compile (r "w +")
operatore def (): ritorno re.compile (r "+ | - | * | / | ==")
operazione def (): simbolo di ritorno, operatore, [letterale, FunctionCall]
espressione def (): ritorno [letterale, il funzionamento, FunctionCall]
def listaespressioni (): return espressione, -1, (",", espressione)
def returnstatement (): parola chiave return ("ritorno"), espressione
def ifstatement (): parola chiave return ("se"), "(", espressione, ")", il blocco, parola chiave ("altro"), blocco
dichiarazione def (): ritorno [ifstatement, returnstatement], ";"
Blocco def (): return "{", -2, affermazione, "}"
def parameterlist (): return "(", simbolo, -1, ("," simbolo), ")"
def FunctionCall (): il simbolo di ritorno, "(", listaespressioni, ")"
funzione def (): parola chiave return ("funzione"), simbolo, parameterlist, blocco
def simpleLanguage (): funzione di ritorno

Cosa c'è di nuovo in questa versione:

  • Questa è una versione di pulizia. Il codice di parse () e comporre () è stato fissato.

Cosa c'è di nuovo in versione 1.4:.

  • Questa versione corregge alcuni bug con packrat analisi

Cosa c'è di nuovo nella versione 1.3:

  • Sostituzione della tupla per i nomi Pyast dal simbolo (lista ) di classe, che è abbastanza compatibile, ma supporta il codice più descrittivo backend compilatore, anche.

Cosa c'è di nuovo in versione 1.2:.

  • sono stati fissati Bugs con Unicode in gestione degli errori >

Cosa c'è di nuovo nella versione 1.1:.

  • è stato aggiunto il supporto Unicode

Cosa c'è di nuovo in versione 0.46:.

  • pyPEG.print_trace True
  • Conversione pyPEG a Python 3.x ora funziona perfettamente con 2to3
  • Le regole grammaticali che vengono applicate possono essere opzionalmente tracciato impostando
  • pyPEG sarà in uscita questa traccia per stderr.

Cosa c'è di nuovo in versione 0.45:.

  • Bugfixes

Cosa c'è di nuovo in versione 0.44:

  • pyPEG ora decora ogni oggetto Pyast con il nome del file di origine e la linea numero.

Requisiti :

  • Python

Programmi simili

DOS33
DOS33

3 Jun 15

CmdOption
CmdOption

28 Sep 15

Node.js
Node.js

17 Aug 18

OpenCL
OpenCL

11 May 15

Altri software di sviluppo Volker Birk

YML
YML

11 May 15

Commenti a pyPEG

I commenti non trovato
Aggiungi commento
Accendere le immagini!