DMS Software Reengineering Toolkit: Difference between revisions

Content deleted Content added
proprietary set {{infobox software}}
Disambiguated: GLRGLR parser using Dab solver
Line 26:
The '''DMS Software Reengineering Toolkit'''<ref>[http://portal.acm.org/citation.cfm?id=999466&dl=GUIDE&coll=GUIDE&CFID=55567354&CFTOKEN=76359207 ''DMS: Program Transformations for Practical Scalable Software Evolution''. Proceedings International Conference on Software Engineering 2004] [http://www.semanticdesigns.com/Company/Publications/DMS-for-ICSE2004-reprint.pdf Reprint]</ref> is a proprietary set of [[program transformation]] tools available for automating custom source program analysis, modification, translation or generation of software systems for arbitrary mixtures of source languages for large scale software systems.
 
DMS has been used to implement a wide variety of practical tools, include [[___domain-specific language]]s (such as code generation for factory control), test coverage<ref>[http://www.semanticdesigns.com/Company/Publications/TestCoverage.pdf Branch Coverage for Arbitrary Languages Made Easy]</ref> and profiling tools, [[Duplicate_codeDuplicate code | clone detection]]<ref>[http://www.computer.org/portal/web/csdl/doi/10.1109/ICSM.1998.738528 ''Clone Detection Using Abstract Syntax Trees''. Proceedings International Conference on Software Maintenance 1998]</ref>, language migration tools, and C++ component reengineering<ref> [http://linkinghub.elsevier.com/retrieve/pii/S0950584906001856 ''Case study: Re-engineering C++ component models via automatic program transformation''. Information and Software Technology 2007]</ref>.
</ref>.
 
The toolkit provides means for defining language grammars and will produce [[parser]]s which automatically construct [[abstract syntax trees]] (ASTs), and [[prettyprinter]]s to convert original or modified ASTs back into compilable source text. The parse trees capture, and the prettyprinters regenerate, complete detail about the original source program, including source position, comments, radix and format of numbers, etc., to ensure that regenerated source text is as recognizable to a programmer as the original text modulo any applied transformations.
Line 33 ⟶ 32:
Many program analysis and transformation tools are limited to [[ASCII]] or Western European character sets such as [[ISO-8859]]; DMS can handle these as well as [[UTF-8]], [[UTF-16]], [[EBCDIC]], [[Shift-JIS]] and a variety of Microsoft character encodings.
 
DMS uses [[GLR parser|GLR]] parsing technology, enabling it to handle all practical context-free grammars. Semantic predicates extend this capability to interesting non-context-free grammars ([[Fortran]] requires matching of multiple DO loops with shared CONTINUE statements by label; GLR with semantic predicates enables the DMS Fortran parser to produce ASTs for correctly nested loops as it parses).
 
DMS provides [[attribute grammar]] evaluators for computing custom analyses over ASTs, such as metrics, and including special support for [[symbol table]] construction. Other program facts can be extracted by built-in control- and data- [[flow analysis]] engines, local and global [[pointer analysis]], whole-program [[call graph]] extraction, and symbolic range analysis by [[abstract interpretation]].