aboutsummaryrefslogtreecommitdiffstats
path: root/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszka@SEMERATH-LAPTOP>2018-01-17 00:54:44 +0100
committerLibravatar OszkarSemerath <oszka@SEMERATH-LAPTOP>2018-01-17 00:54:44 +0100
commit0a31d5448e92d915c7163c3985fa0807f67d3f06 (patch)
tree1a106505c98df6398f2b5fe183771fc315f1e87a /Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext
parentScope patched for metamodel specification (diff)
downloadVIATRA-Generator-0a31d5448e92d915c7163c3985fa0807f67d3f06.tar.gz
VIATRA-Generator-0a31d5448e92d915c7163c3985fa0807f67d3f06.tar.zst
VIATRA-Generator-0a31d5448e92d915c7163c3985fa0807f67d3f06.zip
Scoping and linking of Viatra Packages and Patterns is completed
Diffstat (limited to 'Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext')
-rw-r--r--Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext140
1 files changed, 75 insertions, 65 deletions
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext
index ed83419f..1e8fd485 100644
--- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext
+++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/ApplicationConfiguration.xtext
@@ -4,23 +4,19 @@ import "http://www.eclipse.org/emf/2002/Ecore" as ecore
4import "http://www.eclipse.org/viatra/query/patternlanguage/PatternLanguage" as viatra 4import "http://www.eclipse.org/viatra/query/patternlanguage/PatternLanguage" as viatra
5generate applicationConfiguration "http://www.bme.hu/mit/inf/dslreasoner/application/ApplicationConfiguration" 5generate applicationConfiguration "http://www.bme.hu/mit/inf/dslreasoner/application/ApplicationConfiguration"
6 6
7
7ConfigurationScript: 8ConfigurationScript:
8 (imports += Import)* 9 (imports += Import)*
9 (commands += Command)* 10 (commands += Command)*
10; 11;
11 12
12Command : 13Command :
13 Declaration 14 Declaration | Task
14 //| Task
15;
16Declaration :
17// FileDeclaration |
18 MetamodelDeclaration
19// | PartialModelDeclaration
20// | GraphPatternDeclaration
21// | SolverConfig
22; 15;
23 16
17QualifiedName returns ecore::EString:
18 ID (=>'.' ID)*;
19
24/////////////////////////////////////////////////// 20///////////////////////////////////////////////////
25// Imports 21// Imports
26/////////////////////////////////////////////////// 22///////////////////////////////////////////////////
@@ -29,25 +25,37 @@ Import: EPackageImport | ViatraImport;
29 25
30EPackageImport: "import" "epackage" importedPackage=[ecore::EPackage|STRING]; 26EPackageImport: "import" "epackage" importedPackage=[ecore::EPackage|STRING];
31ViatraImport: "import" "viatra" importedViatra=[viatra::PatternModel|STRING]; 27ViatraImport: "import" "viatra" importedViatra=[viatra::PatternModel|STRING];
28
29///////////////////////////////////////////////////
30// Declaration
31///////////////////////////////////////////////////
32
33Declaration :
34 FileDeclaration
35 | MetamodelDeclaration
36 | PartialModelDeclaration
37 | GraphPatternDeclaration
38 | ConfigDeclaration
39 | ScopeDeclaration
40;
32 41
33/////////////////////////////////////////////////// 42///////////////////////////////////////////////////
34// Files and Folders 43// Files and Folders
35/////////////////////////////////////////////////// 44///////////////////////////////////////////////////
36/* 45
37FileSpecification: path = STRING; 46FileSpecification: path = STRING;
38FileDeclaration: 'file' name = ID '=' specification = FileSpecification; 47FileDeclaration: 'file' name = ID '=' specification = FileSpecification;
39
40FileReference: referred = [FileDeclaration]; 48FileReference: referred = [FileDeclaration];
41File: FileSpecification | FileReference; 49File: FileSpecification | FileReference;
42*/ 50
43/////////////////////////////////////////////////// 51///////////////////////////////////////////////////
44// Metamodel 52// Metamodel
45/////////////////////////////////////////////////// 53///////////////////////////////////////////////////
46 54
47MetamodelSpecification: '{' (entries += MetamodelEntry) (',' entries += MetamodelEntry)* '}'; 55MetamodelSpecification: '{' (entries += MetamodelEntry) (',' entries += MetamodelEntry)* '}';
48MetamodelEntry: MetamodelElement | AllPackageEntry; 56MetamodelEntry: MetamodelElement | AllPackageEntry;
49AllPackageEntry: "package" package=[ecore::EPackage] ("excluding" '{'exclusion +=MetamodelElement (',' exclusion +=MetamodelElement)*'}')?; 57AllPackageEntry: "package" package=[ecore::EPackage|QualifiedName] ("excluding" '{'exclusion +=MetamodelElement (',' exclusion +=MetamodelElement)*'}')?;
50MetamodelElement: (package=[ecore::EPackage] '::')? classifier = [ecore::EClassifier] ('.' feature= [ecore::ENamedElement])?; 58MetamodelElement: (package=[ecore::EPackage|QualifiedName] '::')? classifier = [ecore::EClassifier] ('.' feature= [ecore::ENamedElement])?;
51 59
52MetamodelDeclaration: 'metamodel' name = ID specification = MetamodelSpecification; 60MetamodelDeclaration: 'metamodel' name = ID specification = MetamodelSpecification;
53MetamodelReference: referred = [MetamodelDeclaration]; 61MetamodelReference: referred = [MetamodelDeclaration];
@@ -56,72 +64,74 @@ Metamodel: MetamodelReference | MetamodelSpecification;
56/////////////////////////////////////////////////// 64///////////////////////////////////////////////////
57// Partial Model 65// Partial Model
58/////////////////////////////////////////////////// 66///////////////////////////////////////////////////
59/* 67
60PartialModelEntry: path = File; 68PartialModelSpecification: '{' entry += PartialModelEntry (',' entry += PartialModelEntry)? '}';
61PartialModelSpecification: entry += PartialModelEntry ('+' entry += PartialModelEntry)*; 69PartialModelEntry: ModelEntry | FolderEntry;
62PartialModelDeclaration: 'partial-model' name = ID '=' specification = PartialModelSpecification; 70ModelEntry: path = File;
71FolderEntry: "folder" path = File ("excluding" "{" exclusion += ModelEntry ("," exclusion += ModelEntry)* "}")?;
72
73PartialModelDeclaration: 'models' name = ID specification = PartialModelSpecification;
63PartialModelReference : referred = [PartialModelDeclaration]; 74PartialModelReference : referred = [PartialModelDeclaration];
64PartialModel: PartialModelSpecification | PartialModelReference; 75PartialModel: PartialModelSpecification | PartialModelReference;
65*/ 76
66/////////////////////////////////////////////////// 77///////////////////////////////////////////////////
67// Patterns 78// Patterns
68/////////////////////////////////////////////////// 79///////////////////////////////////////////////////
69/* 80
70PatternSpecification: '{' entries += PatternEntry (',' entries += PatternEntry)* '}'; 81PatternSpecification: '{' entries += PatternEntry (',' entries += PatternEntry)* '}';
71PatternEntry: PatternElement | AllPatternEntry; 82PatternEntry: PatternElement | AllPatternEntry;
72AllPatternEntry: package = [viatra::PatternModel] ('excluding' '{' exclusuion += PatternElement (',' exclusuion += PatternElement)* '}')?; 83AllPatternEntry: 'package' package = [viatra::PatternModel|QualifiedName] ('excluding' '{' exclusuion += PatternElement (',' exclusuion += PatternElement)* '}')?;
73PatternElement: pattern = [viatra::Pattern]; 84PatternElement: (package =[viatra::PatternModel|QualifiedName] '::')? pattern = [viatra::Pattern];
74 85
75GraphPatternDeclaration: 'patterns' name = ID specification = PatternSpecification; 86GraphPatternDeclaration: 'patterns' name = ID specification = PatternSpecification;
76GraphPatternReference: referred = [GraphPatternDeclaration]; 87GraphPatternReference: referred = [GraphPatternDeclaration];
77GraphPattern: GraphPatternReference|PatternSpecification; 88GraphPattern: GraphPatternReference|PatternSpecification;
78*/ 89
79/////////////////////////////////////////////////// 90///////////////////////////////////////////////////
80// SolverConfig 91// SolverConfig
81/////////////////////////////////////////////////// 92///////////////////////////////////////////////////
82/*
83SolverConfig : SMTSolverConfig | AlloySolverConfig | ViatraSolverConfig;
84
85SMTSolverConfig:
86 'smt-solver-config' name = ID '{'
87 'solver-path' '=' solverPath = File
88 '}'
89;
90
91AlloySolverConfig:
92 'alloy-solver-config' name = ID '{'
93 ('symmetry' '=' symmetry=INT)?
94 '}'
95;
96
97ViatraSolverConfig:
98 'viatra-solver-config' name = ID '{'
99 ('statecoding' '=' statecoding = ViatraStatecoder)? &
100 ('type-inferencing' '=' typeinferencing = ViatraTypeInferencing)? &
101 ('backtrack-chance' '=' backtrackChance = INT)?
102 '}'
103;
104enum ViatraStatecoder: neighbourhood | identifier;
105enum ViatraTypeInferencing: preliminary | online;
106
107Solver: SMTSolver | AlloySolver | ViatraSolver;
108 93
109SMTSolver: 'smt-solver' '(' (config = [SMTSolverConfig]) ')'; 94ConfigSpecification: {ConfigSpecification}'{'
110AlloySolver: 'alloy-solver' {AlloySolver} '(' (config = [AlloySolverConfig]|'default') ')'; 95 (entries += ConfigEntry ("," entries += ConfigEntry)*)?
111ViatraSolver: 'viatra-solver' {ViatraSolver} '(' (config= [ViatraSolverConfig]|'default')')'; 96 '}';
112 97ConfigDeclaration :
113Task: GenerationTask; 98 'config' name = ID specification = ConfigSpecification
114 99;
115GenerationTask: 'generate' '{' 100ConfigEntry: key = STRING "=" value = STRING;
116 ('metamodel' '=' metamodel = Metamodel) & 101ConfigReference: config = [ConfigDeclaration];
102Config: ConfigSpecification | ConfigReference;
103
104enum Solver: SMTSolver | AlloySolver | ViatraSolver;
105
106ScopeSpecification: {ScopeSpecification} '{'
107 (scopes += TypeScope (',' scopes += TypeScope)*)?
108'}';
109TypeScope: ( min = INT ( greather?='<' | greaterOrEqual?= '<='))? '#' type = TypeReference (( less?='<' | lessOrEqual?= '<=') max = INT)?;
110TypeReference: ClassReference | ObjectReference | IntegerReference | RealReference | StringReference;
111ClassReference: '[' element = MetamodelElement ']';
112ObjectReference: {ObjectReference} 'Object';
113IntegerReference: {IntegerScope} 'int';
114RealReference: {RealScope} 'real';
115StringReference: {StringScope} 'string';
116
117ScopeDeclaration: 'scope' name = ID specification = ScopeSpecification;
118ScopeReference: referred = [ScopeDeclaration];
119Scope: ScopeSpecification | ScopeReference;
120
121Task: GenerationTask /*| MeasurementTask | ValidationTask*/;
122
123GenerationTask: 'generate' {GenerationTask} '{'
124 (('metamodel' '=' metamodel = Metamodel)? &
117 ('partial-model' '=' partialModel = PartialModel)? & 125 ('partial-model' '=' partialModel = PartialModel)? &
118 ('patterns' '=' patterns = GraphPattern)? & 126 ('patterns' '=' patterns = GraphPattern)? &
119 ('new-objects' '=' size = INT) & 127 ('scope' '=' scope = Scope)? &
120 ('number' '=' number= INT)? & 128 ('number' '=' number= INT)? &
121 ('runs' '=' runs = INT)? 129 ('runs' '=' runs = INT)? &
122 'target-folder' '=' tagetFolder = File 130 ('solver' '=' solver = Solver)? &
123 'debug-folder' '=' debugFolder = File 131 ('config' '=' config = Config)? &
124 ('log' '=' targetLogFile = File)? 132 ('output' '=' tagetFolder = File)? &
125 ('statistics' '=' targetStatisticsFile = File)? 133 ('debug' '=' debugFolder = File)? &
134 ('log' '=' targetLogFile = File)? &
135 ('statistics' '=' targetStatisticsFile = File)?)
126 '}' 136 '}'
127;*/ \ No newline at end of file 137; \ No newline at end of file