aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-ide
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-11-19 14:00:12 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-11-22 16:40:03 +0100
commit383137c190cab040d2609f8295ef822c3917b88d (patch)
treed0d88528de2020da51cb6e92459b84cf63609feb /subprojects/language-ide
parentchore(deps): bump dependencies (diff)
downloadrefinery-383137c190cab040d2609f8295ef822c3917b88d.tar.gz
refinery-383137c190cab040d2609f8295ef822c3917b88d.tar.zst
refinery-383137c190cab040d2609f8295ef822c3917b88d.zip
feat(language): numeric expressions
Diffstat (limited to 'subprojects/language-ide')
-rw-r--r--subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java14
-rw-r--r--subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java23
-rw-r--r--subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java23
-rw-r--r--subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java19
-rw-r--r--subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java20
5 files changed, 84 insertions, 15 deletions
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java
index 51cecf06..fb620065 100644
--- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java
+++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java
@@ -5,16 +5,28 @@ package tools.refinery.language.ide;
5 5
6import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher; 6import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher;
7import org.eclipse.xtext.ide.editor.contentassist.IdeCrossrefProposalProvider; 7import org.eclipse.xtext.ide.editor.contentassist.IdeCrossrefProposalProvider;
8import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser;
9import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser;
8import org.eclipse.xtext.ide.editor.syntaxcoloring.ISemanticHighlightingCalculator; 10import org.eclipse.xtext.ide.editor.syntaxcoloring.ISemanticHighlightingCalculator;
9
10import tools.refinery.language.ide.contentassist.FuzzyMatcher; 11import tools.refinery.language.ide.contentassist.FuzzyMatcher;
11import tools.refinery.language.ide.contentassist.ProblemCrossrefProposalProvider; 12import tools.refinery.language.ide.contentassist.ProblemCrossrefProposalProvider;
13import tools.refinery.language.ide.contentassist.TokenSourceInjectingPartialProblemContentAssistParser;
14import tools.refinery.language.ide.contentassist.TokenSourceInjectingProblemParser;
12import tools.refinery.language.ide.syntaxcoloring.ProblemSemanticHighlightingCalculator; 15import tools.refinery.language.ide.syntaxcoloring.ProblemSemanticHighlightingCalculator;
13 16
14/** 17/**
15 * Use this class to register ide components. 18 * Use this class to register ide components.
16 */ 19 */
17public class ProblemIdeModule extends AbstractProblemIdeModule { 20public class ProblemIdeModule extends AbstractProblemIdeModule {
21 @Override
22 public Class<? extends IContentAssistParser> bindIContentAssistParser() {
23 return TokenSourceInjectingProblemParser.class;
24 }
25
26 public Class<? extends IPartialEditingContentAssistParser> bindIPartialEditingContentAssistParser() {
27 return TokenSourceInjectingPartialProblemContentAssistParser.class;
28 }
29
18 public Class<? extends ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() { 30 public Class<? extends ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() {
19 return ProblemSemanticHighlightingCalculator.class; 31 return ProblemSemanticHighlightingCalculator.class;
20 } 32 }
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java
new file mode 100644
index 00000000..3ece6f67
--- /dev/null
+++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java
@@ -0,0 +1,23 @@
1package tools.refinery.language.ide.contentassist;
2
3import com.google.inject.Inject;
4import com.google.inject.Injector;
5import org.antlr.runtime.CharStream;
6import org.antlr.runtime.TokenSource;
7import tools.refinery.language.ide.contentassist.antlr.PartialProblemContentAssistParser;
8
9/**
10 * Code is duplicated from {@link tools.refinery.language.parser.antlr.TokenSourceInjectingProblemParser} due to
11 * Xtext code generation.
12 */
13public class TokenSourceInjectingPartialProblemContentAssistParser extends PartialProblemContentAssistParser {
14 @Inject
15 private Injector injector;
16
17 @Override
18 protected TokenSource createLexer(CharStream stream) {
19 var tokenSource = super.createLexer(stream);
20 injector.injectMembers(tokenSource);
21 return tokenSource;
22 }
23}
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java
new file mode 100644
index 00000000..80dfee5c
--- /dev/null
+++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java
@@ -0,0 +1,23 @@
1package tools.refinery.language.ide.contentassist;
2
3import com.google.inject.Inject;
4import com.google.inject.Injector;
5import org.antlr.runtime.CharStream;
6import org.antlr.runtime.TokenSource;
7import tools.refinery.language.ide.contentassist.antlr.ProblemParser;
8
9/**
10 * Code is duplicated from {@link tools.refinery.language.parser.antlr.TokenSourceInjectingProblemParser} due to
11 * Xtext code generation.
12 */
13public class TokenSourceInjectingProblemParser extends ProblemParser {
14 @Inject
15 private Injector injector;
16
17 @Override
18 protected TokenSource createLexer(CharStream stream) {
19 var tokenSource = super.createLexer(stream);
20 injector.injectMembers(tokenSource);
21 return tokenSource;
22 }
23}
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java
new file mode 100644
index 00000000..c6c7f41f
--- /dev/null
+++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java
@@ -0,0 +1,19 @@
1/*
2 * generated by Xtext 2.29.0.M2
3 */
4package tools.refinery.language.ide.contentassist.antlr;
5
6import org.antlr.runtime.TokenSource;
7
8/**
9 * Duplicates the logic from {@link tools.refinery.language.parser.antlr.ProblemTokenSource} to satisfy the Xtext
10 * generator.
11 * <p>
12 * Naming this class <code>ProblemTokenSource</code> is required by Xtext, so we have to silence the naming warning.
13 */
14@SuppressWarnings("squid:S2176")
15public class ProblemTokenSource extends tools.refinery.language.parser.antlr.ProblemTokenSource {
16 public ProblemTokenSource(TokenSource delegate) {
17 super(delegate);
18 }
19}
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java
index 6a05005d..7703e4e3 100644
--- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java
+++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java
@@ -1,7 +1,7 @@
1package tools.refinery.language.ide.syntaxcoloring; 1package tools.refinery.language.ide.syntaxcoloring;
2 2
3import java.util.List; 3import com.google.common.collect.ImmutableList;
4 4import com.google.inject.Inject;
5import org.eclipse.emf.common.util.EList; 5import org.eclipse.emf.common.util.EList;
6import org.eclipse.emf.ecore.EObject; 6import org.eclipse.emf.ecore.EObject;
7import org.eclipse.emf.ecore.EReference; 7import org.eclipse.emf.ecore.EReference;
@@ -11,20 +11,12 @@ import org.eclipse.xtext.nodemodel.INode;
11import org.eclipse.xtext.nodemodel.util.NodeModelUtils; 11import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
12import org.eclipse.xtext.service.OperationCanceledManager; 12import org.eclipse.xtext.service.OperationCanceledManager;
13import org.eclipse.xtext.util.CancelIndicator; 13import org.eclipse.xtext.util.CancelIndicator;
14 14import tools.refinery.language.model.problem.*;
15import com.google.common.collect.ImmutableList;
16import com.google.inject.Inject;
17
18import tools.refinery.language.model.problem.ClassDeclaration;
19import tools.refinery.language.model.problem.NamedElement;
20import tools.refinery.language.model.problem.Node;
21import tools.refinery.language.model.problem.PredicateDefinition;
22import tools.refinery.language.model.problem.PredicateKind;
23import tools.refinery.language.model.problem.ProblemPackage;
24import tools.refinery.language.model.problem.ReferenceDeclaration;
25import tools.refinery.language.utils.ProblemDesugarer; 15import tools.refinery.language.utils.ProblemDesugarer;
26import tools.refinery.language.utils.ProblemUtil; 16import tools.refinery.language.utils.ProblemUtil;
27 17
18import java.util.List;
19
28public class ProblemSemanticHighlightingCalculator extends DefaultSemanticHighlightingCalculator { 20public class ProblemSemanticHighlightingCalculator extends DefaultSemanticHighlightingCalculator {
29 private static final String BUILTIN_CLASS = "builtin"; 21 private static final String BUILTIN_CLASS = "builtin";
30 private static final String ABSTRACT_CLASS = "abstract"; 22 private static final String ABSTRACT_CLASS = "abstract";
@@ -113,7 +105,7 @@ public class ProblemSemanticHighlightingCalculator extends DefaultSemanticHighli
113 classesBuilder.add(ERROR_CLASS); 105 classesBuilder.add(ERROR_CLASS);
114 } 106 }
115 if (eObject instanceof Node node) { 107 if (eObject instanceof Node node) {
116 if (reference == ProblemPackage.Literals.VARIABLE_OR_NODE_ARGUMENT__VARIABLE_OR_NODE) { 108 if (reference == ProblemPackage.Literals.VARIABLE_OR_NODE_EXPR__VARIABLE_OR_NODE) {
117 classesBuilder.add(NODE_CLASS); 109 classesBuilder.add(NODE_CLASS);
118 } 110 }
119 if (ProblemUtil.isIndividualNode(node)) { 111 if (ProblemUtil.isIndividualNode(node)) {