Semantic parsing using graph transformations

OData support
Supervisor:
Ács Evelin Kitti
Department of Automation and Applied Informatics

The Slime language is used for extending languages whose syntax requires the writing of highly redundant source code for certain applications. Its syntax supports efficient declaration, manipulation and storage of templates of the extended language. We implemented the compiler using ANTLR (ANother Tool for Language Recognition). The primary goal of developing Slime was a syntax that facilitates compact and clear formulation of IRTG (Interpreted Regular Tree Grammar) grammars. We use IRTGs to develop grammars which are capable of converting between two or more formalisms, such as raw text, syntactic, and semantic representations via graph transformations. Slime has been tested by implementing templates to generate IRTG grammars, ANTLR lexer grammars, Android layout XML and HTML sources. Our Slime templates were most effective at generating Android layout code. Here we have managed to achieve a 30% reduction in the lines of code needed for implementing a menu. Most of the template content was initialization code, apart from which we only needed three lines of code per menu item as opposed to the avarage fifteen lines of code necessary in XML. This can result in even an 80% reduction in necessary lines when implementing menus with a large number of buttons. In the case of generatating IRTG files, apart from the initialization code we only needed two lines of code per IRTG rule instead of the six in plain IRTG format. For an IRTG file with many rules this can mean a 66% reduction in lines of code. The source code of the language, the description of its syntax and its basic elements can be found at https://github.com/Hollo1996/SlimeAnUTLE alongside with several examples.

Downloads

Please sign in to download the files of this thesis.