fb43f00485
Merge pull request #8 from razzolini/rules-dsl
...
Implement a domain-specific language for the definition of algebraic manipulation rules
2019-10-29 22:16:55 +01:00
a74f047655
Fix/improve hashCode for Functions
...
Some types of Function had hashCode methods which didn't match the
behavior of equals, while others could simply be rewritten in a simpler
way by using Objects.hash.
2019-10-25 22:48:49 +02:00
0c316226e6
Make Function.equals test for exact equality instead of equivalence
...
Actually, testing for equivalence was only partially implemented (by
considering the commutative property for some FunctionOperators).
Additionally, should it be needed in the future, equivalence testing
would probably be better implemented as a separate, specialized method
anyway.
2019-10-25 22:30:10 +02:00
d8f401cb22
Remove zip file handling code and zip4j dependency
...
.zip files were only used to cache compiled Java rules, and the new rule
system has nothing to cache.
2019-10-25 20:49:31 +02:00
12406c787b
Ensure that lex and parse methods are only called once per instance
2019-09-09 18:34:52 +02:00
c37f7f52b3
Specify that TabExpandedString only works on single lines
2019-09-09 18:34:52 +02:00
804fee4db0
Use tab-expanded column numbers when formatting DSL errors
2019-09-09 18:34:52 +02:00
b3f2ad82d0
Migrate from JUnit 4 to 5
2019-09-09 18:34:52 +02:00
fc119efedc
Remove language level specification from warppi-core pom.xml
...
The language level is specified in the root pom.xml file, and there's no
need to override it here.
2019-09-09 18:34:52 +02:00
082f694b1b
Tweak DSL error formatting
...
- Add a blank line between the DslFilesException stack trace and
formatted error messages.
- Quote the sub-function name in the message for UndefinedSubFunction
errors.
2019-09-09 18:34:52 +02:00
fbb6cf590d
Throw an exception when a sub-function is undefined in SubFunctionPattern.replace
2019-09-09 18:34:52 +02:00
feb894bacd
Improve SubFunctionPattern documentation
2019-09-09 18:34:52 +02:00
b4fc6dd019
Improve PatternRule documentation
2019-09-09 18:34:52 +02:00
eb8fcaafb9
Keep track of identifiers separately for each SubFunctionPattern object
2019-09-09 18:34:52 +02:00
c8656d1b30
Improve DSL front-end documentation
2019-08-12 11:28:39 +02:00
e297d3592f
Reduce creation of Map objects in Pattern matching
2019-08-12 11:28:39 +02:00
a76511ea19
Remove the warppi-rules module
2019-08-12 11:28:39 +02:00
2b9fb97648
Make DSL rule loading work on TeaVM
2019-08-12 11:28:39 +02:00
e5b64ce218
Make TeaVMStorageUtils.read work instead of hanging
2019-08-09 17:53:47 +02:00
fef30042ce
Avoid using methods which are not available on TeaVM
2019-08-08 14:36:07 +02:00
d4b91c4d4f
Merge branch 'master' into rules-dsl
2019-08-08 12:52:59 +02:00
7819e19e6f
Make Function visitor an inner interface of Function
2019-08-07 13:11:59 +02:00
86c7da8c81
Test Lexer with empty input
2019-08-07 13:11:59 +02:00
aeb0388925
Implement DSL error pretty-printing
2019-08-07 13:11:59 +02:00
17d1bddbf1
Fixed picture bug
2019-04-29 23:07:24 +02:00
c906c43b8b
Updated TeaVM to the latest snapshot and fixed panels history behaviour
2019-02-25 13:12:22 +01:00
788f9663e2
Use Collections.emptyMap and Collections.singletonMap in pattern matching code
2019-02-12 11:40:50 +01:00
04d01565da
Correctly handle and report unterminated multiline comments in Lexer
2019-02-11 16:31:03 +01:00
e86a7a6346
Remove Java rule compiling and loading code
2019-02-11 15:55:29 +01:00
fd074b16b7
Do not load DSL rules on JavaScript platforms
2019-02-11 15:11:59 +01:00
2e36bc83bf
Fix incorrect rules and port them to the DSL
2019-02-11 12:21:43 +01:00
b9c025d74c
Make function rules built-in
2019-02-10 19:59:38 +01:00
7d9b08affd
Port most non-function rules from Java to the DSL
2019-02-10 19:05:25 +01:00
6b814b84b6
Add comments to incorrect rules and partially fix ExpandRule1
2019-02-10 19:05:25 +01:00
df5de92931
Make NegativePattern match and produce negative numbers
2019-02-10 19:05:13 +01:00
d18e2d3708
Test the content of DslAggregateExceptions in RulesDslTest
2019-02-07 20:20:58 +01:00
e65f20382f
Document the RulesDsl class and its makeRules method
2019-02-04 18:07:51 +01:00
92ad2a9c1e
Remove unused imports
2019-01-31 20:39:56 +01:00
57011ceb86
Make EquationsSystemPattern patterns field private (was accidentally package-private)
2019-01-31 20:38:35 +01:00
8eba0cd568
Correctly store sub-function identifiers for rules with the same name and identical rules
2019-01-31 19:23:37 +01:00
2a347e6d19
Allow unary operators in power exponent
2019-01-31 13:10:02 +01:00
ebbf8b013a
Replace DslException with the DslError interface and the SyntaxException wrapper
2019-01-31 12:55:15 +01:00
0d89711772
Report DSL errors from RulesDsl.makeRules as a DslAggregateException
2019-01-30 21:47:00 +01:00
f930242ee8
Properly report undefined sub-functions in replacement patterns
2019-01-30 21:47:00 +01:00
3a5ccdfc13
Keep track of sub-function identifier tokens for error reporting
2019-01-30 21:47:00 +01:00
bdb1fc738e
Implement multiple error reporting and recovery in Parser
2019-01-30 21:47:00 +01:00
f0d2cdc1ab
Implement multiple error reporting and recovery in Lexer
2019-01-29 12:08:35 +01:00
1e0d2e5a0e
Create base class for DSL exceptions
2019-01-28 21:13:24 +01:00
1304755c25
Implement loading of DSL rules
2019-01-28 18:19:27 +01:00
c00b71e2ba
Remove unneeded throws spec from PatternRule.execute
2019-01-27 21:18:53 +01:00