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) versions 1.2, 2.0, 3.0 and 4.0
- COBOL 85 ("ANSI"), IBM VS COBOL II, IBM Enterprise COBOL with preprocessor, COPYLIB management and Report Writer, having full name and type resolution, and control and data flow analysis
- Delphi 6 ("Borland ObjectPascal")
- ECMAScript (ECMA-262, JavaScript [Microsoft and Netscape dialects], ActionScript, ActionScript2, ActionScript3, ASP, JSP, HTML and XML scripts)
- EGL and VAGen (IBM)
- 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,1.6, 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.
