From 419e76265ecbdf65e960e0624be006d31ed1e191 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Fri, 8 May 2020 18:28:19 +0200 Subject: Update solver language grammar First version, still needs TokenSource and Linker to work. --- .../.SolverSemanticHighlightCalculator.xtendbin | Bin 0 -> 5334 bytes .../.SolverSemanticTextAttributeProvider.xtendbin | Bin 0 -> 4902 bytes .../solver/language/ui/syntaxcoloring/.gitignore | 2 + .../SolverSemanticHighlightCalculator.java | 83 +++++++++++++++++++++ .../SolverSemanticTextAttributeProvider.java | 63 ++++++++++++++++ .../validation/.SolverLanguageValidator.xtendbin | Bin 0 -> 1717 bytes .../viatra/solver/language/validation/.gitignore | 1 + .../validation/SolverLanguageValidator.java | 15 ++++ 8 files changed, 164 insertions(+) create mode 100644 Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticHighlightCalculator.xtendbin create mode 100644 Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticTextAttributeProvider.xtendbin create mode 100644 Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.gitignore create mode 100644 Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticHighlightCalculator.java create mode 100644 Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticTextAttributeProvider.java create mode 100644 Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.SolverLanguageValidator.xtendbin create mode 100644 Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.gitignore create mode 100644 Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/SolverLanguageValidator.java (limited to 'Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse') diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticHighlightCalculator.xtendbin b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticHighlightCalculator.xtendbin new file mode 100644 index 00000000..30fff96c Binary files /dev/null and b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticHighlightCalculator.xtendbin differ diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticTextAttributeProvider.xtendbin b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticTextAttributeProvider.xtendbin new file mode 100644 index 00000000..846152db Binary files /dev/null and b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.SolverSemanticTextAttributeProvider.xtendbin differ diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.gitignore b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.gitignore new file mode 100644 index 00000000..1764b462 --- /dev/null +++ b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/.gitignore @@ -0,0 +1,2 @@ +/.SolverSemanticHighlightCalculator.java._trace +/.SolverSemanticTextAttributeProvider.java._trace diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticHighlightCalculator.java b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticHighlightCalculator.java new file mode 100644 index 00000000..2935dfd7 --- /dev/null +++ b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticHighlightCalculator.java @@ -0,0 +1,83 @@ +package org.eclipse.viatra.solver.language.ui.syntaxcoloring; + +import com.google.common.collect.Iterators; +import java.util.Iterator; +import java.util.Random; +import java.util.WeakHashMap; +import org.eclipse.viatra.solver.language.solverLanguage.Reference; +import org.eclipse.xtend2.lib.StringConcatenation; +import org.eclipse.xtext.ide.editor.syntaxcoloring.DefaultSemanticHighlightingCalculator; +import org.eclipse.xtext.ide.editor.syntaxcoloring.IHighlightedPositionAcceptor; +import org.eclipse.xtext.nodemodel.ICompositeNode; +import org.eclipse.xtext.nodemodel.util.NodeModelUtils; +import org.eclipse.xtext.resource.XtextResource; +import org.eclipse.xtext.util.CancelIndicator; + +@SuppressWarnings("all") +public class SolverSemanticHighlightCalculator extends DefaultSemanticHighlightingCalculator { + public static final String SYMBOL_CODE = "SymbolCode::"; + + private final WeakHashMap symbolName2ID = new WeakHashMap(); + + @Override + public void provideHighlightingFor(final XtextResource resource, final IHighlightedPositionAcceptor acceptor, final CancelIndicator cancelIndicator) { + if (((resource == null) || (resource.getParseResult() == null))) { + return; + } else { + final Iterator modelSymbols = Iterators.filter(resource.getAllContents(), Reference.class); + while (modelSymbols.hasNext()) { + { + final Reference symbolElement = modelSymbols.next(); + final ICompositeNode node = NodeModelUtils.getNode(symbolElement); + acceptor.addPosition( + node.getOffset(), + node.getLength(), + this.getSymbolCode(node.getText())); + } + } + } + } + + public String getSymbolCode(final String name) { + boolean _containsKey = this.symbolName2ID.containsKey(name); + if (_containsKey) { + return this.symbolName2ID.get(name); + } else { + final String id = this.calculateSymbolCode(name); + this.symbolName2ID.put(name, id); + return id; + } + } + + public String calculateSymbolCode(final String name) { + int _hashCode = name.hashCode(); + final Random random = new Random(_hashCode); + final float hue = this.huePick(random.nextFloat()); + float _nextFloat = random.nextFloat(); + double _multiply = (_nextFloat * 0.3); + final double saturation = (0.2 + _multiply); + float _nextFloat_1 = random.nextFloat(); + double _multiply_1 = (_nextFloat_1 * 0.2); + final double brightness = (_multiply_1 + 0.7f); + StringConcatenation _builder = new StringConcatenation(); + _builder.append(SolverSemanticHighlightCalculator.SYMBOL_CODE); + _builder.append(" "); + _builder.append(hue); + _builder.append(" "); + _builder.append(saturation); + _builder.append(" "); + _builder.append(brightness); + return _builder.toString(); + } + + private float huePick(final float random) { + final int pink = 300; + final int tolerance = 10; + final float degree = (random * (360 - (2 * tolerance))); + if ((degree < (pink - tolerance))) { + return degree; + } else { + return (degree + (2 * tolerance)); + } + } +} diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticTextAttributeProvider.java b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticTextAttributeProvider.java new file mode 100644 index 00000000..04824ad1 --- /dev/null +++ b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticTextAttributeProvider.java @@ -0,0 +1,63 @@ +package org.eclipse.viatra.solver.language.ui.syntaxcoloring; + +import com.google.inject.Inject; +import java.util.WeakHashMap; +import org.eclipse.jface.text.TextAttribute; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.viatra.solver.language.ui.syntaxcoloring.SolverSemanticHighlightCalculator; +import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreAccess; +import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration; +import org.eclipse.xtext.ui.editor.syntaxcoloring.PreferenceStoreAccessor; +import org.eclipse.xtext.ui.editor.syntaxcoloring.TextAttributeProvider; +import org.eclipse.xtext.ui.editor.utils.EditorUtils; +import org.eclipse.xtext.ui.editor.utils.TextStyle; + +@SuppressWarnings("all") +public class SolverSemanticTextAttributeProvider extends TextAttributeProvider { + private final TextStyle defaultTextStyle = new TextStyle(); + + private final WeakHashMap colorID2TextAttribute = new WeakHashMap(); + + @Inject + public SolverSemanticTextAttributeProvider(final IHighlightingConfiguration highlightingConfig, final IPreferenceStoreAccess preferenceStoreAccess, final PreferenceStoreAccessor prefStoreAccessor) { + super(highlightingConfig, preferenceStoreAccess, prefStoreAccessor); + } + + @Override + public TextAttribute getAttribute(final String id) { + TextAttribute _xifexpression = null; + boolean _isMetamodelElementColorID = this.isMetamodelElementColorID(id); + if (_isMetamodelElementColorID) { + boolean _containsKey = this.colorID2TextAttribute.containsKey(id); + if (_containsKey) { + return this.colorID2TextAttribute.get(id); + } else { + final TextAttribute style = this.metamodelElementTextStyle(id); + this.colorID2TextAttribute.put(id, style); + return style; + } + } else { + _xifexpression = super.getAttribute(id); + } + return _xifexpression; + } + + private boolean isMetamodelElementColorID(final String id) { + return id.startsWith(SolverSemanticHighlightCalculator.SYMBOL_CODE); + } + + private TextAttribute metamodelElementTextStyle(final String id) { + final String[] texts = id.split(" "); + float _parseFloat = Float.parseFloat(texts[1]); + float _parseFloat_1 = Float.parseFloat(texts[2]); + float _parseFloat_2 = Float.parseFloat(texts[3]); + final RGB backgroundColor = new RGB(_parseFloat, _parseFloat_1, _parseFloat_2); + Color _colorFromRGB = EditorUtils.colorFromRGB(this.defaultTextStyle.getColor()); + Color _colorFromRGB_1 = EditorUtils.colorFromRGB(backgroundColor); + int _style = this.defaultTextStyle.getStyle(); + Font _fontFromFontData = EditorUtils.fontFromFontData(this.defaultTextStyle.getFontData()); + return new TextAttribute(_colorFromRGB, _colorFromRGB_1, _style, _fontFromFontData); + } +} diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.SolverLanguageValidator.xtendbin b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.SolverLanguageValidator.xtendbin new file mode 100644 index 00000000..6d6995bd Binary files /dev/null and b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.SolverLanguageValidator.xtendbin differ diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.gitignore b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.gitignore new file mode 100644 index 00000000..f1cb387a --- /dev/null +++ b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/.gitignore @@ -0,0 +1 @@ +/.SolverLanguageValidator.java._trace diff --git a/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/SolverLanguageValidator.java b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/SolverLanguageValidator.java new file mode 100644 index 00000000..2b8f158a --- /dev/null +++ b/Application/org.eclipse.viatra.solver.language.ui/xtend-gen/org/eclipse/viatra/solver/language/validation/SolverLanguageValidator.java @@ -0,0 +1,15 @@ +/** + * generated by Xtext 2.18.0.M3 + */ +package org.eclipse.viatra.solver.language.validation; + +import org.eclipse.viatra.solver.language.validation.AbstractSolverLanguageValidator; + +/** + * This class contains custom validation rules. + * + * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation + */ +@SuppressWarnings("all") +public class SolverLanguageValidator extends AbstractSolverLanguageValidator { +} -- cgit v1.2.3-54-g00ecf