CodeRules Language
The language jetbrains.mps.lang.coderules
defines the core concepts listed below.
Constraint rules
Constraint rules are the basic constructs that enable the use of logic programming with constraints and predicates combined into logical clauses.
Rule templates
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
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.
Queries
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.
Terms
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 primitive(kind=<specific kind>)
.
Term table contains declarations of terms which are used as internal representation of types.
Lists
Language Aspect
Coderules 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 types
.
Root concepts
The following table contains root concepts that belong to CodeRules language structure.
Concept | Description |
---|---|
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 |