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.