aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language/src/main/java
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-10-04 01:12:01 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-10-04 01:12:01 +0200
commit4a3cdd67cd1b5c6d407c5702a1c50a19bc17fc20 (patch)
tree8cdac92902a75c5d1808a2a876382f0c987298c0 /subprojects/language/src/main/java
parentfeat(frontend): enable cross-origin isolation (diff)
downloadrefinery-4a3cdd67cd1b5c6d407c5702a1c50a19bc17fc20.tar.gz
refinery-4a3cdd67cd1b5c6d407c5702a1c50a19bc17fc20.tar.zst
refinery-4a3cdd67cd1b5c6d407c5702a1c50a19bc17fc20.zip
refactor(language): disable rule parsing
Rules have too complex semantics to implement in the first prototype.
Diffstat (limited to 'subprojects/language/src/main/java')
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/Problem.xtext52
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java29
2 files changed, 33 insertions, 48 deletions
diff --git a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
index 2a5af628..f514e96c 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
+++ b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
@@ -8,7 +8,7 @@ Problem:
8 statements+=Statement*; 8 statements+=Statement*;
9 9
10Statement: 10Statement:
11 ClassDeclaration | EnumDeclaration | PredicateDefinition | RuleDefinition | Assertion | NodeValueAssertion | 11 ClassDeclaration | EnumDeclaration | PredicateDefinition | /* RuleDefinition | */ Assertion | NodeValueAssertion |
12 ScopeDeclaration | 12 ScopeDeclaration |
13 IndividualDeclaration; 13 IndividualDeclaration;
14 14
@@ -48,13 +48,13 @@ PredicateDefinition:
48 ("<->" bodies+=Conjunction (";" bodies+=Conjunction)*)? 48 ("<->" bodies+=Conjunction (";" bodies+=Conjunction)*)?
49 "."; 49 ".";
50 50
51RuleDefinition: 51//RuleDefinition:
52 "rule" 52// "rule"
53 name=Identifier 53// name=Identifier
54 "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" 54// "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")"
55 (":" bodies+=Conjunction (";" bodies+=Conjunction)* 55// (":" bodies+=Conjunction (";" bodies+=Conjunction)*
56 "==>" consequents+=Consequent (";" consequents+=Consequent)*)? 56// "==>" consequents+=Consequent (";" consequents+=Consequent)*)?
57 "."; 57// ".";
58 58
59Parameter: 59Parameter:
60 (modality=Modality? parameterType=[Relation|QualifiedName])? name=Identifier; 60 (modality=Modality? parameterType=[Relation|QualifiedName])? name=Identifier;
@@ -62,8 +62,8 @@ Parameter:
62Conjunction: 62Conjunction:
63 literals+=Literal ("," literals+=Literal)*; 63 literals+=Literal ("," literals+=Literal)*;
64 64
65Consequent: 65//Consequent:
66 actions+=Action ("," actions+=Action)*; 66// actions+=Action ("," actions+=Action)*;
67 67
68Literal: 68Literal:
69 Atom | NegativeLiteral | CountLiteral; 69 Atom | NegativeLiteral | CountLiteral;
@@ -77,21 +77,21 @@ enum ComparisonOp:
77CountLiteral: 77CountLiteral:
78 modality=Modality? "count" atom=Atom op=ComparisonOp threshold=INT; 78 modality=Modality? "count" atom=Atom op=ComparisonOp threshold=INT;
79 79
80Action: 80//Action:
81 AssertionAction | DeleteAction | NewAction; 81// AssertionAction | DeleteAction | NewAction;
82 82//
83AssertionAction: 83//AssertionAction:
84 value=ShortLogicValue? atom=Atom | 84// value=ShortLogicValue? atom=Atom |
85 atom=Atom (overwrite?=":=" | "<:") value=LogicValue; 85// atom=Atom (overwrite?=":=" | "<:") value=LogicValue;
86 86//
87DeleteAction: 87//DeleteAction:
88 "delete" variableOrNode=[VariableOrNode|QualifiedName]; 88// "delete" variableOrNode=[VariableOrNode|QualifiedName];
89 89//
90NewAction: 90//NewAction:
91 "new" variable=NewVariable ("<:" parent=[VariableOrNode|QualifiedName])?; 91// "new" variable=NewVariable ("<:" parent=[VariableOrNode|QualifiedName])?;
92 92//
93NewVariable: 93//NewVariable:
94 name=Identifier; 94// name=Identifier;
95 95
96enum Modality: 96enum Modality:
97 MAY="may" | MUST="must" | CURRENT="current"; 97 MAY="may" | MUST="must" | CURRENT="current";
@@ -191,7 +191,7 @@ QualifiedName hidden():
191 191
192NonRelationKindIdentifier: 192NonRelationKindIdentifier:
193 ID | "true" | "false" | "unknown" | "error" | "class" | "abstract" | "extends" | "enum" | 193 ID | "true" | "false" | "unknown" | "error" | "class" | "abstract" | "extends" | "enum" |
194 "pred" | "indiv" | "problem" | "new" | "delete" | "rule" | "may" | "must" | "current" | 194 "pred" | "indiv" | "problem" | /* "new" | "delete" | "rule" | */ "may" | "must" | "current" |
195 "count" | "default" | "scope" | "contained" | "containment"; 195 "count" | "default" | "scope" | "contained" | "containment";
196 196
197Identifier: 197Identifier:
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java b/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java
index 87cce1f3..a386db7f 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java
@@ -1,32 +1,15 @@
1package tools.refinery.language.utils; 1package tools.refinery.language.utils;
2 2
3import java.util.LinkedHashMap; 3import com.google.inject.Inject;
4import java.util.List;
5import java.util.Map;
6
7import org.eclipse.emf.ecore.EObject; 4import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.ecore.util.EcoreUtil; 5import org.eclipse.emf.ecore.util.EcoreUtil;
9import org.eclipse.xtext.naming.IQualifiedNameConverter; 6import org.eclipse.xtext.naming.IQualifiedNameConverter;
10import org.eclipse.xtext.naming.IQualifiedNameProvider; 7import org.eclipse.xtext.naming.IQualifiedNameProvider;
8import tools.refinery.language.model.problem.*;
11 9
12import com.google.inject.Inject; 10import java.util.LinkedHashMap;
13 11import java.util.List;
14import tools.refinery.language.model.problem.Assertion; 12import java.util.Map;
15import tools.refinery.language.model.problem.ClassDeclaration;
16import tools.refinery.language.model.problem.ConstantAssertionArgument;
17import tools.refinery.language.model.problem.EnumDeclaration;
18import tools.refinery.language.model.problem.IndividualDeclaration;
19import tools.refinery.language.model.problem.IntConstant;
20import tools.refinery.language.model.problem.LogicValue;
21import tools.refinery.language.model.problem.Node;
22import tools.refinery.language.model.problem.NodeValueAssertion;
23import tools.refinery.language.model.problem.PredicateDefinition;
24import tools.refinery.language.model.problem.PredicateKind;
25import tools.refinery.language.model.problem.Problem;
26import tools.refinery.language.model.problem.ProblemFactory;
27import tools.refinery.language.model.problem.RealConstant;
28import tools.refinery.language.model.problem.Relation;
29import tools.refinery.language.model.problem.StringConstant;
30 13
31class SymbolCollector { 14class SymbolCollector {
32 @Inject 15 @Inject
@@ -64,6 +47,8 @@ class SymbolCollector {
64 collectClass(classDeclaration); 47 collectClass(classDeclaration);
65 } else if (statement instanceof EnumDeclaration enumDeclaration) { 48 } else if (statement instanceof EnumDeclaration enumDeclaration) {
66 collectEnum(enumDeclaration); 49 collectEnum(enumDeclaration);
50 } else if (statement instanceof RuleDefinition) {
51 throw new UnsupportedOperationException("Rules are not currently supported");
67 } 52 }
68 } 53 }
69 } 54 }