Compiler Generator Coco / R
Hanspeter Mössenböck , Universitas Linz
Coco / R mengambil keterangan compiler dalam bentuk tata bahasa dikaitkan (sintaks EBNF dengan atribut dan tindakan semantik) dan menerjemahkannya ke dalam scanner dan parser keturunan rekursif. Pengguna harus menambahkan modul untuk penanganan tabel simbol, optimasi, dan generasi kode untuk mendapatkan compiler berjalan. LL (1) konflik dapat diselesaikan dengan mekanisme lookahead khusus. Coco / R telah berhasil digunakan dalam dunia akademis dan industri. . Ini menggabungkan fungsionalitas dari Unix alat terkenal Lex dan Yacc
Coco / R tersedia di bawah GNU GPL dari situs berikut:
- Java versi
- C # versi
- versi Oberon
- C, Pascal, Modula-2 versi
Berikut adalah contoh deskripsi compiler kecil dengan Coco / R:
COMPILER Demo CHARACTERS letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrtsuvwxyz". digit = "0123456789". EOL = '\t'. TOKENS ident = letter {letter | digit}. number = digit {digit}. COMMENTS FROM "/*" TO "*/" NESTED IGNORE EOL PRODUCTIONS Demo = Statement {";" Statement}. (*------------------------------------------------------------------------------------*) Statement (. string x; int y; .) = Ident "=" Number (. CodeGen.Assign(x, y); .) . (*------------------------------------------------------------------------------------*) Ident = ident (. x = t.val; .) . (*------------------------------------------------------------------------------------*) Number = number (. n = Convert.ToInt32(t.val); .) . END Demo.
Source: http://www.ssw.uni-linz.ac.at/Research/Projects/Compiler.html