[Svenska] Plugin för automatgenerering av kompilatorer och interpretatorer inom Eclipse-miljön. (Detalierad) RML är ett språk för att automatiskt generera kompilatorer och interpretatorer från specifikationer i naturlig semantik. Eclipse är en programmeringsmiljö, främst för Java, med interaktiv syntaxkontroll, programmeringsstöd som automatisk uppslagning av variabler, metoder via variabeltyper, tillägg av importsatser etc. och viss refaktoriseringsstöd samt automatisk testexekvering. Eclipse är designat mha design patterns och det finns stöd för att skriva plugins för andra programmeringsspråk. Detta examensarbete går ut på att skriva en grundläggande plugin för RML, i första hand med stöd för syntaxbaserad märkning av källkod, navigering mha modul, relation och regelhierarki i separat fönster i Eclipse. Programmeringshjälp såsom hjälp med att ange relationsargument och automatisk komplettering av relationsnamn med och utan modulnamn är önskvärda funktioner. Andra funktioner kan vara refaktoriseringar som t.ex. tillägg av fält i existerande datastrukturer med tillhörande enkla ändringar av existerande relationer som använder datastrukturen, nambyte på relationer, moduler och lokala variabler etc. --------------------------------------------------------------------------- [Engelska] Relational Meta-Language Integrated Development Environment (RML-IDE) as Eclipse plugin(s) (Detailed Description) [Introduction] Relational Meta-Language (RML) is a practical language for writing Natural Semantics specifications. From these specifications the RML compiler, generates executable C code. The RML environment is used at PELAB to define formal specifications for programming languages (i.e. Java, Modelica etc). However, the RML environment is not user friendly. This master's thesis should address this issue. [Goal] Design and implement Eclipse plugin(s) that provides the following features in an RML Integrated Development Environment: - editing + syntax highlight and syntax checking + modules/relations/rules/datatypes browser (tree-based browser) + cross-referencing of definitions and use (datatypes and relations) + assistant for pattern matching construction based on the information from user-defined datataypes declarations + adaptation and integration with existing RML compiler frontend - compilation + compilation manager of RML specifications + adaptation and integration with existing RML compiler - debugging + source code debugging for RML + adaptation and integration with existing RML debugger [Resources] - Eclipse (http://www.eclipse.org) "Eclipse is a kind of universal tool platform - an open extensible IDE for anything and nothing in particular." - Eclipse-Plugins (http://www.eclipse-plugins.info/) - Relational Meta-Language [RML] (http://www.ida.liu.se/~pelab/rml) RML is a compiler for Natural Semantics. - Standard ML of New Jersey [SMLNJ] (http://www.smlnj.org/) - SML.NET (http://www.cl.cam.ac.uk/Research/TSG/SMLNET/) Functional programming on the .NET CLR [Requirements] - Programming: * C/C++ the runtime of RML is in C, the debugger uses C/C++, the RML compiler backend generates C. * SML the RML compiler frontend is implemented in SML * Java the Eclipse framework is based on Java - Knowledge * Compiler Construction * Design patterns [Contact] Adrian Pop email: adrpo@ida.liu.se url : http://www.ida.liu.se/~adrp Peter Fritzson email: petfr@ida.liu.se url : http://www.ida.liu.se/~petfr Levon Saldamli email: levsa@ida.liu.se url : http://www.ida.liu.se/~levsa