pyPEG

Screenshot Λογισμικό:
pyPEG
Στοιχεία Λογισμικού:
Εκδοχή: 2.4.1
Ανεβάστε ημερομηνία: 14 Apr 15
Προγραμματιστής: Volker Birk
Άδεια: Δωρεάν
Δημοτικότητα: 29

Rating: 1.5/5 (Total Votes: 2)

Η Python είναι μια ωραία scripting γλώσσα. Δίνει ακόμη και να έχετε πρόσβαση σε δικό του αναλυτή και compiler. Σας δίνει επίσης και πρόσβαση σε διάφορες άλλες αναλυτών για ειδικούς σκοπούς, όπως XML και κορδόνι πρότυπα.
Αλλά μερικές φορές μπορεί να θέλετε να έχετε τη δική σας parser. Αυτό είναι ό, τι είναι για pyPEG.
Για να πάρετε μια γρήγορη άποψη για το τι συμβαίνει, παρακαλώ διαβάστε αυτό το άρθρο σχετικά με το πώς να αναλύσει μια αυθαίρετη γλώσσα XML με pyPEG στο blog μου.
Τι είναι η PEG;
PEG σημαίνει Parsing Έκφραση Γραμματική. Είναι κάτι σαν την ιδέα των κανονικών εκφράσεων για το πλαίσιο δωρεάν γλωσσών? μια πολύ σαφή εξήγηση θα βρείτε στο άρθρο της Wikipedia σχετικά με PEG.
Με ΡΕΟδ μπορείτε να περιγράψετε τις ίδιες γλώσσες, όπως με BNF (και είναι ακόμη παρόμοια).
Τι είναι ένα Parser-διερμηνέα;
Κοινή αναλυτές δεν χρησιμοποιούν ΡΕΟ και πάνω-κάτω την ανάλυση, αλλά LR (n) ή LL (n) και ανάλυσης κάτω προς τα πάνω. Αυτό οδηγεί στην ιδέα της εφαρμογής γεννήτριες αναλυτή.
Επειδή με την LR (n) ή LL (n) προγράμματα ανάλυσης θα πρέπει να υπολογίσει ένα DFA πρώτα, συνήθως αφήσετε το γεννήτρια parser κάνει αυτό για σας. Το αποτέλεσμα είναι μια εφαρμογή αναλυτή για BNF γραμματική σας, η οποία ήταν η είσοδος. Κάποιος θα μπορούσε να καλέσει μια γεννήτρια parser ένα μεταγλωττιστή από BNF σε εφαρμογή αναλυτή.
Ένα Parser-Διερμηνέας λειτουργεί ως διερμηνέας αντί να είναι μια τέτοια compiler. Απλά δώσει τη γραμματική σας ως πρώτη ύλη, και αναλύει την γλώσσα που περιγράφεται από το κείμενο. Δεν θα υπάρξει πρόγραμμα που δημιουργείται.
Χρήση pyPEG
Αυτό σημαίνει: με τη χρήση pyPEG είναι πολύ εύκολο?-) Εάν γνωρίζετε κανονικές εκφράσεις ήδη, θα μάθετε να χρησιμοποιείτε pyPEG γρήγορα.
Ένα μικρό δείγμα
Ένα παράδειγμα: σκεφτείτε μια απλή γλώσσα, όπως αυτό:
ΡΑΚ λειτουργία (n) {
& Nbsp? Αν (n == 0) {// 0! 1 είναι εξ ορισμού
& Nbsp? Επιστρέψει 1?
& Nbsp?} Else {
& Nbsp? Επιστροφή n * ΡΑΚ (n - 1)?
& Nbsp?}?
}
Μια pyPEG για αυτήν τη γλώσσα μοιάζει με τον ακόλουθο κώδικα (βλέπε επίσης το σενάριο του δείγματος):
def σχόλιο (): επιστροφή [re.compile (r "//.*»), re.compile ("/*.*?*/», re.S)]
def κυριολεκτική (): re.compile επιστροφή (".? *" r'd * .ά * | | δ + »)
σύμβολο def (): re.compile επιστροφής (r "w +")
χειριστής def (): re.compile επιστροφής (r "+ | - | * | / | ==")
λειτουργία def (): σύμβολο επιστροφής, χειριστής, [κυριολεκτική, functioncall]
έκφραση def (): επιστροφή [γραμματική, λειτουργία, functioncall]
def expressionlist (): επιστρέφει αιτήσεις εκδήλωσης, -1, (",", έκφραση)
def returnstatement (): λέξη-κλειδί επιστροφής ("επιστροφή"), η έκφραση
def ifstatement (): λέξη-κλειδί return ("αν"), "(", έκφραση, ")", μπλοκ, λέξη-κλειδί ("αλλιώς"), μπλοκ
Δήλωση def (): επιστροφή [ifstatement, returnstatement], "?"
μπλοκ def (): επιστροφή "{", -2, δήλωση, "}"
def λίστα παραμέτρων (): επιστροφή "(", σύμβολο, -1, (",", σύμβολο), ")"
def functioncall (): σύμβολο επιστρέψουν ", (", expressionlist, ")"
συνάρτηση def (): λέξη-κλειδί return ("λειτουργία"), το σύμβολο, λίστα παραμέτρων, μπλοκ
def simpleLanguage (): Η λειτουργία επιστροφής

Τι είναι καινούργιο σε αυτήν την έκδοση:

  • Αυτή είναι μια απελευθέρωση καθαρισμού. Ο κωδικός του parse () και συνθέτουν () έχει καθοριστεί.

Τι είναι καινούργιο στην έκδοση 1.4:.

  • Αυτή η έκδοση διορθώνει κάποια σφάλματα με packrat ανάλυσης

Τι είναι καινούργιο στην έκδοση 1.3:

  • Αντικατάσταση πλειάδα ονομάτων στο pyAST με το σύμβολο (κατάλογος ) τάξη, η οποία είναι αρκετά συμβατό, αλλά υποστηρίζει περισσότερο περιγραφικό κώδικα σε backends compiler, πάρα πολύ.

Τι είναι καινούργιο στην έκδοση 1.2:.

  • Σφάλματα με Unicode στο χειρισμό σφαλμάτων έχουν καθοριστεί

Τι είναι καινούργιο στην έκδοση 1.1:.

  • Προστέθηκε υποστήριξη Unicode

Τι είναι καινούργιο στην έκδοση 0.46:.

  • pyPEG.print_trace σε True
  • Μετατροπή pyPEG στην Python 3.x τώρα λειτουργεί απρόσκοπτα με τη χρήση 2to3
  • Οι κανόνες γραμματικής που εφαρμόζονται μπορεί προαιρετικά να ανιχνευθούν με τη ρύθμιση
  • pyPEG θα έξοδος αυτή ίχνος stderr.

Τι είναι καινούργιο στην έκδοση 0.45:.

  • Bugfixes

Τι είναι καινούργιο στην έκδοση 0.44:

  • pyPEG κοσμεί κάθε αντικείμενο pyAST με το όνομα του αρχείου προέλευσης και γραμμή τον αριθμό.

Απαιτήσεις :

  • Python

Παρόμοια λογισμικά

OpenCL
OpenCL

11 May 15

GCC MELT
GCC MELT

17 Feb 15

phc
phc

3 Jun 15

Άλλο λογισμικό του προγραμματιστή Volker Birk

YML
YML

11 May 15

Σχόλια για pyPEG

Τα σχόλια δεν βρέθηκε
προσθήκη σχολίου
Ενεργοποιήστε τις εικόνες!
Αναζήτηση ανά κατηγορία