Estensione di un interprete prolog per la gestione delle eccezioni

   page       BibTeX_logo.png       attach   
@mastersthesis{iulianilseccezioni2p,
    abstract = {L'obiettivo di questa tesi \`{e} estendere l'interprete tuProlog al fine di supportare il meccanismo linguistico che Prolog offre per la gestione delle eccezioni. Allo stato attuale, i predicati interessati dall'errore semplicemente falliscono, mentre andrebbe supportato il meccanismo per la gestione delle eccezioni specificato nello standard ISO/IEC 13211-1 e implementato in molti altri interpreti Prolog. Lo standard prevede due predicati per fare ci\`{o}: throw/1 permette di lanciare un?eccezione all'interno di un predicato in caso di errore, mentre catch/3 pu\`{o} essere utilizzato per prevenire la terminazione forzata di un programma Prolog causata da eventuali errori. Il primo predicato ha una semantica simile a quella del throw di Java, mentre il secondo \`{e} assimilabile a un blocco try/catch. Inoltre lo standard classifica in modo molto preciso gli errori che si possono verificare durante l?esecuzione dei predicati, e descrive per ognuno di essi la sintassi dell?eccezione da lanciare. Il progetto dell'estensione dovr\`{a} dunque operare sul motore a stati di tuProlog, introducendo un apposito stato Exception in cui transitare in caso di eccezioni e che abbia lo scopo di gestirle. Tutti i predicati delle varie librerie di tuProlog dovranno quindi essere rivisti, in modo da lanciare le opportune eccezioni in caso di errori invece che fallire. Occorrer\`{a} inoltre affrontare la questione della generazione e della gestione di eccezioni Java all'interno di programmi Prolog che utilizzino oggetti Java durante la computazione: i metodi Java invocati via JavaLibrary possono infatti lanciare eccezioni, e anche in questo caso si deve progettare un meccanismo che renda possibile gestirle.},
    author = {Matteo Iuliani},
    available = {2010-03-17},
    contact = {Denti, Enrico},
    cycle = {LM},
    language = {it},
    start = {2009-06-19},
    supervisor = {Denti, Enrico},
    title = {Estensione di un interprete prolog per la gestione delle eccezioni},
    type = {Master's thesis}
}