Inner workings of RagConnect
Please see API documentation for more details.
RagConnect
uses the relast-preprocessor to parse .relast
grammar files. This results in an ASTNode of type Program
.
It further uses a dedicated parser for .connect
files containing endpoint-, mapping-, and dependency-definitions. This results in an ASTNode of type RagConnect
.
The goal is to generate an aspect file containing setters and getters of tokens referred to by endpoint-definitions
We use mustache (currently its Java version) making use of partials resulting in a set of .mustache
files located in ragconnect.base/src/main/resources
.
The generation process uses an intermediate NTA of type MRagConnect
defined in MustacheNodes.relast
to separate this generation concern from the content of the DSL
There are aspect files for Navigation
(mainly isX/asX attributes), Analysis
(lookup attributes), Printing
, backend/Mappings
(default mappings)
One of the main aspects is backend/Generation
containing attributes to construct the MRagConnect
NTA and all necessary attributes used within the mustache templates
The other main aspect (which is currently not really used) is backend/MustacheNodesToYAML.jrag
containing the transformation from a MRagConnect
subtree to a Document
subtree defined by YAML.relast
. This is used to generate a YAML file containing the data used by mustache. It can be used by the default mustache implementation together with the templates.