JOVIAL Parser (Front End)
The JOVIAL parser (front end) enables the construction of JOVIAL custom compilers, analysis tools, or source transformation tools. It is a member of SD's family of language front ends, based on first-class infrastructure (DMS) for implementing such custom tools. The JOVIAL front end includes:
- Lexical analysis
- Conversion of literal values (numbers, escaped strings) into native values to enable easy computation over literal values
- Explicit grammar directly implements complete MIL-STD-1589C (USAF J73-C July 1984).
- Full 1589C JOVIAL parser
- J73/I (MIL-STD-1588) variant dialect available in draft form.
- Preprocessor support
- Controllable COMPOOL directory paths
- Parses COMPOOL files for definitions
- Skip directives are expanded
- COPY directives are expanded
- Preserves well-structured macro invocations and COMPOOL directives
- Automatic construction of complete abstract syntax tree
- Capture of comments and formats (shape) of literal values
- Capture of ambiguous parses during parsing
- Ability to parse large systems files into same workspace, enabling interprocedural and cross-file analysis/transformation
- Ability to parse different languages into same workspace, enabling cross-language analysis/transformation
- Facilities to process syntax trees
- Complete procedural API to visit/query/update/construct/print syntax trees
- Source regeneration by prettyprinting and/or fidelity printing of syntax trees with comments and lexical formats
- Automatically generated source-to-source transformation system
- Ability to define custom attribute-grammar-based analyzers
- Name and Type resolution
- Type representation system for all JOVIAL types defined
- All identifiers resolved to their JOVIAL-defined type and stored in symbol tables
- Automatic deletion of erroneous alternatives of ambiguous parses
- Ability to condition transforms on identifier type
- Abilility to visit/query/update symbol tables
- Means to manage multiple language dialects with highly shared common core
Many of these facilities come as a consistent consequence of the front end being built to top of DMS.
This front end has been primarily used to fully automate large source-code-base JOVIAL migrations.
Your organization may use DMS with the JOVIAL front end to implement and deploy your own custom tools. Semantic Designs is also willing to build custom tools under contract.