Ole Lehrmann Madsen
Aarhus University
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Ole Lehrmann Madsen.
conference on object oriented programming systems languages and applications | 1989
Ole Lehrmann Madsen; Birger Møller-Pedersen
The notions of class, subclass and virtual procedure are fairly well understood and recognized as some of the key concepts in object-oriented programming. The possibility of modifying a virtual procedure in a subclass is a powerful technique for specializing the general properties of the superclass. In most object-oriented languages, the attributes of an object may be references to objects and (virtual) procedures. In Simula and BETA it is also possible to have class attributes. The power of class attributes has not yet been widely recognized. In BETA a class may also have virtual class attributes . This makes it possible to defer part of the specification of a class attribute to a subclass. In this sense virtual classes are analogous to virtual procedures. Virtual classes are mainly interesting within strongly typed languages where they provide a mechanism for defining general parameterized classes such as set, vector and list. In this sense they provide an alternative to generics. Although the notion of virtual class originates from BETA, it is presented as a general language mechanism.
Plant Molecular Biology | 1993
Ole Lehrmann Madsen; Lene Sandal; Niels Sandal; Kjeld A. Marcker
In plants the enzyme coproporphyrinogen oxidase catalyzes the oxidative decarboxylation of coproporphyrinogen III to protoporphyrinogen IX in the heme and chlorophyll biosynthesis pathway(s).We have isolated a soybean coproporphyrinogen oxidase cDNA from a cDNA library and determined the primary structure of the corresponding gene. The coproporphyrinogen oxidase gene encodes a polypeptide with a predicted molecular mass of 43 kDa. The derived amino acid sequence shows 50% similarity to the corresponding yeast amino acid sequence. The main difference is an extension of 67 amino acids at the N-terminus of the soybean polypeptide which may function as a transit peptide.A full-length coproporphyrinogen oxidase cDNA clone complements a yeast mutant deleted of the coproporphyrinogen oxidase gene, thus demonstrating the function of the soybean protein.The soybean coproporphyrinogen oxidase gene is highly expressed in nodules at the stage where several late nodulins including leghemoglobin appear. The coproporphyrinogen oxidase mRNA is also detectable in leaves but at a lower level than in nodules while no mRNA is detectable in roots.The high level of coproporphyrinogen oxidase mRNA in soybean nodules implies that the plant increases heme production in the nodules to meet the demand for additional heme required for hemoprotein formation.
symposium on principles of programming languages | 1983
Bent Bruun Kristensen; Ole Lehrmann Madsen; Birger Møller-Pedersen; Kristen Nygaard
The BETA programming language is developed as part of the BETAproject. The purpose of this project is to develop concepts,constructs and tools in the field of programming and programminglanguages. BETA has been developed from 1975 on and the variousstages of the language are documented in [BETA a]. The application area of BETA is programming of embedded as wellas distributed computing systems. For this reason a major goal hasbeen to develop constructs that may be efficiently implemented.Furthermore the BETA language is intended to have a few number ofbasic but general constructs. It is then necessary that theabstraction mechanisms are powerful in order to define morespecialized constructs. BETA is an object oriented language like SIMULA 67([SIMULA]) and SMALLTALK ([SMALLTALK]). By this is meant that aconstruct like the SIMULA class/subclass mechanism is fundamentalin BETA. In contrast to SMALLTALK, BETA is a language in the ALGOL60 ([ALGOL]) family. SIMULA 67 is a system description and a programming language.The DELTA language ([DELTA]) is a system description language only,allowing description of full concurrency, continuous change andcomponent interaction, developed from a SIMULA conceptual platform.BETA started from the system concepts of DELTA, but is aprogramming language, drawing upon a large number of contributionsto programming research in the 1970s. A basic idea in BETA is tobuild the language upon one, general abstraction mechanism --- thepattern ([BETA a 77]) --- covering both data, procedural andcontrol abstractions, substituting constructs like class,procedure, function and type. Correspondingly objects, procedure activation records andvariables are all regarded as special cases of the basic buildingblock of program executions: the entity. A pattern thusdescribes a category of entities with identical structure.An entity consists of a set of attributes and anaction-part. An attribute may be a data-item or apattern. The action-part is a sequence of imperatives that may beexecuted. A data-item may be an entity or a reference to an entity.A pattern may be used in a procedure like manner in the sense thatan entity (procedure activation record) described by the patternmay be generated and executed as a part of the action sequence ofanother entity. A pattern may be used to generate entities thatexecute their action-part in concurrency with other entities. Suchentities may also execute their actions interleaved in a coroutinelike manner. Entities may be organized hierarcically by means of ageneralization of the SIMULA subclass mechanism. This givespossibilities for grouping common properties of entities ofdifferent patterns. In SIMULA 67 a class may have virtual attributes(procedures, labels, and switches). This is a powerful parametermechanism that gives the possibility to delay the specification ofan attribute to a subclass specification. However, SIMULA 67 lacksthe possibility to have virtual class attributes. Furthermore it isnecessary to have a runtime check on the parameters of virtualprocedures, since it is not possible to specify the parameter listof a virtual procedure. The virtual patterns of BETA is ageneralization of the virtual concept in SIMULA 67. In this paper the sequential part of BETA will be presented. Themain purpose is to demonstrate the use of the pattern/subpatternmechanism with virtual patterns as a powerful abstractionmechanism. In addition, a further generalization of the virtualconcept based on syntactic categories will be described. Work has been initiated to design and implement an integratedprogramming system for BETA. The approach to separatecompilation of BETA modules is described in [BETA c]. This paper is organised as follows: Section 2 describesentities, patterns and imperatives. Section 3 describes thesubpattern mechanism. Virtual patterns are described in section 4.Section 5 describes the generalization of the virtual concept. Insection 6 the remaining elements of BETA not mentioned in theprevious sections are described. Finally the syntax of BETA isgiven in the appendix. Each section with a brief introduction ofthe relevant language elements whereafter a number of examples aregiven. Most of the examples are extended versions of HoaresSmallIntSet [Hoare 72]. There is a distinction between the base language (calledbasic BETA) and standard BETA. Standard BETA is basicBETA extended with a number of commonly used constructs. Theseadditional constructs may all be regarded as patterns in basicBETA, but will often be given a special syntax. This paper willmainly focus on basic BETA. Occasionally we shall use parts of astandard BETA, but this will be stated at the appropiate place.
european conference on object-oriented programming | 1988
Ole Lehrmann Madsen; Birger Møller-Pedersen
A conceptual framework for object-oriented programming is presented. The framework is independent of specific programming language constructs. It is illustrated how this framework is reflected in an object-oriented language and the language mechanisms are compared with the corresponding elements of other object-oriented languages. Main issues of object-oriented programming are considered on the basis of the framework presented here.
ACM Transactions on Programming Languages and Systems | 1981
Bent Bruun Kristensen; Ole Lehrmann Madsen
Methods for constructing LALR(k) parsers are discussed. Algorithms for computing LALR(k) lookahead are presented together with the necessary theory to prove their correctness. First, a special algorithm for the LALR(1) case is presented. Second, a general LALR(k) algorithm with k-1 is presented. Given an item and a state, the algorithms compute their corresponding LALR lookahead during a recursive traversal of the LR(0) machine. Finally, the LALR(k) algorithm is generalized to compute LALR(k) lookahead for all items and states visited during the recursive traversal performed by the first two algorithms.
acm conference on hypertext | 1993
Kaj Grønbæk; Jens A. Hem; Ole Lehrmann Madsen; Lennert Sloth
This paper discusses issues for the design of a Dexter-based cooperative hypermedia architecture and a specific system, DeVise Hypermedia (DHM), developed from this architecture. The Dexter Hypertext Reference Model [Hala90] was used as basis for designing the architecture. The Dexter model provides a general and solid foundation for designing a general hypermedia architecture. It introduces central concepts and proposes a layering of the architecture. However, to handle cooperative work aspects, such as sharing material and cooperative authoring, we have to go beyond the Dexter model concepts. To deal with such aspects we have extended our implementation of the Dexter concepts with support for long-term transactions, locking and event notification as called for by Halasz [Hala88]. The result is a platform independent architecture for developing cooperative hypermedia systems. The architecture consists of a portable kernel that constitutes an object oriented framework for developing Dexter compliant hypermedia systems. It is a client/server architecture including an object oriented database (OODB) to store the objects implementing the Dexter Storage Layer. We use a general OODB being codeveloped to support long term transactions, flexible locking, and event notification. The transaction and locking mechanism support several modes of cooperation on shared hypermedia materials, and the notification mechanism supports the users in maintaining awareness of each othersO activity. The portable kernel was used to implement the DHM system on two quite different platforms: UNIX/X-windows and Apple Macintosh.
european conference on object oriented programming | 1988
Jørgen Lindskov Knudsen; Ole Lehrmann Madsen
One of the important obligations of an expanding research area is to discuss how to approach the teaching of the subject. Without this discussion, we may find that the word is not spread properly, and thus that the results are not properly utilized in industry. Furthermore, discussing teaching the research area gives additional insight into the research area and its underlying theoretical foundation. In this paper we will report on our approach to teaching programming languages as a whole and especially teaching object-oriented programming.The prime message to be told is that working from a theoretical foundation pays off. Without a theoretical foundation, the discussions are often centered around features of different languages. With a foundation, discussions may be conducted on solid ground. Furthermore, the students have significantly fewer difficulties in grasping the concrete programming languages when they have been presented with the theoretical foundation than without it.
hawaii international conference on system sciences | 1988
Ole Lehrmann Madsen; C. Nogaard
The Mjolner programming environment is discussed. A number of tools in this environment are metaprograms, i.e., programs that manipulate other programs. The metaprogramming system is grammar-based in the sense that a metaprogramming tool may be generated from the grammar of any language. For each syntactic category of the language, a corresponding class is generated. The syntactic hierarchy of the grammar is mapped into a corresponding class hierarchy. This object-oriented representation of programs is further exploited by including a set of more general classes that view a program as an abstract syntax tree and by allowing the user to add semantic attributes in subclasses. >
conference on object-oriented programming systems, languages, and applications | 1999
Ole Lehrmann Madsen
Virtual classes and nested classes are distinguishing features of BETA. Nested classes originated from Simula, but until recently they have not been part of main stream object- oriented languages. C++ has a restricted form of nested classes and they were included in Java 1.1. Virtual classes is the BETA mechanism for expressing generic classes and virtual classes is an alternative to parameterized classes. There has recently been an increasing interest in virtual classes and a number of proposals for adding virtual classes to other languages, extending virtual classes, and unifying virtual classes and parameterized classes have been made. Although virtual classes and nested classes have been used in BETA for more than a decade, their implementation has not been published. The purpose of this paper is to contribute to the understanding of virtual classes and nested classes by presenting the central elements of the semantic analysis used in the Mjølner BETA compiler.
DAIMI Report Series | 1983
Ole Lehrmann Madsen
The possibilities for defining predicate transformers, denotational semantics, and operational semantics by means of extended attribute grammars are treated. The approach to operational semantics consists of a set of attribute grammar rules that specifies the possible transformations upon a given program. A proposal for defining the domains of an attribute grammar within the formalism is given. It is also shown how an attribute grammar may be reformulated as a tree rewriting system. Finally an efficient evaluator that works for all attribute grammars (including some circular ones) is described. This evaluator constructs during a left-to-right scan of a linear representation of the parse tree (a right-parse) a directed (acyclic) graph that represents the values of the attributes at the root of the parse tree. The parse tree itself need not be constructed. During a (recursive) scan of this graph the attribute values may be evaluated.