Language/Compiler Front Ends
Semantic Designs offers predefined language front ends ("domains") to enable the construction of custom compilers, analysis tools, or source transformation tools, based on first-class infrastructure (DMS) for implementing those custom tools. The list of language modules includes:
- Ada 83/95
- C (ANSI, GNU, C99, Microsoft dialects), with intelligently managed include and preprocessor directives, full name and type resolution, control and data flow analysis, system-wide call graph, system-wide points-to analysis
- C++ (ANSI, GNU, Microsoft dialects), with intelligently managed include and preprocessor directives, and full name and type resolution
- C# (Microsoft's .NET language)
- COBOL 85, IBM VS COBOL II, IBM Enterprise COBOL with preprocessor and COPYLIB management, and full name and type resolution and control flow analysis
- Delphi 6 ("Borland ObjectPascal")
- ECMAScript (ECMA-262, JavaScript [Microsoft and Netscape dialects], ActionScript, ActionScript2, ActionScript3, ASP, JSP, HTML and XML scripts)
- FORTRAN 95/90/77
- HTML 4.0, XHTML, plus IE dialect
- IDL (Corba 2.3)
- IEC 1131-3 (Industrial Automation Control)
- Java 1.1,1.2,1.3,1.4,1.5, with full name and type resolution including the JDK and class files, control flow analysis and call graph construction.
- IBM JCL
- JOVIAL (Legacy military embedded systems language) with full name and type analysis
- Mathematica
- MATLAB M-files and Simulink
- Motorola M6800/M6801/M6805/M6808/M6809/M6811/M6812 Assembly language
- PARLANSE
- Natural (Mainframe application programming language)
- Pascal (ISO 7185)
- PHP3, PHP4 and PHP5
- Pick Data Basic (Universe dialect)
- PL/1
- PL/SQL (Oracle Database programming language)
- Progress (a 4GL)
- Rational Rose UML (.MDL files)
- SQL (ANSI SQL2 aka SQL 1992, and Oracle8 SQL)
- SystemC 2.1
- Verilog 1995, 2001 and SystemVerilog 3.1a
- VHDL 1993
- Visual Basic 6
- VBScript + ASP
- XML
If your language is not in this list, it can be defined straightforwardly to DMS. Semantic Designs is also willing to define other front ends if appropriate for market scale.
Typical Front End Features
- Full lexical analysis, including reading source files in ASCII (ISO8859-1) or UNICODE
- Conversion of literal values (numbers, escaped strings) into native values to enable easy computation over literal values
- Literal strings represented internally in UNICODE to support 16-bit characters
- Preprocessor support for those languages requiring it
- Explicit grammars based directly on standards documents
- Automatic construction of complete abstract syntax tree
- Capture of comments and formats (shape) of literal values
- Ability to parse tens of thousands of files and millions of lines into same workspace, enabling interprocedural and cross-file analysis/transformation
- Ability to parse different languages into same workspace, enabling cross-language analysis/transformation
- Complete support for manipulating trees
- Full procedural API to visit/query/update/construct syntax trees
- Full source regneration by prettyprinting and/or fidelity printing of syntax trees with comments and lexical formats
- Automatic construction of source-to-source transformation system
- Ability to define custom attribute-grammar-based analyzers
- Available as source code to enable complete customization
- Means to manage multiple language dialects with highly shared cores
- Robustness due to careful testing and application across multiple customers
Many of these facilities come as a consistent consequence of the front ends being built to top of DMS.
Copyright 1995-2009 Semantic Designs, Incorporated
DMS and "Design Maintenance System" are registered trademarks of Semantic Designs, Inc.
The SD logo and "Semantic Designs" are registered service marks of Semantic Designs, Inc.
CloneDR, PARLANSE, JOVIAL2C, Thicket, Smart Differencer are trademarks of Semantic Designs, Inc.
The OMG logo is a registered trademark of the Object Management Group, Inc. in the United States and other countries.
To view our Privacy Policy, click here
Comments or problems: webmaster@semdesigns.com
