Results 1 - 10
of
41
Dynamic Typing in a Statically Typed Language
, 1989
"... Statically typed programming languages allow earlier error checking, better enforcement of disciplined programming styles, and generation of more efficient object code than languages where all type consistency checks are performed at run time. However, even in statically typed languages, there is of ..."
Abstract
-
Cited by 148 (4 self)
- Add to MetaCart
Statically typed programming languages allow earlier error checking, better enforcement of disciplined programming styles, and generation of more efficient object code than languages where all type consistency checks are performed at run time. However, even in statically typed languages, there is often the need to deal with data whose type cannot be determined at compile time. To handle such situations safely, we propose to add a type Dynamic whose values are pairs of a value v and a type tag T where v has the type denoted by T. Instances of Dynamic are built with an explicit tagging construct and inspected with a type safe typecase construct. This paper explores the syntax, operational semantics, and denotational semantics of a simple language including the type Dynamic. We give examples of how dynamically typed values can be used in programming. Then we discuss an operational semantics for our language and obtain a soundness theorem. We present two formulations of the denotational s...
Generation of Components for Software Renovation Factories from Context-free Grammars
"... We present an approach for the generation of components for a software renovation factory. These components are generated from a context-free grammar definition that recognizes the code that has to be renovated. We generate analysis and transformation components that can be instantiated with a speci ..."
Abstract
-
Cited by 73 (27 self)
- Add to MetaCart
We present an approach for the generation of components for a software renovation factory. These components are generated from a context-free grammar definition that recognizes the code that has to be renovated. We generate analysis and transformation components that can be instantiated with a specific transformation or analysis task. We apply our approach to COBOL and we discuss the construction of realistic software renovation components using our approach.
Origin Tracking
- Journal of Symbolic Computation
, 1992
"... In the framework of conditional, not necessarily orthogonal, term rewriting systems, ..."
Abstract
-
Cited by 43 (19 self)
- Add to MetaCart
In the framework of conditional, not necessarily orthogonal, term rewriting systems,
Typed Generic Traversal With Term Rewriting Strategies
- Journal of Logic and Algebraic Programming
, 2002
"... A typed model of strategic term rewriting is developed. The key innovation is that generic. The calculus traversal is covered. To this end, we define a typed rewriting calculus S ′ γ employs a many-sorted type system extended by designated generic strategy types γ. We consider two generic strategy t ..."
Abstract
-
Cited by 21 (7 self)
- Add to MetaCart
A typed model of strategic term rewriting is developed. The key innovation is that generic. The calculus traversal is covered. To this end, we define a typed rewriting calculus S ′ γ employs a many-sorted type system extended by designated generic strategy types γ. We consider two generic strategy types, namely the types of type-preserving and type-unifying strategies. S ′ γ offers traversal combinators to construct traversals or schemes thereof from many-sorted and generic strategies. The traversal combinators model different forms of one-step traversal, that is, they process the immediate subterms of a given term without anticipating any scheme of recursion into terms. To inhabit generic types, we need to add a fundamental combinator to lift a many-sorted strategy s to a generic type γ. This step is called strategy extension. The semantics of the corresponding combinator states that s is only applied if the type of the term at hand fits, otherwise the extended strategy fails. This approach dictates that the semantics of strategy application must be type-dependent to a certain extent. Typed strategic term rewriting with coverage of generic term traversal is a simple but expressive model of generic programming. It has applications in program
A Formal Executable Semantics for Java
- Princeton University
, 1990
"... Some of the main features of the Java language are that it is object-oriented and multi-threaded. This article presents a formal semantics of a large subset of Java, including inheritance, dynamic linking and multi-threading. To describe the object-oriented features, we use a big-step semantics. The ..."
Abstract
-
Cited by 18 (2 self)
- Add to MetaCart
Some of the main features of the Java language are that it is object-oriented and multi-threaded. This article presents a formal semantics of a large subset of Java, including inheritance, dynamic linking and multi-threading. To describe the object-oriented features, we use a big-step semantics. The semantics of the concurrency is dened in a small-step semantics, using a structural operational semantics. This semantics is directly executable using the Centaur system. An interactive programming environment, which provides textual and graphical visualization tools during program execution, is derived from this semantics.
A Natural Semantics for Eiffel Dynamic Binding
, 1996
"... This article formally defines Eiffel dynamic binding in presence of... ..."
Abstract
-
Cited by 17 (1 self)
- Add to MetaCart
This article formally defines Eiffel dynamic binding in presence of...
Executable Structural Operational Semantics in Maude
, 2003
"... This paper describes in detail how to bridge the gap between theory and practice when implementing in Maude structural operational semantics described in rewriting logic, where transitions become rewrites and inference rules become conditional rewrite rules with rewrites in the conditions, as mad ..."
Abstract
-
Cited by 11 (5 self)
- Add to MetaCart
This paper describes in detail how to bridge the gap between theory and practice when implementing in Maude structural operational semantics described in rewriting logic, where transitions become rewrites and inference rules become conditional rewrite rules with rewrites in the conditions, as made possible by the new features in Maude 2.0. We validate this technique using it in several case studies: a functional language Fpl (evaluation and computation semantics, including an abstract machine), imperative languages WhileL (evaluation and computation semantics) and GuardL with nondeterminism (computation semantics), Kahn's functional language Mini-ML (evaluation or natural semantics), Milner's CCS (with strong and weak transitions), and Full LOTOS (including ACT ONE data type specifications). In addition, on top of CCS we develop an implementation of the Hennessy-Milner modal logic for describing local capabilities of processes, and for LOTOS we build an entire tool where Full LOTOS specifications can be entered and executed (without user knowledge of the underlying implementation of the semantics). We also compare this method based on transitions as rewrites with another one based on transitions as judgements.
Semantic-Based Visualization for Parallel Object-Oriented Programming
- IN PROCEEDINGS OF THE 11TH ANNUAL ACM CONFERENCE ON OBJECT-ORIENTED PROGRAMMING SYSTEMS, LANGUAGES AND APPLICATIONS (OOPSLA'96). ACM, NEW-YORK
, 1996
"... We present a graphical environment for parallel object-oriented programming. It provides visual tools to develop and debug object-oriented programs as well as parallel or concurrent systems. This environment was derived from a structural operational semantics of an extension of the Eiffel language, ..."
Abstract
-
Cited by 11 (6 self)
- Add to MetaCart
We present a graphical environment for parallel object-oriented programming. It provides visual tools to develop and debug object-oriented programs as well as parallel or concurrent systems. This environment was derived from a structural operational semantics of an extension of the Eiffel language, Eiffel//. Object-related features of the language (inheritance, polymorphism) are formalized using a big-step semantics, while the interleaving model of concurrency is expressed with small-step semantics. Without user instrumentation, the interactive environment proposes features such as step-by-step animated executions, graphical visualization of object and process topology, futures and pending requests, control of interleaving, deadlock detection.
Generic Techniques for Source-Level Debugging and Dynamic Program Slicing
- In Proceedings of the Sixth International Joint Conference on Theory and Practice of Software Development (Aarhus
, 1994
"... Algebraic specifications have been used successfully as a formal basis for software development. The contribution of this paper is to show that the origin and dynamic dependence relations that are implicitly defined by an algebraic specification can be used to define powerful language-specific tools ..."
Abstract
-
Cited by 10 (5 self)
- Add to MetaCart
Algebraic specifications have been used successfully as a formal basis for software development. The contribution of this paper is to show that the origin and dynamic dependence relations that are implicitly defined by an algebraic specification can be used to define powerful language-specific tools. In particular, it is shown how tools for source-level debugging and dynamic program slicing can be derived from algebraic specifications of interpreters. 1991 Mathematics Subject Classification: 68N20 [Software]: Compilers and generators, 68Q55 [Theory of computing]: Semantics, 68Q65 [Theory of computing]: Abstract data types; algebraic specification. 1991 CR Categories: D.2.5 [Software engineering]: Testing and debugging, D.2.6 [Software engineering]: Programming environments, F.3.2 [Logics and meanings of programs]: Semantics of programming languages. Keywords & Phrases: Debugging, program slicing, dynamic slicing, interpreters, programming environments, origin tracking, dynamic depend...

