11

In questo momento sto scrivendo la mia proposta di dottorato per creare un processore di lingua per un nuovo linguaggio di specifica per Java (vedere JML o SpeC# per C#) e occorre definire uno strumento di implementazione per iniziare lo sviluppo. Gli aspetti di ricerca del linguaggio (sintassi, semantica, risultati teorici) sono ortogonali alla mia scelta di implementazione, quindi mi piacerebbe usare Python (2.6+) per le mie ragioni. Il prodotto finale sarà o un compilatore o interprete in grado di verificare alcune proprietà specificate per programmi scritti in Java.Creazione di un compilatore o di un interprete utilizzando Python

Qual è il miglior framework/libreria per compilare compilatori/interpreti in Python? Le "batterie incluse" sono per questo problema?

Punti bonus assegnati a soluzioni che dispongono di compilatori di riferimento per Java 6+.

+0

So che vuoi usare Python, ma se stai cercando le "batterie incluse" ti troverai meglio con F # ... quel linguaggio sembra costruito per la costruzione di compilatori/interpreti. – sholsapp

+2

@gnucom: non solo F #, ma ogni linguaggio della famiglia ML è adatto all'implementazione della lingua. Infatti, "ML" sta per "Meta Language". Haskell ha anche alcune interessanti librerie di parser (parsec). – delnan

+0

@delnan: Assolutamente. Sono corretto. :) – sholsapp

risposta

1

forse si vuole avere uno sguardo a this

+0

Perché raccomandi il runtime di Python ANTLRv2 quando anche uno esiste per ANTLRv3? –

+0

In particolare, quali compromessi ci sono per Python che non sono già trattati in questa domanda? http://stackoverflow.com/questions/633224/antlr2-vs-antlr3 –

+0

Ok, nessuno dei due sembra abbastanza robusto per questa ricerca. Grazie per avermi segnalato ANTLR + Python, però! –

0

Posso suggerire antlr con rilegatura suo pitone?

+0

oops, troppo lento :) –

7

Personalmente non posso sopportare antlr, io uso lex/yacc come mio generatore di parser. Ecco un'implementazione Python http://www.dabeaz.com/ply/ che è possibile utilizzare.

Che si occupa solo di parsing però, che in realtà non inizia nemmeno a costruire l'interprete . Per questo, probabilmente lo stai costruendo da zero - non ho mai sentito di una libreria specificamente orientata verso questo (sarei felice di vederne alcuni, per favore collegami lì nei commenti se sai di).

Dai un'occhiata a questo post SO how to start writing a very simple programming language ha buone idee.il.

+0

Sono pignolo per la qualità della segnalazione degli errori, quindi preferisco i suggerimenti basati su ANTLR di Anders a questi. –

Problemi correlati