pyPEG

Software screenshot:
pyPEG
Rincian Software:
Versi: 2.4.1
Tanggal Upload: 14 Apr 15
Pengembang: Volker Birk
Lisensi: Gratis
Popularitas: 29

Rating: 1.5/5 (Total Votes: 2)

Python adalah bahasa scripting yang bagus. Bahkan memberikan Anda akses ke itu parser sendiri dan compiler. Hal ini juga memberikan Anda akses ke berbagai parser lain untuk tujuan khusus seperti XML dan tali template.
Tapi kadang-kadang Anda mungkin ingin memiliki parser Anda sendiri. Ini adalah apa yang pyPEG untuk.
Untuk mendapatkan tampilan cepat pada apa yang terjadi, silakan baca artikel ini tentang bagaimana mengurai bahasa sewenang-wenang untuk XML dengan pyPEG di blog saya.
Apa PEG?
PEG berarti Parsing Expression Grammar. Ini sesuatu seperti ide Regular Expressions untuk konteks bahasa bebas; penjelasan yang sangat jelas Anda akan menemukan dalam artikel Wikipedia tentang PEG.
Dengan PEG Anda bisa menggambarkan bahasa yang sama seperti dengan BNF (dan mereka bahkan sama).
Apa yang dimaksud dengan Parser-Interpreter?
Parser umum tidak menggunakan PEG dan top-down parsing, namun LR (n) atau LL (n) dan parsing bottom-up. Hal ini menyebabkan ide menerapkan generator parser.
Karena dengan LR (n) atau LL (n) parser Anda perlu menghitung sebuah DFA pertama, biasanya Anda membiarkan generator parser melakukan ini untuk Anda. Hasilnya adalah implementasi parser untuk tata bahasa BNF Anda, yang input. Satu bisa menelepon generator parser compiler dari BNF ke implementasi parser.
Sebuah Parser-Interpreter tidak bekerja sebagai penerjemah bukannya compiler tersebut. Hanya memberikan tata bahasa Anda sebagai masukan, dan mem-parsing bahasa dijelaskan dari teks. Tidak akan ada program yang dihasilkan.
Menggunakan pyPEG
Itu berarti: menggunakan pyPEG sangat mudah;-) Jika Anda tahu ekspresi reguler sudah, Anda akan belajar untuk menggunakan pyPEG cepat.
Sebuah contoh kecil
Contoh: memikirkan bahasa yang sederhana seperti ini:
Fungsi fak (n) {
& Nbsp; if (n == 0) {// 0! adalah 1 per definisi
& Nbsp; kembali 1;
& Nbsp;} else {
& Nbsp; kembali n * fak (n - 1);
& Nbsp;};
}
Sebuah pyPEG untuk bahasa yang terlihat seperti kode berikut (lihat juga contoh script):
def komentar (): return [re.compile (r "//.*"), re.compile ("/*.*?*/", re.S)]
def literal (): return re.compile (".? *" r'd * .d * | | d + ')
simbol def (): return re.compile (r "w +")
Operator def (): return re.compile (r "+ | - | * | / | ==")
Operasi def (): simbol kembali, operator, [literal, functioncall]
ekspresi def (): return [literal, operasi, functioncall]
def expressionlist (): mengembalikan ekspresi, -1, (",", ekspresi)
def returnstatement (): return kata kunci ("kembali"), ekspresi
def ifstatement (): return kata kunci ("jika"), "(", ungkapan, ")", blok, kata kunci ("lain"), blok
Pernyataan def (): return [ifstatement, returnstatement], ";"
def blok (): return "{", -2, pernyataan, "}"
def ParameterList (): return "(", simbol, -1, (",", simbol), ")"
def functioncall (): mengembalikan simbol, "(", expressionlist, ")"
Fungsi def (): return kata kunci ("fungsi"), simbol, ParameterList, blok
def simpleLanguage (): fungsi kembali

Apa yang baru dalam rilis ini:

  • Ini adalah rilis pembersihan. Kode parse () dan menulis () itu tetap.

Apa yang baru di versi 1.4:.

  • Versi ini perbaikan beberapa bug dengan Packrat parsing

Apa yang baru di versi 1.3:

  • Mengganti tuple untuk nama di pyAST oleh Symbol (daftar ) kelas, yang cukup kompatibel, tetapi mendukung kode yang lebih deskriptif dalam backends compiler, juga.

Apa yang baru dalam versi 1.2:.

  • Bugs dengan Unicode dalam penanganan kesalahan yang tetap

Apa yang baru di versi 1.1:.

  • dukungan Unicode ditambahkan

Apa yang baru dalam versi 0,46.

  • pyPEG.print_trace ke True
  • Konversi pyPEG ke Python 3.x sekarang bekerja mulus menggunakan 2to3
  • Aturan tata bahasa yang diterapkan dapat opsional ditelusuri dengan menetapkan
  • pyPEG akan menampilkan jejak ini ke stderr
  • .

Apa yang baru dalam versi 0,45.

  • Perbaikan bug

Apa yang baru dalam versi 0,44:

  • pyPEG sekarang menghiasi setiap objek pyAST dengan nama file sumber dan baris nomor.

Persyaratan :

  • Python

Software yang serupa

Mozart
Mozart

3 Jun 15

Azure
Azure

3 Jun 15

gears-less
gears-less

20 Feb 15

Linaro GCC
Linaro GCC

17 Feb 15

Perangkat lunak lain dari pengembang Volker Birk

YML
YML

11 May 15

Komentar untuk pyPEG

Komentar tidak ditemukan
Tambahkan komentar
Aktifkan gambar!