jetbrains.mps.lang.coderules defines the core concepts listed below.
Constraint rules are the basic constructs that enable the use of logic programming with constraints and predicates combined into logical clauses.
Defined in a rule table root, these are the fundamental building blocks of CodeRules program. These are either static or concept-specific rules that get applied to appropriate nodes in the source model and are able to use the constraint rules to implement their logic.
Macros extend the expressiveness of constraint rules with the ability to refactor away fragments of a rule’s body. Macros are provided by macro table.
With help of queries one builds integration of CodeRules into the language aspect. Typechecking aspect provides query kinds that correspond to actual use cases implemented by type checker.
One important feature of CodeRules is the ability to abstract away from type structure defined by the language. For example, one may decide to represent all primitive types of BaseLanguage as a term
Term table contains declarations of terms which are used as internal representation of types.
Code rules are defined in tables, which are root concepts of language
jetbrains.mps.lang.coderules. Rule tables and other related roots should be created in a language’s aspect model corresponding to the specific kind of analysis performed. The language
jetbrains.mps.lang.typechecking declares the aspect
The following table contains root concepts that belong to CodeRules language structure.
|Rule Table||contains rules and constraint declarations|
|Term Table||defines terms, the data structure that is used in unification|
|Macro Table||facilitates the reuse of body template fragments|
|Query Table||collection of entry points to the constraints program|