Defines the level 3 language for data models that have been annotated with properties indicating that the model has particular features needed by particular code generators.
A level 3 language ensures the specific requirements for processing by a specific code generator are being met.
Allows the default properties on parts of the model to be defined.
An API for supplying property readers for various parts of the data model.
An API for reading properties of various expected kinds.
Creates a properties API from a set of defaulted property specs, and an L3 model.
API for an L3 model processor.
SPI for an L3 model processor. Use the builder to turn one of these into
a Processor.
Builds an L3 Processor API from an implementation. A function to turn source code positions into quoted lines of source code needs to be supplied.
Once properties have been checked, then reading properties as per the property specification should always succeed, since those properties have been verified to be present and of the correct kind.
If reading a property fails, it is a coding error and should be reported as a bug. This error type enumerates the possible properties bugs.
Convert prop check errors to standard errors.
The error catalogue for this property checking.
The error message here are quite generic, and you likely want to re-write this error catalogue for specific modules in order to give better messages.
The L3 model. This consists of an L2 model and a set of top-level properties that a code generator needs to know.