Results 11 - 20
of
24
A Compiler Generator Produced by a Self-Applicable Specializer Can Have a Surprisingly Natural and Understandable Structure
- IFIP TC2 WORKSHOP ON PARTIAL EVALUATION AND MIXED COMPUTATION
, 1988
"... This paper describes the structure of, and the ideas behind, a self-applicable specializer of programs, as well as the principles of operation of a compiler generator that has been produced automatically by specializing the specializer with respect to itself. It has been found that the structure of ..."
Abstract
-
Cited by 23 (1 self)
- Add to MetaCart
This paper describes the structure of, and the ideas behind, a self-applicable specializer of programs, as well as the principles of operation of a compiler generator that has been produced automatically by specializing the specializer with respect to itself. It has been found that the structure of the compilers produced can be improved by making use of such devices as introducing different representations for the values of K- and U-parameters, splitting the subject program into K-and U-program, and automatically raising the arity of functions in the residual program. KEY WORDS AND PHRASES: Compiler generator, partial evaluation, mixed computation, non-partial evaluation, self-applicability, specializer, unmixed computation.
Improving CPS-Based Partial Evaluation: Writing Cogen by Hand
- University of Melbourne, Australia
, 1994
"... It is well-known that self-applicable partial evaluation can be used to generate compiler generators: cogen = mix(mix;mix), where mix is the specializer (partial evaluator) . However, writing cogen by hand gives several advantages: (1) Contrasting to when writing a self-applicable mix, one is not re ..."
Abstract
-
Cited by 15 (0 self)
- Add to MetaCart
It is well-known that self-applicable partial evaluation can be used to generate compiler generators: cogen = mix(mix;mix), where mix is the specializer (partial evaluator) . However, writing cogen by hand gives several advantages: (1) Contrasting to when writing a self-applicable mix, one is not restricted to write cogen in the same language as it treats [HL91]. (2) A handwritten cogen can be more efficient than a cogen generated by self-application; in particular, a handwritten cogen typically performs no (time consuming) environment manipulations whereas one generated by self-application does. (3) When working in statically typed languages with user defined data types, the self-application approach requires encoding data type values [Bon88, Lau91, DNBV91], resulting in relatively inefficient (cogen-generated) compilers that spend much of their time on coding and decoding. By writing cogen by hand, the coding problem is eliminated [HL91, BW93]. Specializers written in continuation p...
Fine-Grain Partial Evaluation of Intermediate Code from Equational Programs
, 1991
"... Partial evaluation is greatly simplified if the target language is simple. In [SS90] we define an extremely simple language that is used as an intermediate language for equational programming [O'D85]. Although the intermediate language is a general graph manipulation language, we take advantage of t ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
Partial evaluation is greatly simplified if the target language is simple. In [SS90] we define an extremely simple language that is used as an intermediate language for equational programming [O'D85]. Although the intermediate language is a general graph manipulation language, we take advantage of the particular properties of programs generated from equational programs. For partial evaluation to be successful, we need both a set of transformations that preserve the semantics of the program and a strategy that tells us when to apply a particular transformation. The strategy includes termination criteria to avoid infinite computations. In this paper we concentrate on a set of transformations that preserve the semantics of the program. We also show a small example of how these transformations can be applied to a program in order to improve its execution speed. The strategy, however, is only sketchy at the present time. The complete strategy is left for a future paper. Furthermore, we do n...
T.Risch: Scalable RDF Views of Relational Databases through Partial Evaluation
, 2006
"... The semantic web represents meta-data as a triple relation using the RDF data model. We have developed a system to process queries to RDF views of entire relational databases. Optimization of queries to such views is challenging because i) RDF views of entire relational databases become large unions ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
The semantic web represents meta-data as a triple relation using the RDF data model. We have developed a system to process queries to RDF views of entire relational databases. Optimization of queries to such views is challenging because i) RDF views of entire relational databases become large unions, and ii) queries to the views are more general than relational database queries, making no clear distinction between data and schema. As queries need not be expressed in terms of a schema, it becomes critical to optimize not only data access time but also the time to perform the query optimization itself. We have developed novel query optimization techniques for scalable queries to RDF views of relational databases. Our optimization techniques are based on partial evaluation, a method for compile time evaluation of subexpressions. We show dramatic improvements in query optimization time when scaling the query size while still producing high quality execution plans. Our query optimization techniques enable execution of real-world queries to RDF views of relational databases. 1.
Computing Types During Partial Evaluation
, 1990
"... : We have developed techniques for obtaining and using type information during program specialization (partial evaluation). Computed along with every residual expression and every specialized program is type information that bounds the possible values that the specialized program will compute at run ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
: We have developed techniques for obtaining and using type information during program specialization (partial evaluation). Computed along with every residual expression and every specialized program is type information that bounds the possible values that the specialized program will compute at run time. The three keystones of this research are symbolic values that represent both the set of values that might be computed at runtime and the code for creating the runtime value, generalization of symbolic values, and the use of online fixed-point iterations for computing the type of values returned by specialized recursive functions. This work differs from previous specializers in computing type information for all residual expressions, including residual if expressions, and residual calls to specialized user functions. The specializer exploits the type information it computes to increase the efficiency of specialized functions. In particular, this research allows the class of recursive d...
A Logic-Based Calculus of Fluents
, 1998
"... . This report formally defines the class of all problems on Reasoning about Actions and Change, where accurate and complete information about actions, together with strict inertia in continuous time, continuous change and alternative results of possibly concurrent and independent actions are the ass ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
. This report formally defines the class of all problems on Reasoning about Actions and Change, where accurate and complete information about actions, together with strict inertia in continuous time, continuous change and alternative results of possibly concurrent and independent actions are the assumed properties. The intended model set for each member in the class is defined in terms of a model-theoretic trajectory semantics. The case is designated, in the Features and Fluents framework, with the K-RACi family of reasoning problems. A fix-point characterization of the subclass Ksp-RAdCi is then given in terms of a simulative algebraic semantics, and show which are the difficulties when approaching the full class with that method. A non-simulative algebraic semantics is then presented as an alternative algebraic characterization of the model-theoretic trajectory semantics. Still the characterization is made in terms of complete lattices and continuous operators on those complete latti...
Partial Evaluation: Principles and Perspectives
- Jouneés Francophones des Langages Applicatifs
, 1993
"... The last years have witnessed a flurry of new results in the area of partial evaluation. These tutorial notes survey the field and present a critical assessment of the state of the art. 1 Introduction Partial evaluation is a source-to-source program transformation technique for specializing program ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
The last years have witnessed a flurry of new results in the area of partial evaluation. These tutorial notes survey the field and present a critical assessment of the state of the art. 1 Introduction Partial evaluation is a source-to-source program transformation technique for specializing programs with respect to parts of their input. In essence, partial evaluation removes layers of interpretation. In the most general sense, an interpreter can be defined as a program whose control flow is determined by its input data. As Abelson points out, [43, Foreword], even programs that are not themselves interpreters have important interpreter-like pieces. These pieces contain both compile-time and runtime constructs. Partial evaluation identifies and eliminates the compile-time constructs. 1.1 A complete example We consider a function producing formatted text. Such functions exist in most programming languages (e.g., format in Lisp and printf in C). Figure 1 displays a formatting function ...
An early use of continuations and partial evaluation for compiling rules written in FOPC
- in FOPC. Higher-Order and Symbolic Computation
, 1999
"... This brief historical note describes research which was done in the period 1970-1973, and where continuations were introduced in a fairly pragmatic way together with partial evaluation in order to compile "rules" expressed as statements in first-order predicate calculus. The methods used at that tim ..."
Abstract
- Add to MetaCart
This brief historical note describes research which was done in the period 1970-1973, and where continuations were introduced in a fairly pragmatic way together with partial evaluation in order to compile "rules" expressed as statements in first-order predicate calculus. The methods used at that time were quite straight-forward, but they may be of some interest for the present workshop as an "early bird" result. 1 Background Around 1970, there was considerable interest in the artificial intelligence community for "programming language for AI". The mostly referenced competitors for the title were Planner [5] and QA4 [8], but there were also other proposals such as Pop-2 [2] and Lisp A [9]. At the time, I was starting a research group in this area at Uppsala University in Sweden. As it became increasingly evident that these languages were mostly used for deduction with the addition of certain additional techniques (such as non-monotonicity), we started to investigate the idea of using...

