396 research outputs found

    Un Lambda-Calcul Atomique

    Get PDF
    International audienceNous introduisons un lambda-calcul avec partage explicite, le lambda-calcul atomique, dans lequel la duplication des sous-termes est faite pas à pas en fonction des constructeurs. Nous donnons une fonction de dénotation du lambda-calcul atomique dans le lambda-calcul et montrons que le lambda-calcul atomique simule la -réduction et préserve la normalisation forte. Nous donnons aussi un système de type pour le lambda-calcul atomique et montrons que la réduction préserve le type

    Developing a service-oriented component framework for a landscape modeling language

    Full text link
    With modeling and simulation, it is possible to study how a system works before trying to predict how it would behave in a variety of situations. However, when modeling landscape processes, issues related to space, time and multiple scales need to be addressed. In order to investigate these issues, a modeling platform based on a Domain Specific Language (DSL) has been developed. One of the main technical challenges of this platform is the ability to build applications with the capacity to themselves dynamically adapt to their environment. In this paper, we present the arguments and motivations behind the choice of the Service- Oriented Computing (SOC) approach when implementing the execution framework of the DSL. The modeling platform is composed of a development environment based on Eclipse IDE, a code generator, and an execution framework. The execution framework, which is the focus of this paper, must meet the constraints set by dynamic landscapes modeling, while capitalizing on the possibilities offered by the SOC approach. (Résumé d'auteur

    Attribute Grammars and Folds : Generic Control Operators

    Get PDF
    Projet OSCARGeneric control operators, such as \emph{fold}, have been introduced in functional programming to increase the power and applicability of data-structure-based transformations. This is achieved by making the structure of the data more explicit in program specifications. We argue that this very important property is one of the original concepts of attribute grammars. In this paper, we informally show the similarities between the fold formalism and attribute grammar specifications. We also compare their respective method to eliminate the intermediate data structures introduced by function composition (notion of deforestation or fusion): the normalization algorithm for programs expressed with folds and the descriptional composition of attribute grammars. Rather than identify the best way to achieve deforestation, the main goal of this paper is merely to intuitively present two programming paradigms to each other's supporting community and provide an unbiased account of their similarities and differences, in the hope that this leads to fruitful cross-fertilization

    Conception d'un langage métier et de primitives pour modéliser la dynamique de paysage

    Full text link
    Pour modéliser des paysages et leur dynamique, il est largement admis que les phénomènes géographiques ne peuvent être traités que sous la forme d'entités ou de champs (Goodchild, 1992; Peuquet, 2001). Ces concepts induisent des contraintes qui, lorsque combinées à d'autres, comme la difficulté de gérer le temps, des échelles multiples, ou des frontières floues, posent des problèmes pour la modélisation de la dynamique des paysages qui sont toujours d'actualité. Des études récentes (e.g. Rietsma and Albrecht, 2005; Parent et al., 2006) suggèrent cependant que l'amélioration des primitives de modélisation plutôt que les modèles eux-mêmes est une nouvelle voie qui mérite d'être explorée. Nous présentons ici une tentative pour dépasser les principales limites rencontrées en modélisation de la dynamique des paysages avec une approche basée sur le développement de nouvelles primitives de modélisation d'une part, et un langage métier (DSL) pour construire et manipuler ces primitives d'autre part. Nous faisons l'hypothèse que bien des aspects auxquels on fait appel pour modéliser des paysages et leur dynamique sont en fait liés entre eux et ne devraient pas être traités séparément comme c'est souvent le cas. Nous observons en particulier que les structures de données utilisées pour porter l'information spatiale contraignent fortement l'activité de modélisation, ce qui suggère que des primitives pour lesquelles les concepts et leurs représentations sont séparés, devraient être plus appropriées. Nous nous orientons donc vers la redéfinition de primitives spatiales et temporelles, en les dotant d'un certain nombre de propriétés de base visant à prendre en compte les principales limites rencontrées dans les études actuelles. Les différentes étapes de la cons truction du langage métier sont exposées dans cette présentation. Les propriétés de base que doivent posséder les primitives de modélisation sont d'abord identifiées. On constate que ces propriétés peuvent être exprimées à l'aide d'un ensemble restreint de structures et d'opérateurs plus fondamentaux. Ces derniers sont utilisés pour établir le méta-modèle du langage métier, en spécifiant les opérateurs et les règles de dépendance entre ces opérateurs indépendamment de toute syntaxe. La structure et la logique du langage sont présentées, ainsi que la façon dont on peut l'utiliser pour construire des primitives. Enfin, des exemples d'utilisation du DSL et un ensemble initial de quelques primitives sont illustrés à travers des expériences de modélisation de paysages. (Texte intégral

    How to Deforest in Accumulative Parameters?

    Get PDF
    Projet OSCARSoftware engineering has to reconcile modularity with efficiency. One way to grapple with this dilemma is to automatically transform a modular-speci- fied program into an efficient-implementable one. This is the aim of deforesta- tion transformations which get rid of intermediate data structures constructio- ns that appear when two functions are composed. Nevertheless, existing functional methods cannot deforest non-trivial intermediate constructions that are processed by symbolic composition. This new deforestation technique is based on the descriptional composition dedicated to attribute grammars. In this paper, we present the symbolic composition, we outline its counterpart in terms of classical deforestation methods and we sketch a way to embed it in a functional framework

    Symbolic Composition

    Get PDF
    Projet OSCARThe deforestation of a functional program is a transformation which gets rid ofintermediate data structures constructions that appear when two functions are composed. The descriptional composition, initially introduced by Ganzinger and Giegerich, is a deforestation method dedicated to the composition of two attribute grammars. This article presents a new functional deforestation technique, called symbolic composition, based on the descriptional composition mechanism, but extending it. An automatic translation from a functional program into an equivalent attribute grammar allows symbolic composition to be applied, and then the result can be translated back into a functional program. This yields a sourceto source functional program transformation. The resulting deforestation method provides a better deforestation than other existing functional techniques. Symbolic composition, that uses the declarative and descriptional features of attribute grammars is intrinsically more powerful than categorical-flavored transformations, whose recursion schemes are set by functors. These results tend to show that attribute grammars are a simple intermediate representation, particularly well-suited for program transformations

    Attribute Grammars: a Declarative Functional Language

    Get PDF
    Projet CHARMEAlthough Attribute Grammars were introduced thirty years ago, their lack of expressiveness has resulted in limited use outside the domain of static language processing. In this paper we show that it is possible to extend this expressiveness. We claim that Attribute Grammars can be used to describe computations on structures that are not just trees, but also on abstractions allowing for infinite structures. To gain this expressiveness, we introduce two new notions: {\em scheme productions\/} and {\em conditional productions}. The result is a language that is comparable in power to most first-order functional languages, with a distinctive declarative character. Our extensions deal with a different part of the Attribute Grammars formalism than what is used in most works on Attribute Grammars including global analysis and evaluator generation. Hence, most existing results are directly applicable to our extended Attribute Grammars including efficient implementation (in our case, using the FNC-2 system http://www-rocq.inria.fr/charme/FNC-2/). The major contribution of this approach is to restore and re-emphasize the intrinsic power of Attribute Grammars. Furthermore, our extensions call for new studies on applying to functional programming the analysis and implementation techniques developed for Attribute Grammars

    Dynamic Attribute Grammars

    Get PDF
    Projet OSCARAlthough Attribuate Grammars were introduced thirty years ago, their lack of expressiveness has resulted in limited use outside the domain of static language processing. With the new notion of a Dynamic Attribute Grammar defined on a Grammar Couple, informally presented in a previous paper, we show that it is possible to extend this expressiveness and to describe computations on structures that are not just trees, but also on abstractions allowing for infinite structures. The result is a language that is comparable in power to most first-order functional languages, with a distinctive declarative character. In this paper, we give a formal definition of Dynamic Attribute Grammars and show how to construct efficient visit-sequence-based evaluators for them, using traditional, well-established AG techniques (in our case, using the FNC2 system The major contribution of this approach is to restore the intrinsic power of Attribute Grammar and re-emphasize the effectiveness of analysis and implement- ation techniques developed for them

    Structure-directed Genericity in Functional Programming and Attribute Grammars

    Get PDF
    Projet OSCARGeneric control operators, such as \emph{fold}, have been introduced in functional programming to increase the power and applicability of data-structure-based transformations. This is achieved by making the structure of the data more explicit in program specifications. We argue that this very important property is one of the original concepts of attribute grammars. In this paper, we present the similarities between the \emph{fold} formalism and attribute grammars. In particular, we show the equivalence of their respective deforestation methods. Given these results and the fundamental role of deforestation in the concept of \emph{structure-directed genericity}, first devised for attribute grammars with descriptional composition, we show how the \emph{fold} operator with its fusion method allow us to transport this concept in the area of functional programming

    SmartTools: a generator of interactive environments tools

    Get PDF
    SmartTools is a development environment generator that provides a structure editor and semantic tools as main features. The well-known visitor pattern technique is commonly used for designing semantic analysis, it has been automated and extended. SmartTools is easy to use thanks to its graphical user interface designed with the Java Swing APIs. It is built with an open architecture convinient for a partial or total integration of SmartTools in other environments. It makes the addition of new software components in SmartTools easy. As a result of the modular architecture, we built a distributed instance of SmartTools which required minimal effort. Being open to the XML technologies offers all the features of Smart Tools to any language defined with those technologies. But most of all, with its open architecture, SmartTools takes advantage of all the developments made around those technologies, like DOM, through the XML APIs. The fast development of SmartTools (which is a young project, one year old) validates our choices of being open and generic. The main goal of this tool is to provide help and support for designing software development environments for programming languages as well as application languages defined with XML technologies
    corecore