Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Program evolution: processes of software change
Program evolution: processes of software change
Common LISP: the language
The complete MUMPS: an introduction and reference manual for the MUMPS programming language
The complete MUMPS: an introduction and reference manual for the MUMPS programming language
lex & yacc (2nd ed.)
GENOA: a customizable language- and front-end independent code analyzer
ICSE '92 Proceedings of the 14th international conference on Software engineering
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Managing design trade-offs for a program understanding and transformation tool
Journal of Systems and Software - Double issue on reengineering complex systems
Generating testing and analysis tools with Aria
ACM Transactions on Software Engineering and Methodology (TOSEM)
The design of whole-program analysis tools
Proceedings of the 18th international conference on Software engineering
An empirical study of static call graph extractors
Proceedings of the 18th international conference on Software engineering
Lightweight lexical source model extraction
ACM Transactions on Software Engineering and Methodology (TOSEM)
GNU EMACS Manual
The ICON Programming Language, 2nd Ed.
The ICON Programming Language, 2nd Ed.
A Framework for Source Code Search Using Program Patterns
IEEE Transactions on Software Engineering
A": A Language for Implementing Language Processors
IEEE Transactions on Software Engineering
SIGPLAN '79 Proceedings of the 1979 SIGPLAN symposium on Compiler construction
Implementation Techniques for Efficient Data-Flow Analysis of Large Programs
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Building a large annotated corpus of English: the penn treebank
Computational Linguistics - Special issue on using large corpora: II
CASCON '07 Proceedings of the 2007 conference of the center for advanced studies on Collaborative research
DSketch: lightweight, adaptable dependency analysis
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
System-specific static code analyses: a case study in the complex embedded systems domain
Software Quality Control
Hi-index | 0.00 |
Program understanding can be assisted by tools that match patterns in the program source. Lexical pattern matchers provide excellent performance and ease of use, but have a limited vocabulary. Syntactic matchers provide more precision, but may sacrifice performance, robustness, or power. To achieve more of the benefits of both models, we extend the pattern syntax of AWK to support matching of abstract syntax trees, as demonstrated in a tool called TAWK. Its pattern syntax is language-independent, based on abstract tree patterns. As in AWK, patterns can have associated actions, which in TAWK are written in C for generality, familiarity, and performance. The use of C is simplified by high-level libraries and dynamic linking. To allow processing of program files containing non-syntactic constructs such as textual macros, mechanisms have been designed that allow matching of ‘language-like’ macros in a syntactic fashion. We survey and apply prototypical approaches to concretely demonstrate the tradeoffs in program processing. Our results indicate that TAWK can be used to quickly and easily perform a variety of common software engineering tasks, and the extensions to accommodate non-syntactic features significantly extend the generality of syntactic matchers. Copyright © 2005 John Wiley & Sons, Ltd.