405 research outputs found
Fast and Tiny Structural Self-Indexes for XML
XML document markup is highly repetitive and therefore well compressible
using dictionary-based methods such as DAGs or grammars. In the context of
selectivity estimation, grammar-compressed trees were used before as synopsis
for structural XPath queries. Here a fully-fledged index over such grammars is
presented. The index allows to execute arbitrary tree algorithms with a
slow-down that is comparable to the space improvement. More interestingly,
certain algorithms execute much faster over the index (because no decompression
occurs). E.g., for structural XPath count queries, evaluating over the index is
faster than previous XPath implementations, often by two orders of magnitude.
The index also allows to serialize XML results (including texts) faster than
previous systems, by a factor of ca. 2-3. This is due to efficient copy
handling of grammar repetitions, and because materialization is totally
avoided. In order to compare with twig join implementations, we implemented a
materializer which writes out pre-order numbers of result nodes, and show its
competitiveness.Comment: 13 page
SAGA: A project to automate the management of software production systems
The SAGA system is a software environment that is designed to support most of the software development activities that occur in a software lifecycle. The system can be configured to support specific software development applications using given programming languages, tools, and methodologies. Meta-tools are provided to ease configuration. The SAGA system consists of a small number of software components that are adapted by the meta-tools into specific tools for use in the software development application. The modules are design so that the meta-tools can construct an environment which is both integrated and flexible. The SAGA project is documented in several papers which are presented
Contributions to the Construction of Extensible Semantic Editors
This dissertation addresses the need for easier construction and extension of language tools. Specifically, the construction and extension of so-called semantic editors is considered, that is, editors providing semantic services for code comprehension and manipulation. Editors like these are typically found in state-of-the-art development environments, where they have been developed by hand. The list of programming languages available today is extensive and, with the lively creation of new programming languages and the evolution of old languages, it keeps growing. Many of these languages would benefit from proper tool support. Unfortunately, the development of a semantic editor can be a time-consuming and error-prone endeavor, and too large an effort for most language communities. Given the complex nature of programming, and the huge benefits of good tool support, this lack of tools is problematic. In this dissertation, an attempt is made at narrowing the gap between generative solutions and how state-of-the-art editors are constructed today. A generative alternative for construction of textual semantic editors is explored with focus on how to specify extensible semantic editor services. Specifically, this dissertation shows how semantic services can be specified using a semantic formalism called refer- ence attribute grammars (RAGs), and how these services can be made responsive enough for editing, and be provided also when the text in an editor is erroneous. Results presented in this dissertation have been found useful, both in industry and in academia, suggesting that the explored approach may help to reduce the effort of editor construction
Meta-programming composers in 2nd generation component systems
Future component systems will require that components can be composed
flexibly. In contrast to current systems which only support a fixed set of
composition mechanisms, the component system should provide a composition
language in which users can define their own specific composers. It is
argued for an object-oriented setting that this will be possible by
meta-programming the class-graph.
Composers will be based on two important elements. First, they will express
coupling by graph-based operators which transform parts of the class-graph
(coupling design patterns). Second, during these transformations, elementary
meta-operators will be used to transform data and code, rearranging slots and
methods of parameter-components. Thus during their reuse, components are
queried by introspection and transformed by meta-programming.
Composers that use meta-programming generalize connectors in architectural
languages. Hence they encapsulate context-dependent aspects of a system, and
make components independent of their embedding context. Since
meta-programming composers may change behavior of components transparently,
meta-programming composers will lead to a nice form of grey-box reuse, which
supports embedding of components (and classes) into application contexts in a
new and flexible way
Recommended from our members
Incremental Attribute Evaluation for Multi-User Semantics-Based Editors
This thesis addresses two fundamental problems associated with performing incremental attribute evaluation in multi-user editors based on the attribute grammar formalism: (1) multiple asynchronous modifications of the attributed derivation tree, and (2) segmentation of the tree into separate modular units. Solutions to these problems make it possible to construct semantics-based editors for use by teams of programmers developing or maintaining large software systems. Multi-user semantics based editors improve software productivity by reducing communication costs and snafus. The objectives of an incremental attribute evaluation algorithm for multiple asynchronous changes are that (a) all attributes of the derivation tree have correct values when evaluation terminates, and (b) the cost of evaluating attributes necessary to reestablish a correctly attributed derivation tree is minimized. We present a family of algorithms that differ in how they balance the tradeoff between algorithm efficiency and expressiveness of the attribute grammar. This is important because multi-user editors seem a practical basis for many areas of computer-supported cooperative work, not just programming. Different application areas may have distinct definitions of efficiency, and may impose different requirements on the expressiveness of the attribute grammar. The characteristics of the application domain can then be used to select the most efficient strategy for each particular editor. To address the second problem, we define an extension of classical attribute grammars that allows the specification of interface consistency checking for programs composed of many modules. Classical attribute grammars can specify the static semantics of monolithic programs or modules, but not inter-module semantics; the latter was done in the past using ad hoc techniques. Extended attribute grammars support programming-in-the-large constructs found in real programming languages, including textual inclusion, multiple kinds of modular units and nested modular units. We discuss attribute evaluation in the context of programming-in-the-large, particularly the separation of concerns between the local evaluator for each modular unit and the global evaluator that propagates attribute flows across module boundaries. The result is a uniform approach to formal specification of both intra-module and inter-module static semantic properties, with the ability to use attribute evaluation algorithms to carry out a complete static semantic analysis of a multi-module program
Generating Programming Environments with Integrated Text and Graphics for VLSI Design Systems
The constant improvements in device integration, the development of new technologies
and the emergence of new design techniques call for flexible, maintainable
and robust software tools. The generic nature of compiler-compiler systems,
with their semi-formal specifications, can help in the construction of those tools.
This thesis describes the Wright editor generator which is used in the synthesis
of language-based graphical editors (LBGEs). An LBGE is a programming
environment where the programs being manipulated denote pictures. Editing
actions can be specified through both textual and graphical interfaces. Editors
generated by the Wright system are specified using the formalism of attribute
grammars.
The major example editor in this thesis, Stick-Wright, is a design entry system
for the construction of VLSI circuits. Stick-Wright is a hierarchical symbolic
layout editor which exploits a combination of text and graphics in an interactive
environment to provide the circuit designer with a tool for experimenting with
circuit topologies. A simpler system, Pict-Wright: a picture drawing system, is
also used to illustrate the attribute grammar specification process.
This thesis aims to demonstrate the efficacy of formal specification in the
generation of software-tools. The generated system Stick-Wright shows that a
text/graphic programming environment can form the basis of a powerful VLSI
design tool, especially with regard to providing the designer with immediate
graphical feedback. Further applications of the LBGE generator approach to
system design are given for a range of VLSI design activities
- …