Andrew Kay
Andrew Kay
Calling addSource("A", "class B {}"); addSource("B", "class A {}"); compileAll(); returns a Map of "A" to the class A and "B" to the class B. This is unexpected, and means...
It would be useful to be able to express relationships between an input pattern and an output pattern, using something like "capturing groups" (in regex terminology). Taking the [River](https://github.com/kaya3/MJr/blob/main/models/River.mjr) model...
The current implementation uses a pair of DFAs to keep track of all matches of all input patterns in the grid. This is suboptimal for 1x1 patterns, because each 1x1...
Currently, `all` statements do not support output patterns which depend both on the current grid state and the match position. The reason for this is that either the output patterns...
At the moment only 2D grids are supported, but it would be good to support 3D grids. This will necessarily require changes to many parts of the compiler: - Need...
A "sampler" is a data structure containing the current matches for some set of input patterns. In the current implementation, each rule block either uses a single sampler for all...
Consider the following program: ```none grid [BW] all: [B] -> [W] one: [BW] -> [WB] ``` By considering the program's control flow, it is in principle possible to statically determine...
A "sampler" is a data structure containing the current matches for some set of input patterns. In the current implementation, a sampler is implemented as a pair of arrays (one...
For some programs it is in principle possible to statically determine (by [control-flow analysis](https://github.com/kaya3/MJr/issues/2)) that some alphabet symbols can never occur simultaneously in the same grid state. For example, in...
The value 2^24 + 1 is equidistant from 2^24 and 2^24 + 2.