Results 1 - 10
of
14
ASTLOG: A Language for Examining Abstract Syntax Trees
- In Proceedings of the USENIX Conference on Domain-Specific Languages
, 1997
"... Syntax Trees Roger F. Crew Microsoft Research ASTLOG: A Language for Examining Abstract Syntax Trees Roger F. Crew Microsoft Research Microsoft Corporation Redmond, WA 98052 rfc@microsoft.com Abstract We desired a facility for locating#analyzing syntactic artifacts in abstract syntax trees ..."
Abstract
-
Cited by 81 (0 self)
- Add to MetaCart
Syntax Trees Roger F. Crew Microsoft Research ASTLOG: A Language for Examining Abstract Syntax Trees Roger F. Crew Microsoft Research Microsoft Corporation Redmond, WA 98052 rfc@microsoft.com Abstract We desired a facility for locating#analyzing syntactic artifacts in abstract syntax trees of C#C++ programs, similar to the facility grep or awk provides for locating artifacts at the lexical level. Prolog, with its implicit pattern-matching and backtracking capabilities, is a natural choice for suchanapplication. We have developed a Prolog variant that avoids the overhead of translating the source syntactic structures into the form of a Prolog database; this is crucial to obtaining acceptable performance on large programs. An interpreter for this language has been implemented and used to #nd various kinds of syntactic bugs and other questionable constructs in real programs like Microsoft SQL server #450Klines# and Microsoft Word #2Mlines# in time comparable to the runtime of th...
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.
Towards portable source code representations using XML
- in Proceedings of 7th Working Conference on Reverse Engineering (WCRE '00
, 2000
"... One of the most important issue in source code analysis and software re-engineering is the representation of source code text at an abstraction level and form suitable for algorithmic processing. Moreover, source code representation schemes must be compact, accessible by well defined application pro ..."
Abstract
-
Cited by 48 (2 self)
- Add to MetaCart
One of the most important issue in source code analysis and software re-engineering is the representation of source code text at an abstraction level and form suitable for algorithmic processing. Moreover, source code representation schemes must be compact, accessible by well defined application programming interfaces (APIs) and above all portable to different operating platforms and various CASE tools. This paper proposes a program representation technique that is based on language domain modes and the XML markup language. In this context, source code is represented as XML DOM trees that offer a higher level of openess and portability than custom-made tool specific Abstract Syntax Trees. The DOM trees can be exchanged between tools in textual or binary form. Similarly, the domain model allows for language entities to be associated with analysis services offered by various CASE tools, leading to an Integrated Software Maintenance Environment. 1
Aristotle: A System for Research on and Development of Program-Analysis-Based Tools
, 1997
"... this paper, we first describe the current Aristotle system, including its overall architecture and the tools and components that constitute its forthcoming release. We then discuss lessons that we have learned about system 1 ..."
Abstract
-
Cited by 46 (31 self)
- Add to MetaCart
this paper, we first describe the current Aristotle system, including its overall architecture and the tools and components that constitute its forthcoming release. We then discuss lessons that we have learned about system 1
A C++ Data Model Supporting Reachability Analysis and Dead Code Detection
- In Proc. 6th European Software Engineering Conference and 5th ACM SIGSOFT Symposium on the Foundations of Software Engineering
, 1997
"... Abstract | A software repository provides a central information source for understanding and reengineering code in a software project. Complex reverse engineering tools can be built by analyzing information stored in the repository without reparsing the original source code. The most critical design ..."
Abstract
-
Cited by 40 (8 self)
- Add to MetaCart
Abstract | A software repository provides a central information source for understanding and reengineering code in a software project. Complex reverse engineering tools can be built by analyzing information stored in the repository without reparsing the original source code. The most critical design aspect of a repository is its data model, which directly a ects how e ectively the repository supports various analysis tasks. This paper focuses on the design rationales behind a data model for a C++ software repository that supports reachability analysis and dead code detection at the declaration level. These two tasks are frequently needed in large software projects to help remove excess software baggage, select regression tests, and support software reuse studies. The language complexity introduced by class inheritance, friendship, and template instantiation in C++ requires a carefully designed model to catch all necessary dependencies for correct reachability analysis. We examine the major design decisions and their consequences in our model and illustrate how future software repositories can be evaluated for completeness at a selected abstraction level. Examples are given to illustrate how our model also supports variants of reachability analysis: impact analysis, class visibility analysis, and dead code detection. Finally, wediscuss the implementation and experience of our analysis tools on a few C++ software projects.
Genoa - a customizable, front-end retargetable source code analysis framework
- ACM Transactions on Software Engineering and Methodology
, 1999
"... Code analysis tools provide support for such software engineering tasks as program understanding, software metrics, testing, and reengineering. In this article we describe GENOA, the framework underlying application generators such as Aria and GEN� � which have been used to generate a wide range of ..."
Abstract
-
Cited by 33 (4 self)
- Add to MetaCart
Code analysis tools provide support for such software engineering tasks as program understanding, software metrics, testing, and reengineering. In this article we describe GENOA, the framework underlying application generators such as Aria and GEN� � which have been used to generate a wide range of practical code analysis tools. This experience illustrates front-end retargetability of GENOA; we describe the features of the GENOA framework that allow it to be used with different front ends. While permitting arbitrary parse tree computations, the GENOA specification language has special, compact iteration operators that are tuned for expressing simple, polynomial-time analysis programs; in fact, there is a useful sublanguage of the GENOA language that can express precisely all (and only) polynomial-time (PTIME) analysis programs on parse trees. Thus, we argue that the GENOA language is a simple and convenient vehicle for implementing a range of analysis tools. We also argue that the “front-end reuse ” approach of GENOA offers an important advantage for tools aimed at large software projects: the reuse of complex, expensive build procedures to run generated tools over large source bases. In this article, we describe the GENOA framework and our experiences with it.
REportal: A web-based portal site for reverse engineering
- In Proc. Working Conference on Reverse Engineering
, 2001
"... We present a web-based portal site for reverse engineering software systems called REportal. REportal enables authorized users to upload their code to a secure web site and then, through the guide of wizards, browse and analyze their code. Currently the portal services include code analysis, browsin ..."
Abstract
-
Cited by 15 (4 self)
- Add to MetaCart
We present a web-based portal site for reverse engineering software systems called REportal. REportal enables authorized users to upload their code to a secure web site and then, through the guide of wizards, browse and analyze their code. Currently the portal services include code analysis, browsing, querying, and design extraction for C, C++, and Java programs. The REportal services are implemented by several reverse engineering tools that our team has developed over the years. With this work, we aim to assist professional software engineers, educators, and other researchers who need to analyze code. Specifically, we present a technology that provides a simple and easily accessible user interface to a number of reverse engineering tools. More importantly, this technology saves the user from the time and effort required to install, administer, and integrate these tools. 1.
A Comparative Evaluation of Techniques for Syntactic Level Source Code Analysis
- IN PROC. 7TH ASIA-PACIFIC SOFTW. ENG. CONF
, 2000
"... Many program maintenance tools rely on traditional parsing techniques to obtain syntactic level models of the code being maintained. When, for some reason, code cannot be parsed, software maintainers are forced to fall back on ad hoc tools and techniques, such as grep. As an alternative, hierarchica ..."
Abstract
-
Cited by 10 (2 self)
- Add to MetaCart
Many program maintenance tools rely on traditional parsing techniques to obtain syntactic level models of the code being maintained. When, for some reason, code cannot be parsed, software maintainers are forced to fall back on ad hoc tools and techniques, such as grep. As an alternative, hierarchical lexical analysis augmented with simple data structures can be used to extract an approximation of the abstract syntax for a source file. Experiments indicate that such an approach is feasible and produces results comparable to those obtained using a parser.
Syntactic approximation using iterative lexical analysis
- In International Workshop on Program Comprehension
, 2003
"... Syntactic irregularities, which often occur in sourcecode undergoing maintenance, prevent the application of analysis and comprehension tools that employ traditional parsing techniques. As an alternative to parsing, we have developed an iterative lexical technique that is based on the repetitive app ..."
Abstract
-
Cited by 8 (2 self)
- Add to MetaCart
Syntactic irregularities, which often occur in sourcecode undergoing maintenance, prevent the application of analysis and comprehension tools that employ traditional parsing techniques. As an alternative to parsing, we have developed an iterative lexical technique that is based on the repetitive application of regular expressions using a shortest-match strategy. The approach recognizes syntactic elements using iterative refinement, where unambiguous constructs are identified to provide contextual cues for the identification of more ambiguous constructs. The use of a shortest-match strategy supports the bottom up construction of a syntax tree by identifying smaller subtrees first. To examine the technique’s effectiveness, we present the results of an experiment comparing iterative lexical analysis against parsing. The measures of precision and recall are used to evaluate and compare the two approaches. 1.
Test Case Characterisation By Regular Path Expressions
"... A signature-parametric (say generic) framework for test case characterisation, and definition of test set coverage criteria is developed. The signature might correspond to a programming language syntax, the format of a data structure, a computational or semantical structure, e.g., for derivations, p ..."
Abstract
-
Cited by 6 (4 self)
- Add to MetaCart
A signature-parametric (say generic) framework for test case characterisation, and definition of test set coverage criteria is developed. The signature might correspond to a programming language syntax, the format of a data structure, a computational or semantical structure, e.g., for derivations, proof trees, or control-flow graphs. Test set characterisation is based on regular expressions describing paths for terms over the signature at hand. Necessary and convenient properties for test set coverage criteria can be conceived in the framework.

