aboutsummaryrefslogtreecommitdiffstats
path: root/test/pattern (follow)
Commit message (Collapse)AuthorAgeFilesLines
* test (x ... y ... z ...)Gravatar Peter McGoron 2025-06-202-3/+41
|
* add vector patternsGravatar Peter McGoron 2025-06-201-1/+35
|
* add extra tests and fix temporary generation for renamingGravatar Peter McGoron 2025-06-201-1/+39
|
* more list testsGravatar Peter McGoron 2025-06-191-1/+36
|
* self-syntax tests for producerGravatar Peter McGoron 2025-06-191-25/+41
|
* Add ellipsis escape formGravatar Peter McGoron 2025-06-191-23/+39
| | | | | | `(... <template>)` in R6RS+ will escape a single form of ellipses in the production. I personally do not recommend this: overriding the ellipsis with a new identifier is the better approach in all circumstances.
* add support for multiple ellipses in a sequence in producersGravatar Peter McGoron 2025-06-191-7/+18
| | | | | | | | | | Adopts behavior such that x ... ... => {append ((x ...) ...} x ... ... ... => {append {append (((x ...) ...) ...)}} where `{append ...}` occurs at the meta-level after expanding the patterns. (In the code this is done with an accumulator.)
* Rework PNL calculations in pattern producer, fix producer testGravatar Peter McGoron 2025-06-191-5/+17
| | | | | | | Previous PNL calculations calculated the PNL against the entire pattern. This is not useful, because the PNL at each ellipsis pattern is what is useful. This is also nice because it does not require a parameter: the PNL can always be calculated locally.
* pattern testingGravatar Peter McGoron 2025-06-172-0/+52
|
* move utils to new library, emit ellipsis dag from matcher compilerGravatar Peter McGoron 2025-04-261-11/+42
| | | | | | | The compiler now returns a DAG implemented as a hash table. The keys are ellipsis group IDs and the values are lists of ellipsis group IDS. When a producer encounters a repeated form, it uses the information in this DAG to confirm that the production is valid.
* document pattern matcher, add ellipsis groupsGravatar Peter McGoron 2025-04-261-48/+37
| | | | | | | | | | | | | | | | | | | | | Add precise definitions, with examples, for concepts like the ellipsis nesting level. This should clarify what the matcher is doing. They should apply to any implementation of the Macrological Fascicle's description of patterns. This also adds ellipsis grouping. This is used to determine which identifiers are allowed to be repeated with each other in output. TODO: The concept of group needs to encompass nested identifiers. For instance (let-values (((name ...) value) ...) body ...) does not allow ((name ...) body ...) but the current system does not handle this.
* reorganize pattern moduleGravatar Peter McGoron 2025-04-252-0/+264