aboutsummaryrefslogtreecommitdiffstats
path: root/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit
diff options
context:
space:
mode:
Diffstat (limited to 'Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit')
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguage.xtext101
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguageRuntimeModule.xtend37
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguageStandaloneSetup.xtend15
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/GenerateCftLanguage.mwe248
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/conversion/CftLanguageValueConverterService.xtend15
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/conversion/OF_INTValueConverter.xtend35
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/generator/CftLanguageGenerator.xtend25
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/naming/CftLanguageQualifiedNameProvider.xtend27
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/naming/PackageNameProvider.xtend30
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/scoping/CftLanguageImportedNamespaceAwareLocalScopeProvider.xtend45
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/scoping/CftLanguageScopeProvider.xtend147
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/validation/CftLanguageValidator.xtend25
12 files changed, 0 insertions, 550 deletions
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguage.xtext b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguage.xtext
deleted file mode 100644
index ab053f67..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguage.xtext
+++ /dev/null
@@ -1,101 +0,0 @@
1grammar hu.bme.mit.inf.dslreasoner.faulttree.components.CftLanguage with org.eclipse.xtext.common.Terminals
2
3import "http://www.eclipse.org/emf/2002/Ecore" as ecore
4import "http://www.eclipse.org/viatra/query/patternlanguage/emf/PatternLanguage" as vql
5import "http://www.bme.hu/mit/inf/dslreasoner/faulttree/model/ft" as ft
6import "http://www.bme.hu/mit/inf/dslreasoner/faulttree/model/cft" as cft
7generate cftLanguage "http://www.bme.hu/mit/inf/dslreasoner/faulttree/components/CftLanguage"
8
9CftModel:
10 "package" packageName=QualifiedName ";"?
11 imports+=ImportDeclaration*
12 (componentDefinitions+=ComponentDefinition | transformationDefinitions+=TransformationDefinition)*;
13
14ImportDeclaration:
15 "import" importedNamespace=QualifiedNameWithWildcard ";"?;
16
17ComponentDefinition returns cft::ComponentDefinition:
18 "cft" name=ValidId "{"
19 (("in" inputEvents+=InputEvent* ";")? & ("out" outputEvents+=[cft::EventDeclaration|ValidId]* ";")?)
20 (eventDefinitions+=EventDefinition ";")*
21 "}";
22
23InputEvent returns cft::InputEvent:
24 name=ValidId multiple?="[]"?;
25
26EventDefinition returns cft::EventDefinition:
27 BasicEventDefinition | GateDefinition;
28
29BasicEventDefinition returns cft::BasicEventDefinition:
30 name=ValidId distribution=Distribution;
31
32Distribution returns ft::Distribution:
33 ConstantDistribution | ExponentialDistribution;
34
35ConstantDistribution returns ft::ConstantDistribution:
36 "prob" "=" p=Double;
37
38ExponentialDistribution returns ft::ExponentialDistribution:
39 "lambda" "=" lambda=Double;
40
41GateDefinition returns cft::GateDefinition:
42 AndGateDefinition | OrGateDefinition | KOfMGateDefinition;
43
44AndGateDefinition returns cft::AndGateDefinition:
45 name=ValidId "and" inputEvents+=[cft::EventDeclaration|ValidId]*;
46
47OrGateDefinition returns cft::OrGateDefinition:
48 name=ValidId "or" inputEvents+=[cft::EventDeclaration|ValidId]*;
49
50KOfMGateDefinition returns cft::KOfMGateDefinition:
51 name=ValidId k=INT ("of" m=INT | m=OF_INT) inputEvents+=[cft::EventDeclaration|ValidId]*;
52
53TransformationDefinition:
54 "transformation" name=ValidId "{"
55 mappingDefinitions+=MappingDefinition*
56 "}";
57
58MappingDefinition:
59 topLevel?="toplevel"? "mapping" pattern=[vql::Pattern|QualifiedName]
60 "(" parameters+=MappingParameter ("," parameters+=MappingParameter)* ")"
61 (componentInstance=ComponentInstance)? ("{"
62 ((lookupDefinitions+=LookupDefinition | assignments+=Assignment) ";")*
63 "}")?;
64
65MappingParameter:
66 name=ValidId;
67
68LookupDefinition:
69 "lookup" mapping=[MappingDefinition|QualifiedName]
70 "(" arguments+=[MappingParameter|ValidId] ("," arguments+=[MappingParameter|ValidId])* ")"
71 "as" name=ValidId;
72
73Variable:
74 ComponentInstance | LookupDefinition;
75
76Assignment:
77 input=EventReference (multiple?="+=" | ":=") output=EventReference;
78
79EventReference:
80 component=[Variable|ValidId] "." event=[cft::EventDeclaration|ValidId];
81
82ComponentInstance:
83 "=>" componentType=[cft::ComponentDefinition|QualifiedName] name=ValidId?;
84
85QualifiedName returns ecore::EString:
86 ValidId ("." ValidId)*;
87
88QualifiedNameWithWildcard returns ecore::EString:
89 QualifiedName ("." "*")?;
90
91ValidId:
92 ID | OF_INT;
93
94Double returns ecore::EDouble:
95 INT | T_DOUBLE;
96
97terminal OF_INT returns ecore::EInt:
98 "o" "f" ('0'..'9')+;
99
100terminal T_DOUBLE:
101 ('0'..'9')+ ("." ('0'..'9')+ | ("." ('0'..'9')+)? ("e" | "E") ("+" | "-")? ('0'..'9')+);
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguageRuntimeModule.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguageRuntimeModule.xtend
deleted file mode 100644
index fe5965fa..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguageRuntimeModule.xtend
+++ /dev/null
@@ -1,37 +0,0 @@
1/*
2 * generated by Xtext 2.16.0
3 */
4package hu.bme.mit.inf.dslreasoner.faulttree.components
5
6import com.google.inject.Binder
7import com.google.inject.name.Names
8import hu.bme.mit.inf.dslreasoner.faulttree.components.conversion.CftLanguageValueConverterService
9import hu.bme.mit.inf.dslreasoner.faulttree.components.naming.CftLanguageQualifiedNameProvider
10import hu.bme.mit.inf.dslreasoner.faulttree.components.scoping.CftLanguageImportedNamespaceAwareLocalScopeProvider
11import org.eclipse.xtext.scoping.IScopeProvider
12import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider
13import org.eclipse.xtext.scoping.impl.DefaultGlobalScopeProvider
14
15/**
16 * Use this class to register components to be used at runtime / without the Equinox extension registry.
17 */
18class CftLanguageRuntimeModule extends AbstractCftLanguageRuntimeModule {
19
20 override bindIGlobalScopeProvider() {
21 DefaultGlobalScopeProvider
22 }
23
24 override configureIScopeProviderDelegate(Binder binder) {
25 binder.bind(IScopeProvider).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(
26 CftLanguageImportedNamespaceAwareLocalScopeProvider)
27 }
28
29
30 override bindIQualifiedNameProvider() {
31 CftLanguageQualifiedNameProvider
32 }
33
34 override bindIValueConverterService() {
35 CftLanguageValueConverterService
36 }
37}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguageStandaloneSetup.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguageStandaloneSetup.xtend
deleted file mode 100644
index 7ec57980..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/CftLanguageStandaloneSetup.xtend
+++ /dev/null
@@ -1,15 +0,0 @@
1/*
2 * generated by Xtext 2.16.0
3 */
4package hu.bme.mit.inf.dslreasoner.faulttree.components
5
6
7/**
8 * Initialization support for running Xtext languages without Equinox extension registry.
9 */
10class CftLanguageStandaloneSetup extends CftLanguageStandaloneSetupGenerated {
11
12 def static void doSetup() {
13 new CftLanguageStandaloneSetup().createInjectorAndDoEMFRegistration()
14 }
15}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/GenerateCftLanguage.mwe2 b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/GenerateCftLanguage.mwe2
deleted file mode 100644
index 89efbb05..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/GenerateCftLanguage.mwe2
+++ /dev/null
@@ -1,48 +0,0 @@
1module hu.bme.mit.inf.dslreasoner.faulttree.components.GenerateCftLanguage
2
3import org.eclipse.xtext.xtext.generator.*
4import org.eclipse.xtext.xtext.generator.model.project.*
5
6var rootPath = ".."
7
8Workflow {
9
10 component = XtextGenerator {
11 configuration = {
12 project = StandardProjectConfig {
13 baseName = "hu.bme.mit.inf.dslreasoner.faulttree.components"
14 rootPath = rootPath
15 eclipsePlugin = {
16 enabled = true
17 }
18 createEclipseMetaData = true
19 }
20 code = {
21 encoding = "UTF-8"
22 lineDelimiter = "\n"
23 fileHeader = "/*\n * generated by Xtext \${version}\n */"
24 }
25 }
26 language = StandardLanguage {
27 name = "hu.bme.mit.inf.dslreasoner.faulttree.components.CftLanguage"
28 fileExtensions = "cft"
29
30 referencedResource = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel"
31 referencedResource = "platform:/resource/org.eclipse.viatra.query.patternlanguage.emf/model/PatternLanguage.genmodel"
32 referencedResource = "platform:/resource/hu.bme.mit.inf.dslreasoner.faulttree.model/model/ft.genmodel"
33 referencedResource = "platform:/resource/hu.bme.mit.inf.dslreasoner.faulttree.model/model/cft.genmodel"
34
35 serializer = {
36 generateStub = false
37 }
38 validator = {
39 // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
40 // Generates checks for @Deprecated grammar annotations, an IssueProvider and a corresponding PropertyPage
41 generateDeprecationValidation = true
42 }
43 junitSupport = {
44 junitVersion = "5"
45 }
46 }
47 }
48}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/conversion/CftLanguageValueConverterService.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/conversion/CftLanguageValueConverterService.xtend
deleted file mode 100644
index 974e0df4..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/conversion/CftLanguageValueConverterService.xtend
+++ /dev/null
@@ -1,15 +0,0 @@
1package hu.bme.mit.inf.dslreasoner.faulttree.components.conversion
2
3import com.google.inject.Inject
4import org.eclipse.xtext.common.services.DefaultTerminalConverters
5import org.eclipse.xtext.conversion.IValueConverter
6import org.eclipse.xtext.conversion.ValueConverter
7
8class CftLanguageValueConverterService extends DefaultTerminalConverters {
9 @Inject OF_INTValueConverter ofIntValueConverter
10
11 @ValueConverter(rule="OF_INT")
12 def IValueConverter<Integer> OF_INT() {
13 ofIntValueConverter
14 }
15}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/conversion/OF_INTValueConverter.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/conversion/OF_INTValueConverter.xtend
deleted file mode 100644
index ba3d39e6..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/conversion/OF_INTValueConverter.xtend
+++ /dev/null
@@ -1,35 +0,0 @@
1package hu.bme.mit.inf.dslreasoner.faulttree.components.conversion
2
3import org.eclipse.xtext.conversion.ValueConverterException
4import org.eclipse.xtext.conversion.impl.AbstractLexerBasedConverter
5import org.eclipse.xtext.nodemodel.INode
6
7class OF_INTValueConverter extends AbstractLexerBasedConverter<Integer> {
8 static val PREFIX = "of"
9
10 override toValue(String string, INode node) throws ValueConverterException {
11 if (string === null) {
12 return null
13 }
14 if (string.length < PREFIX.length || string.substring(0, PREFIX.length) != PREFIX) {
15 throw new ValueConverterException("'" + string + "' must start with the characters 'of'.", node, null);
16 }
17 try {
18 val intValue = Integer.parseInt(string.substring(PREFIX.length), 10)
19 Integer.valueOf(intValue)
20 } catch (NumberFormatException e) {
21 throw new ValueConverterException("Couldn't convert '" + string + "' to an int value.", node, e);
22 }
23 }
24
25 override protected toEscapedString(Integer value) {
26 PREFIX + value
27 }
28
29 override protected assertValidValue(Integer value) {
30 super.assertValidValue(value)
31 if (value < 0) {
32 throw new ValueConverterException(getRuleName() + " may not be negative.", null, null);
33 }
34 }
35}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/generator/CftLanguageGenerator.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/generator/CftLanguageGenerator.xtend
deleted file mode 100644
index d7ebace4..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/generator/CftLanguageGenerator.xtend
+++ /dev/null
@@ -1,25 +0,0 @@
1/*
2 * generated by Xtext 2.16.0
3 */
4package hu.bme.mit.inf.dslreasoner.faulttree.components.generator
5
6import org.eclipse.emf.ecore.resource.Resource
7import org.eclipse.xtext.generator.AbstractGenerator
8import org.eclipse.xtext.generator.IFileSystemAccess2
9import org.eclipse.xtext.generator.IGeneratorContext
10
11/**
12 * Generates code from your model files on save.
13 *
14 * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation
15 */
16class CftLanguageGenerator extends AbstractGenerator {
17
18 override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
19// fsa.generateFile('greetings.txt', 'People to greet: ' +
20// resource.allContents
21// .filter(Greeting)
22// .map[name]
23// .join(', '))
24 }
25}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/naming/CftLanguageQualifiedNameProvider.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/naming/CftLanguageQualifiedNameProvider.xtend
deleted file mode 100644
index db89ebf9..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/naming/CftLanguageQualifiedNameProvider.xtend
+++ /dev/null
@@ -1,27 +0,0 @@
1package hu.bme.mit.inf.dslreasoner.faulttree.components.naming
2
3import com.google.inject.Inject
4import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.TransformationDefinition
5import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition
6import org.eclipse.emf.ecore.EObject
7import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider
8
9class CftLanguageQualifiedNameProvider extends DefaultDeclarativeQualifiedNameProvider {
10 @Inject PackageNameProvider packageNameProvider
11
12 def qualifiedName(ComponentDefinition componentDefinition) {
13 computePackageQualifiedName(componentDefinition, componentDefinition.name)
14 }
15
16 def qualifiedName(TransformationDefinition transformationDefinition) {
17 computePackageQualifiedName(transformationDefinition, transformationDefinition.name)
18 }
19
20 private def computePackageQualifiedName(EObject eObj, String name) {
21 if (name === null) {
22 return null
23 }
24 val packageQualifier = packageNameProvider.getPackageName(eObj)
25 packageQualifier.append(name)
26 }
27}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/naming/PackageNameProvider.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/naming/PackageNameProvider.xtend
deleted file mode 100644
index a05c8138..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/naming/PackageNameProvider.xtend
+++ /dev/null
@@ -1,30 +0,0 @@
1package hu.bme.mit.inf.dslreasoner.faulttree.components.naming
2
3import com.google.inject.Inject
4import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.CftModel
5import org.eclipse.emf.ecore.EObject
6import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor
7import org.eclipse.xtext.EcoreUtil2
8import org.eclipse.xtext.naming.IQualifiedNameConverter
9import org.eclipse.xtext.naming.QualifiedName
10
11class PackageNameProvider {
12 val IQualifiedNameConverter qualifiedNameConverter
13
14 @FinalFieldsConstructor
15 @Inject
16 new() {
17 }
18
19 def getPackageName(EObject eObj) {
20 if (eObj === null) {
21 return QualifiedName.EMPTY
22 }
23 val pacakgeName = EcoreUtil2.getContainerOfType(eObj, CftModel)?.packageName
24 if (pacakgeName.isNullOrEmpty) {
25 QualifiedName.EMPTY
26 } else {
27 qualifiedNameConverter.toQualifiedName(pacakgeName)
28 }
29 }
30}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/scoping/CftLanguageImportedNamespaceAwareLocalScopeProvider.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/scoping/CftLanguageImportedNamespaceAwareLocalScopeProvider.xtend
deleted file mode 100644
index 39a6e5a5..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/scoping/CftLanguageImportedNamespaceAwareLocalScopeProvider.xtend
+++ /dev/null
@@ -1,45 +0,0 @@
1package hu.bme.mit.inf.dslreasoner.faulttree.components.scoping
2
3import com.google.inject.Inject
4import com.google.inject.Singleton
5import hu.bme.mit.inf.dslreasoner.faulttree.components.naming.PackageNameProvider
6import org.eclipse.emf.ecore.EObject
7import org.eclipse.emf.ecore.EReference
8import org.eclipse.xtext.naming.IQualifiedNameConverter
9import org.eclipse.xtext.naming.IQualifiedNameProvider
10import org.eclipse.xtext.scoping.ICaseInsensitivityHelper
11import org.eclipse.xtext.scoping.IGlobalScopeProvider
12import org.eclipse.xtext.scoping.IScope
13import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider
14
15@Singleton
16class CftLanguageImportedNamespaceAwareLocalScopeProvider extends ImportedNamespaceAwareLocalScopeProvider {
17 @Inject PackageNameProvider packageNameProvider
18
19 @Inject
20 new() {
21 }
22
23 new(IGlobalScopeProvider globalScopeProvider, IQualifiedNameProvider qualifiedNameProvider,
24 IQualifiedNameConverter qualifiedNameConverter, ICaseInsensitivityHelper caseInsensitivityHelper) {
25 super(globalScopeProvider, qualifiedNameProvider, qualifiedNameConverter, caseInsensitivityHelper)
26 packageNameProvider = new PackageNameProvider(qualifiedNameConverter)
27 }
28
29 override protected internalGetImportedNamespaceResolvers(EObject context, boolean ignoreCase) {
30 val resolvers = super.internalGetImportedNamespaceResolvers(context, ignoreCase)
31 val packageName = packageNameProvider.getPackageName(context)
32 if (!packageName.empty) {
33 val packageNormalizer = doCreateImportNormalizer(packageName, true, ignoreCase)
34 resolvers.add(0, packageNormalizer)
35 }
36 resolvers
37 }
38
39 def createImportNormalizedScope(IScope elements, EObject context, EReference reference) {
40 val ignoreCase = isIgnoreCase(reference)
41 val type = reference.EReferenceType
42 val namespaceResolvers = getImportedNamespaceResolvers(context, ignoreCase)
43 createImportScope(elements, namespaceResolvers, null, type, ignoreCase)
44 }
45}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/scoping/CftLanguageScopeProvider.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/scoping/CftLanguageScopeProvider.xtend
deleted file mode 100644
index f295f116..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/scoping/CftLanguageScopeProvider.xtend
+++ /dev/null
@@ -1,147 +0,0 @@
1/*
2 * generated by Xtext 2.16.0
3 */
4package hu.bme.mit.inf.dslreasoner.faulttree.components.scoping
5
6import com.google.common.collect.Lists
7import com.google.inject.Inject
8import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.ComponentInstance
9import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.EventReference
10import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.LookupDefinition
11import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.MappingDefinition
12import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.TransformationDefinition
13import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.Variable
14import hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.impl.MappingDefinitionImpl
15import hu.bme.mit.inf.dslreasoner.faulttree.model.cft.ComponentDefinition
16import org.eclipse.emf.common.notify.Notifier
17import org.eclipse.emf.ecore.EObject
18import org.eclipse.emf.ecore.EReference
19import org.eclipse.xtext.EcoreUtil2
20import org.eclipse.xtext.resource.EObjectDescription
21import org.eclipse.xtext.resource.IResourceDescriptions
22import org.eclipse.xtext.resource.IResourceDescriptionsProvider
23import org.eclipse.xtext.scoping.IScope
24import org.eclipse.xtext.scoping.Scopes
25import org.eclipse.xtext.scoping.impl.SimpleScope
26
27import static hu.bme.mit.inf.dslreasoner.faulttree.components.cftLanguage.CftLanguagePackage.Literals.*
28
29/**
30 * This class contains custom scoping description.
31 *
32 * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping
33 * on how and when to use it.
34 */
35class CftLanguageScopeProvider extends AbstractCftLanguageScopeProvider {
36 public static val SINGLETON_VARIABLE_PREFIX = "_"
37
38 @Inject IResourceDescriptionsProvider resourceDescriptionsProvider
39 @Inject CftLanguageImportedNamespaceAwareLocalScopeProvider importedNamespaceProvider
40
41 override getScope(EObject context, EReference reference) {
42 switch (reference) {
43 case LOOKUP_DEFINITION__MAPPING:
44 getRuleDefinitionsScope(context, reference)
45 case LOOKUP_DEFINITION__ARGUMENTS:
46 getMappingParametersScope(context)
47 case EVENT_REFERENCE__COMPONENT:
48 getComponentInstancesScope(context)
49 case EVENT_REFERENCE__EVENT:
50 getEventDeclarationsScope(context)
51 default:
52 super.getScope(context, reference)
53 }
54 }
55
56 protected def getRuleDefinitionsScope(EObject context, EReference referece) {
57 val transformationDefinition = EcoreUtil2.getContainerOfType(context, TransformationDefinition)
58 if (transformationDefinition === null) {
59 return IScope.NULLSCOPE
60 }
61 val resourceDescriptions = getResourceDescriptions(transformationDefinition)
62 val mappingDefinitionDescriptions = toMappingDefinitionDescriptions(resourceDescriptions,
63 transformationDefinition.mappingDefinitions)
64 val ruleDefinitionsScope = new SimpleScope(IScope.NULLSCOPE, mappingDefinitionDescriptions)
65 importedNamespaceProvider.createImportNormalizedScope(ruleDefinitionsScope, context, referece)
66 }
67
68 protected def toMappingDefinitionDescriptions(IResourceDescriptions resourceDescriptions,
69 Iterable<? extends MappingDefinition> ruleDefinitions) {
70 val mappingDefinitionDescriptions = Lists.newArrayListWithExpectedSize(ruleDefinitions.size)
71 for (ruleDefinition : ruleDefinitions) {
72 val pattern = ruleDefinition.safelyGetPattern
73 if (pattern !== null) {
74 val patternName = resourceDescriptions.getExportedObjectsByObject(pattern).head?.qualifiedName
75 if (patternName !== null) {
76 mappingDefinitionDescriptions += EObjectDescription.create(patternName, ruleDefinition)
77 }
78 }
79
80 }
81 mappingDefinitionDescriptions
82 }
83
84 private def safelyGetPattern(MappingDefinition mappingDefinition) {
85 switch (mappingDefinition) {
86 MappingDefinitionImpl: mappingDefinition.basicGetPattern
87 case null: null
88 default: mappingDefinition.pattern
89 }
90 }
91
92 private def getResourceDescriptions(Notifier notifier) {
93 val resourceSet = EcoreUtil2.getResourceSet(notifier)
94 if (resourceSet === null) {
95 new IResourceDescriptions.NullImpl
96 } else {
97 resourceDescriptionsProvider.getResourceDescriptions(resourceSet)
98 }
99 }
100
101 protected def getMappingParametersScope(EObject context) {
102 val mappingDefinition = EcoreUtil2.getContainerOfType(context, MappingDefinition)
103 if (mappingDefinition === null) {
104 return IScope.NULLSCOPE
105 }
106 val variables = mappingDefinition.parameters.filter [
107 !name.startsWith(SINGLETON_VARIABLE_PREFIX)
108 ]
109 Scopes.scopeFor(variables)
110 }
111
112 protected def getComponentInstancesScope(EObject context) {
113 val mappingDefinition = EcoreUtil2.getContainerOfType(context, MappingDefinition)
114 if (mappingDefinition === null) {
115 return IScope.NULLSCOPE
116 }
117 val componentInstances = <Variable>newArrayList
118 componentInstances.addAll(mappingDefinition.lookupDefinitions)
119 if (mappingDefinition.componentInstance !== null) {
120 componentInstances += mappingDefinition.componentInstance
121 }
122 Scopes.scopeFor(componentInstances)
123 }
124
125 protected def getEventDeclarationsScope(EObject context) {
126 val variable = EcoreUtil2.getContainerOfType(context, EventReference)?.component
127 val events = switch (variable) {
128 ComponentInstance:
129 variable.componentType?.allEventDeclarations
130 LookupDefinition:
131 variable.mapping?.componentInstance?.componentType?.allEventDeclarations
132 default:
133 null
134 }
135 if (events === null) {
136 return IScope.NULLSCOPE
137 }
138 Scopes.scopeFor(events)
139 }
140
141 private def getAllEventDeclarations(ComponentDefinition componentDefinition) {
142 val eventDeclarations = newArrayList
143 eventDeclarations.addAll(componentDefinition.inputEvents)
144 eventDeclarations.addAll(componentDefinition.eventDefinitions)
145 eventDeclarations
146 }
147}
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/validation/CftLanguageValidator.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/validation/CftLanguageValidator.xtend
deleted file mode 100644
index f1da10bb..00000000
--- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.components/src/hu/bme/mit/inf/dslreasoner/faulttree/components/validation/CftLanguageValidator.xtend
+++ /dev/null
@@ -1,25 +0,0 @@
1/*
2 * generated by Xtext 2.16.0
3 */
4package hu.bme.mit.inf.dslreasoner.faulttree.components.validation
5
6
7/**
8 * This class contains custom validation rules.
9 *
10 * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation
11 */
12class CftLanguageValidator extends AbstractCftLanguageValidator {
13
14// public static val INVALID_NAME = 'invalidName'
15//
16// @Check
17// def checkGreetingStartsWithCapital(Greeting greeting) {
18// if (!Character.isUpperCase(greeting.name.charAt(0))) {
19// warning('Name should start with a capital',
20// CftLanguagePackage.Literals.GREETING__NAME,
21// INVALID_NAME)
22// }
23// }
24
25}