AspectLISA logo

Institute of Computer Science

Faculty of Electrical Engineering and Computer Science   University of Maribor


Journal publications


Mernik Marjan, Lenič Mitja, Avdičausević Enis, Žumer Viljem. A reusable object-oriented approach
to formal specifications of programming languages. L'Objet, 1998, 4, vol. 3, pp. 273-306

Formal methods for describing programming language semantics are excellent tools for programming language design and development. However, they are not widely used since they are not modular, extensible and reusable. In this article, a new modular, extensible and reusable apprach for specifying programming languages with attribute grammars is presented. The concepts of object-oriented programming, i.e. templates, multiple inheritance and object oriented implementation of semantic domains are integrated with attribute grammars. With the proposed approach a language designer has the chance to design incrementally a language or reuse some fragments from other programming language specifications. The proposed approach has been implemented in our compiler generator tool LISA ver. 2.0.

Mernik Marjan, Žumer Viljem, Lenič Mitja, Avdičaušević Enis. Implementation of multiple attribute grammar inheritance in the tool LISA. SIGPLAN not., June 1999, Vol. 34, No. 6, pp. 68-75.

Multiple attribute grammar inheritance is a structural organization of attribute grammars where the attribute grammar inherits the specifications from ancestor attribute grammars, may add new specifications or may override some specifications from ancestor specifications. In the paper the implementation of multiple attribute grammar inheritance is described. The proposed approach is succesfully implemented in the compiler/interpreter generator tool LISA ver. 2.0.

Mernik Marjan, Lenič Mitja, Avdičaušević Enis, Žumer Viljem. Multiple attribute grammar inheritance. Informatica, 2000, Vol. 24, No. 3, pp. 319-328.

The language design process should be supported by modularity and abstraction in a manner that allows incremental changes as easily as possible. To at least partially fullfil this ambitious goal a new object-oriented attribute grammar specification language which supports multiple attribute grammar inheritance is introduced. Multiple attribute grammar inheritance is a structural organization of attribute grammars where the attribute grammar inherits the specifications from ancestor attribute grammars, may add new specifications or may override some specifications from ancestor specifications. With the proposed approach a language designer has the chance to design incrementally a language or reuse some fragments from other programming language specifications. The multiple attribute grammar inheritance is first introduced using an example, and thereafter by a formal model. The proposed approach is succesfully implemented in the compiler/interpreter generator tool LISA ver. 2.0.

Mernik Marjan, Žumer Viljem. Incremental programming language development. Comput. syst. struct., 2005, no. 31, pp. 1-16.

One of the well known properties of software systems is that they are subject to changes. Incremental software development enables making such program changes in a non-destructive manner. In the area of programming language definition the language designer/implementer wants to include new language features incrementally as the programming language evolves. In the paper our approach  to incremental programming language development is presented. The proposed approach has been successfully used in the development of real programming languages, which confirms feasibility in practice.

HENRIQUES, Pedro Rangel, VARANDO PEREIRA, Maria Joao, MERNIK, Marjan, LENIČ, Mitja, GRAY, Jeffrey G., WU, Hui. Automatic generation of language-based tools using the LISA system. IEE proc., Softw. [Print ed.], April. 2005, vol. 152, no. 2, pp. 54-69.

Many tools have been constructed using different formal methods to process various parts of a language specification (e.g. scanner generators, parser generators and compiler generators). The automatic generation of a complete compiler was the primary goal of such systems, but researchers recognised the possibility that many other language-based tools could be generated from formal language specifications. Such tools can be generated automatically whenever they can be described by a generic fixed part that traverses the appropriate data structures generated by a specific variable part, which can be systematically derivable from the language specifications. The paper identifies generic and specific parts for various language-based tools. Several language-based tools are presented in the paper, which are automatically generated using an attribute grammar-based compiler generator called LlSA. The generated tools that are described in the paper include editors, inspectors, debuggers and visualisers/animators. Because of their complexity of construction, special emphasis is given to visualisers/animators, and the unique contribution of our approach toward generating such tools.

Damijan Rebernak, Marjan Mernik, Pedro Rangel Henriques, Maria Joao Varanda Pereira. AspectLISA: an aspect-oriented compiler construction system based on attribute grammars, 6th Workshop on Language Descriptions, Tools and Applications, Vienna, AT 2006. LDTA'06 : proceedings,  2006, pp. 44-61.

The use of object-oriented techniques and concepts, like encapsulation and inheritance, greatly improves language specifications towards better modularity, reusability and extensibility. Additional improvements can be achieved with aspect-oriented techniques since semantic aspects also crosscut many language constructs. Indeed, aspect-oriented constructs have been already added to some language specifications. The LISA compiler construction system follows an object-oriented approach and has already implemented mechanisms for inheritance, modularity and extensibility. Adding aspects to LISA will lead to more reusable language specifications. In the paper, aspect-oriented attribute grammars are introduced, and the underlying ideas are incorporated into AspectLISA, an aspect-oriented compiler generator based on attribute grammars.


Other publications


Mernik Marjan, Lenič Mitja, Avdičaušević Enis, Žumer Viljem. The Template and Multiple Inheritance Approach into Attribute Grammars. International Conference on Computer Languages ICCL98, Chicago, USA, pp. 102 - 110, 1998.

Formal methods for describing programming language semantics, such as attribute grammars, operational semantics and denotational semantics, are not widely used since they are not modular, extensible and reusable. In the paper a new modular, extensible and reusable approach for specifying programming languages with attribute grammars is presented. The concepts from object-oriented programming, i.e. templates and multiple inheritance, have been integrated with attribute grammars. A template in attribute grammar is an abstraction of a semantic rule parameterized with attribute occurrences. On the other hand, the whole attribute grammar is a subject of multiple inheritance and specialization. With the proposed approach a language designer has the chance to design incrementally a language or reuse some fragments from other programming language specifications. Templates and multiple inheritance have been implemented in our compiler generator tool LISA ver. 2.0


Mernik Marjan, Lenič Mitja, Avdičaušević Enis, Žumer Viljem. Compiler/interpreter generator system LISA. CD ROM Proceedings of the thirty-third annual Hawaii international conference on System sciences, Maui, Hawaii, January 4-7, 2000.

This paper describes the LISA system which is a generic interactive environment for programming language development. From the formal language specifications of a particular programming language LISA produces a language specific environment that includes a language-knowledgable editor, a compiler/interpreter and other graphic tools. The paper focuses on design decisions, implementation issues and tools integration in the system LISA. The main reasons for developing a new compiler/interpreter generator system were: support for incremental language development, support for language design in a visual manner and the portability of the system and the generated environment. LISA is a set of related tools such as scanner generators, parser generators, compiler generators, graphic tools, editor and conversion tools, which are integrated by well designed interfaces. Therefore, it has the advantages of a single system and federated environment. LISA and the generated environment are written in Java which enables high portability to different platforms.


Mernik Marjan, Lenič Mitja, Avdičausević Enis, Žumer Viljem. LISA: an interactive environment for
programming language development.  Horspool N. (ed.). 11th International Conference Compiler Construction, CC 2002, LNCS No. 2304, pp. 1-4.


The LISA system is an interactive environment for programming language development. From the formal language specifications of a particular programming language LISA produces a language-specific environment that includes editors (a language=knowledgable editor and a structured editor), a compiler/interpreter and other graphic tools. LISA is a set of related tools, such as scanner generators, parser generators, compiler generators, graphic tools, editors and conversion tools, which are inegrated by well-designed interfaces.

To appear:

Damijan Rebernak, Marjan Mernik, Pedro Rangel Henriques, Maria Joao Varanda Pereira, Daniela da Cruz. Specifying languages using aspect-oriented approach: AspectLISA, submitted to ITI'06 (accepted). 

Object-oriented techniques and concepts have been successfully used in language specification and formalization. They greatly improve modularity, reausability and extensibility. In spite of using OO paradigms in language specification, some semantic aspects still crosscut many language constructs. Improvements can be achieved with aspect-oriented techniques. The paper describes AspectLISA tool wich uses aspect-oriented approach for language specification (aspect-oriented attribute grammars). An example will be worked out in order to illustrate the approach. We will show how to identify an aspect, specify it in the concrete AspectLisa syntax, and how to gather parts in order to develop a complete language processor.


Damijan Rebernak, Matej  Črepinšek, Marjan Mernik. Web Service for designing and implementing formal languages, submitted to ITI'06 (accepted).

An intelligent web service and its interface for designing and implementing formal languages is described in the paper. The paper describes also background tools LISA and GIE used in the web service and some basics of their usage. Three language design approaches are presented. Firstly, from scratch using  LISA specifications, secondly using stored specifications from other developers, and thirdly with a set of positive and negative example strings/programs. Advanced user interface with shared and documented repository of solutions make web service suitable for beginners as well as compiler experts. Web service has been designed in a way which makes it suitable for integration in standalone applications.