Homepage: http://www.semdesigns.com/Products/DMS/DMSToolkit.html
DMSSoftwareReengineeringToolkit is a
DesignMaintenanceSystem? for software
ReEngineering from
SemanticDesigns.
DMS provides generalized compiler technology for automating custom analysis, modification, and generation of large software system sources. It includes:
- UNICODE-based lexer generator. DMS lexers capture binary values of lexemes, all comments, and source file positioning information. Support is provided for INCLUDE files and other preprocessor issues.
- Context-free GLR parser generator. Automatic construction of Abstract (not concrete) syntax trees (AST). Handling of local and conventional ambiguities. Parse-time semantic checking is possible.
- Pretty printer generator. DMS prettyprinters can pretty-print ASTs according to custom prettyprinting rules, or "fidelity" print, preserving as much of the original formatting as possible.
- Multi-pass attribute evaluator generator. Attributes computed from one pass are available in following passes. Attribute evaluation occurs in parallel, based on data dependencies.
- Symbol table support for both conventional and unusual scoping rules.
- Surface-syntax pattern and rewrite rule specification. Patterns/rewrites written in the notation of the target language, or in both source and target notations if different languages. Conditional rewriting, with optional procedural attachment. Optional procedural attachment for Right-hand-side construction. Pattern and ruleset compositions.
- Associative/Commutative rewrite engine.
- Scalable foundations Paralell execution based symmetric multiprocessing in PARLANSE, Semantic Design's parallel language for symbolic execution. Handles tens of thousands of files comprising several million lines on Windows NT 4.0 or Windows 2000 platforms
A number of legacy languages have been predefined for use with DMS.
- ANSI C and C++, with a built in preprocessor.
- COBOL (ANSI 85/IBM VS II) with built in preprocessor
- Java 2.0
- C#
- HTML 4.0, XHTML, Internet Explorer dialect
- PHP
- ISO Pascal and (Borland) ObjectPascal?
- Ada83/95
- Fortran77/90/95
- ECMAScript (aka JavaScript?)
- XML
- Verilog
- VHDL
- others...
See also