Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 242153 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/qvt/declarative/parser/qvtrelation/QVTrParser.g (-151 / +146 lines)
Lines 14-35 Link Here
14
14
15
%options escape=$
15
%options escape=$
16
%options la=2
16
%options la=2
17
%options table=java
18
%options fp=QVTrParser,prefix=TK_
17
%options fp=QVTrParser,prefix=TK_
19
%options error-maps
20
%options scopes
21
%options margin=4
22
%options backtrack
18
%options backtrack
23
%options noserialize
19
%options noserialize
24
%options package=org.eclipse.qvt.declarative.parser.qvtrelation
20
%options package=org.eclipse.qvt.declarative.parser.qvtrelation
25
%options import_terminals=QVTrLexer.g
21
%options import_terminals=QVTrLexer.gi
26
%options ast_type=CSTNode
22
%options ast_type=CSTNode
27
%options programming_language=java
23
%options ParseTable=lpg.runtime.ParseTable
28
%options action=("*.java", "/.", "./")
24
%options template=../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/lpg/dtParserTemplateF.gi
29
%options ParseTable=lpg.lpgjavaruntime.ParseTable
30
%options include_directory=".;../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/lpg;../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/parser;../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking"
25
%options include_directory=".;../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/lpg;../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/parser;../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/parser/backtracking"
31
26
32
$KeyWords
27
%KeyWords
33
	checkonly
28
	checkonly
34
	default_values
29
	default_values
35
	domain
30
	domain
Lines 53-101 Link Here
53
	inv
48
	inv
54
	post
49
	post
55
	pre
50
	pre
56
$End
51
%End
57
52
58
$Terminals
53
%Terminals
59
	PLUS_PLUS     ::= '++'
54
	PLUS_PLUS     ::= '++'
60
$End
55
%End
61
56
62
$Globals
57
%Globals
63
/.
58
/.
64
import org.eclipse.qvt.declarative.parser.qvt.cst.*;
59
import org.eclipse.qvt.declarative.parser.qvt.cst.*;
65
import org.eclipse.qvt.declarative.parser.qvtrelation.cst.*;
60
import org.eclipse.qvt.declarative.parser.qvtrelation.cst.*;
66
import org.eclipse.qvt.declarative.parser.environment.ICSTFileEnvironment;
61
import org.eclipse.qvt.declarative.parser.environment.ICSTFileEnvironment;
67
import org.eclipse.ocl.cst.CollectionTypeCS;
62
import org.eclipse.ocl.cst.CollectionTypeCS;
68
import org.eclipse.ocl.parser.$prs_stream_class;
63
import org.eclipse.ocl.parser.$super_parser_class;
69
import org.eclipse.ocl.parser.backtracking.OCLParserErrors;
64
import org.eclipse.ocl.parser.backtracking.OCLParserErrors;
70
65
71
./
66
./
72
$End
67
%End
73
68
74
$Start
69
%Start
75
	topLevelCS
70
	topLevelCS
76
$End
71
%End
77
72
78
$Include
73
%Import
79
	EssentialOCL.g
74
	EssentialOCL.gi
80
$End
75
%End
81
76
82
$Include
77
%Import
83
	EssentialOCLErrors.g
78
	EssentialOCLErrors.gi
84
$End
79
%End
85
80
86
$Define
81
%Define
87
	$prs_parser_class /.BacktrackingParser./
82
	$prs_parser_class /.BacktrackingParser./
88
	$prs_parser_exception /.NotBacktrackParseTableException./
83
	$prs_parser_exception /.NotBacktrackParseTableException./
89
	$prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -BACKTRACK option")./
84
	$prs_parser_throw /.throw new RuntimeException("****Error: Regenerate $prs_type.java with -BACKTRACK option")./
90
	$prs_parse_args /.error_repair_count./
85
	$prs_parse_args /.error_repair_count./
91
    $environment_class /.ICSTFileEnvironment./
86
   $environment_class /.ICSTFileEnvironment./
92
	$lex_stream_class /.QVTrLexer./
87
	$lex_stream_class /.QVTrLexer./
93
    $LPGParsersym_class /.QVTrParserSymbols./
88
   $LPGParsersym_class /.QVTrParserSymbols./
94
	$copyright_contributions /.*   E.D.Willink - Extended API and implementation for QVTr
89
	$copyright_contributions /.*   E.D.Willink - Extended API and implementation for QVTr
95
*./
90
*./
96
$End
91
%End
97
92
98
$Headers
93
%Headers
99
	/.			
94
	/.			
100
		protected IdentifierCS createIdentifierCS(int token) {
95
		protected IdentifierCS createIdentifierCS(int token) {
101
			IdentifierCS result = QVTCSTFactory.eINSTANCE.createIdentifierCS();
96
			IdentifierCS result = QVTCSTFactory.eINSTANCE.createIdentifierCS();
Lines 113-177 Link Here
113
			return result;
108
			return result;
114
		}
109
		}
115
	./
110
	./
116
$End
111
%End
117
112
118
$Rules
113
%Rules
119
--<topLevel> ::= ('import' <unit> ';' )* <transformation>*
114
--<topLevel> ::= ('import' <unit> ';' )* <transformation>*
120
	topLevelCS_0_ ::= $empty
115
	topLevelCS_0_ ::= %empty
121
		/.$BeginJava
116
		/.$BeginCode
122
					TopLevelCS result = QVTrCSTFactory.eINSTANCE.createTopLevelCS();
117
					TopLevelCS result = QVTrCSTFactory.eINSTANCE.createTopLevelCS();
123
					setOffsets(result, getIToken($getToken(1)));
118
					setOffsets(result, getIToken($getToken(1)));
124
					$setResult(result);
119
					$setResult(result);
125
		  $EndJava
120
		  $EndCode
126
		./
121
		./
127
	topLevelCS_0_ ::= topLevelCS_0_ import unitCS ';'
122
	topLevelCS_0_ ::= topLevelCS_0_ import unitCS ';'
128
		/.$BeginJava
123
		/.$BeginCode
129
					TopLevelCS result = (TopLevelCS)$getSym(1);
124
					TopLevelCS result = (TopLevelCS)$getSym(1);
130
					result.getImportClause().add((UnitCS)$getSym(3));
125
					result.getImportClause().add((UnitCS)$getSym(3));
131
					setOffsets(result, result, getIToken($getToken(4)));
126
					setOffsets(result, result, getIToken($getToken(4)));
132
					$setResult(result);
127
					$setResult(result);
133
		  $EndJava
128
		  $EndCode
134
		./
129
		./
135
	topLevelCS_0_ ::= topLevelCS_0_ ERROR_TOKEN
130
	topLevelCS_0_ ::= topLevelCS_0_ ERROR_TOKEN
136
		/.$BeginJava
131
		/.$BeginCode
137
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_TOPLEVEL);
132
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_TOPLEVEL);
138
		  $EndJava
133
		  $EndCode
139
		./	
134
		./	
140
	topLevelCS_1_ ::= topLevelCS transformationCS
135
	topLevelCS_1_ ::= topLevelCS transformationCS
141
		/.$BeginJava
136
		/.$BeginCode
142
					TransformationCS transformationCS = (TransformationCS)$getSym(2);
137
					TransformationCS transformationCS = (TransformationCS)$getSym(2);
143
					TopLevelCS result = (TopLevelCS)$getSym(1);
138
					TopLevelCS result = (TopLevelCS)$getSym(1);
144
					result.getTransformation().add(transformationCS);
139
					result.getTransformation().add(transformationCS);
145
					setOffsets(result, result, transformationCS);
140
					setOffsets(result, result, transformationCS);
146
					$setResult(result);
141
					$setResult(result);
147
		  $EndJava
142
		  $EndCode
148
		./
143
		./
149
	topLevelCS_1_ ::= topLevelCS_1_ ERROR_TOKEN
144
	topLevelCS_1_ ::= topLevelCS_1_ ERROR_TOKEN
150
		/.$BeginJava
145
		/.$BeginCode
151
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_TRANSFORMATION);
146
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_TRANSFORMATION);
152
		  $EndJava
147
		  $EndCode
153
		./	
148
		./	
154
	topLevelCS -> topLevelCS_0_
149
	topLevelCS -> topLevelCS_0_
155
	topLevelCS -> topLevelCS_1_
150
	topLevelCS -> topLevelCS_1_
156
		
151
		
157
--<unit> ::= <identifier> ('.' <identifier>)*
152
--<unit> ::= <identifier> ('.' <identifier>)*
158
	unitCS ::= identifierCS
153
	unitCS ::= identifierCS
159
		/.$BeginJava
154
		/.$BeginCode
160
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
155
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
161
					UnitCS result = QVTrCSTFactory.eINSTANCE.createUnitCS();
156
					UnitCS result = QVTrCSTFactory.eINSTANCE.createUnitCS();
162
					result.getIdentifier().add(identifierCS);
157
					result.getIdentifier().add(identifierCS);
163
					setOffsets(result, identifierCS);
158
					setOffsets(result, identifierCS);
164
					$setResult(result);
159
					$setResult(result);
165
		  $EndJava
160
		  $EndCode
166
		./
161
		./
167
	unitCS ::= unitCS '.' identifierCS
162
	unitCS ::= unitCS '.' identifierCS
168
		/.$BeginJava
163
		/.$BeginCode
169
					IdentifierCS identifierCS = (IdentifierCS)$getSym(3);
164
					IdentifierCS identifierCS = (IdentifierCS)$getSym(3);
170
					UnitCS result = (UnitCS)$getSym(1);
165
					UnitCS result = (UnitCS)$getSym(1);
171
					result.getIdentifier().add(identifierCS);
166
					result.getIdentifier().add(identifierCS);
172
					setOffsets(result, result, identifierCS);
167
					setOffsets(result, result, identifierCS);
173
					$setResult(result);
168
					$setResult(result);
174
		  $EndJava
169
		  $EndCode
175
		./
170
		./
176
	
171
	
177
--<transformation> ::= 'transformation' <identifier> 
172
--<transformation> ::= 'transformation' <identifier> 
Lines 179-185 Link Here
179
--                     ['extends' <identifier> (',' <identifier>)* ]
174
--                     ['extends' <identifier> (',' <identifier>)* ]
180
--                     '{' <keyDecl>* ( <relation> | <query> )* '}'
175
--                     '{' <keyDecl>* ( <relation> | <query> )* '}'
181
	transformationCS_0_ ::= transformation identifierCS '(' modelDeclCS
176
	transformationCS_0_ ::= transformation identifierCS '(' modelDeclCS
182
		/.$BeginJava
177
		/.$BeginCode
183
					IdentifierCS identifierCS = (IdentifierCS)$getSym(2);
178
					IdentifierCS identifierCS = (IdentifierCS)$getSym(2);
184
					ModelDeclCS modelDeclCS = (ModelDeclCS)$getSym(4);
179
					ModelDeclCS modelDeclCS = (ModelDeclCS)$getSym(4);
185
					TransformationCS result = QVTrCSTFactory.eINSTANCE.createTransformationCS();
180
					TransformationCS result = QVTrCSTFactory.eINSTANCE.createTransformationCS();
Lines 187-304 Link Here
187
					result.getModelDecl().add(modelDeclCS);
182
					result.getModelDecl().add(modelDeclCS);
188
					setOffsets(result, getIToken($getToken(1)), modelDeclCS);
183
					setOffsets(result, getIToken($getToken(1)), modelDeclCS);
189
					$setResult(result);
184
					$setResult(result);
190
		  $EndJava
185
		  $EndCode
191
		./
186
		./
192
	transformationCS_0_ ::= transformationCS_0_ ',' modelDeclCS
187
	transformationCS_0_ ::= transformationCS_0_ ',' modelDeclCS
193
		/.$BeginJava
188
		/.$BeginCode
194
					ModelDeclCS modelDeclCS = (ModelDeclCS)$getSym(3);
189
					ModelDeclCS modelDeclCS = (ModelDeclCS)$getSym(3);
195
					TransformationCS result = (TransformationCS)$getSym(1);
190
					TransformationCS result = (TransformationCS)$getSym(1);
196
					result.getModelDecl().add(modelDeclCS);
191
					result.getModelDecl().add(modelDeclCS);
197
					setOffsets(result, result, modelDeclCS);
192
					setOffsets(result, result, modelDeclCS);
198
					$setResult(result);
193
					$setResult(result);
199
		  $EndJava
194
		  $EndCode
200
		./
195
		./
201
	transformationCS_0_ ::= transformationCS_0_ ERROR_TOKEN
196
	transformationCS_0_ ::= transformationCS_0_ ERROR_TOKEN
202
		/.$BeginJava
197
		/.$BeginCode
203
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_MODELDECL);
198
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_MODELDECL);
204
		  $EndJava
199
		  $EndCode
205
		./	
200
		./	
206
	transformationCS_1_ ::= transformationCS_0_ ')'
201
	transformationCS_1_ ::= transformationCS_0_ ')'
207
		/.$BeginJava
202
		/.$BeginCode
208
					TransformationCS result = (TransformationCS)$getSym(1);
203
					TransformationCS result = (TransformationCS)$getSym(1);
209
					setOffsets(result, result, getIToken($getToken(3)));
204
					setOffsets(result, result, getIToken($getToken(3)));
210
					$setResult(result);
205
					$setResult(result);
211
		  $EndJava
206
		  $EndCode
212
		./
207
		./
213
	transformationCS_2_ -> transformationCS_1_
208
	transformationCS_2_ -> transformationCS_1_
214
	transformationCS_2_ ::= transformationCS_1_ extends identifierCS
209
	transformationCS_2_ ::= transformationCS_1_ extends identifierCS
215
		/.$BeginJava
210
		/.$BeginCode
216
					IdentifierCS identifierCS = (IdentifierCS)$getSym(3);
211
					IdentifierCS identifierCS = (IdentifierCS)$getSym(3);
217
					TransformationCS result = (TransformationCS)$getSym(1);
212
					TransformationCS result = (TransformationCS)$getSym(1);
218
					result.setExtends(identifierCS);
213
					result.setExtends(identifierCS);
219
					setOffsets(result, result, identifierCS);
214
					setOffsets(result, result, identifierCS);
220
					$setResult(result);
215
					$setResult(result);
221
		  $EndJava
216
		  $EndCode
222
		./
217
		./
223
	transformationCS_3_ -> transformationCS_2_ '{'
218
	transformationCS_3_ -> transformationCS_2_ '{'
224
	transformationCS_3_ ::= transformationCS_3_ keyDeclCS
219
	transformationCS_3_ ::= transformationCS_3_ keyDeclCS
225
		/.$BeginJava
220
		/.$BeginCode
226
					KeyDeclCS keyDeclCS = (KeyDeclCS)$getSym(2);
221
					KeyDeclCS keyDeclCS = (KeyDeclCS)$getSym(2);
227
					TransformationCS result = (TransformationCS)$getSym(1);
222
					TransformationCS result = (TransformationCS)$getSym(1);
228
					result.getKeyDecl().add(keyDeclCS);
223
					result.getKeyDecl().add(keyDeclCS);
229
					setOffsets(result, result, keyDeclCS);
224
					setOffsets(result, result, keyDeclCS);
230
					$setResult(result);
225
					$setResult(result);
231
		  $EndJava
226
		  $EndCode
232
		./
227
		./
233
	transformationCS_4_ -> transformationCS_3_
228
	transformationCS_4_ -> transformationCS_3_
234
	transformationCS_4_ ::= transformationCS_4_ queryCS
229
	transformationCS_4_ ::= transformationCS_4_ queryCS
235
		/.$BeginJava
230
		/.$BeginCode
236
					QueryCS queryCS =(QueryCS)$getSym(2);
231
					QueryCS queryCS =(QueryCS)$getSym(2);
237
					TransformationCS result = (TransformationCS)$getSym(1);
232
					TransformationCS result = (TransformationCS)$getSym(1);
238
					result.getQuery().add(queryCS);
233
					result.getQuery().add(queryCS);
239
					setOffsets(result, result, queryCS);
234
					setOffsets(result, result, queryCS);
240
					$setResult(result);
235
					$setResult(result);
241
		  $EndJava
236
		  $EndCode
242
		./
237
		./
243
	transformationCS_4_ ::= transformationCS_4_ relationCS
238
	transformationCS_4_ ::= transformationCS_4_ relationCS
244
		/.$BeginJava
239
		/.$BeginCode
245
					RelationCS relationCS = (RelationCS)$getSym(2);
240
					RelationCS relationCS = (RelationCS)$getSym(2);
246
					TransformationCS result = (TransformationCS)$getSym(1);
241
					TransformationCS result = (TransformationCS)$getSym(1);
247
					result.getRelation().add(relationCS);
242
					result.getRelation().add(relationCS);
248
					setOffsets(result, result, relationCS);
243
					setOffsets(result, result, relationCS);
249
					$setResult(result);
244
					$setResult(result);
250
		  $EndJava
245
		  $EndCode
251
		./
246
		./
252
	transformationCS_4_ ::= transformationCS_4_ ERROR_TOKEN
247
	transformationCS_4_ ::= transformationCS_4_ ERROR_TOKEN
253
		/.$BeginJava
248
		/.$BeginCode
254
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_TRANSFORMATION_ELEMENT);
249
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_TRANSFORMATION_ELEMENT);
255
		  $EndJava
250
		  $EndCode
256
		./	
251
		./	
257
	transformationCS ::= transformationCS_4_ '}'
252
	transformationCS ::= transformationCS_4_ '}'
258
		/.$BeginJava
253
		/.$BeginCode
259
					TransformationCS result = (TransformationCS)$getSym(1);
254
					TransformationCS result = (TransformationCS)$getSym(1);
260
					setOffsets(result, result, getIToken($getToken(2)));
255
					setOffsets(result, result, getIToken($getToken(2)));
261
					$setResult(result);
256
					$setResult(result);
262
		  $EndJava
257
		  $EndCode
263
		./
258
		./
264
	
259
	
265
--<modelDecl> ::= <modelId> ':' <metaModelId>
260
--<modelDecl> ::= <modelId> ':' <metaModelId>
266
--**<modelDecl> ::= <modelId> ':' '{' <metaModelId> (',' <metaModelId>)* '}'
261
--**<modelDecl> ::= <modelId> ':' '{' <metaModelId> (',' <metaModelId>)* '}'
267
	modelDeclCS_0_ ::= modelIdCS ':'
262
	modelDeclCS_0_ ::= modelIdCS ':'
268
		/.$BeginJava
263
		/.$BeginCode
269
					IdentifierCS modelIdCS = (IdentifierCS)$getSym(1);
264
					IdentifierCS modelIdCS = (IdentifierCS)$getSym(1);
270
					ModelDeclCS result = QVTrCSTFactory.eINSTANCE.createModelDeclCS();
265
					ModelDeclCS result = QVTrCSTFactory.eINSTANCE.createModelDeclCS();
271
					result.setModelId(modelIdCS);
266
					result.setModelId(modelIdCS);
272
					setOffsets(result, modelIdCS, getIToken($getToken(2)));
267
					setOffsets(result, modelIdCS, getIToken($getToken(2)));
273
					$setResult(result);
268
					$setResult(result);
274
		  $EndJava
269
		  $EndCode
275
		./
270
		./
276
	modelDeclCS_1_ -> modelDeclCS_0_ '{'
271
	modelDeclCS_1_ -> modelDeclCS_0_ '{'
277
	modelDeclCS_1_ -> modelDeclCS_2_ ','
272
	modelDeclCS_1_ -> modelDeclCS_2_ ','
278
	modelDeclCS_2_ ::= modelDeclCS_1_ metaModelIdCS
273
	modelDeclCS_2_ ::= modelDeclCS_1_ metaModelIdCS
279
		/.$NewCase ./
274
		/.$NewCase ./
280
	modelDeclCS ::= modelDeclCS_0_ metaModelIdCS
275
	modelDeclCS ::= modelDeclCS_0_ metaModelIdCS
281
		/.$BeginJava
276
		/.$BeginCode
282
					IdentifierCS metaModelIdCS = (IdentifierCS)$getSym(2);
277
					IdentifierCS metaModelIdCS = (IdentifierCS)$getSym(2);
283
					ModelDeclCS result = (ModelDeclCS)$getSym(1);
278
					ModelDeclCS result = (ModelDeclCS)$getSym(1);
284
					result.getMetaModelId().add(metaModelIdCS);
279
					result.getMetaModelId().add(metaModelIdCS);
285
					setOffsets(result, result, metaModelIdCS);
280
					setOffsets(result, result, metaModelIdCS);
286
					$setResult(result);
281
					$setResult(result);
287
		  $EndJava
282
		  $EndCode
288
		./
283
		./
289
	modelDeclCS_2_ ::= modelDeclCS_1_ ERROR_TOKEN
284
	modelDeclCS_2_ ::= modelDeclCS_1_ ERROR_TOKEN
290
		/.$NewCase ./
285
		/.$NewCase ./
291
	modelDeclCS ::= modelDeclCS_0_ ERROR_TOKEN
286
	modelDeclCS ::= modelDeclCS_0_ ERROR_TOKEN
292
		/.$BeginJava
287
		/.$BeginCode
293
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_MODELDECL_ELEMENT);
288
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_MODELDECL_ELEMENT);
294
		  $EndJava
289
		  $EndCode
295
		./	
290
		./	
296
	modelDeclCS ::= modelDeclCS_2_ '}'
291
	modelDeclCS ::= modelDeclCS_2_ '}'
297
		/.$BeginJava
292
		/.$BeginCode
298
					ModelDeclCS result = (ModelDeclCS)$getSym(1);
293
					ModelDeclCS result = (ModelDeclCS)$getSym(1);
299
					setOffsets(result, result, getIToken($getToken(2)));
294
					setOffsets(result, result, getIToken($getToken(2)));
300
					$setResult(result);
295
					$setResult(result);
301
		  $EndJava
296
		  $EndCode
302
		./
297
		./
303
	
298
	
304
--<modelId> ::= <identifier>
299
--<modelId> ::= <identifier>
Lines 309-343 Link Here
309
304
310
--<keyDecl> ::= 'key' <classId> '{' <propertyId> (, <propertyId>)* '}' ';'
305
--<keyDecl> ::= 'key' <classId> '{' <propertyId> (, <propertyId>)* '}' ';'
311
	keyDeclCS_0_ ::= key classIdCS '{'
306
	keyDeclCS_0_ ::= key classIdCS '{'
312
		/.$BeginJava
307
		/.$BeginCode
313
					PathNameCS classIdCS = (PathNameCS)$getSym(2);
308
					PathNameCS classIdCS = (PathNameCS)$getSym(2);
314
					KeyDeclCS result = QVTrCSTFactory.eINSTANCE.createKeyDeclCS();
309
					KeyDeclCS result = QVTrCSTFactory.eINSTANCE.createKeyDeclCS();
315
					result.setClassId(classIdCS);
310
					result.setClassId(classIdCS);
316
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
311
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
317
					$setResult(result);
312
					$setResult(result);
318
		  $EndJava
313
		  $EndCode
319
		./
314
		./
320
	keyDeclCS_0_ -> keyDeclCS_1_ ','
315
	keyDeclCS_0_ -> keyDeclCS_1_ ','
321
	keyDeclCS_1_ ::= keyDeclCS_0_ propertyIdCS
316
	keyDeclCS_1_ ::= keyDeclCS_0_ propertyIdCS
322
		/.$BeginJava
317
		/.$BeginCode
323
					IdentifiedCS propertyIdCS = (IdentifiedCS)$getSym(2);
318
					IdentifiedCS propertyIdCS = (IdentifiedCS)$getSym(2);
324
					KeyDeclCS result = (KeyDeclCS)$getSym(1);
319
					KeyDeclCS result = (KeyDeclCS)$getSym(1);
325
					result.getPropertyId().add(propertyIdCS);
320
					result.getPropertyId().add(propertyIdCS);
326
					setOffsets(result, result, propertyIdCS);
321
					setOffsets(result, result, propertyIdCS);
327
					$setResult(result);
322
					$setResult(result);
328
		  $EndJava
323
		  $EndCode
329
		./
324
		./
330
	keyDeclCS_1_ ::= keyDeclCS_0_ ERROR_TOKEN
325
	keyDeclCS_1_ ::= keyDeclCS_0_ ERROR_TOKEN
331
		/.$BeginJava
326
		/.$BeginCode
332
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_KEYDECL_ELEMENT);
327
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_KEYDECL_ELEMENT);
333
		  $EndJava
328
		  $EndCode
334
		./	
329
		./	
335
	keyDeclCS ::= keyDeclCS_1_ '}' ';'
330
	keyDeclCS ::= keyDeclCS_1_ '}' ';'
336
		/.$BeginJava
331
		/.$BeginCode
337
					KeyDeclCS result = (KeyDeclCS)$getSym(1);
332
					KeyDeclCS result = (KeyDeclCS)$getSym(1);
338
					setOffsets(result, result, getIToken($getToken(3)));
333
					setOffsets(result, result, getIToken($getToken(3)));
339
					$setResult(result);
334
					$setResult(result);
340
		  $EndJava
335
		  $EndCode
341
		./
336
		./
342
	
337
	
343
--<classId> ::= <PathNameCS>
338
--<classId> ::= <PathNameCS>
Lines 345-357 Link Here
345
340
346
--<propertyId> ::= <identifier>
341
--<propertyId> ::= <identifier>
347
	propertyIdCS ::= identifierCS
342
	propertyIdCS ::= identifierCS
348
		/.$BeginJava
343
		/.$BeginCode
349
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
344
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
350
					IdentifiedCS result = QVTCSTFactory.eINSTANCE.createIdentifiedCS();
345
					IdentifiedCS result = QVTCSTFactory.eINSTANCE.createIdentifiedCS();
351
					result.setIdentifier(identifierCS);
346
					result.setIdentifier(identifierCS);
352
					setOffsets(result, identifierCS);
347
					setOffsets(result, identifierCS);
353
					$setResult(result);
348
					$setResult(result);
354
		  $EndJava
349
		  $EndCode
355
		./
350
		./
356
351
357
--<relation> ::= ['top'] 'relation' <identifier>
352
--<relation> ::= ['top'] 'relation' <identifier>
Lines 364-535 Link Here
364
--<when> ::= 'when' '{' (<OclExpressionCS> ';')* '}'
359
--<when> ::= 'when' '{' (<OclExpressionCS> ';')* '}'
365
--<where> ::= 'where' '{' (<OclExpressionCS> ';')* '}'
360
--<where> ::= 'where' '{' (<OclExpressionCS> ';')* '}'
366
			relationCS_0_ ::= relation identifierCS
361
			relationCS_0_ ::= relation identifierCS
367
		/.$BeginJava
362
		/.$BeginCode
368
					IdentifierCS identifierCS = (IdentifierCS)$getSym(2);
363
					IdentifierCS identifierCS = (IdentifierCS)$getSym(2);
369
					RelationCS result = QVTrCSTFactory.eINSTANCE.createRelationCS();
364
					RelationCS result = QVTrCSTFactory.eINSTANCE.createRelationCS();
370
					result.setIdentifier(identifierCS);
365
					result.setIdentifier(identifierCS);
371
					setOffsets(result, getIToken($getToken(1)), identifierCS);
366
					setOffsets(result, getIToken($getToken(1)), identifierCS);
372
					$setResult(result);
367
					$setResult(result);
373
		  $EndJava
368
		  $EndCode
374
		./
369
		./
375
	relationCS_1_ -> relationCS_0_
370
	relationCS_1_ -> relationCS_0_
376
	relationCS_1_ ::= top relationCS_0_
371
	relationCS_1_ ::= top relationCS_0_
377
		/.$BeginJava
372
		/.$BeginCode
378
					RelationCS result = (RelationCS)$getSym(2);
373
					RelationCS result = (RelationCS)$getSym(2);
379
					result.setTop(true);
374
					result.setTop(true);
380
					setOffsets(result, getIToken($getToken(1)), result);
375
					setOffsets(result, getIToken($getToken(1)), result);
381
					$setResult(result);
376
					$setResult(result);
382
		  $EndJava
377
		  $EndCode
383
		./
378
		./
384
	relationCS_2_ -> relationCS_1_
379
	relationCS_2_ -> relationCS_1_
385
	relationCS_2_ ::= relationCS_1_ overrides identifierCS
380
	relationCS_2_ ::= relationCS_1_ overrides identifierCS
386
		/.$BeginJava
381
		/.$BeginCode
387
					IdentifierCS identifierCS = (IdentifierCS)$getSym(3);
382
					IdentifierCS identifierCS = (IdentifierCS)$getSym(3);
388
					RelationCS result = (RelationCS)$getSym(1);
383
					RelationCS result = (RelationCS)$getSym(1);
389
					result.setOverrides(identifierCS);
384
					result.setOverrides(identifierCS);
390
					setOffsets(result, result, identifierCS);
385
					setOffsets(result, result, identifierCS);
391
					$setResult(result);
386
					$setResult(result);
392
		  $EndJava
387
		  $EndCode
393
		./
388
		./
394
	relationCS_3_ -> relationCS_2_ '{'
389
	relationCS_3_ -> relationCS_2_ '{'
395
	relationCS_3_ ::= relationCS_3_ varDeclarationCS
390
	relationCS_3_ ::= relationCS_3_ varDeclarationCS
396
		/.$BeginJava
391
		/.$BeginCode
397
					VarDeclarationCS varDeclarationCS = (VarDeclarationCS)$getSym(2);
392
					VarDeclarationCS varDeclarationCS = (VarDeclarationCS)$getSym(2);
398
					RelationCS result = (RelationCS)$getSym(1);
393
					RelationCS result = (RelationCS)$getSym(1);
399
					result.getVarDeclaration().add(varDeclarationCS);
394
					result.getVarDeclaration().add(varDeclarationCS);
400
					setOffsets(result, result, varDeclarationCS);
395
					setOffsets(result, result, varDeclarationCS);
401
					$setResult(result);
396
					$setResult(result);
402
		  $EndJava
397
		  $EndCode
403
		./
398
		./
404
	relationCS_preDomain -> relationCS_3_
399
	relationCS_preDomain -> relationCS_3_
405
	relationCS_preDomain -> relationCS_postDomain
400
	relationCS_preDomain -> relationCS_postDomain
406
	relationCS_postDomain ::= relationCS_preDomain domainCS
401
	relationCS_postDomain ::= relationCS_preDomain domainCS
407
		/.$NewCase ./
402
		/.$NewCase ./
408
	relationCS_postDomain ::= relationCS_preDomain primitiveTypeDomainCS
403
	relationCS_postDomain ::= relationCS_preDomain primitiveTypeDomainCS
409
		/.$BeginJava
404
		/.$BeginCode
410
					AbstractDomainCS domainCS = (AbstractDomainCS)$getSym(2);
405
					AbstractDomainCS domainCS = (AbstractDomainCS)$getSym(2);
411
					RelationCS result = (RelationCS)$getSym(1);
406
					RelationCS result = (RelationCS)$getSym(1);
412
					result.getDomain().add(domainCS);
407
					result.getDomain().add(domainCS);
413
					setOffsets(result, result, domainCS);
408
					setOffsets(result, result, domainCS);
414
					$setResult(result);
409
					$setResult(result);
415
		  $EndJava
410
		  $EndCode
416
		./
411
		./
417
	relationCS_postWhen -> relationCS_postDomain
412
	relationCS_postWhen -> relationCS_postDomain
418
	relationCS_postWhen ::= relationCS_postDomain whenCS
413
	relationCS_postWhen ::= relationCS_postDomain whenCS
419
		/.$BeginJava
414
		/.$BeginCode
420
					RelationCS result = (RelationCS)$getSym(1);
415
					RelationCS result = (RelationCS)$getSym(1);
421
					WhenCS whenCS = (WhenCS)$getSym(2);
416
					WhenCS whenCS = (WhenCS)$getSym(2);
422
					result.setWhen(whenCS);
417
					result.setWhen(whenCS);
423
					setOffsets(result, result, whenCS);
418
					setOffsets(result, result, whenCS);
424
					$setResult(result);
419
					$setResult(result);
425
		  $EndJava
420
		  $EndCode
426
		./
421
		./
427
	relationCS_postWhere -> relationCS_postWhen
422
	relationCS_postWhere -> relationCS_postWhen
428
	relationCS_postWhere ::= relationCS_postWhen whereCS
423
	relationCS_postWhere ::= relationCS_postWhen whereCS
429
		/.$BeginJava
424
		/.$BeginCode
430
					RelationCS result = (RelationCS)$getSym(1);
425
					RelationCS result = (RelationCS)$getSym(1);
431
					WhereCS whereCS = (WhereCS)$getSym(2);
426
					WhereCS whereCS = (WhereCS)$getSym(2);
432
					result.setWhere(whereCS);
427
					result.setWhere(whereCS);
433
					setOffsets(result, result, whereCS);
428
					setOffsets(result, result, whereCS);
434
					$setResult(result);
429
					$setResult(result);
435
		  $EndJava
430
		  $EndCode
436
		./
431
		./
437
	relationCS ::= relationCS_postWhere '}'
432
	relationCS ::= relationCS_postWhere '}'
438
		/.$BeginJava
433
		/.$BeginCode
439
					RelationCS result = (RelationCS)$getSym(1);
434
					RelationCS result = (RelationCS)$getSym(1);
440
					setOffsets(result, result, getIToken($getToken(2)));
435
					setOffsets(result, result, getIToken($getToken(2)));
441
					$setResult(result);
436
					$setResult(result);
442
		  $EndJava
437
		  $EndCode
443
		./
438
		./
444
439
445
	whenCS_0 ::= when '{'
440
	whenCS_0 ::= when '{'
446
		/.$BeginJava
441
		/.$BeginCode
447
					WhenCS result = QVTrCSTFactory.eINSTANCE.createWhenCS();
442
					WhenCS result = QVTrCSTFactory.eINSTANCE.createWhenCS();
448
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2)));
443
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2)));
449
					$setResult(result);
444
					$setResult(result);
450
		  $EndJava
445
		  $EndCode
451
		./
446
		./
452
	whenCS_0 ::= when ERROR_TOKEN
447
	whenCS_0 ::= when ERROR_TOKEN
453
		/.$BeginJava
448
		/.$BeginCode
454
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_WHEN);
449
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_WHEN);
455
		  $EndJava
450
		  $EndCode
456
		./	
451
		./	
457
	whenCS_1 -> whenCS_0
452
	whenCS_1 -> whenCS_0
458
	whenCS_1 ::= whenCS_1 oclExpressionCS ';'
453
	whenCS_1 ::= whenCS_1 oclExpressionCS ';'
459
		/.$BeginJava
454
		/.$BeginCode
460
					WhenCS result = (WhenCS)$getSym(1);
455
					WhenCS result = (WhenCS)$getSym(1);
461
					OCLExpressionCS oclExpressionCS = (OCLExpressionCS)$getSym(2);
456
					OCLExpressionCS oclExpressionCS = (OCLExpressionCS)$getSym(2);
462
					result.getExpr().add(oclExpressionCS);
457
					result.getExpr().add(oclExpressionCS);
463
					setOffsets(result, result, getIToken($getToken(3)));
458
					setOffsets(result, result, getIToken($getToken(3)));
464
					$setResult(result);
459
					$setResult(result);
465
		  $EndJava
460
		  $EndCode
466
		./
461
		./
467
	whenCS ::= whenCS_1 '}'
462
	whenCS ::= whenCS_1 '}'
468
		/.$BeginJava
463
		/.$BeginCode
469
					WhenCS result = (WhenCS)$getSym(1);
464
					WhenCS result = (WhenCS)$getSym(1);
470
					setOffsets(result, result, getIToken($getToken(2)));
465
					setOffsets(result, result, getIToken($getToken(2)));
471
					$setResult(result);
466
					$setResult(result);
472
		  $EndJava
467
		  $EndCode
473
		./
468
		./
474
469
475
470
476
	whereCS_0 ::= where '{'
471
	whereCS_0 ::= where '{'
477
		/.$BeginJava
472
		/.$BeginCode
478
					WhereCS result = QVTrCSTFactory.eINSTANCE.createWhereCS();
473
					WhereCS result = QVTrCSTFactory.eINSTANCE.createWhereCS();
479
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2)));
474
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(2)));
480
					$setResult(result);
475
					$setResult(result);
481
		  $EndJava
476
		  $EndCode
482
		./
477
		./
483
	whereCS_0 ::= where ERROR_TOKEN
478
	whereCS_0 ::= where ERROR_TOKEN
484
		/.$BeginJava
479
		/.$BeginCode
485
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_WHERE);
480
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_WHERE);
486
		  $EndJava
481
		  $EndCode
487
		./	
482
		./	
488
	whereCS_1 -> whereCS_0
483
	whereCS_1 -> whereCS_0
489
	whereCS_1 ::= whereCS_1 oclExpressionCS ';'
484
	whereCS_1 ::= whereCS_1 oclExpressionCS ';'
490
		/.$BeginJava
485
		/.$BeginCode
491
					WhereCS result = (WhereCS)$getSym(1);
486
					WhereCS result = (WhereCS)$getSym(1);
492
					OCLExpressionCS oclExpressionCS = (OCLExpressionCS)$getSym(2);
487
					OCLExpressionCS oclExpressionCS = (OCLExpressionCS)$getSym(2);
493
					result.getExpr().add(oclExpressionCS);
488
					result.getExpr().add(oclExpressionCS);
494
					setOffsets(result, result, getIToken($getToken(3)));
489
					setOffsets(result, result, getIToken($getToken(3)));
495
					$setResult(result);
490
					$setResult(result);
496
		  $EndJava
491
		  $EndCode
497
		./
492
		./
498
	whereCS ::= whereCS_1 '}'
493
	whereCS ::= whereCS_1 '}'
499
		/.$BeginJava
494
		/.$BeginCode
500
					WhereCS result = (WhereCS)$getSym(1);
495
					WhereCS result = (WhereCS)$getSym(1);
501
					setOffsets(result, result, getIToken($getToken(2)));
496
					setOffsets(result, result, getIToken($getToken(2)));
502
					$setResult(result);
497
					$setResult(result);
503
		  $EndJava
498
		  $EndCode
504
		./
499
		./
505
500
506
501
507
--<varDeclaration> ::= <identifier> (, <identifier>)* ':' <TypeCS> ';'
502
--<varDeclaration> ::= <identifier> (, <identifier>)* ':' <TypeCS> ';'
508
	varDeclarationCS_0 ::= identifierCS
503
	varDeclarationCS_0 ::= identifierCS
509
		/.$BeginJava
504
		/.$BeginCode
510
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
505
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
511
					VarDeclarationCS result = QVTrCSTFactory.eINSTANCE.createVarDeclarationCS();
506
					VarDeclarationCS result = QVTrCSTFactory.eINSTANCE.createVarDeclarationCS();
512
					result.getVarDeclarationId().add(identifierCS);
507
					result.getVarDeclarationId().add(identifierCS);
513
					setOffsets(result, identifierCS);
508
					setOffsets(result, identifierCS);
514
					$setResult(result);
509
					$setResult(result);
515
		  $EndJava
510
		  $EndCode
516
		./
511
		./
517
	varDeclarationCS_0 ::= varDeclarationCS_0 ',' identifierCS
512
	varDeclarationCS_0 ::= varDeclarationCS_0 ',' identifierCS
518
		/.$BeginJava
513
		/.$BeginCode
519
					IdentifierCS identifierCS = (IdentifierCS)$getSym(3);
514
					IdentifierCS identifierCS = (IdentifierCS)$getSym(3);
520
					VarDeclarationCS result = (VarDeclarationCS)$getSym(1);
515
					VarDeclarationCS result = (VarDeclarationCS)$getSym(1);
521
					result.getVarDeclarationId().add(identifierCS);
516
					result.getVarDeclarationId().add(identifierCS);
522
					setOffsets(result, result, identifierCS);
517
					setOffsets(result, result, identifierCS);
523
					$setResult(result);
518
					$setResult(result);
524
		  $EndJava
519
		  $EndCode
525
		./		
520
		./		
526
	varDeclarationCS ::= varDeclarationCS_0 ':' typeCS ';'
521
	varDeclarationCS ::= varDeclarationCS_0 ':' typeCS ';'
527
		/.$BeginJava
522
		/.$BeginCode
528
					VarDeclarationCS result = (VarDeclarationCS)$getSym(1);
523
					VarDeclarationCS result = (VarDeclarationCS)$getSym(1);
529
					result.setType((TypeCS)$getSym(3));
524
					result.setType((TypeCS)$getSym(3));
530
					setOffsets(result, result, getIToken($getToken(4)));
525
					setOffsets(result, result, getIToken($getToken(4)));
531
					$setResult(result);
526
					$setResult(result);
532
		  $EndJava
527
		  $EndCode
533
		./
528
		./
534
	
529
	
535
--<domain> ::= [<checkEnforceQualifier>] 'domain' <modelId> <template>
530
--<domain> ::= [<checkEnforceQualifier>] 'domain' <modelId> <template>
Lines 538-544 Link Here
538
--             ';'
533
--             ';'
539
--<checkEnforceQualifier> ::= 'checkonly' | 'enforce'
534
--<checkEnforceQualifier> ::= 'checkonly' | 'enforce'
540
	domainCS_0_ ::= domain modelIdCS templateCS
535
	domainCS_0_ ::= domain modelIdCS templateCS
541
		/.$BeginJava
536
		/.$BeginCode
542
					IdentifierCS identifierCS = (IdentifierCS)$getSym(2);
537
					IdentifierCS identifierCS = (IdentifierCS)$getSym(2);
543
					TemplateCS templateCS = (TemplateCS)$getSym(3);
538
					TemplateCS templateCS = (TemplateCS)$getSym(3);
544
					DomainCS result = QVTrCSTFactory.eINSTANCE.createDomainCS();
539
					DomainCS result = QVTrCSTFactory.eINSTANCE.createDomainCS();
Lines 546-617 Link Here
546
					result.setTemplate(templateCS);
541
					result.setTemplate(templateCS);
547
					setOffsets(result, getIToken($getToken(1)), templateCS);
542
					setOffsets(result, getIToken($getToken(1)), templateCS);
548
					$setResult(result);
543
					$setResult(result);
549
		  $EndJava
544
		  $EndCode
550
		./
545
		./
551
	domainCS_1_ -> domainCS_0_
546
	domainCS_1_ -> domainCS_0_
552
	domainCS_1_ ::= checkonly domainCS_0_
547
	domainCS_1_ ::= checkonly domainCS_0_
553
		/.$BeginJava
548
		/.$BeginCode
554
					DomainCS result = (DomainCS)$getSym(2);
549
					DomainCS result = (DomainCS)$getSym(2);
555
					result.setCheckonly(true);
550
					result.setCheckonly(true);
556
					setOffsets(result, getIToken($getToken(1)), result);
551
					setOffsets(result, getIToken($getToken(1)), result);
557
					$setResult(result);
552
					$setResult(result);
558
		  $EndJava
553
		  $EndCode
559
		./
554
		./
560
	domainCS_1_ ::= enforce domainCS_0_
555
	domainCS_1_ ::= enforce domainCS_0_
561
		/.$BeginJava
556
		/.$BeginCode
562
					DomainCS result = (DomainCS)$getSym(2);
557
					DomainCS result = (DomainCS)$getSym(2);
563
					result.setEnforce(true);
558
					result.setEnforce(true);
564
					setOffsets(result, getIToken($getToken(1)), result);
559
					setOffsets(result, getIToken($getToken(1)), result);
565
					$setResult(result);
560
					$setResult(result);
566
		  $EndJava
561
		  $EndCode
567
		./
562
		./
568
	domainCS_1_ ::= replace domainCS_0_
563
	domainCS_1_ ::= replace domainCS_0_
569
		/.$BeginJava
564
		/.$BeginCode
570
					DomainCS result = (DomainCS)$getSym(2);
565
					DomainCS result = (DomainCS)$getSym(2);
571
					result.setReplace(true);
566
					result.setReplace(true);
572
					setOffsets(result, getIToken($getToken(1)), result);
567
					setOffsets(result, getIToken($getToken(1)), result);
573
					$setResult(result);
568
					$setResult(result);
574
		  $EndJava
569
		  $EndCode
575
		./
570
		./
576
	domainCS_postImplementedby -> domainCS_1_
571
	domainCS_postImplementedby -> domainCS_1_
577
	domainCS_postImplementedby ::= domainCS_1_ implementedby operationCallExpCS
572
	domainCS_postImplementedby ::= domainCS_1_ implementedby operationCallExpCS
578
		/.$BeginJava
573
		/.$BeginCode
579
					DomainCS result = (DomainCS)$getSym(1);
574
					DomainCS result = (DomainCS)$getSym(1);
580
					OperationCallExpCS operationCallExpCS =(OperationCallExpCS)$getSym(3);
575
					OperationCallExpCS operationCallExpCS =(OperationCallExpCS)$getSym(3);
581
					result.setImplementedBy(operationCallExpCS);
576
					result.setImplementedBy(operationCallExpCS);
582
					setOffsets(result, result, operationCallExpCS);
577
					setOffsets(result, result, operationCallExpCS);
583
					$setResult(result);
578
					$setResult(result);
584
		  $EndJava
579
		  $EndCode
585
		./
580
		./
586
	domainCS_preDefaultValue -> domainCS_postImplementedby default_values '{'
581
	domainCS_preDefaultValue -> domainCS_postImplementedby default_values '{'
587
	domainCS_preDefaultValue ::= domainCS_preDefaultValue defaultValueCS
582
	domainCS_preDefaultValue ::= domainCS_preDefaultValue defaultValueCS
588
		/.$BeginJava
583
		/.$BeginCode
589
					DomainCS result = (DomainCS)$getSym(1);
584
					DomainCS result = (DomainCS)$getSym(1);
590
					DefaultValueCS defaultValueCS = (DefaultValueCS)$getSym(2);
585
					DefaultValueCS defaultValueCS = (DefaultValueCS)$getSym(2);
591
					result.getDefaultValue().add(defaultValueCS);
586
					result.getDefaultValue().add(defaultValueCS);
592
					setOffsets(result, result, defaultValueCS);
587
					setOffsets(result, result, defaultValueCS);
593
					$setResult(result);
588
					$setResult(result);
594
		  $EndJava
589
		  $EndCode
595
		./
590
		./
596
	domainCS_postDefaultValues -> domainCS_postImplementedby
591
	domainCS_postDefaultValues -> domainCS_postImplementedby
597
	domainCS_postDefaultValues ::= domainCS_preDefaultValue '}'
592
	domainCS_postDefaultValues ::= domainCS_preDefaultValue '}'
598
		/.$BeginJava
593
		/.$BeginCode
599
					DomainCS result = (DomainCS)$getSym(1);
594
					DomainCS result = (DomainCS)$getSym(1);
600
					setOffsets(result, result, getIToken($getToken(2)));
595
					setOffsets(result, result, getIToken($getToken(2)));
601
					$setResult(result);
596
					$setResult(result);
602
		  $EndJava
597
		  $EndCode
603
		./
598
		./
604
	domainCS ::= domainCS_postDefaultValues ';'
599
	domainCS ::= domainCS_postDefaultValues ';'
605
		/.$BeginJava
600
		/.$BeginCode
606
					DomainCS result = (DomainCS)$getSym(1);
601
					DomainCS result = (DomainCS)$getSym(1);
607
					setOffsets(result, result, getIToken($getToken(2)));
602
					setOffsets(result, result, getIToken($getToken(2)));
608
					$setResult(result);
603
					$setResult(result);
609
		  $EndJava
604
		  $EndCode
610
		./
605
		./
611
		
606
		
612
--<primitiveTypeDomain> ::= 'primitive' 'domain' <identifier> ':' <TypeCS> ';'
607
--<primitiveTypeDomain> ::= 'primitive' 'domain' <identifier> ':' <TypeCS> ';'
613
	primitiveTypeDomainCS ::= primitive domain identifierCS ':' typeCS ';'
608
	primitiveTypeDomainCS ::= primitive domain identifierCS ':' typeCS ';'
614
		/.$BeginJava
609
		/.$BeginCode
615
					IdentifierCS identifierCS = (IdentifierCS)$getSym(3);
610
					IdentifierCS identifierCS = (IdentifierCS)$getSym(3);
616
					TypeCS typeCS = (TypeCS)$getSym(5);
611
					TypeCS typeCS = (TypeCS)$getSym(5);
617
					PrimitiveTypeDomainCS result = QVTrCSTFactory.eINSTANCE.createPrimitiveTypeDomainCS();
612
					PrimitiveTypeDomainCS result = QVTrCSTFactory.eINSTANCE.createPrimitiveTypeDomainCS();
Lines 619-625 Link Here
619
					result.setType(typeCS);
614
					result.setType(typeCS);
620
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(6)));
615
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(6)));
621
					$setResult(result);
616
					$setResult(result);
622
		  $EndJava
617
		  $EndCode
623
		./
618
		./
624
619
625
620
Lines 629-641 Link Here
629
	templateCS_0_ -> collectionTemplateCS
624
	templateCS_0_ -> collectionTemplateCS
630
	templateCS -> templateCS_0_
625
	templateCS -> templateCS_0_
631
	templateCS ::= templateCS_0_ '{' oclExpressionCS '}'
626
	templateCS ::= templateCS_0_ '{' oclExpressionCS '}'
632
		/.$BeginJava
627
		/.$BeginCode
633
					TemplateCS result = (TemplateCS)$getSym(1);
628
					TemplateCS result = (TemplateCS)$getSym(1);
634
					OCLExpressionCS oclExpressionCS = (OCLExpressionCS)$getSym(3);
629
					OCLExpressionCS oclExpressionCS = (OCLExpressionCS)$getSym(3);
635
					result.setGuardExpression(oclExpressionCS);
630
					result.setGuardExpression(oclExpressionCS);
636
					setOffsets(result, result, getIToken($getToken(4)));
631
					setOffsets(result, result, getIToken($getToken(4)));
637
					$setResult(result);
632
					$setResult(result);
638
		  $EndJava
633
		  $EndCode
639
		./
634
		./
640
	
635
	
641
--<objectTemplate> ::= [<identifier>] ':' <pathNameCS> '{' [<propertyTemplateList>] '}'
636
--<objectTemplate> ::= [<identifier>] ':' <pathNameCS> '{' [<propertyTemplateList>] '}'
Lines 645-651 Link Here
645
	objectTemplateCS_prePropertyTemplates ::= relationIdentifier ':' pathNameCS '{'
640
	objectTemplateCS_prePropertyTemplates ::= relationIdentifier ':' pathNameCS '{'
646
		/.$NewCase./
641
		/.$NewCase./
647
	objectTemplateCS_prePropertyTemplates ::= self ':' pathNameCS '{'
642
	objectTemplateCS_prePropertyTemplates ::= self ':' pathNameCS '{'
648
		/.$BeginJava
643
		/.$BeginCode
649
					IdentifierCS identifierCS = createIdentifierCS($getToken(1));
644
					IdentifierCS identifierCS = createIdentifierCS($getToken(1));
650
					TypeCS typeCS = (TypeCS)$getSym(3);
645
					TypeCS typeCS = (TypeCS)$getSym(3);
651
					ObjectTemplateCS result = QVTrCSTFactory.eINSTANCE.createObjectTemplateCS();
646
					ObjectTemplateCS result = QVTrCSTFactory.eINSTANCE.createObjectTemplateCS();
Lines 653-693 Link Here
653
					result.setIdentifier(identifierCS);
648
					result.setIdentifier(identifierCS);
654
					setOffsets(result, identifierCS, getIToken($getToken(4)));
649
					setOffsets(result, identifierCS, getIToken($getToken(4)));
655
					$setResult(result);
650
					$setResult(result);
656
		  $EndJava
651
		  $EndCode
657
		./	
652
		./	
658
	objectTemplateCS_prePropertyTemplates ::= ':' pathNameCS '{' 
653
	objectTemplateCS_prePropertyTemplates ::= ':' pathNameCS '{' 
659
		/.$BeginJava
654
		/.$BeginCode
660
					ObjectTemplateCS result = QVTrCSTFactory.eINSTANCE.createObjectTemplateCS();
655
					ObjectTemplateCS result = QVTrCSTFactory.eINSTANCE.createObjectTemplateCS();
661
					result.setIdentifier(createUniqueIdentifierCS($getToken(1)));
656
					result.setIdentifier(createUniqueIdentifierCS($getToken(1)));
662
					result.setType((TypeCS)$getSym(2));
657
					result.setType((TypeCS)$getSym(2));
663
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
658
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
664
					$setResult(result);
659
					$setResult(result);
665
		  $EndJava
660
		  $EndCode
666
		./	
661
		./	
667
	objectTemplateCS_prePropertyTemplate -> objectTemplateCS_prePropertyTemplates
662
	objectTemplateCS_prePropertyTemplate -> objectTemplateCS_prePropertyTemplates
668
	objectTemplateCS_prePropertyTemplate -> objectTemplateCS_postPropertyTemplate ','
663
	objectTemplateCS_prePropertyTemplate -> objectTemplateCS_postPropertyTemplate ','
669
	objectTemplateCS_postPropertyTemplate ::= objectTemplateCS_prePropertyTemplate propertyTemplateCS 
664
	objectTemplateCS_postPropertyTemplate ::= objectTemplateCS_prePropertyTemplate propertyTemplateCS 
670
		/.$BeginJava
665
		/.$BeginCode
671
					ObjectTemplateCS result = (ObjectTemplateCS)$getSym(1);
666
					ObjectTemplateCS result = (ObjectTemplateCS)$getSym(1);
672
					PropertyTemplateCS propertyTemplateCS = (PropertyTemplateCS)$getSym(2);
667
					PropertyTemplateCS propertyTemplateCS = (PropertyTemplateCS)$getSym(2);
673
					result.getPropertyTemplate().add(propertyTemplateCS);
668
					result.getPropertyTemplate().add(propertyTemplateCS);
674
					setOffsets(result, result, propertyTemplateCS);
669
					setOffsets(result, result, propertyTemplateCS);
675
					$setResult(result);
670
					$setResult(result);
676
		  $EndJava
671
		  $EndCode
677
		./	
672
		./	
678
	objectTemplateCS ::= objectTemplateCS_prePropertyTemplates '}' 
673
	objectTemplateCS ::= objectTemplateCS_prePropertyTemplates '}' 
679
		/.$NewCase./
674
		/.$NewCase./
680
	objectTemplateCS ::= objectTemplateCS_postPropertyTemplate '}' 
675
	objectTemplateCS ::= objectTemplateCS_postPropertyTemplate '}' 
681
		/.$BeginJava
676
		/.$BeginCode
682
					ObjectTemplateCS result = (ObjectTemplateCS)$getSym(1);
677
					ObjectTemplateCS result = (ObjectTemplateCS)$getSym(1);
683
					setOffsets(result, result, getIToken($getToken(2)));
678
					setOffsets(result, result, getIToken($getToken(2)));
684
					$setResult(result);
679
					$setResult(result);
685
		  $EndJava
680
		  $EndCode
686
		./
681
		./
687
682
688
--<propertyTemplate> ::= <identifier> '=' <OclExpressionCS>
683
--<propertyTemplate> ::= <identifier> '=' <OclExpressionCS>
689
	propertyTemplateCS ::= propertyIdCS '=' oclExpressionCS
684
	propertyTemplateCS ::= propertyIdCS '=' oclExpressionCS
690
		/.$BeginJava
685
		/.$BeginCode
691
					IdentifiedCS propertyIdCS = (IdentifiedCS)$getSym(1);
686
					IdentifiedCS propertyIdCS = (IdentifiedCS)$getSym(1);
692
					PropertyTemplateCS result = QVTrCSTFactory.eINSTANCE.createPropertyTemplateCS();
687
					PropertyTemplateCS result = QVTrCSTFactory.eINSTANCE.createPropertyTemplateCS();
693
					OCLExpressionCS oclExpressionCS = (OCLExpressionCS)$getSym(3);
688
					OCLExpressionCS oclExpressionCS = (OCLExpressionCS)$getSym(3);
Lines 695-725 Link Here
695
					result.setOclExpression(oclExpressionCS);
690
					result.setOclExpression(oclExpressionCS);
696
					setOffsets(result, propertyIdCS, oclExpressionCS);
691
					setOffsets(result, propertyIdCS, oclExpressionCS);
697
					$setResult(result);
692
					$setResult(result);
698
		  $EndJava
693
		  $EndCode
699
		./
694
		./
700
	
695
	
701
--<collectionTemplate> ::= [<identifier>] ':' <CollectionTypeIdentifierCS> '(' <TypeCS> ')'
696
--<collectionTemplate> ::= [<identifier>] ':' <CollectionTypeIdentifierCS> '(' <TypeCS> ')'
702
--                         '{' [<memberSelection>] '}'
697
--                         '{' [<memberSelection>] '}'
703
--<memberSelection> ::= (<identifier> | <template> | '_')
698
--<memberSelection> ::= (<identifier> | <template> | '_')
(-)(‘,Â’ (<identifier> | <template> | '_'))* (-34 / +34 lines)
Lines 727-788 Link Here
727
					result.setIdentifier(identifierCS);
722
					result.setIdentifier(identifierCS);
728
					setOffsets(result, identifierCS, collectionTypeCS);
723
					setOffsets(result, identifierCS, collectionTypeCS);
729
					$setResult(result);
724
					$setResult(result);
730
		  $EndJava
725
		  $EndCode
731
		./	
726
		./	
732
	collectionTemplateCS_preMemberSelections -> collectionTemplateCS_1_ '{'
727
	collectionTemplateCS_preMemberSelections -> collectionTemplateCS_1_ '{'
733
	collectionTemplateCS_preMemberSelection -> collectionTemplateCS_preMemberSelections
728
	collectionTemplateCS_preMemberSelection -> collectionTemplateCS_preMemberSelections
734
	collectionTemplateCS_preMemberSelection -> collectionTemplateCS_postMemberSelection ','
729
	collectionTemplateCS_preMemberSelection -> collectionTemplateCS_postMemberSelection ','
735
	collectionTemplateCS_postMemberSelection ::= collectionTemplateCS_preMemberSelection memberSelectorCS
730
	collectionTemplateCS_postMemberSelection ::= collectionTemplateCS_preMemberSelection memberSelectorCS
736
		/.$BeginJava
731
		/.$BeginCode
737
					IdentifiedCS memberSelectorCS = (IdentifiedCS)$getSym(2);
732
					IdentifiedCS memberSelectorCS = (IdentifiedCS)$getSym(2);
738
					CollectionTemplateCS result = (CollectionTemplateCS)$getSym(1);
733
					CollectionTemplateCS result = (CollectionTemplateCS)$getSym(1);
739
					result.getMemberIdentifier().add(memberSelectorCS);
734
					result.getMemberIdentifier().add(memberSelectorCS);
740
					setOffsets(result, result, memberSelectorCS);
735
					setOffsets(result, result, memberSelectorCS);
741
					$setResult(result);
736
					$setResult(result);
742
		  $EndJava
737
		  $EndCode
743
		./	
738
		./	
744
	collectionTemplateCS ::= collectionTemplateCS_postMemberSelection PLUS_PLUS identifierCS '}'
739
	collectionTemplateCS ::= collectionTemplateCS_postMemberSelection PLUS_PLUS identifierCS '}'
745
		/.$BeginJava
740
		/.$BeginCode
746
					IdentifierCS restIdentifier = (IdentifierCS)$getSym(3);
741
					IdentifierCS restIdentifier = (IdentifierCS)$getSym(3);
747
					CollectionTemplateCS result = (CollectionTemplateCS)$getSym(1);
742
					CollectionTemplateCS result = (CollectionTemplateCS)$getSym(1);
748
					result.setRestIdentifier(restIdentifier);
743
					result.setRestIdentifier(restIdentifier);
749
					setOffsets(result, result, getIToken($getToken(4)));
744
					setOffsets(result, result, getIToken($getToken(4)));
750
					$setResult(result);
745
					$setResult(result);
751
		  $EndJava
746
		  $EndCode
752
		./
747
		./
753
	collectionTemplateCS ::= collectionTemplateCS_postMemberSelection ERROR_TOKEN '}'
748
	collectionTemplateCS ::= collectionTemplateCS_postMemberSelection ERROR_TOKEN '}'
754
		/.$BeginJava
749
		/.$BeginCode
755
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_REST);
750
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_REST);
756
					IdentifierCS restIdentifier = createUniqueIdentifierCS($getToken(2));
751
					IdentifierCS restIdentifier = createUniqueIdentifierCS($getToken(2));
757
					CollectionTemplateCS result = (CollectionTemplateCS)$getSym(1);
752
					CollectionTemplateCS result = (CollectionTemplateCS)$getSym(1);
758
					result.setRestIdentifier(restIdentifier);
753
					result.setRestIdentifier(restIdentifier);
759
					setOffsets(result, result, getIToken($getToken(3)));
754
					setOffsets(result, result, getIToken($getToken(3)));
760
					$setResult(result);
755
					$setResult(result);
761
		  $EndJava
756
		  $EndCode
762
		./
757
		./
763
	collectionTemplateCS ::= collectionTemplateCS_preMemberSelections '}'
758
	collectionTemplateCS ::= collectionTemplateCS_preMemberSelections '}'
764
		/.$BeginJava
759
		/.$BeginCode
765
					CollectionTemplateCS result = (CollectionTemplateCS)$getSym(1);
760
					CollectionTemplateCS result = (CollectionTemplateCS)$getSym(1);
766
					setOffsets(result, result, getIToken($getToken(2)));
761
					setOffsets(result, result, getIToken($getToken(2)));
767
					$setResult(result);
762
					$setResult(result);
768
		  $EndJava
763
		  $EndCode
769
		./
764
		./
770
		
765
		
771
--<memberSelector> ::= (<identifier> | <template> | '_')
766
--<memberSelector> ::= (<identifier> | <template> | '_')
772
	memberSelectorCS ::= identifierCS
767
	memberSelectorCS ::= identifierCS
773
		/.$BeginJava
768
		/.$BeginCode
774
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
769
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
775
					IdentifiedCS result = QVTCSTFactory.eINSTANCE.createIdentifiedCS();
770
					IdentifiedCS result = QVTCSTFactory.eINSTANCE.createIdentifiedCS();
776
					result.setIdentifier(identifierCS);
771
					result.setIdentifier(identifierCS);
777
					setOffsets(result, identifierCS);
772
					setOffsets(result, identifierCS);
778
					$setResult(result);
773
					$setResult(result);
779
		  $EndJava
774
		  $EndCode
780
		./	
775
		./	
781
	memberSelectorCS -> templateCS
776
	memberSelectorCS -> templateCS
782
	
777
	
783
--<assignmentExp> ::= <identifier> '=' <OclExpressionCS> ';'
778
--<assignmentExp> ::= <identifier> '=' <OclExpressionCS> ';'
784
	defaultValueCS ::= identifierCS '=' oclExpressionCS ';'
779
	defaultValueCS ::= identifierCS '=' oclExpressionCS ';'
785
		/.$BeginJava
780
		/.$BeginCode
786
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
781
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
787
					OCLExpressionCS oclExpressionCS = (OCLExpressionCS)$getSym(3);
782
					OCLExpressionCS oclExpressionCS = (OCLExpressionCS)$getSym(3);
788
					DefaultValueCS result = QVTrCSTFactory.eINSTANCE.createDefaultValueCS();
783
					DefaultValueCS result = QVTrCSTFactory.eINSTANCE.createDefaultValueCS();
Lines 790-796 Link Here
790
					result.setInitialiser(oclExpressionCS);
785
					result.setInitialiser(oclExpressionCS);
791
					setOffsets(result, identifierCS, getIToken($getToken(4)));
786
					setOffsets(result, identifierCS, getIToken($getToken(4)));
792
					$setResult(result);
787
					$setResult(result);
793
		  $EndJava
788
		  $EndCode
794
		./	
789
		./	
795
		
790
		
796
--<query> ::= 'query' <PathNameCS> 
791
--<query> ::= 'query' <PathNameCS> 
Lines 798-848 Link Here
798
--      	  ':' <TypeCS>
793
--      	  ':' <TypeCS>
799
--            (';' | '{' <OclExpressionCS> '}')
794
--            (';' | '{' <OclExpressionCS> '}')
800
	queryCS_preParamDeclaration ::= query pathNameCS '('
795
	queryCS_preParamDeclaration ::= query pathNameCS '('
801
		/.$BeginJava
796
		/.$BeginCode
802
					QueryCS result = QVTrCSTFactory.eINSTANCE.createQueryCS();
797
					QueryCS result = QVTrCSTFactory.eINSTANCE.createQueryCS();
803
					result.setPathName((PathNameCS)$getSym(2));
798
					result.setPathName((PathNameCS)$getSym(2));
804
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
799
					setOffsets(result, getIToken($getToken(1)), getIToken($getToken(3)));
805
					$setResult(result);
800
					$setResult(result);
806
		  $EndJava
801
		  $EndCode
807
		./
802
		./
808
	queryCS_preParamDeclaration -> queryCS_postParamDeclaration ','
803
	queryCS_preParamDeclaration -> queryCS_postParamDeclaration ','
809
	queryCS_postParamDeclaration ::= queryCS_preParamDeclaration paramDeclarationCS
804
	queryCS_postParamDeclaration ::= queryCS_preParamDeclaration paramDeclarationCS
810
		/.$BeginJava
805
		/.$BeginCode
811
					ParamDeclarationCS paramDeclarationCS = (ParamDeclarationCS)$getSym(2);
806
					ParamDeclarationCS paramDeclarationCS = (ParamDeclarationCS)$getSym(2);
812
					QueryCS result = (QueryCS)$getSym(1);
807
					QueryCS result = (QueryCS)$getSym(1);
813
					result.getInputParamDeclaration().add(paramDeclarationCS);
808
					result.getInputParamDeclaration().add(paramDeclarationCS);
814
					setOffsets(result, result, paramDeclarationCS);
809
					setOffsets(result, result, paramDeclarationCS);
815
					$setResult(result);
810
					$setResult(result);
816
		  $EndJava
811
		  $EndCode
817
		./
812
		./
818
	queryCS_postType ::= queryCS_postParamDeclaration ')' ':' typeCS
813
	queryCS_postType ::= queryCS_postParamDeclaration ')' ':' typeCS
819
		/.$BeginJava
814
		/.$BeginCode
820
					TypeCS typeCS = (TypeCS)$getSym(4);
815
					TypeCS typeCS = (TypeCS)$getSym(4);
821
					QueryCS result = (QueryCS)$getSym(1);
816
					QueryCS result = (QueryCS)$getSym(1);
822
					result.setType(typeCS);
817
					result.setType(typeCS);
823
					setOffsets(result, result, typeCS);
818
					setOffsets(result, result, typeCS);
824
					$setResult(result);
819
					$setResult(result);
825
		  $EndJava
820
		  $EndCode
826
		./
821
		./
827
	queryCS ::= queryCS_postType ';'
822
	queryCS ::= queryCS_postType ';'
828
		/.$BeginJava
823
		/.$BeginCode
829
					QueryCS result = (QueryCS)$getSym(1);
824
					QueryCS result = (QueryCS)$getSym(1);
830
					setOffsets(result, result, getIToken($getToken(3)));
825
					setOffsets(result, result, getIToken($getToken(3)));
831
					$setResult(result);
826
					$setResult(result);
832
		  $EndJava
827
		  $EndCode
833
		./
828
		./
834
	queryCS ::= queryCS_postType '{' oclExpressionCS '}'
829
	queryCS ::= queryCS_postType '{' oclExpressionCS '}'
835
		/.$BeginJava
830
		/.$BeginCode
836
					QueryCS result = (QueryCS)$getSym(1);
831
					QueryCS result = (QueryCS)$getSym(1);
837
					result.setOclExpression((OCLExpressionCS)$getSym(3));
832
					result.setOclExpression((OCLExpressionCS)$getSym(3));
838
					setOffsets(result, result, getIToken($getToken(4)));
833
					setOffsets(result, result, getIToken($getToken(4)));
839
					$setResult(result);
834
					$setResult(result);
840
		  $EndJava
835
		  $EndCode
841
		./
836
		./
842
	
837
	
843
--<paramDeclaration> ::= <identifier> ':' <TypeCS>	
838
--<paramDeclaration> ::= <identifier> ':' <TypeCS>	
844
	paramDeclarationCS ::= identifierCS ':' typeCS
839
	paramDeclarationCS ::= identifierCS ':' typeCS
845
		/.$BeginJava
840
		/.$BeginCode
846
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
841
					IdentifierCS identifierCS = (IdentifierCS)$getSym(1);
847
					TypeCS typeCS = (TypeCS)$getSym(3);
842
					TypeCS typeCS = (TypeCS)$getSym(3);
848
					ParamDeclarationCS result = QVTrCSTFactory.eINSTANCE.createParamDeclarationCS();
843
					ParamDeclarationCS result = QVTrCSTFactory.eINSTANCE.createParamDeclarationCS();
Lines 850-861 Link Here
850
					result.setType(typeCS);
845
					result.setType(typeCS);
851
					setOffsets(result, identifierCS, typeCS);
846
					setOffsets(result, identifierCS, typeCS);
852
					$setResult(result);
847
					$setResult(result);
853
		  $EndJava
848
		  $EndCode
854
		./
849
		./
855
	paramDeclarationCS ::= identifierCS ERROR_TOKEN
850
	paramDeclarationCS ::= identifierCS ERROR_TOKEN
856
		/.$BeginJava
851
		/.$BeginCode
857
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_PARAM_DECLARATION);
852
					reportErrorTokenMessage($getToken(2), QVTrParserErrors.INCOMPLETE_PARAM_DECLARATION);
858
		  $EndJava
853
		  $EndCode
859
		./	
854
		./	
860
		
855
		
861
--<OclExpressionCS> ::= <PropertyCallExpCS> 
856
--<OclExpressionCS> ::= <PropertyCallExpCS> 
Lines 892-914 Link Here
892
	relationIdentifier -> pre
887
	relationIdentifier -> pre
893
	
888
	
894
	pathNameCS ::= relationIdentifier
889
	pathNameCS ::= relationIdentifier
895
		/.$BeginJava
890
		/.$BeginCode
896
					PathNameCS result = createPathNameCS();
891
					PathNameCS result = createPathNameCS();
897
					result.getSequenceOfNames().add(getTokenText($getToken(1)));
892
					result.getSequenceOfNames().add(getTokenText($getToken(1)));
898
					setOffsets(result, getIToken($getToken(1)));
893
					setOffsets(result, getIToken($getToken(1)));
899
					$setResult(result);
894
					$setResult(result);
900
		  $EndJava
895
		  $EndCode
901
		./
896
		./
902
897
903
	simpleNameCS ::= relationIdentifier
898
	simpleNameCS ::= relationIdentifier
904
		/.$BeginJava
899
		/.$BeginCode
905
					SimpleNameCS result = createSimpleNameCS(
900
					SimpleNameCS result = createSimpleNameCS(
906
								SimpleTypeEnum.IDENTIFIER_LITERAL,
901
								SimpleTypeEnum.IDENTIFIER_LITERAL,
907
								getTokenText($getToken(1))
902
								getTokenText($getToken(1))
908
							);
903
							);
909
					setOffsets(result, getIToken($getToken(1)));
904
					setOffsets(result, getIToken($getToken(1)));
910
					$setResult(result);
905
					$setResult(result);
911
		  $EndJava
906
		  $EndCode
912
		./
907
		./
913
	
908
	
914
	identifierCS ::= IDENTIFIER
909
	identifierCS ::= IDENTIFIER
Lines 916-925 Link Here
916
	identifierCS ::= relationIdentifier
911
	identifierCS ::= relationIdentifier
917
		/.$NewCase ./
912
		/.$NewCase ./
918
	identifierCS ::= self
913
	identifierCS ::= self
919
		/.$BeginJava
914
		/.$BeginCode
920
					IdentifierCS result = createIdentifierCS($getToken(1));
915
					IdentifierCS result = createIdentifierCS($getToken(1));
921
					$setResult(result);
916
					$setResult(result);
922
		  $EndJava
917
		  $EndCode
923
		./
918
		./
924
$End
919
%End
925
	
920
	
(-)src/org/eclipse/qvt/declarative/parser/qvtrelation/AbstractQVTrAnalyzer.java (-6 / +4 lines)
Lines 17-23 Link Here
17
import java.util.ArrayList;
17
import java.util.ArrayList;
18
import java.util.List;
18
import java.util.List;
19
19
20
import lpg.lpgjavaruntime.Monitor;
20
import lpg.runtime.Monitor;
21
21
22
import org.eclipse.emf.common.util.EList;
22
import org.eclipse.emf.common.util.EList;
23
import org.eclipse.emf.common.util.TreeIterator;
23
import org.eclipse.emf.common.util.TreeIterator;
Lines 486-497 Link Here
486
		}
486
		}
487
		try {
487
		try {
488
			Reader fileReader = new FileReader(file);
488
			Reader fileReader = new FileReader(file);
489
			QVTrLexer lexer = new QVTrLexer(env.getFileEnvironment());
489
			QVTrLexer lexer = new QVTrLexer(env.getFileEnvironment(), fileReader, file.toString());			
490
			QVTrParser parser = new QVTrParser(lexer);
490
			QVTrParser parser = new QVTrParser(lexer);
491
			lexer.setFileName(file.toString());
491
			lexer.lexer(parser.getIPrsStream());
492
			lexer.initialize(fileReader); 
492
			CSTNode cstNode = parser.parser();
493
			lexer.lexToTokens(parser);
494
			CSTNode cstNode = parser.parseTokensToCST();
495
			if (cstNode == null)
493
			if (cstNode == null)
496
				return null;
494
				return null;
497
			List<TransformationCS> importedTransformationCS = ((TopLevelCS) cstNode).getTransformation();
495
			List<TransformationCS> importedTransformationCS = ((TopLevelCS) cstNode).getTransformation();
(-)src/org/eclipse/qvt/declarative/parser/qvtrelation/QVTrAnalyzer.java (-3 / +6 lines)
Lines 10-16 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.qvt.declarative.parser.qvtrelation;
11
package org.eclipse.qvt.declarative.parser.qvtrelation;
12
12
13
import lpg.lpgjavaruntime.Monitor;
13
import java.io.IOException;
14
import java.io.Reader;
15
16
import lpg.runtime.Monitor;
14
17
15
import org.eclipse.qvt.declarative.parser.environment.ICSTFileAnalyzer;
18
import org.eclipse.qvt.declarative.parser.environment.ICSTFileAnalyzer;
16
import org.eclipse.qvt.declarative.parser.qvtrelation.environment.QVTrFileEnvironment;
19
import org.eclipse.qvt.declarative.parser.qvtrelation.environment.QVTrFileEnvironment;
Lines 18-25 Link Here
18
21
19
public class QVTrAnalyzer extends AbstractQVTrAnalyzer implements ICSTFileAnalyzer<QVTrTopLevelEnvironment>
22
public class QVTrAnalyzer extends AbstractQVTrAnalyzer implements ICSTFileAnalyzer<QVTrTopLevelEnvironment>
20
{
23
{
21
	public QVTrAnalyzer(QVTrFileEnvironment environment, Monitor monitor) {
24
	public QVTrAnalyzer(QVTrFileEnvironment environment, Monitor monitor, Reader reader, String fileName) throws IOException {
22
		super(new QVTrParser(new QVTrLexer(environment)), monitor);
25
		super(new QVTrParser(new QVTrLexer(environment, reader, fileName)), monitor);
23
	}
26
	}
24
27
25
	public boolean analyze(QVTrTopLevelEnvironment environment) {
28
	public boolean analyze(QVTrTopLevelEnvironment environment) {
(-)src/org/eclipse/qvt/declarative/parser/qvtrelation/environment/QVTrFileEnvironment.java (-3 / +7 lines)
Lines 10-16 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.qvt.declarative.parser.qvtrelation.environment;
11
package org.eclipse.qvt.declarative.parser.qvtrelation.environment;
12
12
13
import lpg.lpgjavaruntime.Monitor;
13
import java.io.IOException;
14
import java.io.Reader;
15
16
import lpg.runtime.Monitor;
14
17
15
import org.eclipse.emf.ecore.resource.ResourceSet;
18
import org.eclipse.emf.ecore.resource.ResourceSet;
16
import org.eclipse.emf.ecore.xmi.XMIResource;
19
import org.eclipse.emf.ecore.xmi.XMIResource;
Lines 27-34 Link Here
27
	}
30
	}
28
31
29
	@Override
32
	@Override
30
	public QVTrAnalyzer createAnalyzer(Monitor monitor) {
33
	protected QVTrAnalyzer createAnalyzer(
31
		return new QVTrAnalyzer(this, monitor);
34
			Monitor monitor, Reader reader, String fileName) throws IOException {
35
		return new QVTrAnalyzer(this, monitor, reader, fileName);
32
	}
36
	}
33
37
34
	@Override
38
	@Override
(-)src/org/eclipse/qvt/declarative/parser/qvtrelation/environment/PrintStreamProblemHandler.java (-1 / +1 lines)
Lines 29-35 Link Here
29
29
30
	@Override public void handleProblem(Severity problemSeverity, Phase processingPhase,
30
	@Override public void handleProblem(Severity problemSeverity, Phase processingPhase,
31
			String problemMessage, String processingContext, int startOffset, int endOffset) {
31
			String problemMessage, String processingContext, int startOffset, int endOffset) {
32
		int lineNumber = getParser().getTokenAtCharacter(startOffset).getLine();
32
		int lineNumber = getParser().getIPrsStream().getTokenAtCharacter(startOffset).getLine();
33
		stream.println(file.getName() + ":" + lineNumber + ": " + String.valueOf(processingPhase) + "-" + String.valueOf(problemSeverity) + ": " + problemMessage + ": " + getParser().computeInputString(startOffset, endOffset));
33
		stream.println(file.getName() + ":" + lineNumber + ": " + String.valueOf(processingPhase) + "-" + String.valueOf(problemSeverity) + ": " + problemMessage + ": " + getParser().computeInputString(startOffset, endOffset));
34
	}
34
	}
35
}
35
}
(-)src/org/eclipse/qvt/declarative/parser/qvtrelation/QVTrLexer.gi (+58 lines)
Added Link Here
1
--/**
2
-- * <copyright>
3
-- *
4
-- * Copyright (c) 2007,2008 E.D.Willink and others.
5
-- * All rights reserved.   This program and the accompanying materials
6
-- * are made available under the terms of the Eclipse Public License v1.0
7
-- * which accompanies this distribution, and is available at
8
-- * http://www.eclipse.org/legal/epl-v10.html
9
-- *
10
-- * Contributors:
11
-- *   E.D.Willink - Initial API and implementation
12
-- *
13
-- * </copyright>
14
-- */
15
--
16
-- The QVTr Lexer
17
--
18
19
%options escape=$
20
%options la=2
21
%options fp=QVTrLexer,prefix=Char_
22
%options single-productions
23
%options noserialize
24
%options package=org.eclipse.qvt.declarative.parser.qvtrelation
25
%options template=../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/lpg/LexerTemplateF.gi
26
%options filter=QVTrKWLexer.gi
27
%options export_terminals=("QVTrParsersym.java", "TK_")
28
%options include_directory=".;../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/lpg;../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/parser"
29
30
%Import
31
	OCLLexer.gi
32
%End
33
34
%Define
35
	--
36
	-- Definition of macro used in the included file LexerBasicMap.g
37
	--
38
	$kw_lexer_class /.QVTrKWLexer./
39
    $environment_class /.ICSTFileEnvironment./
40
    $environment_import /.org.eclipse.qvt.declarative.parser.environment.ICSTFileEnvironment./
41
	$copyright_contributions /.*   E.D.Willink - Extended API and implementation for QVTr
42
*./
43
%End
44
45
%Export
46
	PLUS_PLUS
47
%End
48
49
%Rules
50
51
	Token ::= '+' '+'
52
		/.$BeginAction
53
					makeToken($_PLUS_PLUS);
54
		  $EndAction
55
		./
56
		
57
	SLC -> '/' '/'
58
%End
(-)src/org/eclipse/qvt/declarative/parser/qvtrelation/QVTrKWLexer.gi (+171 lines)
Added Link Here
1
--/**
2
-- * Copyright (c) 2007,2008 E.D.Willink and others.
3
-- * All rights reserved.   This program and the accompanying materials
4
-- * are made available under the terms of the Eclipse Public License v1.0
5
-- * which accompanies this distribution, and is available at
6
-- * http://www.eclipse.org/legal/epl-v10.html
7
-- *
8
-- * Contributors:
9
-- *   E.D.Willink - Initial API and implementation
10
-- */
11
--
12
-- The QVTr KeyWord Lexer
13
--
14
15
%Options slr
16
%Options fp=QVTrKWLexer,prefix=Char_
17
%options noserialize
18
%options package=org.eclipse.qvt.declarative.parser.qvtrelation
19
%options template=../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/lpg/KeywordTemplateF.gi
20
%options export_terminals=("QVTrParsersym.java", "TK_")
21
%options include_directory=".;../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/lpg;../../../../../../../../org.eclipse.ocl/src/org/eclipse/ocl/parser"
22
23
%Import
24
	OCLKWLexer.gi
25
%End
26
27
%Define
28
	$copyright_contributions /.*   E.D.Willink - Extended API and implementation for QVTr
29
*./
30
%End
31
32
%Export
33
	checkonly
34
	default_values
35
	domain
36
	enforce
37
	extends
38
	implementedby
39
	import
40
	key
41
	overrides
42
	primitive
43
	query
44
	relation
45
	replace
46
	top
47
	transformation
48
	when
49
	where
50
%End
51
52
%Terminals
53
	_
54
%End
55
56
%Headers
57
    /.
58
        static
59
        {
60
            tokenKind['_'] = Char__;
61
        };
62
    ./
63
%End
64
65
%Rules
66
67
-- The Goal for the parser is a single Keyword
68
69
	KeyWord ::=
70
		  c h e c k o n l y
71
		/.$BeginAction
72
			$setResult($_checkonly);
73
		  $EndAction
74
		./
75
		
76
		| d e f a u l t _ v a l u e s
77
		/.$BeginAction
78
			$setResult($_default_values);
79
		  $EndAction
80
		./
81
		
82
		| d o m a i n
83
		/.$BeginAction
84
			$setResult($_domain);
85
		  $EndAction
86
		./
87
		
88
		| e n f o r c e
89
		/.$BeginAction
90
			$setResult($_enforce);
91
		  $EndAction
92
		./
93
		
94
		| e x t e n d s
95
		/.$BeginAction
96
			$setResult($_extends);
97
		  $EndAction
98
		./
99
		
100
		| i m p l e m e n t e d b y
101
		/.$BeginAction
102
			$setResult($_implementedby);
103
		  $EndAction
104
		./
105
		
106
		| i m p o r t
107
		/.$BeginAction
108
			$setResult($_import);
109
		  $EndAction
110
		./
111
		
112
		| k e y
113
		/.$BeginAction
114
			$setResult($_key);
115
		  $EndAction
116
		./
117
		
118
		| o v e r r i d e s
119
		/.$BeginAction
120
			$setResult($_overrides);
121
		  $EndAction
122
		./
123
		
124
		| p r i m i t i v e
125
		/.$BeginAction
126
			$setResult($_primitive);
127
		  $EndAction
128
		./
129
		
130
		| q u e r y
131
		/.$BeginAction
132
			$setResult($_query);
133
		  $EndAction
134
		./
135
		
136
		| r e l a t i o n
137
		/.$BeginAction
138
			$setResult($_relation);
139
		  $EndAction
140
		./
141
		
142
		| r e p l a c e
143
		/.$BeginAction
144
			$setResult($_replace);
145
		  $EndAction
146
		./
147
		
148
		| t o p
149
		/.$BeginAction
150
			$setResult($_top);
151
		  $EndAction
152
		./
153
		
154
		| t r a n s f o r m a t i o n
155
		/.$BeginAction
156
			$setResult($_transformation);
157
		  $EndAction
158
		./
159
		
160
		| w h e n
161
		/.$BeginAction
162
			$setResult($_when);
163
		  $EndAction
164
		./
165
		
166
		| w h e r e
167
		/.$BeginAction
168
			$setResult($_where);
169
		  $EndAction
170
		./
171
%End
(-)src/org/eclipse/qvt/declarative/editor/ocl/ui/imp/OCLParseController.java (-8 / +8 lines)
Lines 17-23 Link Here
17
package org.eclipse.qvt.declarative.editor.ocl.ui.imp;
17
package org.eclipse.qvt.declarative.editor.ocl.ui.imp;
18
18
19
import org.eclipse.ocl.cst.CSTPackage;
19
import org.eclipse.ocl.cst.CSTPackage;
20
import org.eclipse.ocl.parser.backtracking.OCLBacktrackingLexer;
20
import org.eclipse.ocl.parser.backtracking.OCLBacktrackingParsersym;
21
import org.eclipse.qvt.declarative.editor.ocl.ui.OCLCreationFactory;
21
import org.eclipse.qvt.declarative.editor.ocl.ui.OCLCreationFactory;
22
import org.eclipse.qvt.declarative.editor.ui.imp.CommonKeyword;
22
import org.eclipse.qvt.declarative.editor.ui.imp.CommonKeyword;
23
import org.eclipse.qvt.declarative.editor.ui.imp.CommonParseController;
23
import org.eclipse.qvt.declarative.editor.ui.imp.CommonParseController;
Lines 100-118 Link Here
100
100
101
	public TokenKind getTokenKind(int kind) {
101
	public TokenKind getTokenKind(int kind) {
102
		switch (kind) {
102
		switch (kind) {
103
		case OCLBacktrackingLexer.TK_EOF_TOKEN:
103
		case OCLBacktrackingParsersym.TK_EOF_TOKEN:
104
			return TokenKind.EOF;
104
			return TokenKind.EOF;
105
		case OCLBacktrackingLexer.TK_IDENTIFIER:
105
		case OCLBacktrackingParsersym.TK_IDENTIFIER:
106
			return TokenKind.IDENTIFIER;
106
			return TokenKind.IDENTIFIER;
107
		case OCLBacktrackingLexer.TK_INTEGER_LITERAL:
107
		case OCLBacktrackingParsersym.TK_INTEGER_LITERAL:
108
			return TokenKind.INTEGER;
108
			return TokenKind.INTEGER;
109
		case OCLBacktrackingLexer.TK_REAL_LITERAL:
109
		case OCLBacktrackingParsersym.TK_REAL_LITERAL:
110
			return TokenKind.REAL;
110
			return TokenKind.REAL;
111
        case OCLBacktrackingLexer.TK_STRING_LITERAL:
111
        case OCLBacktrackingParsersym.TK_STRING_LITERAL:
112
            return TokenKind.STRING;
112
            return TokenKind.STRING;
113
        case OCLBacktrackingLexer.TK_SINGLE_LINE_COMMENT:
113
        case OCLBacktrackingParsersym.TK_SINGLE_LINE_COMMENT:
114
            return TokenKind.LINE_COMMENT;
114
            return TokenKind.LINE_COMMENT;
115
        case OCLBacktrackingLexer.TK_MULTI_LINE_COMMENT:
115
        case OCLBacktrackingParsersym.TK_MULTI_LINE_COMMENT:
116
            return TokenKind.PARAGRAPH_COMMENT;
116
            return TokenKind.PARAGRAPH_COMMENT;
117
		default:
117
		default:
118
			if (isKeyword(kind))
118
			if (isKeyword(kind))
(-)src/org/eclipse/qvt/declarative/parser/AbstractQVTAnalyzer.java (-1 / +1 lines)
Lines 14-20 Link Here
14
import java.util.Comparator;
14
import java.util.Comparator;
15
import java.util.List;
15
import java.util.List;
16
16
17
import lpg.lpgjavaruntime.Monitor;
17
import lpg.runtime.Monitor;
18
18
19
import org.eclipse.emf.common.util.EList;
19
import org.eclipse.emf.common.util.EList;
20
import org.eclipse.emf.ecore.EClass;
20
import org.eclipse.emf.ecore.EClass;
(-)src/org/eclipse/qvt/declarative/parser/environment/CSTRootEnvironment.java (-1 / +1 lines)
Lines 266-272 Link Here
266
	}
266
	}
267
267
268
	public int getCSTErrorTokens() {
268
	public int getCSTErrorTokens() {
269
		return getParser().getErrorTokens();
269
		return getParser().getIPrsStream().getErrorTokens();
270
	}
270
	}
271
	
271
	
272
	public ICSTFileEnvironment getFileEnvironment() {
272
	public ICSTFileEnvironment getFileEnvironment() {
(-)src/org/eclipse/qvt/declarative/parser/environment/ICSTFileEnvironment.java (-2 / +2 lines)
Lines 20-26 Link Here
20
import java.io.Reader;
20
import java.io.Reader;
21
import java.util.Collection;
21
import java.util.Collection;
22
22
23
import lpg.lpgjavaruntime.Monitor;
23
import lpg.runtime.Monitor;
24
24
25
import org.eclipse.core.runtime.CoreException;
25
import org.eclipse.core.runtime.CoreException;
26
import org.eclipse.core.runtime.IProgressMonitor;
26
import org.eclipse.core.runtime.IProgressMonitor;
Lines 34-40 Link Here
34
34
35
public interface ICSTFileEnvironment extends ICSTEnvironment
35
public interface ICSTFileEnvironment extends ICSTEnvironment
36
{
36
{
37
	public ICSTFileAnalyzer<?> createAnalyzer(Monitor monitor);
37
	public ICSTFileAnalyzer<?> getAnalyzer(Monitor monitor, Reader reader, String fileName) throws IOException;
38
	
38
	
39
	public XMIResource getASTResource();
39
	public XMIResource getASTResource();
40
40
(-)src/org/eclipse/qvt/declarative/parser/environment/CSTFileEnvironment.java (-8 / +21 lines)
Lines 16-22 Link Here
16
import java.util.ArrayList;
16
import java.util.ArrayList;
17
import java.util.List;
17
import java.util.List;
18
18
19
import lpg.lpgjavaruntime.Monitor;
19
import lpg.runtime.Monitor;
20
20
21
import org.eclipse.core.runtime.CoreException;
21
import org.eclipse.core.runtime.CoreException;
22
import org.eclipse.core.runtime.IProgressMonitor;
22
import org.eclipse.core.runtime.IProgressMonitor;
Lines 42-48 Link Here
42
{
42
{
43
	protected final EPackage.Registry registryToo;
43
	protected final EPackage.Registry registryToo;
44
	protected final XMIResource ast;
44
	protected final XMIResource ast;
45
	protected final AbstractModelResolver resolver;	
45
	protected final AbstractModelResolver resolver;
46
	
47
	private ICSTFileAnalyzer<R> analyzer;
48
	
46
	private TypeResolver<EClassifier, EOperation, EStructuralFeature> typeResolver;	// FIXME Duplicated to support reset
49
	private TypeResolver<EClassifier, EOperation, EStructuralFeature> typeResolver;	// FIXME Duplicated to support reset
47
		// inherited functionality should allow typeResolver to be in CSTRootEnvironment
50
		// inherited functionality should allow typeResolver to be in CSTRootEnvironment
48
51
Lines 63-69 Link Here
63
		this(new EPackageRegistryImpl(), file, resourceSet, astResource);
66
		this(new EPackageRegistryImpl(), file, resourceSet, astResource);
64
	}
67
	}
65
68
66
	public abstract ICSTFileAnalyzer<R> createAnalyzer(Monitor monitor);
69
	public ICSTFileAnalyzer<R> getAnalyzer(Monitor monitor, Reader reader, String fileName) throws IOException {
70
		
71
		if (analyzer == null) {
72
			analyzer = createAnalyzer(monitor, reader, fileName);
73
		} else {
74
			analyzer.reset(reader, null);
75
		}
76
		return analyzer;
77
	}
78
	
79
	protected abstract ICSTFileAnalyzer<R> createAnalyzer(Monitor monitor, Reader reader, String fileName) throws IOException;
67
80
68
	protected abstract R createRootEnvironment(XMIResource ast, CST cst);
81
	protected abstract R createRootEnvironment(XMIResource ast, CST cst);
69
82
Lines 110-134 Link Here
110
123
111
	public ICSTRootEnvironment parse(Reader reader, AbstractFileHandle file, IProgressMonitor monitor) throws IOException, CoreException {
124
	public ICSTRootEnvironment parse(Reader reader, AbstractFileHandle file, IProgressMonitor monitor) throws IOException, CoreException {
112
		Monitor lpgMonitor = new LPGProgressMonitor(monitor);
125
		Monitor lpgMonitor = new LPGProgressMonitor(monitor);
113
		ICSTFileAnalyzer<R> analyzer = createAnalyzer(lpgMonitor);
114
		analyzer.setFileName(file.getName());
115
		if (reader == null)
126
		if (reader == null)
116
			reader = new InputStreamReader(file.getContents());
127
			reader = new InputStreamReader(file.getContents());
117
		else if (!file.exists())
128
		else if (!file.exists())
118
			return null;
129
			return null;
119
		analyzer.initialize(reader);
130
		
131
		ICSTFileAnalyzer<R> analyzer = getAnalyzer(lpgMonitor, reader, file.getName());
120
		AbstractParser parser = getParser();
132
		AbstractParser parser = getParser();
121
		if ((monitor != null) && monitor.isCanceled())
133
		if ((monitor != null) && monitor.isCanceled())
122
			return null;
134
			return null;
123
		parser.getLexer().lexToTokens(parser);
135
		parser.getLexer().lexer(parser.getIPrsStream());
124
		if ((monitor != null) && monitor.isCanceled())
136
		if ((monitor != null) && monitor.isCanceled())
125
			return null;
137
			return null;
126
		@SuppressWarnings("unchecked")		// Maybe this should be a generic parameter
138
		@SuppressWarnings("unchecked")		// Maybe this should be a generic parameter
127
		CST cst = (CST) parser.parseTokensToCST(lpgMonitor, -1);
139
		CST cst = (CST) parser.parser(lpgMonitor, -1);
128
		if (cst == null)
140
		if (cst == null)
129
			return null;
141
			return null;
130
		if ((monitor != null) && monitor.isCanceled())
142
		if ((monitor != null) && monitor.isCanceled())
131
			return null;
143
			return null;
144
		
132
		R rootEnvironment;
145
		R rootEnvironment;
133
		try {
146
		try {
134
			reset();
147
			reset();
(-)src/org/eclipse/qvt/declarative/parser/environment/ICSTFileAnalyzer.java (+7 lines)
Lines 31-37 Link Here
31
31
32
	public AbstractParser getParser();
32
	public AbstractParser getParser();
33
33
34
	/**
35
	 * @param reader
36
	 * @throws IOException
37
	 * @deprecated clients should invoke {@link #reset(Reader, String)}
38
	 */
34
	public void initialize(Reader reader) throws IOException;
39
	public void initialize(Reader reader) throws IOException;
40
	
41
	public void reset(Reader reader, String fileName) throws IOException;
35
42
36
	public void setFileName(String name);
43
	public void setFileName(String name);
37
}
44
}
(-)src/org/eclipse/qvt/declarative/parser/qvt/environment/LPGProgressMonitor.java (-1 / +1 lines)
Lines 10-16 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.qvt.declarative.parser.qvt.environment;
11
package org.eclipse.qvt.declarative.parser.qvt.environment;
12
12
13
import lpg.lpgjavaruntime.Monitor;
13
import lpg.runtime.Monitor;
14
14
15
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.core.runtime.IProgressMonitor;
16
16
(-)src/org/eclipse/qvt/declarative/parser/utils/ProblemLog.java (-4 / +7 lines)
Lines 17-22 Link Here
17
import java.util.Map;
17
import java.util.Map;
18
import java.util.Set;
18
import java.util.Set;
19
19
20
import lpg.runtime.IPrsStream;
21
20
import org.eclipse.ocl.lpg.AbstractProblemHandler;
22
import org.eclipse.ocl.lpg.AbstractProblemHandler;
21
import org.eclipse.ocl.lpg.ProblemHandler;
23
import org.eclipse.ocl.lpg.ProblemHandler;
22
import org.eclipse.osgi.util.NLS;
24
import org.eclipse.osgi.util.NLS;
Lines 134-150 Link Here
134
						if (problem.endOffset >= 0) {
136
						if (problem.endOffset >= 0) {
135
							s.append(" : ");
137
							s.append(" : ");
136
							s.append(problem.endOffset);
138
							s.append(problem.endOffset);
137
							if (getParser() != null) {
139
							IPrsStream stream = getParser().getIPrsStream();
138
								int token = getParser().getTokenIndexAtCharacter(problem.startOffset);
140
							if (stream != null) {
141
								int token =stream.getTokenIndexAtCharacter(problem.startOffset);
139
								s.append(" ");
142
								s.append(" ");
140
								try {
143
								try {
141
									s.append(getParser().getLine(token));
144
									s.append(stream.getLine(token));
142
								} catch (ArrayIndexOutOfBoundsException e) {
145
								} catch (ArrayIndexOutOfBoundsException e) {
143
									s.append("???");
146
									s.append("???");
144
								}
147
								}
145
								s.append(":");
148
								s.append(":");
146
								try {
149
								try {
147
									s.append(getParser().getColumn(token));
150
									s.append(stream.getColumn(token));
148
								} catch (ArrayIndexOutOfBoundsException e) {
151
								} catch (ArrayIndexOutOfBoundsException e) {
149
									s.append("???");
152
									s.append("???");
150
								}
153
								}
(-)src/org/eclipse/qvt/declarative/editor/ui/imp/CommonParseResult.java (-7 / +7 lines)
Lines 22-30 Link Here
22
import java.util.Iterator;
22
import java.util.Iterator;
23
import java.util.List;
23
import java.util.List;
24
24
25
import lpg.lpgjavaruntime.ErrorToken;
25
import lpg.runtime.ErrorToken;
26
import lpg.lpgjavaruntime.IToken;
26
import lpg.runtime.IPrsStream;
27
import lpg.lpgjavaruntime.PrsStream;
27
import lpg.runtime.IToken;
28
28
29
import org.eclipse.core.runtime.CoreException;
29
import org.eclipse.core.runtime.CoreException;
30
import org.eclipse.core.runtime.IProgressMonitor;
30
import org.eclipse.core.runtime.IProgressMonitor;
Lines 59-65 Link Here
59
59
60
	static final class TokenIterator implements Iterator<IToken>
60
	static final class TokenIterator implements Iterator<IToken>
61
	{
61
	{
62
		final PrsStream stream;
62
		final IPrsStream stream;
63
		final int firstTokIdx;
63
		final int firstTokIdx;
64
		final int lastTokIdx;
64
		final int lastTokIdx;
65
		int curTokIdx; // skip bogus initial token
65
		int curTokIdx; // skip bogus initial token
Lines 81-87 Link Here
81
		private boolean finalTokenReturned;
81
		private boolean finalTokenReturned;
82
		private boolean finalAdjunctsReturned;
82
		private boolean finalAdjunctsReturned;
83
83
84
		private TokenIterator(PrsStream stream, int regionEnd, int regionOffset) {
84
		private TokenIterator(IPrsStream stream, int regionEnd, int regionOffset) {
85
			this.stream = stream;
85
			this.stream = stream;
86
			firstTokIdx = getTokenIndexAtCharacter(regionOffset);
86
			firstTokIdx = getTokenIndexAtCharacter(regionOffset);
87
			curTokIdx = Math.max(1, firstTokIdx);
87
			curTokIdx = Math.max(1, firstTokIdx);
Lines 270-276 Link Here
270
	}
270
	}
271
271
272
	public String getTextRange(int start, int length) {
272
	public String getTextRange(int start, int length) {
273
		return new String(getLexer().getInputChars(), start, length);
273
		return new String(getLexer().getILexStream().getInputChars(), start, length);
274
	}
274
	}
275
275
276
	protected int[] getKeywordKinds() {
276
	protected int[] getKeywordKinds() {
Lines 309-315 Link Here
309
        int regionOffset= region.getOffset();
309
        int regionOffset= region.getOffset();
310
        int regionLength= region.getLength();
310
        int regionLength= region.getLength();
311
    	int regionEnd = regionOffset + regionLength - 1;
311
    	int regionEnd = regionOffset + regionLength - 1;
312
		PrsStream stream =  getParser();
312
		IPrsStream stream =  getParser().getIPrsStream();
313
		if (stream != null)
313
		if (stream != null)
314
			return new TokenIterator(stream, regionEnd, regionOffset);
314
			return new TokenIterator(stream, regionEnd, regionOffset);
315
		else
315
		else
(-)src/org/eclipse/qvt/declarative/editor/ui/imp/CommonContentProposals.java (-4 / +4 lines)
Lines 25-32 Link Here
25
import java.util.Map;
25
import java.util.Map;
26
import java.util.Set;
26
import java.util.Set;
27
27
28
import lpg.lpgjavaruntime.ErrorToken;
28
import lpg.runtime.ErrorToken;
29
import lpg.lpgjavaruntime.IToken;
29
import lpg.runtime.IToken;
30
30
31
import org.eclipse.emf.common.util.TreeIterator;
31
import org.eclipse.emf.common.util.TreeIterator;
32
import org.eclipse.emf.ecore.EClass;
32
import org.eclipse.emf.ecore.EClass;
Lines 45-51 Link Here
45
import org.eclipse.ocl.cst.PathNameCS;
45
import org.eclipse.ocl.cst.PathNameCS;
46
import org.eclipse.ocl.cst.SimpleNameCS;
46
import org.eclipse.ocl.cst.SimpleNameCS;
47
import org.eclipse.ocl.expressions.StringLiteralExp;
47
import org.eclipse.ocl.expressions.StringLiteralExp;
48
import org.eclipse.ocl.lpg.AbstractParser;
48
import org.eclipse.ocl.lpg.OCLParserStream;
49
import org.eclipse.qvt.declarative.ecore.utils.EcoreUtils;
49
import org.eclipse.qvt.declarative.ecore.utils.EcoreUtils;
50
import org.eclipse.qvt.declarative.ecore.utils.TracingOption;
50
import org.eclipse.qvt.declarative.ecore.utils.TracingOption;
51
import org.eclipse.qvt.declarative.editor.ui.QVTEditorPlugin;
51
import org.eclipse.qvt.declarative.editor.ui.QVTEditorPlugin;
Lines 370-376 Link Here
370
	}
370
	}
371
	
371
	
372
	protected IToken getToken() {
372
	protected IToken getToken() {
373
		AbstractParser stream = parseResult.getParser();
373
		OCLParserStream stream = parseResult.getParser().getIPrsStream();
374
		IToken errorToken = stream.getErrorTokenAtCharacter(offset);
374
		IToken errorToken = stream.getErrorTokenAtCharacter(offset);
375
		if (errorToken != null)
375
		if (errorToken != null)
376
			return errorToken;
376
			return errorToken;
(-)src/org/eclipse/qvt/declarative/editor/ui/imp/CommonTokenColorer.java (-1 / +7 lines)
Lines 16-22 Link Here
16
 */
16
 */
17
package org.eclipse.qvt.declarative.editor.ui.imp;
17
package org.eclipse.qvt.declarative.editor.ui.imp;
18
18
19
import lpg.lpgjavaruntime.IToken;
19
import lpg.runtime.IToken;
20
20
21
import org.eclipse.imp.parser.IParseController;
21
import org.eclipse.imp.parser.IParseController;
22
import org.eclipse.imp.services.ITokenColorer;
22
import org.eclipse.imp.services.ITokenColorer;
Lines 73-76 Link Here
73
			return super.getColoring(controller, token);
73
			return super.getColoring(controller, token);
74
		}
74
		}
75
	}
75
	}
76
77
	public TextAttribute getInterColoring(IParseController controller,
78
			Object prevToken, Object nextToken) {
79
		// TODO Auto-generated method stub
80
		return null;
81
	}
76
}
82
}
(-)src/org/eclipse/qvt/declarative/editor/ui/imp/CommonSourcePositionLocator.java (-1 / +1 lines)
Lines 16-22 Link Here
16
 */
16
 */
17
package org.eclipse.qvt.declarative.editor.ui.imp;
17
package org.eclipse.qvt.declarative.editor.ui.imp;
18
18
19
import lpg.lpgjavaruntime.IToken;
19
import lpg.runtime.IToken;
20
20
21
import org.eclipse.core.runtime.IPath;
21
import org.eclipse.core.runtime.IPath;
22
import org.eclipse.core.runtime.Path;
22
import org.eclipse.core.runtime.Path;
(-)src/org/eclipse/qvt/declarative/editor/ui/imp/CommonParseController.java (-1 / +1 lines)
Lines 33-39 Link Here
33
import java.util.Iterator;
33
import java.util.Iterator;
34
import java.util.List;
34
import java.util.List;
35
35
36
import lpg.lpgjavaruntime.IToken;
36
import lpg.runtime.IToken;
37
37
38
import org.eclipse.core.resources.IProject;
38
import org.eclipse.core.resources.IProject;
39
import org.eclipse.core.runtime.CoreException;
39
import org.eclipse.core.runtime.CoreException;
(-)src/org/eclipse/qvt/declarative/editor/ui/imp/CommonFoldingUpdater.java (-8 / +8 lines)
Lines 20-29 Link Here
20
import java.util.HashMap;
20
import java.util.HashMap;
21
import java.util.List;
21
import java.util.List;
22
22
23
import lpg.lpgjavaruntime.Adjunct;
23
import lpg.runtime.Adjunct;
24
import lpg.lpgjavaruntime.IToken;
24
import lpg.runtime.ILexStream;
25
import lpg.lpgjavaruntime.LexStream;
25
import lpg.runtime.IPrsStream;
26
import lpg.lpgjavaruntime.PrsStream;
26
import lpg.runtime.IToken;
27
27
28
import org.eclipse.imp.services.base.FolderBase;
28
import org.eclipse.imp.services.base.FolderBase;
29
import org.eclipse.jface.text.Position;
29
import org.eclipse.jface.text.Position;
Lines 62-73 Link Here
62
		}
62
		}
63
	};
63
	};
64
64
65
	protected PrsStream prsStream = null;
65
	protected IPrsStream prsStream = null;
66
66
67
	protected abstract ICommonPlugin getPlugin();
67
	protected abstract ICommonPlugin getPlugin();
68
68
69
	protected void makeAdjunctAnnotations(CSTNode theAST) {
69
	protected void makeAdjunctAnnotations(CSTNode theAST) {
70
		LexStream lexStream = prsStream.getLexStream();
70
		ILexStream lexStream = prsStream.getILexStream();
71
		if (lexStream == null)
71
		if (lexStream == null)
72
			return;
72
			return;
73
		@SuppressWarnings("unchecked")
73
		@SuppressWarnings("unchecked")
Lines 106-112 Link Here
106
			IToken gate_token = adjuncts.length == 0 ? next_token : adjuncts[0];
106
			IToken gate_token = adjuncts.length == 0 ? next_token : adjuncts[0];
107
			makeAnnotationWithOffsets(first_token.getStartOffset(), gate_token
107
			makeAnnotationWithOffsets(first_token.getStartOffset(), gate_token
108
					.getLine() > last_token.getEndLine() ? prsStream
108
					.getLine() > last_token.getEndLine() ? prsStream
109
					.getLexStream().getLineOffset(gate_token.getLine() - 1)
109
					.getILexStream().getLineOffset(gate_token.getLine() - 1)
110
					: last_token.getEndOffset());
110
					: last_token.getEndOffset());
111
		}
111
		}
112
	}
112
	}
Lines 127-133 Link Here
127
		if (theCST != null) {
127
		if (theCST != null) {
128
			IToken startToken = theCST.getStartToken();
128
			IToken startToken = theCST.getStartToken();
129
			if (startToken != null) {
129
			if (startToken != null) {
130
				prsStream = startToken.getPrsStream();
130
				prsStream = startToken.getIPrsStream();
131
				FoldingCSTVisitor visitor = new FoldingCSTVisitor(getPlugin().getEditorDefinition());
131
				FoldingCSTVisitor visitor = new FoldingCSTVisitor(getPlugin().getEditorDefinition());
132
				visitor.enter(theCST);
132
				visitor.enter(theCST);
133
				makeAdjunctAnnotations(theCST);
133
				makeAdjunctAnnotations(theCST);
(-)src/org/eclipse/qvt/declarative/editor/ui/imp/CommonParseHelper.java (-1 / +1 lines)
Lines 39-45 Link Here
39
        keywords = new ArrayList<ICommonKeyword>();
39
        keywords = new ArrayList<ICommonKeyword>();
40
        int[] keywordKinds= parser.getLexer().getKeywordKinds();
40
        int[] keywordKinds= parser.getLexer().getKeywordKinds();
41
        for(int i= 1; i < keywordKinds.length; i++) {
41
        for(int i= 1; i < keywordKinds.length; i++) {
42
            int index= parser.mapKind(keywordKinds[i]);
42
            int index= parser.getIPrsStream().mapKind(keywordKinds[i]);
43
            fIsKeyword[index]= true;
43
            fIsKeyword[index]= true;
44
            keywords.add(createKeyword(tokenKindNames[index]));
44
            keywords.add(createKeyword(tokenKindNames[index]));
45
        }
45
        }
(-)src/org/eclipse/qvt/declarative/editor/ui/imp/CommonProblemHandler.java (-2 / +3 lines)
Lines 16-22 Link Here
16
 */
16
 */
17
package org.eclipse.qvt.declarative.editor.ui.imp;
17
package org.eclipse.qvt.declarative.editor.ui.imp;
18
18
19
import lpg.lpgjavaruntime.IToken;
19
import lpg.runtime.IPrsStream;
20
import lpg.runtime.IToken;
20
21
21
import org.eclipse.core.resources.IMarker;
22
import org.eclipse.core.resources.IMarker;
22
import org.eclipse.imp.parser.IMessageHandler;
23
import org.eclipse.imp.parser.IMessageHandler;
Lines 42-48 Link Here
42
	}
43
	}
43
44
44
	public IToken getNearestTokenAtCharacter(int offset) {		// FIXME Move to AbstractParser
45
	public IToken getNearestTokenAtCharacter(int offset) {		// FIXME Move to AbstractParser
45
        AbstractParser parser = getParser();
46
        IPrsStream parser = getParser().getIPrsStream();
46
        int maxIndex = parser.getSize();
47
        int maxIndex = parser.getSize();
47
        if (maxIndex <= 0)
48
        if (maxIndex <= 0)
48
        	return null;
49
        	return null;
(-)src/org/eclipse/qvt/declarative/editor/ui/utils/EditorModelUtils.java (-5 / +5 lines)
Lines 16-24 Link Here
16
 */
16
 */
17
package org.eclipse.qvt.declarative.editor.ui.utils;
17
package org.eclipse.qvt.declarative.editor.ui.utils;
18
18
19
import lpg.lpgjavaruntime.IToken;
19
import lpg.runtime.ILexStream;
20
import lpg.lpgjavaruntime.LexStream;
20
import lpg.runtime.IPrsStream;
21
import lpg.lpgjavaruntime.PrsStream;
21
import lpg.runtime.IToken;
22
22
23
import org.eclipse.ocl.cst.CSTNode;
23
import org.eclipse.ocl.cst.CSTNode;
24
24
Lines 28-37 Link Here
28
		IToken token = cstNode.getStartToken();
28
		IToken token = cstNode.getStartToken();
29
		if (token == null)
29
		if (token == null)
30
			return null;
30
			return null;
31
		PrsStream prsStream = token.getPrsStream();
31
		IPrsStream prsStream = token.getIPrsStream();
32
		if (prsStream == null)
32
		if (prsStream == null)
33
			return null;
33
			return null;
34
		LexStream lexStream = prsStream.getLexStream();
34
		ILexStream lexStream = prsStream.getILexStream();
35
		if (lexStream == null)
35
		if (lexStream == null)
36
			return null;
36
			return null;
37
		return lexStream.getFileName();
37
		return lexStream.getFileName();
(-)src/org/eclipse/qvt/declarative/editor/ui/builder/MarkerProblemHandler.java (-2 / +5 lines)
Lines 22-27 Link Here
22
import java.util.Map;
22
import java.util.Map;
23
import java.util.Set;
23
import java.util.Set;
24
24
25
import lpg.runtime.IPrsStream;
26
25
import org.eclipse.core.resources.IMarker;
27
import org.eclipse.core.resources.IMarker;
26
import org.eclipse.core.resources.IResource;
28
import org.eclipse.core.resources.IResource;
27
import org.eclipse.core.resources.IWorkspace;
29
import org.eclipse.core.resources.IWorkspace;
Lines 172-180 Link Here
172
			String problemMessage, String processingContext, int startOffset, int endOffset) {
174
			String problemMessage, String processingContext, int startOffset, int endOffset) {
173
		int line = -1;
175
		int line = -1;
174
		if (startOffset >= 0) {
176
		if (startOffset >= 0) {
175
			int leftToken = Math.abs(getParser().getTokenIndexAtCharacter(startOffset));	// abs to move non-token to predecessor
177
			IPrsStream stream = getParser().getIPrsStream();
178
			int leftToken = Math.abs(stream.getTokenIndexAtCharacter(startOffset));	// abs to move non-token to predecessor
176
			if (leftToken >= 0)
179
			if (leftToken >= 0)
177
				line = getParser().getLine(leftToken);
180
				line = stream.getLine(leftToken);
178
		}
181
		}
179
		Integer severity = severityMap.get(problemSeverity);
182
		Integer severity = severityMap.get(problemSeverity);
180
		addMarker(severity != null ? severity.intValue() : IMarker.SEVERITY_ERROR,
183
		addMarker(severity != null ? severity.intValue() : IMarker.SEVERITY_ERROR,
(-)src/org/eclipse/qvt/declarative/parser/ocl/OCLFileAnalyzer.java (-3 / +5 lines)
Lines 16-25 Link Here
16
 */
16
 */
17
package org.eclipse.qvt.declarative.parser.ocl;
17
package org.eclipse.qvt.declarative.parser.ocl;
18
18
19
import java.io.IOException;
20
import java.io.Reader;
19
import java.util.ArrayList;
21
import java.util.ArrayList;
20
import java.util.List;
22
import java.util.List;
21
23
22
import lpg.lpgjavaruntime.Monitor;
24
import lpg.runtime.Monitor;
23
25
24
import org.eclipse.emf.ecore.EClass;
26
import org.eclipse.emf.ecore.EClass;
25
import org.eclipse.emf.ecore.EClassifier;
27
import org.eclipse.emf.ecore.EClassifier;
Lines 52-59 Link Here
52
	private OCLTopLevelEnvironment topLevelEnvironment = null;
54
	private OCLTopLevelEnvironment topLevelEnvironment = null;
53
	private EClass iteratorsClass = null;
55
	private EClass iteratorsClass = null;
54
56
55
	public OCLFileAnalyzer(OCLFileEnvironment environment, Monitor monitor) {
57
	public OCLFileAnalyzer(OCLFileEnvironment environment, Monitor monitor, Reader reader, String fileName) throws IOException {
56
		super(new OCLBacktrackingParser(new OCLBacktrackingLexer(environment)));
58
		super(new OCLBacktrackingParser(new OCLBacktrackingLexer(environment, reader, fileName)));
57
		this.monitor = monitor;
59
		this.monitor = monitor;
58
	}
60
	}
59
61
(-)src/org/eclipse/qvt/declarative/parser/ocl/environment/OCLFileEnvironment.java (-4 / +7 lines)
Lines 16-27 Link Here
16
 */
16
 */
17
package org.eclipse.qvt.declarative.parser.ocl.environment;
17
package org.eclipse.qvt.declarative.parser.ocl.environment;
18
18
19
import java.io.IOException;
20
import java.io.Reader;
19
import java.util.ArrayList;
21
import java.util.ArrayList;
20
import java.util.Collection;
22
import java.util.Collection;
21
import java.util.List;
23
import java.util.List;
22
24
23
import lpg.lpgjavaruntime.IToken;
25
import lpg.runtime.IToken;
24
import lpg.lpgjavaruntime.Monitor;
26
import lpg.runtime.Monitor;
25
27
26
import org.eclipse.emf.common.notify.Notifier;
28
import org.eclipse.emf.common.notify.Notifier;
27
import org.eclipse.emf.ecore.EClass;
29
import org.eclipse.emf.ecore.EClass;
Lines 115-122 Link Here
115
	}
117
	}
116
118
117
	@Override
119
	@Override
118
	public OCLFileAnalyzer createAnalyzer(Monitor monitor) {
120
	protected OCLFileAnalyzer createAnalyzer(
119
		return new OCLFileAnalyzer(this, monitor);
121
			Monitor monitor, Reader reader, String fileName) throws IOException {
122
		return new OCLFileAnalyzer(this, monitor, reader, fileName);
120
	}
123
	}
121
124
122
	@Override
125
	@Override
(-)src/org/eclipse/qvt/declarative/editor/qvtrelation/ui/imp/QVTrParseController.java (-8 / +8 lines)
Lines 20-26 Link Here
20
import org.eclipse.qvt.declarative.editor.qvtrelation.ui.QVTrCreationFactory;
20
import org.eclipse.qvt.declarative.editor.qvtrelation.ui.QVTrCreationFactory;
21
import org.eclipse.qvt.declarative.editor.ui.imp.CommonParseController;
21
import org.eclipse.qvt.declarative.editor.ui.imp.CommonParseController;
22
import org.eclipse.qvt.declarative.editor.ui.imp.ICommonKeyword;
22
import org.eclipse.qvt.declarative.editor.ui.imp.ICommonKeyword;
23
import org.eclipse.qvt.declarative.parser.qvtrelation.QVTrLexer;
23
import org.eclipse.qvt.declarative.parser.qvtrelation.QVTrParsersym;
24
import org.eclipse.qvt.declarative.parser.qvtrelation.cst.QVTrCSTPackage;
24
import org.eclipse.qvt.declarative.parser.qvtrelation.cst.QVTrCSTPackage;
25
25
26
public class QVTrParseController extends CommonParseController
26
public class QVTrParseController extends CommonParseController
Lines 38-56 Link Here
38
38
39
	public TokenKind getTokenKind(int kind) {
39
	public TokenKind getTokenKind(int kind) {
40
		switch (kind) {
40
		switch (kind) {
41
		case QVTrLexer.TK_EOF_TOKEN:
41
		case QVTrParsersym.TK_EOF_TOKEN:
42
			return TokenKind.EOF;
42
			return TokenKind.EOF;
43
		case QVTrLexer.TK_IDENTIFIER:
43
		case QVTrParsersym.TK_IDENTIFIER:
44
			return TokenKind.IDENTIFIER;
44
			return TokenKind.IDENTIFIER;
45
		case QVTrLexer.TK_INTEGER_LITERAL:
45
		case QVTrParsersym.TK_INTEGER_LITERAL:
46
			return TokenKind.INTEGER;
46
			return TokenKind.INTEGER;
47
		case QVTrLexer.TK_REAL_LITERAL:
47
		case QVTrParsersym.TK_REAL_LITERAL:
48
			return TokenKind.REAL;
48
			return TokenKind.REAL;
49
        case QVTrLexer.TK_STRING_LITERAL:
49
        case QVTrParsersym.TK_STRING_LITERAL:
50
             return TokenKind.STRING;
50
             return TokenKind.STRING;
51
        case QVTrLexer.TK_SINGLE_LINE_COMMENT:
51
        case QVTrParsersym.TK_SINGLE_LINE_COMMENT:
52
            return TokenKind.LINE_COMMENT;
52
            return TokenKind.LINE_COMMENT;
53
        case QVTrLexer.TK_MULTI_LINE_COMMENT:
53
        case QVTrParsersym.TK_MULTI_LINE_COMMENT:
54
            return TokenKind.PARAGRAPH_COMMENT;
54
            return TokenKind.PARAGRAPH_COMMENT;
55
		default:
55
		default:
56
			if (isKeyword(kind))
56
			if (isKeyword(kind))

Return to bug 242153