DMS Software Reengineering Toolkit: Difference between revisions

Content deleted Content added
spelling
No edit summary
Line 5:
 
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.
 
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]] 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).
Line 14 ⟶ 16:
A [http://www.semanticdesigns.com/Products/DMS/SimpleDMSDomainExample.html complete example] of a language definition and source-to-source transformation rules defined and applied is shown using high school [[algebra]] and a bit of [[calculus]] as a ___domain-specific language.
 
It has a variety of predefined language front ends, covering most real dialects of [[C (programming language)|C]] and [[C++]] including [[C++0x]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[PHP]], [[EGL (programming language)| EGL], [[Fortran]], [[COBOL]], [[Visual Basic]], [[Verilog]], [[VHDL]] and some 20 or more other languages. Predefined languages enable customizers to immediately focus on their reengineering task rather than on the details of the languages to be processed.
 
DMS is additionally unusual in being implemented in a [[parallel programming]] language, PARLANSE, that uses [[symmetric multiprocessor]]s available on commodity [[workstations]]. This enables DMS to provide faster answers for large system analyses and conversions.