mps-coderules/coderules
Fedor Isakov e32e7cdbe4 Refactoring and optimizing incremental typechecking
- left only "required" -- the only kind of dependency that is relevant
 - drop the old two-stage scheme of incremental processing
 - implement a heuristic to detect if an update has caused any change,
   and only propagate the update further the inverse requirements graph
   in case there were real changes
 - drop cached memo
 - various code simplifications and refactorings
2024-09-24 10:39:14 +02:00
..
devkits/jetbrains.mps.devkit.aspect.types Refactor project structure and reduce the number of modules 2024-07-04 18:17:56 +02:00
doc/img Update readme files. 2018-07-19 15:12:34 +02:00
languages Refactoring and optimizing incremental typechecking 2024-09-24 10:39:14 +02:00
solutions Refactoring and optimizing incremental typechecking 2024-09-24 10:39:14 +02:00
README.md Fix paths to images. 2018-07-19 15:17:06 +02:00

README.md

Code Rules - Implementation Notes

Structure

The project modules are separated into several groups to separate levels of abstraction.

Logic

Define fundamental ideas used throughout the implementation, such as «data form» (a.k.a. term), logical variables, and others.

Code rules

Modules in this group define the core concepts of coderules and the logic behind it. This includes constraints, predicates, handlers, as well as code rule templates.

Constraints activation trace view for debugging the process of evaluating constraint rules.

Activation trace

Once finished, constraint rules produce inferred types and type errors, which are added as highlighter annotations to the editor.

Type checking

Defines a custom aspect «types», which is used to store the typing rules in the language source code.

Example of a typing rule

Type checking plugin for MPS provides the actions for checking the types in a currently opened root.

Control flow

Declares only control flow aspect. All functionality is inherited from coderules language.