aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/frontend/src/language/problem.grammar
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-08-01 01:44:06 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-08-01 01:44:06 +0200
commite86447b4d74677d86271336727e0bbff9f4c54b5 (patch)
tree5f32aa78c8aa8a72ec0303cb5675eb83877b3700 /subprojects/frontend/src/language/problem.grammar
parentchore(deps): bump dependencies (diff)
downloadrefinery-e86447b4d74677d86271336727e0bbff9f4c54b5.tar.gz
refinery-e86447b4d74677d86271336727e0bbff9f4c54b5.tar.zst
refinery-e86447b4d74677d86271336727e0bbff9f4c54b5.zip
refactor: direct predicates
* Remove the direct keyword because it can be inferred * Use may/must/current instead of value literals * Transformation rule changes
Diffstat (limited to 'subprojects/frontend/src/language/problem.grammar')
-rw-r--r--subprojects/frontend/src/language/problem.grammar18
1 files changed, 11 insertions, 7 deletions
diff --git a/subprojects/frontend/src/language/problem.grammar b/subprojects/frontend/src/language/problem.grammar
index 1ace2872..6fb188d8 100644
--- a/subprojects/frontend/src/language/problem.grammar
+++ b/subprojects/frontend/src/language/problem.grammar
@@ -18,14 +18,14 @@ statement {
18 (EnumBody { "{" sep<",", IndividualNodeName> "}" } | ".") 18 (EnumBody { "{" sep<",", IndividualNodeName> "}" } | ".")
19 } | 19 } |
20 PredicateDefinition { 20 PredicateDefinition {
21 (ckw<"error"> ckw<"pred">? | ckw<"direct">? ckw<"pred">) 21 (ckw<"error"> ckw<"pred">? | ckw<"pred">)
22 RelationName ParameterList<Parameter>? 22 RelationName ParameterList<Parameter>?
23 PredicateBody { ("<->" sep<OrOp, Conjunction>)? "." } 23 PredicateBody { ("<->" sep<OrOp, Conjunction>)? "." }
24 } | 24 } |
25 RuleDefinition { 25 RuleDefinition {
26 ckw<"direct">? ckw<"rule"> 26 ckw<"rule">
27 RuleName ParameterList<Parameter>? 27 RuleName ParameterList<Parameter>?
28 RuleBody { ":" sep<OrOp, Conjunction> "~>" sep<OrOp, Action> "." } 28 RuleBody { ":" sep<OrOp, Conjunction> "==>" sep<OrOp, Consequent> "." }
29 } | 29 } |
30 Assertion { 30 Assertion {
31 kw<"default">? (NotOp | UnknownOp)? RelationName 31 kw<"default">? (NotOp | UnknownOp)? RelationName
@@ -57,14 +57,14 @@ Conjunction { ("," | Literal)+ }
57 57
58OrOp { ";" } 58OrOp { ";" }
59 59
60Literal { NotOp? Atom (("=" | ":") sep1<"|", LogicValue>)? } 60Literal { Modality? NotOp? Modality? Atom ((":" | "=") LogicValue)? }
61 61
62Atom { RelationName "+"? ParameterList<Argument> } 62Atom { RelationName "+"? ParameterList<Argument> }
63 63
64Action { ("," | ActionLiteral)+ } 64Consequent { ("," | Action)+ }
65 65
66ActionLiteral { 66Action {
67 ckw<"new"> VariableName | 67 ckw<"new"> VariableName (":" VariableName)? |
68 ckw<"delete"> VariableName | 68 ckw<"delete"> VariableName |
69 Literal 69 Literal
70} 70}
@@ -79,6 +79,10 @@ LogicValue {
79 ckw<"true"> | ckw<"false"> | ckw<"unknown"> | ckw<"error"> 79 ckw<"true"> | ckw<"false"> | ckw<"unknown"> | ckw<"error">
80} 80}
81 81
82Modality {
83 ckw<"must"> | ckw<"may"> | ckw<"current">
84}
85
82ScopeElement { RelationName ("=" | "+=") Multiplicity } 86ScopeElement { RelationName ("=" | "+=") Multiplicity }
83 87
84Multiplicity { (IntMult "..")? (IntMult | StarMult)} 88Multiplicity { (IntMult "..")? (IntMult | StarMult)}