aboutsummaryrefslogtreecommitdiffstats
path: root/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal
diff options
context:
space:
mode:
Diffstat (limited to 'Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal')
-rw-r--r--Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguage.g4155
-rw-r--r--Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguage.tokens146
-rw-r--r--Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageLexer.java2175
-rw-r--r--Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.java11459
4 files changed, 12445 insertions, 5490 deletions
diff --git a/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguage.g b/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguage.g
index 501e2e59..3fac9254 100644
--- a/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguage.g
+++ b/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguage.g
@@ -1,5 +1,5 @@
1/* 1/*
2 * generated by Xtext 2.18.0.M3 2 * generated by Xtext 2.21.0
3 */ 3 */
4grammar InternalSolverLanguage; 4grammar InternalSolverLanguage;
5 5
@@ -23,6 +23,7 @@ import org.eclipse.xtext.parser.*;
23import org.eclipse.xtext.parser.impl.*; 23import org.eclipse.xtext.parser.impl.*;
24import org.eclipse.emf.ecore.util.EcoreUtil; 24import org.eclipse.emf.ecore.util.EcoreUtil;
25import org.eclipse.emf.ecore.EObject; 25import org.eclipse.emf.ecore.EObject;
26import org.eclipse.emf.common.util.Enumerator;
26import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser; 27import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
27import org.eclipse.xtext.parser.antlr.XtextTokenStream; 28import org.eclipse.xtext.parser.antlr.XtextTokenStream;
28import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; 29import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
@@ -112,35 +113,242 @@ ruleStatement returns [EObject current=null]
112 leaveRule(); 113 leaveRule();
113}: 114}:
114 ( 115 (
116 (
117 {
118 newCompositeNode(grammarAccess.getStatementAccess().getAssertionOrDefinitionParserRuleCall_0_0());
119 }
120 this_AssertionOrDefinition_0=ruleAssertionOrDefinition
121 {
122 $current = $this_AssertionOrDefinition_0.current;
123 afterParserOrEnumRuleCall();
124 }
125 |
126 {
127 newCompositeNode(grammarAccess.getStatementAccess().getPredicateDefinitionParserRuleCall_0_1());
128 }
129 this_PredicateDefinition_1=rulePredicateDefinition
130 {
131 $current = $this_PredicateDefinition_1.current;
132 afterParserOrEnumRuleCall();
133 }
134 |
135 {
136 newCompositeNode(grammarAccess.getStatementAccess().getUnnamedErrorPrediateDefinitionParserRuleCall_0_2());
137 }
138 this_UnnamedErrorPrediateDefinition_2=ruleUnnamedErrorPrediateDefinition
139 {
140 $current = $this_UnnamedErrorPrediateDefinition_2.current;
141 afterParserOrEnumRuleCall();
142 }
143 |
144 {
145 newCompositeNode(grammarAccess.getStatementAccess().getDefaultDefinitionParserRuleCall_0_3());
146 }
147 this_DefaultDefinition_3=ruleDefaultDefinition
148 {
149 $current = $this_DefaultDefinition_3.current;
150 afterParserOrEnumRuleCall();
151 }
152 |
153 {
154 newCompositeNode(grammarAccess.getStatementAccess().getExternPredicateDefinitionParserRuleCall_0_4());
155 }
156 this_ExternPredicateDefinition_4=ruleExternPredicateDefinition
157 {
158 $current = $this_ExternPredicateDefinition_4.current;
159 afterParserOrEnumRuleCall();
160 }
161 |
162 {
163 newCompositeNode(grammarAccess.getStatementAccess().getMetricDefinitionParserRuleCall_0_5());
164 }
165 this_MetricDefinition_5=ruleMetricDefinition
166 {
167 $current = $this_MetricDefinition_5.current;
168 afterParserOrEnumRuleCall();
169 }
170 |
171 {
172 newCompositeNode(grammarAccess.getStatementAccess().getExternMetricDefinitionParserRuleCall_0_6());
173 }
174 this_ExternMetricDefinition_6=ruleExternMetricDefinition
175 {
176 $current = $this_ExternMetricDefinition_6.current;
177 afterParserOrEnumRuleCall();
178 }
179 |
180 {
181 newCompositeNode(grammarAccess.getStatementAccess().getClassDefinitionParserRuleCall_0_7());
182 }
183 this_ClassDefinition_7=ruleClassDefinition
184 {
185 $current = $this_ClassDefinition_7.current;
186 afterParserOrEnumRuleCall();
187 }
188 |
189 {
190 newCompositeNode(grammarAccess.getStatementAccess().getScopeDefinitionParserRuleCall_0_8());
191 }
192 this_ScopeDefinition_8=ruleScopeDefinition
193 {
194 $current = $this_ScopeDefinition_8.current;
195 afterParserOrEnumRuleCall();
196 }
197 |
198 {
199 newCompositeNode(grammarAccess.getStatementAccess().getObjectiveDefinitionParserRuleCall_0_9());
200 }
201 this_ObjectiveDefinition_9=ruleObjectiveDefinition
202 {
203 $current = $this_ObjectiveDefinition_9.current;
204 afterParserOrEnumRuleCall();
205 }
206 )
207 this_DOT_10=RULE_DOT
115 { 208 {
116 newCompositeNode(grammarAccess.getStatementAccess().getInterpretationParserRuleCall_0()); 209 newLeafNode(this_DOT_10, grammarAccess.getStatementAccess().getDOTTerminalRuleCall_1());
117 }
118 this_Interpretation_0=ruleInterpretation
119 {
120 $current = $this_Interpretation_0.current;
121 afterParserOrEnumRuleCall();
122 } 210 }
123 | 211 )
212;
213
214// Entry rule entryRuleAssertionOrDefinition
215entryRuleAssertionOrDefinition returns [EObject current=null]:
216 { newCompositeNode(grammarAccess.getAssertionOrDefinitionRule()); }
217 iv_ruleAssertionOrDefinition=ruleAssertionOrDefinition
218 { $current=$iv_ruleAssertionOrDefinition.current; }
219 EOF;
220
221// Rule AssertionOrDefinition
222ruleAssertionOrDefinition returns [EObject current=null]
223@init {
224 enterRule();
225}
226@after {
227 leaveRule();
228}:
229 (
124 { 230 {
125 newCompositeNode(grammarAccess.getStatementAccess().getPredicateParserRuleCall_1()); 231 newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getExpressionParserRuleCall_0());
126 } 232 }
127 this_Predicate_1=rulePredicate 233 this_Expression_0=ruleExpression
128 { 234 {
129 $current = $this_Predicate_1.current; 235 $current = $this_Expression_0.current;
130 afterParserOrEnumRuleCall(); 236 afterParserOrEnumRuleCall();
131 } 237 }
238 (
239 (
240 (
241 {
242 $current = forceCreateModelElementAndSet(
243 grammarAccess.getAssertionOrDefinitionAccess().getAssertionBodyAction_1_0_0(),
244 $current);
245 }
246 )
247 (
248 otherlv_2=':'
249 {
250 newLeafNode(otherlv_2, grammarAccess.getAssertionOrDefinitionAccess().getColonKeyword_1_0_1_0());
251 }
252 (
253 (
254 {
255 newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getRangeExpressionParserRuleCall_1_0_1_1_0());
256 }
257 lv_range_3_0=ruleExpression
258 {
259 if ($current==null) {
260 $current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule());
261 }
262 set(
263 $current,
264 "range",
265 lv_range_3_0,
266 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
267 afterParserOrEnumRuleCall();
268 }
269 )
270 )
271 )?
272 )
273 |
274 (
275 (
276 {
277 $current = forceCreateModelElementAndSet(
278 grammarAccess.getAssertionOrDefinitionAccess().getPredicateDefinitionHeadAction_1_1_0(),
279 $current);
280 }
281 )
282 otherlv_5=':-'
283 {
284 newLeafNode(otherlv_5, grammarAccess.getAssertionOrDefinitionAccess().getColonHyphenMinusKeyword_1_1_1());
285 }
286 (
287 (
288 {
289 newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getBodyExpressionParserRuleCall_1_1_2_0());
290 }
291 lv_body_6_0=ruleExpression
292 {
293 if ($current==null) {
294 $current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule());
295 }
296 set(
297 $current,
298 "body",
299 lv_body_6_0,
300 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
301 afterParserOrEnumRuleCall();
302 }
303 )
304 )
305 )
306 |
307 (
308 (
309 {
310 $current = forceCreateModelElementAndSet(
311 grammarAccess.getAssertionOrDefinitionAccess().getMetricDefinitionHeadAction_1_2_0(),
312 $current);
313 }
314 )
315 otherlv_8='='
316 {
317 newLeafNode(otherlv_8, grammarAccess.getAssertionOrDefinitionAccess().getEqualsSignKeyword_1_2_1());
318 }
319 (
320 (
321 {
322 newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getBodyExpressionParserRuleCall_1_2_2_0());
323 }
324 lv_body_9_0=ruleExpression
325 {
326 if ($current==null) {
327 $current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule());
328 }
329 set(
330 $current,
331 "body",
332 lv_body_9_0,
333 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
334 afterParserOrEnumRuleCall();
335 }
336 )
337 )
338 )
339 )
132 ) 340 )
133; 341;
134 342
135// Entry rule entryRuleREALLiteral 343// Entry rule entryRulePredicateDefinition
136entryRuleREALLiteral returns [String current=null]: 344entryRulePredicateDefinition returns [EObject current=null]:
137 { newCompositeNode(grammarAccess.getREALLiteralRule()); } 345 { newCompositeNode(grammarAccess.getPredicateDefinitionRule()); }
138 iv_ruleREALLiteral=ruleREALLiteral 346 iv_rulePredicateDefinition=rulePredicateDefinition
139 { $current=$iv_ruleREALLiteral.current.getText(); } 347 { $current=$iv_rulePredicateDefinition.current; }
140 EOF; 348 EOF;
141 349
142// Rule REALLiteral 350// Rule PredicateDefinition
143ruleREALLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 351rulePredicateDefinition returns [EObject current=null]
144@init { 352@init {
145 enterRule(); 353 enterRule();
146} 354}
@@ -149,43 +357,122 @@ ruleREALLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleTok
149}: 357}:
150 ( 358 (
151 ( 359 (
152 kw='-' 360 (
153 { 361 (
154 $current.merge(kw); 362 (
155 newLeafNode(kw, grammarAccess.getREALLiteralAccess().getHyphenMinusKeyword_0()); 363 lv_functional_0_0='functional'
156 } 364 {
157 )? 365 newLeafNode(lv_functional_0_0, grammarAccess.getPredicateDefinitionAccess().getFunctionalFunctionalKeyword_0_0_0_0());
158 this_INT_1=RULE_INT 366 }
159 { 367 {
160 $current.merge(this_INT_1); 368 if ($current==null) {
161 } 369 $current = createModelElement(grammarAccess.getPredicateDefinitionRule());
162 { 370 }
163 newLeafNode(this_INT_1, grammarAccess.getREALLiteralAccess().getINTTerminalRuleCall_1()); 371 setWithLastConsumed($current, "functional", true, "functional");
164 } 372 }
165 kw='.' 373 )
166 { 374 )
167 $current.merge(kw); 375 (
168 newLeafNode(kw, grammarAccess.getREALLiteralAccess().getFullStopKeyword_2()); 376 (
169 } 377 lv_error_1_0='error'
170 this_INT_3=RULE_INT 378 {
171 { 379 newLeafNode(lv_error_1_0, grammarAccess.getPredicateDefinitionAccess().getErrorErrorKeyword_0_0_1_0());
172 $current.merge(this_INT_3); 380 }
173 } 381 {
382 if ($current==null) {
383 $current = createModelElement(grammarAccess.getPredicateDefinitionRule());
384 }
385 setWithLastConsumed($current, "error", true, "error");
386 }
387 )
388 )?
389 )
390 |
391 (
392 (
393 (
394 lv_error_2_0='error'
395 {
396 newLeafNode(lv_error_2_0, grammarAccess.getPredicateDefinitionAccess().getErrorErrorKeyword_0_1_0_0());
397 }
398 {
399 if ($current==null) {
400 $current = createModelElement(grammarAccess.getPredicateDefinitionRule());
401 }
402 setWithLastConsumed($current, "error", true, "error");
403 }
404 )
405 )
406 (
407 (
408 lv_functional_3_0='functional'
409 {
410 newLeafNode(lv_functional_3_0, grammarAccess.getPredicateDefinitionAccess().getFunctionalFunctionalKeyword_0_1_1_0());
411 }
412 {
413 if ($current==null) {
414 $current = createModelElement(grammarAccess.getPredicateDefinitionRule());
415 }
416 setWithLastConsumed($current, "functional", true, "functional");
417 }
418 )
419 )?
420 )
421 )
422 (
423 (
424 {
425 newCompositeNode(grammarAccess.getPredicateDefinitionAccess().getHeadCallParserRuleCall_1_0());
426 }
427 lv_head_4_0=ruleCall
428 {
429 if ($current==null) {
430 $current = createModelElementForParent(grammarAccess.getPredicateDefinitionRule());
431 }
432 set(
433 $current,
434 "head",
435 lv_head_4_0,
436 "org.eclipse.viatra.solver.language.SolverLanguage.Call");
437 afterParserOrEnumRuleCall();
438 }
439 )
440 )
441 otherlv_5=':-'
174 { 442 {
175 newLeafNode(this_INT_3, grammarAccess.getREALLiteralAccess().getINTTerminalRuleCall_3()); 443 newLeafNode(otherlv_5, grammarAccess.getPredicateDefinitionAccess().getColonHyphenMinusKeyword_2());
176 } 444 }
445 (
446 (
447 {
448 newCompositeNode(grammarAccess.getPredicateDefinitionAccess().getBodyExpressionParserRuleCall_3_0());
449 }
450 lv_body_6_0=ruleExpression
451 {
452 if ($current==null) {
453 $current = createModelElementForParent(grammarAccess.getPredicateDefinitionRule());
454 }
455 set(
456 $current,
457 "body",
458 lv_body_6_0,
459 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
460 afterParserOrEnumRuleCall();
461 }
462 )
463 )
177 ) 464 )
178; 465;
179 466
180// Entry rule entryRuleINTLiteral 467// Entry rule entryRuleUnnamedErrorPrediateDefinition
181entryRuleINTLiteral returns [String current=null]: 468entryRuleUnnamedErrorPrediateDefinition returns [EObject current=null]:
182 { newCompositeNode(grammarAccess.getINTLiteralRule()); } 469 { newCompositeNode(grammarAccess.getUnnamedErrorPrediateDefinitionRule()); }
183 iv_ruleINTLiteral=ruleINTLiteral 470 iv_ruleUnnamedErrorPrediateDefinition=ruleUnnamedErrorPrediateDefinition
184 { $current=$iv_ruleINTLiteral.current.getText(); } 471 { $current=$iv_ruleUnnamedErrorPrediateDefinition.current; }
185 EOF; 472 EOF;
186 473
187// Rule INTLiteral 474// Rule UnnamedErrorPrediateDefinition
188ruleINTLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 475ruleUnnamedErrorPrediateDefinition returns [EObject current=null]
189@init { 476@init {
190 enterRule(); 477 enterRule();
191} 478}
@@ -193,32 +480,64 @@ ruleINTLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToke
193 leaveRule(); 480 leaveRule();
194}: 481}:
195 ( 482 (
196 ( 483 otherlv_0='error'
197 kw='-'
198 {
199 $current.merge(kw);
200 newLeafNode(kw, grammarAccess.getINTLiteralAccess().getHyphenMinusKeyword_0());
201 }
202 )?
203 this_INT_1=RULE_INT
204 { 484 {
205 $current.merge(this_INT_1); 485 newLeafNode(otherlv_0, grammarAccess.getUnnamedErrorPrediateDefinitionAccess().getErrorKeyword_0());
206 } 486 }
487 (
488 (
489 {
490 newCompositeNode(grammarAccess.getUnnamedErrorPrediateDefinitionAccess().getArgumentListArgumentListParserRuleCall_1_0());
491 }
492 lv_argumentList_1_0=ruleArgumentList
493 {
494 if ($current==null) {
495 $current = createModelElementForParent(grammarAccess.getUnnamedErrorPrediateDefinitionRule());
496 }
497 set(
498 $current,
499 "argumentList",
500 lv_argumentList_1_0,
501 "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList");
502 afterParserOrEnumRuleCall();
503 }
504 )
505 )
506 otherlv_2=':-'
207 { 507 {
208 newLeafNode(this_INT_1, grammarAccess.getINTLiteralAccess().getINTTerminalRuleCall_1()); 508 newLeafNode(otherlv_2, grammarAccess.getUnnamedErrorPrediateDefinitionAccess().getColonHyphenMinusKeyword_2());
209 } 509 }
510 (
511 (
512 {
513 newCompositeNode(grammarAccess.getUnnamedErrorPrediateDefinitionAccess().getBodyExpressionParserRuleCall_3_0());
514 }
515 lv_body_3_0=ruleExpression
516 {
517 if ($current==null) {
518 $current = createModelElementForParent(grammarAccess.getUnnamedErrorPrediateDefinitionRule());
519 }
520 set(
521 $current,
522 "body",
523 lv_body_3_0,
524 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
525 afterParserOrEnumRuleCall();
526 }
527 )
528 )
210 ) 529 )
211; 530;
212 531
213// Entry rule entryRuleBooleanValue 532// Entry rule entryRuleDefaultDefinition
214entryRuleBooleanValue returns [EObject current=null]: 533entryRuleDefaultDefinition returns [EObject current=null]:
215 { newCompositeNode(grammarAccess.getBooleanValueRule()); } 534 { newCompositeNode(grammarAccess.getDefaultDefinitionRule()); }
216 iv_ruleBooleanValue=ruleBooleanValue 535 iv_ruleDefaultDefinition=ruleDefaultDefinition
217 { $current=$iv_ruleBooleanValue.current; } 536 { $current=$iv_ruleDefaultDefinition.current; }
218 EOF; 537 EOF;
219 538
220// Rule BooleanValue 539// Rule DefaultDefinition
221ruleBooleanValue returns [EObject current=null] 540ruleDefaultDefinition returns [EObject current=null]
222@init { 541@init {
223 enterRule(); 542 enterRule();
224} 543}
@@ -226,45 +545,64 @@ ruleBooleanValue returns [EObject current=null]
226 leaveRule(); 545 leaveRule();
227}: 546}:
228 ( 547 (
548 otherlv_0='default'
549 {
550 newLeafNode(otherlv_0, grammarAccess.getDefaultDefinitionAccess().getDefaultKeyword_0());
551 }
229 ( 552 (
230 ( 553 (
231 { 554 {
232 $current = forceCreateModelElement( 555 newCompositeNode(grammarAccess.getDefaultDefinitionAccess().getHeadCallParserRuleCall_1_0());
233 grammarAccess.getBooleanValueAccess().getBooleanTrueAction_0_0(), 556 }
234 $current); 557 lv_head_1_0=ruleCall
558 {
559 if ($current==null) {
560 $current = createModelElementForParent(grammarAccess.getDefaultDefinitionRule());
561 }
562 set(
563 $current,
564 "head",
565 lv_head_1_0,
566 "org.eclipse.viatra.solver.language.SolverLanguage.Call");
567 afterParserOrEnumRuleCall();
235 } 568 }
236 ) 569 )
237 otherlv_1='true'
238 {
239 newLeafNode(otherlv_1, grammarAccess.getBooleanValueAccess().getTrueKeyword_0_1());
240 }
241 ) 570 )
242 | 571 otherlv_2=':'
572 {
573 newLeafNode(otherlv_2, grammarAccess.getDefaultDefinitionAccess().getColonKeyword_2());
574 }
243 ( 575 (
244 otherlv_2='false'
245 {
246 newLeafNode(otherlv_2, grammarAccess.getBooleanValueAccess().getFalseKeyword_1_0());
247 }
248 ( 576 (
249 { 577 {
250 $current = forceCreateModelElement( 578 newCompositeNode(grammarAccess.getDefaultDefinitionAccess().getRangeExpressionParserRuleCall_3_0());
251 grammarAccess.getBooleanValueAccess().getBooleanFalseAction_1_1(), 579 }
252 $current); 580 lv_range_3_0=ruleExpression
581 {
582 if ($current==null) {
583 $current = createModelElementForParent(grammarAccess.getDefaultDefinitionRule());
584 }
585 set(
586 $current,
587 "range",
588 lv_range_3_0,
589 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
590 afterParserOrEnumRuleCall();
253 } 591 }
254 ) 592 )
255 ) 593 )
256 ) 594 )
257; 595;
258 596
259// Entry rule entryRuleTruthValue 597// Entry rule entryRuleExternPredicateDefinition
260entryRuleTruthValue returns [EObject current=null]: 598entryRuleExternPredicateDefinition returns [EObject current=null]:
261 { newCompositeNode(grammarAccess.getTruthValueRule()); } 599 { newCompositeNode(grammarAccess.getExternPredicateDefinitionRule()); }
262 iv_ruleTruthValue=ruleTruthValue 600 iv_ruleExternPredicateDefinition=ruleExternPredicateDefinition
263 { $current=$iv_ruleTruthValue.current; } 601 { $current=$iv_ruleExternPredicateDefinition.current; }
264 EOF; 602 EOF;
265 603
266// Rule TruthValue 604// Rule ExternPredicateDefinition
267ruleTruthValue returns [EObject current=null] 605ruleExternPredicateDefinition returns [EObject current=null]
268@init { 606@init {
269 enterRule(); 607 enterRule();
270} 608}
@@ -272,73 +610,125 @@ ruleTruthValue returns [EObject current=null]
272 leaveRule(); 610 leaveRule();
273}: 611}:
274 ( 612 (
613 otherlv_0='extern'
614 {
615 newLeafNode(otherlv_0, grammarAccess.getExternPredicateDefinitionAccess().getExternKeyword_0());
616 }
275 ( 617 (
276 ( 618 (
277 { 619 {
278 $current = forceCreateModelElement( 620 newCompositeNode(grammarAccess.getExternPredicateDefinitionAccess().getHeadCallParserRuleCall_1_0());
279 grammarAccess.getTruthValueAccess().getTrueAction_0_0(), 621 }
280 $current); 622 lv_head_1_0=ruleCall
623 {
624 if ($current==null) {
625 $current = createModelElementForParent(grammarAccess.getExternPredicateDefinitionRule());
626 }
627 set(
628 $current,
629 "head",
630 lv_head_1_0,
631 "org.eclipse.viatra.solver.language.SolverLanguage.Call");
632 afterParserOrEnumRuleCall();
281 } 633 }
282 ) 634 )
283 otherlv_1='true'
284 {
285 newLeafNode(otherlv_1, grammarAccess.getTruthValueAccess().getTrueKeyword_0_1());
286 }
287 ) 635 )
288 | 636 otherlv_2='.'
637 {
638 newLeafNode(otherlv_2, grammarAccess.getExternPredicateDefinitionAccess().getFullStopKeyword_2());
639 }
640 )
641;
642
643// Entry rule entryRuleMetricDefinition
644entryRuleMetricDefinition returns [EObject current=null]:
645 { newCompositeNode(grammarAccess.getMetricDefinitionRule()); }
646 iv_ruleMetricDefinition=ruleMetricDefinition
647 { $current=$iv_ruleMetricDefinition.current; }
648 EOF;
649
650// Rule MetricDefinition
651ruleMetricDefinition returns [EObject current=null]
652@init {
653 enterRule();
654}
655@after {
656 leaveRule();
657}:
658 (
289 ( 659 (
290 ( 660 (
291 { 661 {
292 $current = forceCreateModelElement( 662 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getTypeMetricTypeEnumRuleCall_0_0());
293 grammarAccess.getTruthValueAccess().getFalseAction_1_0(), 663 }
294 $current); 664 lv_type_0_0=ruleMetricType
665 {
666 if ($current==null) {
667 $current = createModelElementForParent(grammarAccess.getMetricDefinitionRule());
668 }
669 set(
670 $current,
671 "type",
672 lv_type_0_0,
673 "org.eclipse.viatra.solver.language.SolverLanguage.MetricType");
674 afterParserOrEnumRuleCall();
295 } 675 }
296 ) 676 )
297 otherlv_3='false'
298 {
299 newLeafNode(otherlv_3, grammarAccess.getTruthValueAccess().getFalseKeyword_1_1());
300 }
301 ) 677 )
302 |
303 ( 678 (
304 ( 679 (
305 { 680 {
306 $current = forceCreateModelElement( 681 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getHeadExpressionParserRuleCall_1_0());
307 grammarAccess.getTruthValueAccess().getUnknownAction_2_0(), 682 }
308 $current); 683 lv_head_1_0=ruleExpression
684 {
685 if ($current==null) {
686 $current = createModelElementForParent(grammarAccess.getMetricDefinitionRule());
687 }
688 set(
689 $current,
690 "head",
691 lv_head_1_0,
692 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
693 afterParserOrEnumRuleCall();
309 } 694 }
310 ) 695 )
311 otherlv_5='unknown'
312 {
313 newLeafNode(otherlv_5, grammarAccess.getTruthValueAccess().getUnknownKeyword_2_1());
314 }
315 ) 696 )
316 | 697 otherlv_2='='
698 {
699 newLeafNode(otherlv_2, grammarAccess.getMetricDefinitionAccess().getEqualsSignKeyword_2());
700 }
317 ( 701 (
318 ( 702 (
319 { 703 {
320 $current = forceCreateModelElement( 704 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getBodyExpressionParserRuleCall_3_0());
321 grammarAccess.getTruthValueAccess().getErrorAction_3_0(), 705 }
322 $current); 706 lv_body_3_0=ruleExpression
707 {
708 if ($current==null) {
709 $current = createModelElementForParent(grammarAccess.getMetricDefinitionRule());
710 }
711 set(
712 $current,
713 "body",
714 lv_body_3_0,
715 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
716 afterParserOrEnumRuleCall();
323 } 717 }
324 ) 718 )
325 otherlv_7='error'
326 {
327 newLeafNode(otherlv_7, grammarAccess.getTruthValueAccess().getErrorKeyword_3_1());
328 }
329 ) 719 )
330 ) 720 )
331; 721;
332 722
333// Entry rule entryRuleInterpretation 723// Entry rule entryRuleExternMetricDefinition
334entryRuleInterpretation returns [EObject current=null]: 724entryRuleExternMetricDefinition returns [EObject current=null]:
335 { newCompositeNode(grammarAccess.getInterpretationRule()); } 725 { newCompositeNode(grammarAccess.getExternMetricDefinitionRule()); }
336 iv_ruleInterpretation=ruleInterpretation 726 iv_ruleExternMetricDefinition=ruleExternMetricDefinition
337 { $current=$iv_ruleInterpretation.current; } 727 { $current=$iv_ruleExternMetricDefinition.current; }
338 EOF; 728 EOF;
339 729
340// Rule Interpretation 730// Rule ExternMetricDefinition
341ruleInterpretation returns [EObject current=null] 731ruleExternMetricDefinition returns [EObject current=null]
342@init { 732@init {
343 enterRule(); 733 enterRule();
344} 734}
@@ -346,44 +736,96 @@ ruleInterpretation returns [EObject current=null]
346 leaveRule(); 736 leaveRule();
347}: 737}:
348 ( 738 (
739 otherlv_0='extern'
349 { 740 {
350 newCompositeNode(grammarAccess.getInterpretationAccess().getBasicInterpretationParserRuleCall_0()); 741 newLeafNode(otherlv_0, grammarAccess.getExternMetricDefinitionAccess().getExternKeyword_0());
351 }
352 this_BasicInterpretation_0=ruleBasicInterpretation
353 {
354 $current = $this_BasicInterpretation_0.current;
355 afterParserOrEnumRuleCall();
356 } 742 }
357 | 743 (
744 (
745 {
746 newCompositeNode(grammarAccess.getExternMetricDefinitionAccess().getTypeMetricTypeEnumRuleCall_1_0());
747 }
748 lv_type_1_0=ruleMetricType
749 {
750 if ($current==null) {
751 $current = createModelElementForParent(grammarAccess.getExternMetricDefinitionRule());
752 }
753 set(
754 $current,
755 "type",
756 lv_type_1_0,
757 "org.eclipse.viatra.solver.language.SolverLanguage.MetricType");
758 afterParserOrEnumRuleCall();
759 }
760 )
761 )
762 (
763 (
764 {
765 newCompositeNode(grammarAccess.getExternMetricDefinitionAccess().getHeadCallParserRuleCall_2_0());
766 }
767 lv_head_2_0=ruleCall
768 {
769 if ($current==null) {
770 $current = createModelElementForParent(grammarAccess.getExternMetricDefinitionRule());
771 }
772 set(
773 $current,
774 "head",
775 lv_head_2_0,
776 "org.eclipse.viatra.solver.language.SolverLanguage.Call");
777 afterParserOrEnumRuleCall();
778 }
779 )
780 )
781 )
782;
783
784// Entry rule entryRuleExpression
785entryRuleExpression returns [EObject current=null]:
786 { newCompositeNode(grammarAccess.getExpressionRule()); }
787 iv_ruleExpression=ruleExpression
788 { $current=$iv_ruleExpression.current; }
789 EOF;
790
791// Rule Expression
792ruleExpression returns [EObject current=null]
793@init {
794 enterRule();
795}
796@after {
797 leaveRule();
798}:
799 (
358 { 800 {
359 newCompositeNode(grammarAccess.getInterpretationAccess().getDefaultInterpretationParserRuleCall_1()); 801 newCompositeNode(grammarAccess.getExpressionAccess().getIfElseParserRuleCall_0());
360 } 802 }
361 this_DefaultInterpretation_1=ruleDefaultInterpretation 803 this_IfElse_0=ruleIfElse
362 { 804 {
363 $current = $this_DefaultInterpretation_1.current; 805 $current = $this_IfElse_0.current;
364 afterParserOrEnumRuleCall(); 806 afterParserOrEnumRuleCall();
365 } 807 }
366 | 808 |
367 { 809 {
368 newCompositeNode(grammarAccess.getInterpretationAccess().getCDInterpretationParserRuleCall_2()); 810 newCompositeNode(grammarAccess.getExpressionAccess().getDisjunctiveExpressionParserRuleCall_1());
369 } 811 }
370 this_CDInterpretation_2=ruleCDInterpretation 812 this_DisjunctiveExpression_1=ruleDisjunctiveExpression
371 { 813 {
372 $current = $this_CDInterpretation_2.current; 814 $current = $this_DisjunctiveExpression_1.current;
373 afterParserOrEnumRuleCall(); 815 afterParserOrEnumRuleCall();
374 } 816 }
375 ) 817 )
376; 818;
377 819
378// Entry rule entryRuleBasicInterpretation 820// Entry rule entryRuleIfElse
379entryRuleBasicInterpretation returns [EObject current=null]: 821entryRuleIfElse returns [EObject current=null]:
380 { newCompositeNode(grammarAccess.getBasicInterpretationRule()); } 822 { newCompositeNode(grammarAccess.getIfElseRule()); }
381 iv_ruleBasicInterpretation=ruleBasicInterpretation 823 iv_ruleIfElse=ruleIfElse
382 { $current=$iv_ruleBasicInterpretation.current; } 824 { $current=$iv_ruleIfElse.current; }
383 EOF; 825 EOF;
384 826
385// Rule BasicInterpretation 827// Rule IfElse
386ruleBasicInterpretation returns [EObject current=null] 828ruleIfElse returns [EObject current=null]
387@init { 829@init {
388 enterRule(); 830 enterRule();
389} 831}
@@ -391,100 +833,260 @@ ruleBasicInterpretation returns [EObject current=null]
391 leaveRule(); 833 leaveRule();
392}: 834}:
393 ( 835 (
836 otherlv_0='if'
837 {
838 newLeafNode(otherlv_0, grammarAccess.getIfElseAccess().getIfKeyword_0());
839 }
394 ( 840 (
395 ( 841 (
396 { 842 {
397 newCompositeNode(grammarAccess.getBasicInterpretationAccess().getSymbolSymbolParserRuleCall_0_0()); 843 newCompositeNode(grammarAccess.getIfElseAccess().getConditionExpressionParserRuleCall_1_0());
398 } 844 }
399 lv_symbol_0_0=ruleSymbol 845 lv_condition_1_0=ruleExpression
400 { 846 {
401 if ($current==null) { 847 if ($current==null) {
402 $current = createModelElementForParent(grammarAccess.getBasicInterpretationRule()); 848 $current = createModelElementForParent(grammarAccess.getIfElseRule());
403 } 849 }
404 set( 850 set(
405 $current, 851 $current,
406 "symbol", 852 "condition",
407 lv_symbol_0_0, 853 lv_condition_1_0,
408 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol"); 854 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
409 afterParserOrEnumRuleCall(); 855 afterParserOrEnumRuleCall();
410 } 856 }
411 ) 857 )
412 ) 858 )
859 otherlv_2='then'
860 {
861 newLeafNode(otherlv_2, grammarAccess.getIfElseAccess().getThenKeyword_2());
862 }
413 ( 863 (
414 otherlv_1='('
415 {
416 newLeafNode(otherlv_1, grammarAccess.getBasicInterpretationAccess().getLeftParenthesisKeyword_1_0());
417 }
418 ( 864 (
865 {
866 newCompositeNode(grammarAccess.getIfElseAccess().getThenExpressionParserRuleCall_3_0());
867 }
868 lv_then_3_0=ruleExpression
869 {
870 if ($current==null) {
871 $current = createModelElementForParent(grammarAccess.getIfElseRule());
872 }
873 set(
874 $current,
875 "then",
876 lv_then_3_0,
877 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
878 afterParserOrEnumRuleCall();
879 }
880 )
881 )
882 otherlv_4='else'
883 {
884 newLeafNode(otherlv_4, grammarAccess.getIfElseAccess().getElseKeyword_4());
885 }
886 (
887 (
888 {
889 newCompositeNode(grammarAccess.getIfElseAccess().getElseExpressionParserRuleCall_5_0());
890 }
891 lv_else_5_0=ruleExpression
892 {
893 if ($current==null) {
894 $current = createModelElementForParent(grammarAccess.getIfElseRule());
895 }
896 set(
897 $current,
898 "else",
899 lv_else_5_0,
900 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
901 afterParserOrEnumRuleCall();
902 }
903 )
904 )
905 )
906;
907
908// Entry rule entryRuleDisjunctiveExpression
909entryRuleDisjunctiveExpression returns [EObject current=null]:
910 { newCompositeNode(grammarAccess.getDisjunctiveExpressionRule()); }
911 iv_ruleDisjunctiveExpression=ruleDisjunctiveExpression
912 { $current=$iv_ruleDisjunctiveExpression.current; }
913 EOF;
914
915// Rule DisjunctiveExpression
916ruleDisjunctiveExpression returns [EObject current=null]
917@init {
918 enterRule();
919}
920@after {
921 leaveRule();
922}:
923 (
924 {
925 newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getConjunctiveExpressionParserRuleCall_0());
926 }
927 this_ConjunctiveExpression_0=ruleConjunctiveExpression
928 {
929 $current = $this_ConjunctiveExpression_0.current;
930 afterParserOrEnumRuleCall();
931 }
932 (
933 (
934 (
935 {
936 $current = forceCreateModelElementAndAdd(
937 grammarAccess.getDisjunctiveExpressionAccess().getDisjunctionChildrenAction_1_0_0(),
938 $current);
939 }
940 )
941 (
942 otherlv_2=';'
943 {
944 newLeafNode(otherlv_2, grammarAccess.getDisjunctiveExpressionAccess().getSemicolonKeyword_1_0_1_0());
945 }
946 (
947 (
948 {
949 newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getChildrenConjunctiveExpressionParserRuleCall_1_0_1_1_0());
950 }
951 lv_children_3_0=ruleConjunctiveExpression
952 {
953 if ($current==null) {
954 $current = createModelElementForParent(grammarAccess.getDisjunctiveExpressionRule());
955 }
956 add(
957 $current,
958 "children",
959 lv_children_3_0,
960 "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression");
961 afterParserOrEnumRuleCall();
962 }
963 )
964 )
965 )+
966 )
967 |
968 (
969 (
970 {
971 $current = forceCreateModelElementAndSet(
972 grammarAccess.getDisjunctiveExpressionAccess().getCaseConditionAction_1_1_0(),
973 $current);
974 }
975 )
976 otherlv_5='->'
977 {
978 newLeafNode(otherlv_5, grammarAccess.getDisjunctiveExpressionAccess().getHyphenMinusGreaterThanSignKeyword_1_1_1());
979 }
419 ( 980 (
420 ( 981 (
421 { 982 {
422 newCompositeNode(grammarAccess.getBasicInterpretationAccess().getObjectsComplexObjectParserRuleCall_1_1_0_0()); 983 newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getBodyConjunctiveExpressionParserRuleCall_1_1_2_0());
423 } 984 }
424 lv_objects_2_0=ruleComplexObject 985 lv_body_6_0=ruleConjunctiveExpression
425 { 986 {
426 if ($current==null) { 987 if ($current==null) {
427 $current = createModelElementForParent(grammarAccess.getBasicInterpretationRule()); 988 $current = createModelElementForParent(grammarAccess.getDisjunctiveExpressionRule());
428 } 989 }
429 add( 990 set(
430 $current, 991 $current,
431 "objects", 992 "body",
432 lv_objects_2_0, 993 lv_body_6_0,
433 "org.eclipse.viatra.solver.language.SolverLanguage.ComplexObject"); 994 "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression");
434 afterParserOrEnumRuleCall(); 995 afterParserOrEnumRuleCall();
435 } 996 }
436 ) 997 )
437 ) 998 )
438 ( 999 (
439 otherlv_3=','
440 { 1000 {
441 newLeafNode(otherlv_3, grammarAccess.getBasicInterpretationAccess().getCommaKeyword_1_1_1_0()); 1001 $current = forceCreateModelElementAndAdd(
1002 grammarAccess.getDisjunctiveExpressionAccess().getSwitchCasesAction_1_1_3(),
1003 $current);
1004 }
1005 )
1006 (
1007 otherlv_8=';'
1008 {
1009 newLeafNode(otherlv_8, grammarAccess.getDisjunctiveExpressionAccess().getSemicolonKeyword_1_1_4_0());
442 } 1010 }
443 ( 1011 (
444 ( 1012 (
445 { 1013 {
446 newCompositeNode(grammarAccess.getBasicInterpretationAccess().getObjectsComplexObjectParserRuleCall_1_1_1_1_0()); 1014 newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getCasesCaseParserRuleCall_1_1_4_1_0());
447 } 1015 }
448 lv_objects_4_0=ruleComplexObject 1016 lv_cases_9_0=ruleCase
449 { 1017 {
450 if ($current==null) { 1018 if ($current==null) {
451 $current = createModelElementForParent(grammarAccess.getBasicInterpretationRule()); 1019 $current = createModelElementForParent(grammarAccess.getDisjunctiveExpressionRule());
452 } 1020 }
453 add( 1021 add(
454 $current, 1022 $current,
455 "objects", 1023 "cases",
456 lv_objects_4_0, 1024 lv_cases_9_0,
457 "org.eclipse.viatra.solver.language.SolverLanguage.ComplexObject"); 1025 "org.eclipse.viatra.solver.language.SolverLanguage.Case");
458 afterParserOrEnumRuleCall(); 1026 afterParserOrEnumRuleCall();
459 } 1027 }
460 ) 1028 )
461 ) 1029 )
462 )* 1030 )*
463 )? 1031 )
464 otherlv_5=')'
465 {
466 newLeafNode(otherlv_5, grammarAccess.getBasicInterpretationAccess().getRightParenthesisKeyword_1_2());
467 }
468 )? 1032 )?
469 otherlv_6=':' 1033 )
1034;
1035
1036// Entry rule entryRuleCase
1037entryRuleCase returns [EObject current=null]:
1038 { newCompositeNode(grammarAccess.getCaseRule()); }
1039 iv_ruleCase=ruleCase
1040 { $current=$iv_ruleCase.current; }
1041 EOF;
1042
1043// Rule Case
1044ruleCase returns [EObject current=null]
1045@init {
1046 enterRule();
1047}
1048@after {
1049 leaveRule();
1050}:
1051 (
1052 (
1053 (
1054 {
1055 newCompositeNode(grammarAccess.getCaseAccess().getConditionConjunctiveExpressionParserRuleCall_0_0());
1056 }
1057 lv_condition_0_0=ruleConjunctiveExpression
1058 {
1059 if ($current==null) {
1060 $current = createModelElementForParent(grammarAccess.getCaseRule());
1061 }
1062 set(
1063 $current,
1064 "condition",
1065 lv_condition_0_0,
1066 "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression");
1067 afterParserOrEnumRuleCall();
1068 }
1069 )
1070 )
1071 otherlv_1='->'
470 { 1072 {
471 newLeafNode(otherlv_6, grammarAccess.getBasicInterpretationAccess().getColonKeyword_2()); 1073 newLeafNode(otherlv_1, grammarAccess.getCaseAccess().getHyphenMinusGreaterThanSignKeyword_1());
472 } 1074 }
473 ( 1075 (
474 ( 1076 (
475 { 1077 {
476 newCompositeNode(grammarAccess.getBasicInterpretationAccess().getValueTruthValueParserRuleCall_3_0()); 1078 newCompositeNode(grammarAccess.getCaseAccess().getBodyConjunctiveExpressionParserRuleCall_2_0());
477 } 1079 }
478 lv_value_7_0=ruleTruthValue 1080 lv_body_2_0=ruleConjunctiveExpression
479 { 1081 {
480 if ($current==null) { 1082 if ($current==null) {
481 $current = createModelElementForParent(grammarAccess.getBasicInterpretationRule()); 1083 $current = createModelElementForParent(grammarAccess.getCaseRule());
482 } 1084 }
483 set( 1085 set(
484 $current, 1086 $current,
485 "value", 1087 "body",
486 lv_value_7_0, 1088 lv_body_2_0,
487 "org.eclipse.viatra.solver.language.SolverLanguage.TruthValue"); 1089 "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression");
488 afterParserOrEnumRuleCall(); 1090 afterParserOrEnumRuleCall();
489 } 1091 }
490 ) 1092 )
@@ -492,15 +1094,15 @@ ruleBasicInterpretation returns [EObject current=null]
492 ) 1094 )
493; 1095;
494 1096
495// Entry rule entryRuleSymbol 1097// Entry rule entryRuleConjunctiveExpression
496entryRuleSymbol returns [EObject current=null]: 1098entryRuleConjunctiveExpression returns [EObject current=null]:
497 { newCompositeNode(grammarAccess.getSymbolRule()); } 1099 { newCompositeNode(grammarAccess.getConjunctiveExpressionRule()); }
498 iv_ruleSymbol=ruleSymbol 1100 iv_ruleConjunctiveExpression=ruleConjunctiveExpression
499 { $current=$iv_ruleSymbol.current; } 1101 { $current=$iv_ruleConjunctiveExpression.current; }
500 EOF; 1102 EOF;
501 1103
502// Rule Symbol 1104// Rule ConjunctiveExpression
503ruleSymbol returns [EObject current=null] 1105ruleConjunctiveExpression returns [EObject current=null]
504@init { 1106@init {
505 enterRule(); 1107 enterRule();
506} 1108}
@@ -509,43 +1111,59 @@ ruleSymbol returns [EObject current=null]
509}: 1111}:
510 ( 1112 (
511 { 1113 {
512 newCompositeNode(grammarAccess.getSymbolAccess().getModelSymbolParserRuleCall_0()); 1114 newCompositeNode(grammarAccess.getConjunctiveExpressionAccess().getComparisonExpressionParserRuleCall_0());
513 } 1115 }
514 this_ModelSymbol_0=ruleModelSymbol 1116 this_ComparisonExpression_0=ruleComparisonExpression
515 { 1117 {
516 $current = $this_ModelSymbol_0.current; 1118 $current = $this_ComparisonExpression_0.current;
517 afterParserOrEnumRuleCall();
518 }
519 |
520 {
521 newCompositeNode(grammarAccess.getSymbolAccess().getPartialitySymbolParserRuleCall_1());
522 }
523 this_PartialitySymbol_1=rulePartialitySymbol
524 {
525 $current = $this_PartialitySymbol_1.current;
526 afterParserOrEnumRuleCall();
527 }
528 |
529 {
530 newCompositeNode(grammarAccess.getSymbolAccess().getDataSymbolParserRuleCall_2());
531 }
532 this_DataSymbol_2=ruleDataSymbol
533 {
534 $current = $this_DataSymbol_2.current;
535 afterParserOrEnumRuleCall(); 1119 afterParserOrEnumRuleCall();
536 } 1120 }
1121 (
1122 (
1123 {
1124 $current = forceCreateModelElementAndAdd(
1125 grammarAccess.getConjunctiveExpressionAccess().getConjunctionChildrenAction_1_0(),
1126 $current);
1127 }
1128 )
1129 (
1130 otherlv_2=','
1131 {
1132 newLeafNode(otherlv_2, grammarAccess.getConjunctiveExpressionAccess().getCommaKeyword_1_1_0());
1133 }
1134 (
1135 (
1136 {
1137 newCompositeNode(grammarAccess.getConjunctiveExpressionAccess().getChildrenComparisonExpressionParserRuleCall_1_1_1_0());
1138 }
1139 lv_children_3_0=ruleComparisonExpression
1140 {
1141 if ($current==null) {
1142 $current = createModelElementForParent(grammarAccess.getConjunctiveExpressionRule());
1143 }
1144 add(
1145 $current,
1146 "children",
1147 lv_children_3_0,
1148 "org.eclipse.viatra.solver.language.SolverLanguage.ComparisonExpression");
1149 afterParserOrEnumRuleCall();
1150 }
1151 )
1152 )
1153 )+
1154 )?
537 ) 1155 )
538; 1156;
539 1157
540// Entry rule entryRuleModelSymbol 1158// Entry rule entryRuleComparisonExpression
541entryRuleModelSymbol returns [EObject current=null]: 1159entryRuleComparisonExpression returns [EObject current=null]:
542 { newCompositeNode(grammarAccess.getModelSymbolRule()); } 1160 { newCompositeNode(grammarAccess.getComparisonExpressionRule()); }
543 iv_ruleModelSymbol=ruleModelSymbol 1161 iv_ruleComparisonExpression=ruleComparisonExpression
544 { $current=$iv_ruleModelSymbol.current; } 1162 { $current=$iv_ruleComparisonExpression.current; }
545 EOF; 1163 EOF;
546 1164
547// Rule ModelSymbol 1165// Rule ComparisonExpression
548ruleModelSymbol returns [EObject current=null] 1166ruleComparisonExpression returns [EObject current=null]
549@init { 1167@init {
550 enterRule(); 1168 enterRule();
551} 1169}
@@ -553,34 +1171,73 @@ ruleModelSymbol returns [EObject current=null]
553 leaveRule(); 1171 leaveRule();
554}: 1172}:
555 ( 1173 (
1174 {
1175 newCompositeNode(grammarAccess.getComparisonExpressionAccess().getAdditiveExpressionParserRuleCall_0());
1176 }
1177 this_AdditiveExpression_0=ruleAdditiveExpression
1178 {
1179 $current = $this_AdditiveExpression_0.current;
1180 afterParserOrEnumRuleCall();
1181 }
556 ( 1182 (
557 lv_name_0_0=RULE_ID 1183 (
558 { 1184 {
559 newLeafNode(lv_name_0_0, grammarAccess.getModelSymbolAccess().getNameIDTerminalRuleCall_0()); 1185 $current = forceCreateModelElementAndSet(
560 } 1186 grammarAccess.getComparisonExpressionAccess().getComparisonLeftAction_1_0(),
561 { 1187 $current);
562 if ($current==null) {
563 $current = createModelElement(grammarAccess.getModelSymbolRule());
564 } 1188 }
565 setWithLastConsumed( 1189 )
566 $current, 1190 (
567 "name", 1191 (
568 lv_name_0_0, 1192 {
569 "org.eclipse.xtext.common.Terminals.ID"); 1193 newCompositeNode(grammarAccess.getComparisonExpressionAccess().getOpComparisonOperatorEnumRuleCall_1_1_0());
570 } 1194 }
571 ) 1195 lv_op_2_0=ruleComparisonOperator
1196 {
1197 if ($current==null) {
1198 $current = createModelElementForParent(grammarAccess.getComparisonExpressionRule());
1199 }
1200 set(
1201 $current,
1202 "op",
1203 lv_op_2_0,
1204 "org.eclipse.viatra.solver.language.SolverLanguage.ComparisonOperator");
1205 afterParserOrEnumRuleCall();
1206 }
1207 )
1208 )
1209 (
1210 (
1211 {
1212 newCompositeNode(grammarAccess.getComparisonExpressionAccess().getRightAdditiveExpressionParserRuleCall_1_2_0());
1213 }
1214 lv_right_3_0=ruleAdditiveExpression
1215 {
1216 if ($current==null) {
1217 $current = createModelElementForParent(grammarAccess.getComparisonExpressionRule());
1218 }
1219 set(
1220 $current,
1221 "right",
1222 lv_right_3_0,
1223 "org.eclipse.viatra.solver.language.SolverLanguage.AdditiveExpression");
1224 afterParserOrEnumRuleCall();
1225 }
1226 )
1227 )
1228 )?
572 ) 1229 )
573; 1230;
574 1231
575// Entry rule entryRulePartialitySymbol 1232// Entry rule entryRuleAdditiveExpression
576entryRulePartialitySymbol returns [EObject current=null]: 1233entryRuleAdditiveExpression returns [EObject current=null]:
577 { newCompositeNode(grammarAccess.getPartialitySymbolRule()); } 1234 { newCompositeNode(grammarAccess.getAdditiveExpressionRule()); }
578 iv_rulePartialitySymbol=rulePartialitySymbol 1235 iv_ruleAdditiveExpression=ruleAdditiveExpression
579 { $current=$iv_rulePartialitySymbol.current; } 1236 { $current=$iv_ruleAdditiveExpression.current; }
580 EOF; 1237 EOF;
581 1238
582// Rule PartialitySymbol 1239// Rule AdditiveExpression
583rulePartialitySymbol returns [EObject current=null] 1240ruleAdditiveExpression returns [EObject current=null]
584@init { 1241@init {
585 enterRule(); 1242 enterRule();
586} 1243}
@@ -589,34 +1246,146 @@ rulePartialitySymbol returns [EObject current=null]
589}: 1246}:
590 ( 1247 (
591 { 1248 {
592 newCompositeNode(grammarAccess.getPartialitySymbolAccess().getExistSymbolParserRuleCall_0()); 1249 newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getMultiplicativeExpressionParserRuleCall_0());
593 } 1250 }
594 this_ExistSymbol_0=ruleExistSymbol 1251 this_MultiplicativeExpression_0=ruleMultiplicativeExpression
595 { 1252 {
596 $current = $this_ExistSymbol_0.current; 1253 $current = $this_MultiplicativeExpression_0.current;
597 afterParserOrEnumRuleCall(); 1254 afterParserOrEnumRuleCall();
598 } 1255 }
599 | 1256 (
1257 (
1258 {
1259 $current = forceCreateModelElementAndSet(
1260 grammarAccess.getAdditiveExpressionAccess().getBinaryExpressionLeftAction_1_0(),
1261 $current);
1262 }
1263 )
1264 (
1265 (
1266 {
1267 newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getOpAdditiveBinaryOperatorEnumRuleCall_1_1_0());
1268 }
1269 lv_op_2_0=ruleAdditiveBinaryOperator
1270 {
1271 if ($current==null) {
1272 $current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
1273 }
1274 set(
1275 $current,
1276 "op",
1277 lv_op_2_0,
1278 "org.eclipse.viatra.solver.language.SolverLanguage.AdditiveBinaryOperator");
1279 afterParserOrEnumRuleCall();
1280 }
1281 )
1282 )
1283 (
1284 (
1285 {
1286 newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getRightMultiplicativeExpressionParserRuleCall_1_2_0());
1287 }
1288 lv_right_3_0=ruleMultiplicativeExpression
1289 {
1290 if ($current==null) {
1291 $current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
1292 }
1293 set(
1294 $current,
1295 "right",
1296 lv_right_3_0,
1297 "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicativeExpression");
1298 afterParserOrEnumRuleCall();
1299 }
1300 )
1301 )
1302 )*
1303 )
1304;
1305
1306// Entry rule entryRuleMultiplicativeExpression
1307entryRuleMultiplicativeExpression returns [EObject current=null]:
1308 { newCompositeNode(grammarAccess.getMultiplicativeExpressionRule()); }
1309 iv_ruleMultiplicativeExpression=ruleMultiplicativeExpression
1310 { $current=$iv_ruleMultiplicativeExpression.current; }
1311 EOF;
1312
1313// Rule MultiplicativeExpression
1314ruleMultiplicativeExpression returns [EObject current=null]
1315@init {
1316 enterRule();
1317}
1318@after {
1319 leaveRule();
1320}:
1321 (
600 { 1322 {
601 newCompositeNode(grammarAccess.getPartialitySymbolAccess().getEqualsSymbolParserRuleCall_1()); 1323 newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getExponentialExpressionParserRuleCall_0());
602 } 1324 }
603 this_EqualsSymbol_1=ruleEqualsSymbol 1325 this_ExponentialExpression_0=ruleExponentialExpression
604 { 1326 {
605 $current = $this_EqualsSymbol_1.current; 1327 $current = $this_ExponentialExpression_0.current;
606 afterParserOrEnumRuleCall(); 1328 afterParserOrEnumRuleCall();
607 } 1329 }
1330 (
1331 (
1332 {
1333 $current = forceCreateModelElementAndSet(
1334 grammarAccess.getMultiplicativeExpressionAccess().getBinaryExpressionLeftAction_1_0(),
1335 $current);
1336 }
1337 )
1338 (
1339 (
1340 {
1341 newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getOpMultiplicativeBinaryOperatorEnumRuleCall_1_1_0());
1342 }
1343 lv_op_2_0=ruleMultiplicativeBinaryOperator
1344 {
1345 if ($current==null) {
1346 $current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule());
1347 }
1348 set(
1349 $current,
1350 "op",
1351 lv_op_2_0,
1352 "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicativeBinaryOperator");
1353 afterParserOrEnumRuleCall();
1354 }
1355 )
1356 )
1357 (
1358 (
1359 {
1360 newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getRightExponentialExpressionParserRuleCall_1_2_0());
1361 }
1362 lv_right_3_0=ruleExponentialExpression
1363 {
1364 if ($current==null) {
1365 $current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule());
1366 }
1367 set(
1368 $current,
1369 "right",
1370 lv_right_3_0,
1371 "org.eclipse.viatra.solver.language.SolverLanguage.ExponentialExpression");
1372 afterParserOrEnumRuleCall();
1373 }
1374 )
1375 )
1376 )*
608 ) 1377 )
609; 1378;
610 1379
611// Entry rule entryRuleExistSymbol 1380// Entry rule entryRuleExponentialExpression
612entryRuleExistSymbol returns [EObject current=null]: 1381entryRuleExponentialExpression returns [EObject current=null]:
613 { newCompositeNode(grammarAccess.getExistSymbolRule()); } 1382 { newCompositeNode(grammarAccess.getExponentialExpressionRule()); }
614 iv_ruleExistSymbol=ruleExistSymbol 1383 iv_ruleExponentialExpression=ruleExponentialExpression
615 { $current=$iv_ruleExistSymbol.current; } 1384 { $current=$iv_ruleExponentialExpression.current; }
616 EOF; 1385 EOF;
617 1386
618// Rule ExistSymbol 1387// Rule ExponentialExpression
619ruleExistSymbol returns [EObject current=null] 1388ruleExponentialExpression returns [EObject current=null]
620@init { 1389@init {
621 enterRule(); 1390 enterRule();
622} 1391}
@@ -624,29 +1393,73 @@ ruleExistSymbol returns [EObject current=null]
624 leaveRule(); 1393 leaveRule();
625}: 1394}:
626 ( 1395 (
627 otherlv_0='exists'
628 { 1396 {
629 newLeafNode(otherlv_0, grammarAccess.getExistSymbolAccess().getExistsKeyword_0()); 1397 newCompositeNode(grammarAccess.getExponentialExpressionAccess().getUnaryExpressionParserRuleCall_0());
1398 }
1399 this_UnaryExpression_0=ruleUnaryExpression
1400 {
1401 $current = $this_UnaryExpression_0.current;
1402 afterParserOrEnumRuleCall();
630 } 1403 }
631 ( 1404 (
632 { 1405 (
633 $current = forceCreateModelElement( 1406 {
634 grammarAccess.getExistSymbolAccess().getExistSymbolAction_1(), 1407 $current = forceCreateModelElementAndSet(
635 $current); 1408 grammarAccess.getExponentialExpressionAccess().getBinaryExpressionLeftAction_1_0(),
636 } 1409 $current);
637 ) 1410 }
1411 )
1412 (
1413 (
1414 {
1415 newCompositeNode(grammarAccess.getExponentialExpressionAccess().getOpExponentialOpEnumRuleCall_1_1_0());
1416 }
1417 lv_op_2_0=ruleExponentialOp
1418 {
1419 if ($current==null) {
1420 $current = createModelElementForParent(grammarAccess.getExponentialExpressionRule());
1421 }
1422 set(
1423 $current,
1424 "op",
1425 lv_op_2_0,
1426 "org.eclipse.viatra.solver.language.SolverLanguage.ExponentialOp");
1427 afterParserOrEnumRuleCall();
1428 }
1429 )
1430 )
1431 (
1432 (
1433 {
1434 newCompositeNode(grammarAccess.getExponentialExpressionAccess().getRightExponentialExpressionParserRuleCall_1_2_0());
1435 }
1436 lv_right_3_0=ruleExponentialExpression
1437 {
1438 if ($current==null) {
1439 $current = createModelElementForParent(grammarAccess.getExponentialExpressionRule());
1440 }
1441 set(
1442 $current,
1443 "right",
1444 lv_right_3_0,
1445 "org.eclipse.viatra.solver.language.SolverLanguage.ExponentialExpression");
1446 afterParserOrEnumRuleCall();
1447 }
1448 )
1449 )
1450 )?
638 ) 1451 )
639; 1452;
640 1453
641// Entry rule entryRuleEqualsSymbol 1454// Entry rule entryRuleUnaryExpression
642entryRuleEqualsSymbol returns [EObject current=null]: 1455entryRuleUnaryExpression returns [EObject current=null]:
643 { newCompositeNode(grammarAccess.getEqualsSymbolRule()); } 1456 { newCompositeNode(grammarAccess.getUnaryExpressionRule()); }
644 iv_ruleEqualsSymbol=ruleEqualsSymbol 1457 iv_ruleUnaryExpression=ruleUnaryExpression
645 { $current=$iv_ruleEqualsSymbol.current; } 1458 { $current=$iv_ruleUnaryExpression.current; }
646 EOF; 1459 EOF;
647 1460
648// Rule EqualsSymbol 1461// Rule UnaryExpression
649ruleEqualsSymbol returns [EObject current=null] 1462ruleUnaryExpression returns [EObject current=null]
650@init { 1463@init {
651 enterRule(); 1464 enterRule();
652} 1465}
@@ -654,29 +1467,74 @@ ruleEqualsSymbol returns [EObject current=null]
654 leaveRule(); 1467 leaveRule();
655}: 1468}:
656 ( 1469 (
657 otherlv_0='equals'
658 { 1470 {
659 newLeafNode(otherlv_0, grammarAccess.getEqualsSymbolAccess().getEqualsKeyword_0()); 1471 newCompositeNode(grammarAccess.getUnaryExpressionAccess().getAggregationExpressionParserRuleCall_0());
660 } 1472 }
1473 this_AggregationExpression_0=ruleAggregationExpression
1474 {
1475 $current = $this_AggregationExpression_0.current;
1476 afterParserOrEnumRuleCall();
1477 }
1478 |
661 ( 1479 (
662 { 1480 (
663 $current = forceCreateModelElement( 1481 {
664 grammarAccess.getEqualsSymbolAccess().getEqualsSymbolAction_1(), 1482 $current = forceCreateModelElement(
665 $current); 1483 grammarAccess.getUnaryExpressionAccess().getUnaryExpressionAction_1_0(),
666 } 1484 $current);
1485 }
1486 )
1487 (
1488 (
1489 {
1490 newCompositeNode(grammarAccess.getUnaryExpressionAccess().getOpUnaryOpEnumRuleCall_1_1_0());
1491 }
1492 lv_op_2_0=ruleUnaryOp
1493 {
1494 if ($current==null) {
1495 $current = createModelElementForParent(grammarAccess.getUnaryExpressionRule());
1496 }
1497 set(
1498 $current,
1499 "op",
1500 lv_op_2_0,
1501 "org.eclipse.viatra.solver.language.SolverLanguage.UnaryOp");
1502 afterParserOrEnumRuleCall();
1503 }
1504 )
1505 )
1506 (
1507 (
1508 {
1509 newCompositeNode(grammarAccess.getUnaryExpressionAccess().getBodyAggregationExpressionParserRuleCall_1_2_0());
1510 }
1511 lv_body_3_0=ruleAggregationExpression
1512 {
1513 if ($current==null) {
1514 $current = createModelElementForParent(grammarAccess.getUnaryExpressionRule());
1515 }
1516 set(
1517 $current,
1518 "body",
1519 lv_body_3_0,
1520 "org.eclipse.viatra.solver.language.SolverLanguage.AggregationExpression");
1521 afterParserOrEnumRuleCall();
1522 }
1523 )
1524 )
667 ) 1525 )
668 ) 1526 )
669; 1527;
670 1528
671// Entry rule entryRuleDataSymbol 1529// Entry rule entryRuleAggregationExpression
672entryRuleDataSymbol returns [EObject current=null]: 1530entryRuleAggregationExpression returns [EObject current=null]:
673 { newCompositeNode(grammarAccess.getDataSymbolRule()); } 1531 { newCompositeNode(grammarAccess.getAggregationExpressionRule()); }
674 iv_ruleDataSymbol=ruleDataSymbol 1532 iv_ruleAggregationExpression=ruleAggregationExpression
675 { $current=$iv_ruleDataSymbol.current; } 1533 { $current=$iv_ruleAggregationExpression.current; }
676 EOF; 1534 EOF;
677 1535
678// Rule DataSymbol 1536// Rule AggregationExpression
679ruleDataSymbol returns [EObject current=null] 1537ruleAggregationExpression returns [EObject current=null]
680@init { 1538@init {
681 enterRule(); 1539 enterRule();
682} 1540}
@@ -685,52 +1543,93 @@ ruleDataSymbol returns [EObject current=null]
685}: 1543}:
686 ( 1544 (
687 { 1545 {
688 newCompositeNode(grammarAccess.getDataSymbolAccess().getBooleanSymbolParserRuleCall_0()); 1546 newCompositeNode(grammarAccess.getAggregationExpressionAccess().getAtomicExpressionParserRuleCall_0());
689 } 1547 }
690 this_BooleanSymbol_0=ruleBooleanSymbol 1548 this_AtomicExpression_0=ruleAtomicExpression
691 { 1549 {
692 $current = $this_BooleanSymbol_0.current; 1550 $current = $this_AtomicExpression_0.current;
693 afterParserOrEnumRuleCall(); 1551 afterParserOrEnumRuleCall();
694 } 1552 }
695 | 1553 |
696 { 1554 {
697 newCompositeNode(grammarAccess.getDataSymbolAccess().getIntegerSymbolParserRuleCall_1()); 1555 newCompositeNode(grammarAccess.getAggregationExpressionAccess().getCountParserRuleCall_1());
698 } 1556 }
699 this_IntegerSymbol_1=ruleIntegerSymbol 1557 this_Count_1=ruleCount
700 { 1558 {
701 $current = $this_IntegerSymbol_1.current; 1559 $current = $this_Count_1.current;
702 afterParserOrEnumRuleCall(); 1560 afterParserOrEnumRuleCall();
703 } 1561 }
704 | 1562 |
705 { 1563 {
706 newCompositeNode(grammarAccess.getDataSymbolAccess().getRealSymbolParserRuleCall_2()); 1564 newCompositeNode(grammarAccess.getAggregationExpressionAccess().getAggregationParserRuleCall_2());
707 } 1565 }
708 this_RealSymbol_2=ruleRealSymbol 1566 this_Aggregation_2=ruleAggregation
709 { 1567 {
710 $current = $this_RealSymbol_2.current; 1568 $current = $this_Aggregation_2.current;
711 afterParserOrEnumRuleCall(); 1569 afterParserOrEnumRuleCall();
712 } 1570 }
713 | 1571 )
1572;
1573
1574// Entry rule entryRuleCount
1575entryRuleCount returns [EObject current=null]:
1576 { newCompositeNode(grammarAccess.getCountRule()); }
1577 iv_ruleCount=ruleCount
1578 { $current=$iv_ruleCount.current; }
1579 EOF;
1580
1581// Rule Count
1582ruleCount returns [EObject current=null]
1583@init {
1584 enterRule();
1585}
1586@after {
1587 leaveRule();
1588}:
1589 (
1590 otherlv_0='count'
714 { 1591 {
715 newCompositeNode(grammarAccess.getDataSymbolAccess().getStringSymbolParserRuleCall_3()); 1592 newLeafNode(otherlv_0, grammarAccess.getCountAccess().getCountKeyword_0());
716 } 1593 }
717 this_StringSymbol_3=ruleStringSymbol 1594 otherlv_1='{'
718 { 1595 {
719 $current = $this_StringSymbol_3.current; 1596 newLeafNode(otherlv_1, grammarAccess.getCountAccess().getLeftCurlyBracketKeyword_1());
720 afterParserOrEnumRuleCall(); 1597 }
1598 (
1599 (
1600 {
1601 newCompositeNode(grammarAccess.getCountAccess().getBodyExpressionParserRuleCall_2_0());
1602 }
1603 lv_body_2_0=ruleExpression
1604 {
1605 if ($current==null) {
1606 $current = createModelElementForParent(grammarAccess.getCountRule());
1607 }
1608 set(
1609 $current,
1610 "body",
1611 lv_body_2_0,
1612 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1613 afterParserOrEnumRuleCall();
1614 }
1615 )
1616 )
1617 otherlv_3='}'
1618 {
1619 newLeafNode(otherlv_3, grammarAccess.getCountAccess().getRightCurlyBracketKeyword_3());
721 } 1620 }
722 ) 1621 )
723; 1622;
724 1623
725// Entry rule entryRuleBooleanSymbol 1624// Entry rule entryRuleAggregation
726entryRuleBooleanSymbol returns [EObject current=null]: 1625entryRuleAggregation returns [EObject current=null]:
727 { newCompositeNode(grammarAccess.getBooleanSymbolRule()); } 1626 { newCompositeNode(grammarAccess.getAggregationRule()); }
728 iv_ruleBooleanSymbol=ruleBooleanSymbol 1627 iv_ruleAggregation=ruleAggregation
729 { $current=$iv_ruleBooleanSymbol.current; } 1628 { $current=$iv_ruleAggregation.current; }
730 EOF; 1629 EOF;
731 1630
732// Rule BooleanSymbol 1631// Rule Aggregation
733ruleBooleanSymbol returns [EObject current=null] 1632ruleAggregation returns [EObject current=null]
734@init { 1633@init {
735 enterRule(); 1634 enterRule();
736} 1635}
@@ -738,29 +1637,87 @@ ruleBooleanSymbol returns [EObject current=null]
738 leaveRule(); 1637 leaveRule();
739}: 1638}:
740 ( 1639 (
741 otherlv_0='bool' 1640 (
1641 (
1642 {
1643 newCompositeNode(grammarAccess.getAggregationAccess().getOpAggregationOpEnumRuleCall_0_0());
1644 }
1645 lv_op_0_0=ruleAggregationOp
1646 {
1647 if ($current==null) {
1648 $current = createModelElementForParent(grammarAccess.getAggregationRule());
1649 }
1650 set(
1651 $current,
1652 "op",
1653 lv_op_0_0,
1654 "org.eclipse.viatra.solver.language.SolverLanguage.AggregationOp");
1655 afterParserOrEnumRuleCall();
1656 }
1657 )
1658 )
1659 otherlv_1='{'
742 { 1660 {
743 newLeafNode(otherlv_0, grammarAccess.getBooleanSymbolAccess().getBoolKeyword_0()); 1661 newLeafNode(otherlv_1, grammarAccess.getAggregationAccess().getLeftCurlyBracketKeyword_1());
744 } 1662 }
745 ( 1663 (
746 { 1664 (
747 $current = forceCreateModelElement( 1665 {
748 grammarAccess.getBooleanSymbolAccess().getBooleanSymbolAction_1(), 1666 newCompositeNode(grammarAccess.getAggregationAccess().getBodyExpressionParserRuleCall_2_0());
749 $current); 1667 }
750 } 1668 lv_body_2_0=ruleExpression
1669 {
1670 if ($current==null) {
1671 $current = createModelElementForParent(grammarAccess.getAggregationRule());
1672 }
1673 set(
1674 $current,
1675 "body",
1676 lv_body_2_0,
1677 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1678 afterParserOrEnumRuleCall();
1679 }
1680 )
1681 )
1682 otherlv_3='|'
1683 {
1684 newLeafNode(otherlv_3, grammarAccess.getAggregationAccess().getVerticalLineKeyword_3());
1685 }
1686 (
1687 (
1688 {
1689 newCompositeNode(grammarAccess.getAggregationAccess().getConditionExpressionParserRuleCall_4_0());
1690 }
1691 lv_condition_4_0=ruleExpression
1692 {
1693 if ($current==null) {
1694 $current = createModelElementForParent(grammarAccess.getAggregationRule());
1695 }
1696 set(
1697 $current,
1698 "condition",
1699 lv_condition_4_0,
1700 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1701 afterParserOrEnumRuleCall();
1702 }
1703 )
751 ) 1704 )
1705 otherlv_5='}'
1706 {
1707 newLeafNode(otherlv_5, grammarAccess.getAggregationAccess().getRightCurlyBracketKeyword_5());
1708 }
752 ) 1709 )
753; 1710;
754 1711
755// Entry rule entryRuleIntegerSymbol 1712// Entry rule entryRuleAtomicExpression
756entryRuleIntegerSymbol returns [EObject current=null]: 1713entryRuleAtomicExpression returns [EObject current=null]:
757 { newCompositeNode(grammarAccess.getIntegerSymbolRule()); } 1714 { newCompositeNode(grammarAccess.getAtomicExpressionRule()); }
758 iv_ruleIntegerSymbol=ruleIntegerSymbol 1715 iv_ruleAtomicExpression=ruleAtomicExpression
759 { $current=$iv_ruleIntegerSymbol.current; } 1716 { $current=$iv_ruleAtomicExpression.current; }
760 EOF; 1717 EOF;
761 1718
762// Rule IntegerSymbol 1719// Rule AtomicExpression
763ruleIntegerSymbol returns [EObject current=null] 1720ruleAtomicExpression returns [EObject current=null]
764@init { 1721@init {
765 enterRule(); 1722 enterRule();
766} 1723}
@@ -768,29 +1725,94 @@ ruleIntegerSymbol returns [EObject current=null]
768 leaveRule(); 1725 leaveRule();
769}: 1726}:
770 ( 1727 (
771 otherlv_0='int' 1728 (
1729 {
1730 newCompositeNode(grammarAccess.getAtomicExpressionAccess().getReferenceParserRuleCall_0_0());
1731 }
1732 this_Reference_0=ruleReference
1733 {
1734 $current = $this_Reference_0.current;
1735 afterParserOrEnumRuleCall();
1736 }
1737 (
1738 (
1739 {
1740 $current = forceCreateModelElementAndSet(
1741 grammarAccess.getAtomicExpressionAccess().getCallFunctorAction_0_1_0(),
1742 $current);
1743 }
1744 )
1745 (
1746 ('(')=>
1747 (
1748 {
1749 newCompositeNode(grammarAccess.getAtomicExpressionAccess().getArgumentListArgumentListParserRuleCall_0_1_1_0());
1750 }
1751 lv_argumentList_2_0=ruleArgumentList
1752 {
1753 if ($current==null) {
1754 $current = createModelElementForParent(grammarAccess.getAtomicExpressionRule());
1755 }
1756 set(
1757 $current,
1758 "argumentList",
1759 lv_argumentList_2_0,
1760 "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList");
1761 afterParserOrEnumRuleCall();
1762 }
1763 )
1764 )
1765 )?
1766 )
1767 |
1768 {
1769 newCompositeNode(grammarAccess.getAtomicExpressionAccess().getIntervalParserRuleCall_1());
1770 }
1771 this_Interval_3=ruleInterval
772 { 1772 {
773 newLeafNode(otherlv_0, grammarAccess.getIntegerSymbolAccess().getIntKeyword_0()); 1773 $current = $this_Interval_3.current;
1774 afterParserOrEnumRuleCall();
774 } 1775 }
1776 |
1777 {
1778 newCompositeNode(grammarAccess.getAtomicExpressionAccess().getLiteralParserRuleCall_2());
1779 }
1780 this_Literal_4=ruleLiteral
1781 {
1782 $current = $this_Literal_4.current;
1783 afterParserOrEnumRuleCall();
1784 }
1785 |
775 ( 1786 (
1787 otherlv_5='('
776 { 1788 {
777 $current = forceCreateModelElement( 1789 newLeafNode(otherlv_5, grammarAccess.getAtomicExpressionAccess().getLeftParenthesisKeyword_3_0());
778 grammarAccess.getIntegerSymbolAccess().getIntegerSymbolAction_1(), 1790 }
779 $current); 1791 {
1792 newCompositeNode(grammarAccess.getAtomicExpressionAccess().getExpressionParserRuleCall_3_1());
1793 }
1794 this_Expression_6=ruleExpression
1795 {
1796 $current = $this_Expression_6.current;
1797 afterParserOrEnumRuleCall();
1798 }
1799 otherlv_7=')'
1800 {
1801 newLeafNode(otherlv_7, grammarAccess.getAtomicExpressionAccess().getRightParenthesisKeyword_3_2());
780 } 1802 }
781 ) 1803 )
782 ) 1804 )
783; 1805;
784 1806
785// Entry rule entryRuleRealSymbol 1807// Entry rule entryRuleCall
786entryRuleRealSymbol returns [EObject current=null]: 1808entryRuleCall returns [EObject current=null]:
787 { newCompositeNode(grammarAccess.getRealSymbolRule()); } 1809 { newCompositeNode(grammarAccess.getCallRule()); }
788 iv_ruleRealSymbol=ruleRealSymbol 1810 iv_ruleCall=ruleCall
789 { $current=$iv_ruleRealSymbol.current; } 1811 { $current=$iv_ruleCall.current; }
790 EOF; 1812 EOF;
791 1813
792// Rule RealSymbol 1814// Rule Call
793ruleRealSymbol returns [EObject current=null] 1815ruleCall returns [EObject current=null]
794@init { 1816@init {
795 enterRule(); 1817 enterRule();
796} 1818}
@@ -798,29 +1820,95 @@ ruleRealSymbol returns [EObject current=null]
798 leaveRule(); 1820 leaveRule();
799}: 1821}:
800 ( 1822 (
801 otherlv_0='real'
802 {
803 newLeafNode(otherlv_0, grammarAccess.getRealSymbolAccess().getRealKeyword_0());
804 }
805 ( 1823 (
806 { 1824 (
807 $current = forceCreateModelElement( 1825 {
808 grammarAccess.getRealSymbolAccess().getRealSymbolAction_1(), 1826 newCompositeNode(grammarAccess.getCallAccess().getFunctorReferenceParserRuleCall_0_0());
809 $current); 1827 }
810 } 1828 lv_functor_0_0=ruleReference
1829 {
1830 if ($current==null) {
1831 $current = createModelElementForParent(grammarAccess.getCallRule());
1832 }
1833 set(
1834 $current,
1835 "functor",
1836 lv_functor_0_0,
1837 "org.eclipse.viatra.solver.language.SolverLanguage.Reference");
1838 afterParserOrEnumRuleCall();
1839 }
1840 )
1841 )
1842 (
1843 (
1844 (
1845 lv_transitiveClosure_1_0=RULE_STAR
1846 {
1847 newLeafNode(lv_transitiveClosure_1_0, grammarAccess.getCallAccess().getTransitiveClosureSTARTerminalRuleCall_1_0_0());
1848 }
1849 {
1850 if ($current==null) {
1851 $current = createModelElement(grammarAccess.getCallRule());
1852 }
1853 setWithLastConsumed(
1854 $current,
1855 "transitiveClosure",
1856 true,
1857 "org.eclipse.viatra.solver.language.SolverLanguage.STAR");
1858 }
1859 )
1860 )
1861 |
1862 (
1863 (
1864 lv_reflexiveTransitiveClosure_2_0=RULE_PLUS
1865 {
1866 newLeafNode(lv_reflexiveTransitiveClosure_2_0, grammarAccess.getCallAccess().getReflexiveTransitiveClosurePLUSTerminalRuleCall_1_1_0());
1867 }
1868 {
1869 if ($current==null) {
1870 $current = createModelElement(grammarAccess.getCallRule());
1871 }
1872 setWithLastConsumed(
1873 $current,
1874 "reflexiveTransitiveClosure",
1875 true,
1876 "org.eclipse.viatra.solver.language.SolverLanguage.PLUS");
1877 }
1878 )
1879 )
1880 )?
1881 (
1882 (
1883 {
1884 newCompositeNode(grammarAccess.getCallAccess().getArgumentListArgumentListParserRuleCall_2_0());
1885 }
1886 lv_argumentList_3_0=ruleArgumentList
1887 {
1888 if ($current==null) {
1889 $current = createModelElementForParent(grammarAccess.getCallRule());
1890 }
1891 set(
1892 $current,
1893 "argumentList",
1894 lv_argumentList_3_0,
1895 "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList");
1896 afterParserOrEnumRuleCall();
1897 }
1898 )
811 ) 1899 )
812 ) 1900 )
813; 1901;
814 1902
815// Entry rule entryRuleStringSymbol 1903// Entry rule entryRuleArgumentList
816entryRuleStringSymbol returns [EObject current=null]: 1904entryRuleArgumentList returns [EObject current=null]:
817 { newCompositeNode(grammarAccess.getStringSymbolRule()); } 1905 { newCompositeNode(grammarAccess.getArgumentListRule()); }
818 iv_ruleStringSymbol=ruleStringSymbol 1906 iv_ruleArgumentList=ruleArgumentList
819 { $current=$iv_ruleStringSymbol.current; } 1907 { $current=$iv_ruleArgumentList.current; }
820 EOF; 1908 EOF;
821 1909
822// Rule StringSymbol 1910// Rule ArgumentList
823ruleStringSymbol returns [EObject current=null] 1911ruleArgumentList returns [EObject current=null]
824@init { 1912@init {
825 enterRule(); 1913 enterRule();
826} 1914}
@@ -828,29 +1916,79 @@ ruleStringSymbol returns [EObject current=null]
828 leaveRule(); 1916 leaveRule();
829}: 1917}:
830 ( 1918 (
831 otherlv_0='string'
832 {
833 newLeafNode(otherlv_0, grammarAccess.getStringSymbolAccess().getStringKeyword_0());
834 }
835 ( 1919 (
836 { 1920 {
837 $current = forceCreateModelElement( 1921 $current = forceCreateModelElement(
838 grammarAccess.getStringSymbolAccess().getStringSymbolAction_1(), 1922 grammarAccess.getArgumentListAccess().getArgumentListAction_0(),
839 $current); 1923 $current);
840 } 1924 }
841 ) 1925 )
1926 otherlv_1='('
1927 {
1928 newLeafNode(otherlv_1, grammarAccess.getArgumentListAccess().getLeftParenthesisKeyword_1());
1929 }
1930 (
1931 (
1932 (
1933 {
1934 newCompositeNode(grammarAccess.getArgumentListAccess().getArgumentsArgumentParserRuleCall_2_0_0());
1935 }
1936 lv_arguments_2_0=ruleArgument
1937 {
1938 if ($current==null) {
1939 $current = createModelElementForParent(grammarAccess.getArgumentListRule());
1940 }
1941 add(
1942 $current,
1943 "arguments",
1944 lv_arguments_2_0,
1945 "org.eclipse.viatra.solver.language.SolverLanguage.Argument");
1946 afterParserOrEnumRuleCall();
1947 }
1948 )
1949 )
1950 (
1951 otherlv_3=','
1952 {
1953 newLeafNode(otherlv_3, grammarAccess.getArgumentListAccess().getCommaKeyword_2_1_0());
1954 }
1955 (
1956 (
1957 {
1958 newCompositeNode(grammarAccess.getArgumentListAccess().getArgumentsArgumentParserRuleCall_2_1_1_0());
1959 }
1960 lv_arguments_4_0=ruleArgument
1961 {
1962 if ($current==null) {
1963 $current = createModelElementForParent(grammarAccess.getArgumentListRule());
1964 }
1965 add(
1966 $current,
1967 "arguments",
1968 lv_arguments_4_0,
1969 "org.eclipse.viatra.solver.language.SolverLanguage.Argument");
1970 afterParserOrEnumRuleCall();
1971 }
1972 )
1973 )
1974 )*
1975 )?
1976 otherlv_5=')'
1977 {
1978 newLeafNode(otherlv_5, grammarAccess.getArgumentListAccess().getRightParenthesisKeyword_3());
1979 }
842 ) 1980 )
843; 1981;
844 1982
845// Entry rule entryRuleComplexObject 1983// Entry rule entryRuleArgument
846entryRuleComplexObject returns [EObject current=null]: 1984entryRuleArgument returns [EObject current=null]:
847 { newCompositeNode(grammarAccess.getComplexObjectRule()); } 1985 { newCompositeNode(grammarAccess.getArgumentRule()); }
848 iv_ruleComplexObject=ruleComplexObject 1986 iv_ruleArgument=ruleArgument
849 { $current=$iv_ruleComplexObject.current; } 1987 { $current=$iv_ruleArgument.current; }
850 EOF; 1988 EOF;
851 1989
852// Rule ComplexObject 1990// Rule Argument
853ruleComplexObject returns [EObject current=null] 1991ruleArgument returns [EObject current=null]
854@init { 1992@init {
855 enterRule(); 1993 enterRule();
856} 1994}
@@ -859,43 +1997,52 @@ ruleComplexObject returns [EObject current=null]
859}: 1997}:
860 ( 1998 (
861 { 1999 {
862 newCompositeNode(grammarAccess.getComplexObjectAccess().getObjectParserRuleCall_0()); 2000 newCompositeNode(grammarAccess.getArgumentAccess().getExpressionArgumentParserRuleCall_0());
863 } 2001 }
864 this_Object_0=ruleObject 2002 this_ExpressionArgument_0=ruleExpressionArgument
865 { 2003 {
866 $current = $this_Object_0.current; 2004 $current = $this_ExpressionArgument_0.current;
867 afterParserOrEnumRuleCall(); 2005 afterParserOrEnumRuleCall();
868 } 2006 }
869 | 2007 |
870 { 2008 {
871 newCompositeNode(grammarAccess.getComplexObjectAccess().getAllInstancesParserRuleCall_1()); 2009 newCompositeNode(grammarAccess.getArgumentAccess().getStarArgumentParserRuleCall_1());
872 } 2010 }
873 this_AllInstances_1=ruleAllInstances 2011 this_StarArgument_1=ruleStarArgument
874 { 2012 {
875 $current = $this_AllInstances_1.current; 2013 $current = $this_StarArgument_1.current;
876 afterParserOrEnumRuleCall(); 2014 afterParserOrEnumRuleCall();
877 } 2015 }
878 | 2016 |
879 { 2017 {
880 newCompositeNode(grammarAccess.getComplexObjectAccess().getAllObjectsParserRuleCall_2()); 2018 newCompositeNode(grammarAccess.getArgumentAccess().getTypedArgumentParserRuleCall_2());
881 } 2019 }
882 this_AllObjects_2=ruleAllObjects 2020 this_TypedArgument_2=ruleTypedArgument
883 { 2021 {
884 $current = $this_AllObjects_2.current; 2022 $current = $this_TypedArgument_2.current;
2023 afterParserOrEnumRuleCall();
2024 }
2025 |
2026 {
2027 newCompositeNode(grammarAccess.getArgumentAccess().getTypedStarArgumentParserRuleCall_3());
2028 }
2029 this_TypedStarArgument_3=ruleTypedStarArgument
2030 {
2031 $current = $this_TypedStarArgument_3.current;
885 afterParserOrEnumRuleCall(); 2032 afterParserOrEnumRuleCall();
886 } 2033 }
887 ) 2034 )
888; 2035;
889 2036
890// Entry rule entryRuleObject 2037// Entry rule entryRuleExpressionArgument
891entryRuleObject returns [EObject current=null]: 2038entryRuleExpressionArgument returns [EObject current=null]:
892 { newCompositeNode(grammarAccess.getObjectRule()); } 2039 { newCompositeNode(grammarAccess.getExpressionArgumentRule()); }
893 iv_ruleObject=ruleObject 2040 iv_ruleExpressionArgument=ruleExpressionArgument
894 { $current=$iv_ruleObject.current; } 2041 { $current=$iv_ruleExpressionArgument.current; }
895 EOF; 2042 EOF;
896 2043
897// Rule Object 2044// Rule ExpressionArgument
898ruleObject returns [EObject current=null] 2045ruleExpressionArgument returns [EObject current=null]
899@init { 2046@init {
900 enterRule(); 2047 enterRule();
901} 2048}
@@ -903,44 +2050,35 @@ ruleObject returns [EObject current=null]
903 leaveRule(); 2050 leaveRule();
904}: 2051}:
905 ( 2052 (
906 { 2053 (
907 newCompositeNode(grammarAccess.getObjectAccess().getNamedObjectParserRuleCall_0()); 2054 {
908 } 2055 newCompositeNode(grammarAccess.getExpressionArgumentAccess().getBodyComparisonExpressionParserRuleCall_0());
909 this_NamedObject_0=ruleNamedObject 2056 }
910 { 2057 lv_body_0_0=ruleComparisonExpression
911 $current = $this_NamedObject_0.current; 2058 {
912 afterParserOrEnumRuleCall(); 2059 if ($current==null) {
913 } 2060 $current = createModelElementForParent(grammarAccess.getExpressionArgumentRule());
914 | 2061 }
915 { 2062 set(
916 newCompositeNode(grammarAccess.getObjectAccess().getUnnamedObjectParserRuleCall_1()); 2063 $current,
917 } 2064 "body",
918 this_UnnamedObject_1=ruleUnnamedObject 2065 lv_body_0_0,
919 { 2066 "org.eclipse.viatra.solver.language.SolverLanguage.ComparisonExpression");
920 $current = $this_UnnamedObject_1.current; 2067 afterParserOrEnumRuleCall();
921 afterParserOrEnumRuleCall(); 2068 }
922 } 2069 )
923 |
924 {
925 newCompositeNode(grammarAccess.getObjectAccess().getDataObjectParserRuleCall_2());
926 }
927 this_DataObject_2=ruleDataObject
928 {
929 $current = $this_DataObject_2.current;
930 afterParserOrEnumRuleCall();
931 }
932 ) 2070 )
933; 2071;
934 2072
935// Entry rule entryRuleNamedObject 2073// Entry rule entryRuleStarArgument
936entryRuleNamedObject returns [EObject current=null]: 2074entryRuleStarArgument returns [EObject current=null]:
937 { newCompositeNode(grammarAccess.getNamedObjectRule()); } 2075 { newCompositeNode(grammarAccess.getStarArgumentRule()); }
938 iv_ruleNamedObject=ruleNamedObject 2076 iv_ruleStarArgument=ruleStarArgument
939 { $current=$iv_ruleNamedObject.current; } 2077 { $current=$iv_ruleStarArgument.current; }
940 EOF; 2078 EOF;
941 2079
942// Rule NamedObject 2080// Rule StarArgument
943ruleNamedObject returns [EObject current=null] 2081ruleStarArgument returns [EObject current=null]
944@init { 2082@init {
945 enterRule(); 2083 enterRule();
946} 2084}
@@ -948,44 +2086,119 @@ ruleNamedObject returns [EObject current=null]
948 leaveRule(); 2086 leaveRule();
949}: 2087}:
950 ( 2088 (
951 otherlv_0='\'' 2089 (
2090 {
2091 $current = forceCreateModelElement(
2092 grammarAccess.getStarArgumentAccess().getStarArgumentAction_0(),
2093 $current);
2094 }
2095 )
2096 otherlv_1='*'
952 { 2097 {
953 newLeafNode(otherlv_0, grammarAccess.getNamedObjectAccess().getApostropheKeyword_0()); 2098 newLeafNode(otherlv_1, grammarAccess.getStarArgumentAccess().getAsteriskKeyword_1());
954 } 2099 }
2100 )
2101;
2102
2103// Entry rule entryRuleTypedArgument
2104entryRuleTypedArgument returns [EObject current=null]:
2105 { newCompositeNode(grammarAccess.getTypedArgumentRule()); }
2106 iv_ruleTypedArgument=ruleTypedArgument
2107 { $current=$iv_ruleTypedArgument.current; }
2108 EOF;
2109
2110// Rule TypedArgument
2111ruleTypedArgument returns [EObject current=null]
2112@init {
2113 enterRule();
2114}
2115@after {
2116 leaveRule();
2117}:
2118 (
955 ( 2119 (
956 ( 2120 (
957 lv_name_1_0=RULE_ID
958 { 2121 {
959 newLeafNode(lv_name_1_0, grammarAccess.getNamedObjectAccess().getNameIDTerminalRuleCall_1_0()); 2122 if ($current==null) {
2123 $current = createModelElement(grammarAccess.getTypedArgumentRule());
2124 }
960 } 2125 }
961 { 2126 {
2127 newCompositeNode(grammarAccess.getTypedArgumentAccess().getTypeNamedElementCrossReference_0_0());
2128 }
2129 ruleQualifiedName
2130 {
2131 afterParserOrEnumRuleCall();
2132 }
2133 )
2134 )
2135 (
2136 (
2137 {
962 if ($current==null) { 2138 if ($current==null) {
963 $current = createModelElement(grammarAccess.getNamedObjectRule()); 2139 $current = createModelElement(grammarAccess.getTypedArgumentRule());
964 } 2140 }
965 setWithLastConsumed( 2141 }
966 $current, 2142 {
967 "name", 2143 newCompositeNode(grammarAccess.getTypedArgumentAccess().getVariableNamedElementCrossReference_1_0());
968 lv_name_1_0, 2144 }
969 "org.eclipse.xtext.common.Terminals.ID"); 2145 ruleQualifiedName
2146 {
2147 afterParserOrEnumRuleCall();
970 } 2148 }
971 ) 2149 )
972 ) 2150 )
973 otherlv_2='\'' 2151 )
2152;
2153
2154// Entry rule entryRuleTypedStarArgument
2155entryRuleTypedStarArgument returns [EObject current=null]:
2156 { newCompositeNode(grammarAccess.getTypedStarArgumentRule()); }
2157 iv_ruleTypedStarArgument=ruleTypedStarArgument
2158 { $current=$iv_ruleTypedStarArgument.current; }
2159 EOF;
2160
2161// Rule TypedStarArgument
2162ruleTypedStarArgument returns [EObject current=null]
2163@init {
2164 enterRule();
2165}
2166@after {
2167 leaveRule();
2168}:
2169 (
2170 (
2171 (
2172 {
2173 if ($current==null) {
2174 $current = createModelElement(grammarAccess.getTypedStarArgumentRule());
2175 }
2176 }
2177 {
2178 newCompositeNode(grammarAccess.getTypedStarArgumentAccess().getTypeNamedElementCrossReference_0_0());
2179 }
2180 ruleQualifiedName
2181 {
2182 afterParserOrEnumRuleCall();
2183 }
2184 )
2185 )
2186 otherlv_1='*'
974 { 2187 {
975 newLeafNode(otherlv_2, grammarAccess.getNamedObjectAccess().getApostropheKeyword_2()); 2188 newLeafNode(otherlv_1, grammarAccess.getTypedStarArgumentAccess().getAsteriskKeyword_1());
976 } 2189 }
977 ) 2190 )
978; 2191;
979 2192
980// Entry rule entryRuleUnnamedObject 2193// Entry rule entryRuleReference
981entryRuleUnnamedObject returns [EObject current=null]: 2194entryRuleReference returns [EObject current=null]:
982 { newCompositeNode(grammarAccess.getUnnamedObjectRule()); } 2195 { newCompositeNode(grammarAccess.getReferenceRule()); }
983 iv_ruleUnnamedObject=ruleUnnamedObject 2196 iv_ruleReference=ruleReference
984 { $current=$iv_ruleUnnamedObject.current; } 2197 { $current=$iv_ruleReference.current; }
985 EOF; 2198 EOF;
986 2199
987// Rule UnnamedObject 2200// Rule Reference
988ruleUnnamedObject returns [EObject current=null] 2201ruleReference returns [EObject current=null]
989@init { 2202@init {
990 enterRule(); 2203 enterRule();
991} 2204}
@@ -994,33 +2207,31 @@ ruleUnnamedObject returns [EObject current=null]
994}: 2207}:
995 ( 2208 (
996 ( 2209 (
997 lv_name_0_0=RULE_ID
998 {
999 newLeafNode(lv_name_0_0, grammarAccess.getUnnamedObjectAccess().getNameIDTerminalRuleCall_0());
1000 }
1001 { 2210 {
1002 if ($current==null) { 2211 if ($current==null) {
1003 $current = createModelElement(grammarAccess.getUnnamedObjectRule()); 2212 $current = createModelElement(grammarAccess.getReferenceRule());
1004 } 2213 }
1005 setWithLastConsumed( 2214 }
1006 $current, 2215 {
1007 "name", 2216 newCompositeNode(grammarAccess.getReferenceAccess().getReferredNamedElementCrossReference_0());
1008 lv_name_0_0, 2217 }
1009 "org.eclipse.xtext.common.Terminals.ID"); 2218 ruleQualifiedName
2219 {
2220 afterParserOrEnumRuleCall();
1010 } 2221 }
1011 ) 2222 )
1012 ) 2223 )
1013; 2224;
1014 2225
1015// Entry rule entryRuleDataObject 2226// Entry rule entryRuleInterval
1016entryRuleDataObject returns [EObject current=null]: 2227entryRuleInterval returns [EObject current=null]:
1017 { newCompositeNode(grammarAccess.getDataObjectRule()); } 2228 { newCompositeNode(grammarAccess.getIntervalRule()); }
1018 iv_ruleDataObject=ruleDataObject 2229 iv_ruleInterval=ruleInterval
1019 { $current=$iv_ruleDataObject.current; } 2230 { $current=$iv_ruleInterval.current; }
1020 EOF; 2231 EOF;
1021 2232
1022// Rule DataObject 2233// Rule Interval
1023ruleDataObject returns [EObject current=null] 2234ruleInterval returns [EObject current=null]
1024@init { 2235@init {
1025 enterRule(); 2236 enterRule();
1026} 2237}
@@ -1028,53 +2239,131 @@ ruleDataObject returns [EObject current=null]
1028 leaveRule(); 2239 leaveRule();
1029}: 2240}:
1030 ( 2241 (
2242 otherlv_0='['
2243 {
2244 newLeafNode(otherlv_0, grammarAccess.getIntervalAccess().getLeftSquareBracketKeyword_0());
2245 }
2246 (
2247 (
2248 {
2249 newCompositeNode(grammarAccess.getIntervalAccess().getLowerBoundExpressionParserRuleCall_1_0());
2250 }
2251 lv_lowerBound_1_0=ruleExpression
2252 {
2253 if ($current==null) {
2254 $current = createModelElementForParent(grammarAccess.getIntervalRule());
2255 }
2256 set(
2257 $current,
2258 "lowerBound",
2259 lv_lowerBound_1_0,
2260 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
2261 afterParserOrEnumRuleCall();
2262 }
2263 )
2264 )
2265 otherlv_2='..'
1031 { 2266 {
1032 newCompositeNode(grammarAccess.getDataObjectAccess().getBooleanObjectParserRuleCall_0()); 2267 newLeafNode(otherlv_2, grammarAccess.getIntervalAccess().getFullStopFullStopKeyword_2());
1033 } 2268 }
1034 this_BooleanObject_0=ruleBooleanObject 2269 (
2270 (
2271 {
2272 newCompositeNode(grammarAccess.getIntervalAccess().getUpperBoundExpressionParserRuleCall_3_0());
2273 }
2274 lv_upperBound_3_0=ruleExpression
2275 {
2276 if ($current==null) {
2277 $current = createModelElementForParent(grammarAccess.getIntervalRule());
2278 }
2279 set(
2280 $current,
2281 "upperBound",
2282 lv_upperBound_3_0,
2283 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
2284 afterParserOrEnumRuleCall();
2285 }
2286 )
2287 )
2288 otherlv_4=']'
1035 { 2289 {
1036 $current = $this_BooleanObject_0.current; 2290 newLeafNode(otherlv_4, grammarAccess.getIntervalAccess().getRightSquareBracketKeyword_4());
2291 }
2292 )
2293;
2294
2295// Entry rule entryRuleLiteral
2296entryRuleLiteral returns [EObject current=null]:
2297 { newCompositeNode(grammarAccess.getLiteralRule()); }
2298 iv_ruleLiteral=ruleLiteral
2299 { $current=$iv_ruleLiteral.current; }
2300 EOF;
2301
2302// Rule Literal
2303ruleLiteral returns [EObject current=null]
2304@init {
2305 enterRule();
2306}
2307@after {
2308 leaveRule();
2309}:
2310 (
2311 {
2312 newCompositeNode(grammarAccess.getLiteralAccess().getLogicLiteralParserRuleCall_0());
2313 }
2314 this_LogicLiteral_0=ruleLogicLiteral
2315 {
2316 $current = $this_LogicLiteral_0.current;
2317 afterParserOrEnumRuleCall();
2318 }
2319 |
2320 {
2321 newCompositeNode(grammarAccess.getLiteralAccess().getNumericLiteralParserRuleCall_1());
2322 }
2323 this_NumericLiteral_1=ruleNumericLiteral
2324 {
2325 $current = $this_NumericLiteral_1.current;
1037 afterParserOrEnumRuleCall(); 2326 afterParserOrEnumRuleCall();
1038 } 2327 }
1039 | 2328 |
1040 { 2329 {
1041 newCompositeNode(grammarAccess.getDataObjectAccess().getIntObjectParserRuleCall_1()); 2330 newCompositeNode(grammarAccess.getLiteralAccess().getInfinityLiteralParserRuleCall_2());
1042 } 2331 }
1043 this_IntObject_1=ruleIntObject 2332 this_InfinityLiteral_2=ruleInfinityLiteral
1044 { 2333 {
1045 $current = $this_IntObject_1.current; 2334 $current = $this_InfinityLiteral_2.current;
1046 afterParserOrEnumRuleCall(); 2335 afterParserOrEnumRuleCall();
1047 } 2336 }
1048 | 2337 |
1049 { 2338 {
1050 newCompositeNode(grammarAccess.getDataObjectAccess().getRealObjectParserRuleCall_2()); 2339 newCompositeNode(grammarAccess.getLiteralAccess().getEmptyIntervalLiteralParserRuleCall_3());
1051 } 2340 }
1052 this_RealObject_2=ruleRealObject 2341 this_EmptyIntervalLiteral_3=ruleEmptyIntervalLiteral
1053 { 2342 {
1054 $current = $this_RealObject_2.current; 2343 $current = $this_EmptyIntervalLiteral_3.current;
1055 afterParserOrEnumRuleCall(); 2344 afterParserOrEnumRuleCall();
1056 } 2345 }
1057 | 2346 |
1058 { 2347 {
1059 newCompositeNode(grammarAccess.getDataObjectAccess().getStringObjectParserRuleCall_3()); 2348 newCompositeNode(grammarAccess.getLiteralAccess().getStringLiteralParserRuleCall_4());
1060 } 2349 }
1061 this_StringObject_3=ruleStringObject 2350 this_StringLiteral_4=ruleStringLiteral
1062 { 2351 {
1063 $current = $this_StringObject_3.current; 2352 $current = $this_StringLiteral_4.current;
1064 afterParserOrEnumRuleCall(); 2353 afterParserOrEnumRuleCall();
1065 } 2354 }
1066 ) 2355 )
1067; 2356;
1068 2357
1069// Entry rule entryRuleBooleanObject 2358// Entry rule entryRuleLogicLiteral
1070entryRuleBooleanObject returns [EObject current=null]: 2359entryRuleLogicLiteral returns [EObject current=null]:
1071 { newCompositeNode(grammarAccess.getBooleanObjectRule()); } 2360 { newCompositeNode(grammarAccess.getLogicLiteralRule()); }
1072 iv_ruleBooleanObject=ruleBooleanObject 2361 iv_ruleLogicLiteral=ruleLogicLiteral
1073 { $current=$iv_ruleBooleanObject.current; } 2362 { $current=$iv_ruleLogicLiteral.current; }
1074 EOF; 2363 EOF;
1075 2364
1076// Rule BooleanObject 2365// Rule LogicLiteral
1077ruleBooleanObject returns [EObject current=null] 2366ruleLogicLiteral returns [EObject current=null]
1078@init { 2367@init {
1079 enterRule(); 2368 enterRule();
1080} 2369}
@@ -1084,33 +2373,33 @@ ruleBooleanObject returns [EObject current=null]
1084 ( 2373 (
1085 ( 2374 (
1086 { 2375 {
1087 newCompositeNode(grammarAccess.getBooleanObjectAccess().getValueBooleanValueParserRuleCall_0()); 2376 newCompositeNode(grammarAccess.getLogicLiteralAccess().getValueLogicValueEnumRuleCall_0());
1088 } 2377 }
1089 lv_value_0_0=ruleBooleanValue 2378 lv_value_0_0=ruleLogicValue
1090 { 2379 {
1091 if ($current==null) { 2380 if ($current==null) {
1092 $current = createModelElementForParent(grammarAccess.getBooleanObjectRule()); 2381 $current = createModelElementForParent(grammarAccess.getLogicLiteralRule());
1093 } 2382 }
1094 set( 2383 set(
1095 $current, 2384 $current,
1096 "value", 2385 "value",
1097 lv_value_0_0, 2386 lv_value_0_0,
1098 "org.eclipse.viatra.solver.language.SolverLanguage.BooleanValue"); 2387 "org.eclipse.viatra.solver.language.SolverLanguage.LogicValue");
1099 afterParserOrEnumRuleCall(); 2388 afterParserOrEnumRuleCall();
1100 } 2389 }
1101 ) 2390 )
1102 ) 2391 )
1103; 2392;
1104 2393
1105// Entry rule entryRuleIntObject 2394// Entry rule entryRuleNumericLiteral
1106entryRuleIntObject returns [EObject current=null]: 2395entryRuleNumericLiteral returns [EObject current=null]:
1107 { newCompositeNode(grammarAccess.getIntObjectRule()); } 2396 { newCompositeNode(grammarAccess.getNumericLiteralRule()); }
1108 iv_ruleIntObject=ruleIntObject 2397 iv_ruleNumericLiteral=ruleNumericLiteral
1109 { $current=$iv_ruleIntObject.current; } 2398 { $current=$iv_ruleNumericLiteral.current; }
1110 EOF; 2399 EOF;
1111 2400
1112// Rule IntObject 2401// Rule NumericLiteral
1113ruleIntObject returns [EObject current=null] 2402ruleNumericLiteral returns [EObject current=null]
1114@init { 2403@init {
1115 enterRule(); 2404 enterRule();
1116} 2405}
@@ -1120,33 +2409,33 @@ ruleIntObject returns [EObject current=null]
1120 ( 2409 (
1121 ( 2410 (
1122 { 2411 {
1123 newCompositeNode(grammarAccess.getIntObjectAccess().getValueINTLiteralParserRuleCall_0()); 2412 newCompositeNode(grammarAccess.getNumericLiteralAccess().getValueRealParserRuleCall_0());
1124 } 2413 }
1125 lv_value_0_0=ruleINTLiteral 2414 lv_value_0_0=ruleReal
1126 { 2415 {
1127 if ($current==null) { 2416 if ($current==null) {
1128 $current = createModelElementForParent(grammarAccess.getIntObjectRule()); 2417 $current = createModelElementForParent(grammarAccess.getNumericLiteralRule());
1129 } 2418 }
1130 set( 2419 set(
1131 $current, 2420 $current,
1132 "value", 2421 "value",
1133 lv_value_0_0, 2422 lv_value_0_0,
1134 "org.eclipse.viatra.solver.language.SolverLanguage.INTLiteral"); 2423 "org.eclipse.viatra.solver.language.SolverLanguage.Real");
1135 afterParserOrEnumRuleCall(); 2424 afterParserOrEnumRuleCall();
1136 } 2425 }
1137 ) 2426 )
1138 ) 2427 )
1139; 2428;
1140 2429
1141// Entry rule entryRuleRealObject 2430// Entry rule entryRuleInfinityLiteral
1142entryRuleRealObject returns [EObject current=null]: 2431entryRuleInfinityLiteral returns [EObject current=null]:
1143 { newCompositeNode(grammarAccess.getRealObjectRule()); } 2432 { newCompositeNode(grammarAccess.getInfinityLiteralRule()); }
1144 iv_ruleRealObject=ruleRealObject 2433 iv_ruleInfinityLiteral=ruleInfinityLiteral
1145 { $current=$iv_ruleRealObject.current; } 2434 { $current=$iv_ruleInfinityLiteral.current; }
1146 EOF; 2435 EOF;
1147 2436
1148// Rule RealObject 2437// Rule InfinityLiteral
1149ruleRealObject returns [EObject current=null] 2438ruleInfinityLiteral returns [EObject current=null]
1150@init { 2439@init {
1151 enterRule(); 2440 enterRule();
1152} 2441}
@@ -1156,33 +2445,57 @@ ruleRealObject returns [EObject current=null]
1156 ( 2445 (
1157 ( 2446 (
1158 { 2447 {
1159 newCompositeNode(grammarAccess.getRealObjectAccess().getValueREALLiteralParserRuleCall_0()); 2448 $current = forceCreateModelElement(
2449 grammarAccess.getInfinityLiteralAccess().getInfinityLiteralAction_0(),
2450 $current);
1160 } 2451 }
1161 lv_value_0_0=ruleREALLiteral 2452 )
2453 otherlv_1='inf'
2454 {
2455 newLeafNode(otherlv_1, grammarAccess.getInfinityLiteralAccess().getInfKeyword_1());
2456 }
2457 )
2458;
2459
2460// Entry rule entryRuleEmptyIntervalLiteral
2461entryRuleEmptyIntervalLiteral returns [EObject current=null]:
2462 { newCompositeNode(grammarAccess.getEmptyIntervalLiteralRule()); }
2463 iv_ruleEmptyIntervalLiteral=ruleEmptyIntervalLiteral
2464 { $current=$iv_ruleEmptyIntervalLiteral.current; }
2465 EOF;
2466
2467// Rule EmptyIntervalLiteral
2468ruleEmptyIntervalLiteral returns [EObject current=null]
2469@init {
2470 enterRule();
2471}
2472@after {
2473 leaveRule();
2474}:
2475 (
2476 (
1162 { 2477 {
1163 if ($current==null) { 2478 $current = forceCreateModelElement(
1164 $current = createModelElementForParent(grammarAccess.getRealObjectRule()); 2479 grammarAccess.getEmptyIntervalLiteralAccess().getEmptyIntervalLiteralAction_0(),
1165 } 2480 $current);
1166 set(
1167 $current,
1168 "value",
1169 lv_value_0_0,
1170 "org.eclipse.viatra.solver.language.SolverLanguage.REALLiteral");
1171 afterParserOrEnumRuleCall();
1172 } 2481 }
1173 ) 2482 )
2483 otherlv_1='empty'
2484 {
2485 newLeafNode(otherlv_1, grammarAccess.getEmptyIntervalLiteralAccess().getEmptyKeyword_1());
2486 }
1174 ) 2487 )
1175; 2488;
1176 2489
1177// Entry rule entryRuleStringObject 2490// Entry rule entryRuleStringLiteral
1178entryRuleStringObject returns [EObject current=null]: 2491entryRuleStringLiteral returns [EObject current=null]:
1179 { newCompositeNode(grammarAccess.getStringObjectRule()); } 2492 { newCompositeNode(grammarAccess.getStringLiteralRule()); }
1180 iv_ruleStringObject=ruleStringObject 2493 iv_ruleStringLiteral=ruleStringLiteral
1181 { $current=$iv_ruleStringObject.current; } 2494 { $current=$iv_ruleStringLiteral.current; }
1182 EOF; 2495 EOF;
1183 2496
1184// Rule StringObject 2497// Rule StringLiteral
1185ruleStringObject returns [EObject current=null] 2498ruleStringLiteral returns [EObject current=null]
1186@init { 2499@init {
1187 enterRule(); 2500 enterRule();
1188} 2501}
@@ -1193,11 +2506,11 @@ ruleStringObject returns [EObject current=null]
1193 ( 2506 (
1194 lv_value_0_0=RULE_STRING 2507 lv_value_0_0=RULE_STRING
1195 { 2508 {
1196 newLeafNode(lv_value_0_0, grammarAccess.getStringObjectAccess().getValueSTRINGTerminalRuleCall_0()); 2509 newLeafNode(lv_value_0_0, grammarAccess.getStringLiteralAccess().getValueSTRINGTerminalRuleCall_0());
1197 } 2510 }
1198 { 2511 {
1199 if ($current==null) { 2512 if ($current==null) {
1200 $current = createModelElement(grammarAccess.getStringObjectRule()); 2513 $current = createModelElement(grammarAccess.getStringLiteralRule());
1201 } 2514 }
1202 setWithLastConsumed( 2515 setWithLastConsumed(
1203 $current, 2516 $current,
@@ -1209,15 +2522,15 @@ ruleStringObject returns [EObject current=null]
1209 ) 2522 )
1210; 2523;
1211 2524
1212// Entry rule entryRulePredicate 2525// Entry rule entryRuleClassDefinition
1213entryRulePredicate returns [EObject current=null]: 2526entryRuleClassDefinition returns [EObject current=null]:
1214 { newCompositeNode(grammarAccess.getPredicateRule()); } 2527 { newCompositeNode(grammarAccess.getClassDefinitionRule()); }
1215 iv_rulePredicate=rulePredicate 2528 iv_ruleClassDefinition=ruleClassDefinition
1216 { $current=$iv_rulePredicate.current; } 2529 { $current=$iv_ruleClassDefinition.current; }
1217 EOF; 2530 EOF;
1218 2531
1219// Rule Predicate 2532// Rule ClassDefinition
1220rulePredicate returns [EObject current=null] 2533ruleClassDefinition returns [EObject current=null]
1221@init { 2534@init {
1222 enterRule(); 2535 enterRule();
1223} 2536}
@@ -1227,166 +2540,123 @@ rulePredicate returns [EObject current=null]
1227 ( 2540 (
1228 ( 2541 (
1229 ( 2542 (
1230 lv_isError_0_0='error' 2543 lv_abstract_0_0='abstract'
1231 { 2544 {
1232 newLeafNode(lv_isError_0_0, grammarAccess.getPredicateAccess().getIsErrorErrorKeyword_0_0()); 2545 newLeafNode(lv_abstract_0_0, grammarAccess.getClassDefinitionAccess().getAbstractAbstractKeyword_0_0());
1233 } 2546 }
1234 { 2547 {
1235 if ($current==null) { 2548 if ($current==null) {
1236 $current = createModelElement(grammarAccess.getPredicateRule()); 2549 $current = createModelElement(grammarAccess.getClassDefinitionRule());
1237 } 2550 }
1238 setWithLastConsumed($current, "isError", true, "error"); 2551 setWithLastConsumed($current, "abstract", true, "abstract");
1239 } 2552 }
1240 ) 2553 )
1241 )? 2554 )?
2555 otherlv_1='class'
2556 {
2557 newLeafNode(otherlv_1, grammarAccess.getClassDefinitionAccess().getClassKeyword_1());
2558 }
1242 ( 2559 (
1243 ( 2560 (
2561 lv_name_2_0=RULE_ID
1244 { 2562 {
1245 newCompositeNode(grammarAccess.getPredicateAccess().getSymbolModelSymbolParserRuleCall_1_0()); 2563 newLeafNode(lv_name_2_0, grammarAccess.getClassDefinitionAccess().getNameIDTerminalRuleCall_2_0());
1246 } 2564 }
1247 lv_symbol_1_0=ruleModelSymbol
1248 { 2565 {
1249 if ($current==null) { 2566 if ($current==null) {
1250 $current = createModelElementForParent(grammarAccess.getPredicateRule()); 2567 $current = createModelElement(grammarAccess.getClassDefinitionRule());
1251 } 2568 }
1252 set( 2569 setWithLastConsumed(
1253 $current, 2570 $current,
1254 "symbol", 2571 "name",
1255 lv_symbol_1_0, 2572 lv_name_2_0,
1256 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol"); 2573 "org.eclipse.xtext.common.Terminals.ID");
1257 afterParserOrEnumRuleCall();
1258 } 2574 }
1259 ) 2575 )
1260 ) 2576 )
1261 ( 2577 (
1262 otherlv_2='(' 2578 otherlv_3='extends'
1263 { 2579 {
1264 newLeafNode(otherlv_2, grammarAccess.getPredicateAccess().getLeftParenthesisKeyword_2_0()); 2580 newLeafNode(otherlv_3, grammarAccess.getClassDefinitionAccess().getExtendsKeyword_3_0());
1265 } 2581 }
1266 ( 2582 (
1267 ( 2583 (
1268 ( 2584 {
1269 { 2585 if ($current==null) {
1270 newCompositeNode(grammarAccess.getPredicateAccess().getParametersParameterParserRuleCall_2_1_0_0()); 2586 $current = createModelElement(grammarAccess.getClassDefinitionRule());
1271 }
1272 lv_parameters_3_0=ruleParameter
1273 {
1274 if ($current==null) {
1275 $current = createModelElementForParent(grammarAccess.getPredicateRule());
1276 }
1277 add(
1278 $current,
1279 "parameters",
1280 lv_parameters_3_0,
1281 "org.eclipse.viatra.solver.language.SolverLanguage.Parameter");
1282 afterParserOrEnumRuleCall();
1283 } 2587 }
1284 ) 2588 }
1285 )
1286 (
1287 otherlv_4=','
1288 { 2589 {
1289 newLeafNode(otherlv_4, grammarAccess.getPredicateAccess().getCommaKeyword_2_1_1_0()); 2590 newCompositeNode(grammarAccess.getClassDefinitionAccess().getSuperclassesNamedElementCrossReference_3_1_0());
1290 } 2591 }
1291 ( 2592 ruleQualifiedName
1292 ( 2593 {
1293 { 2594 afterParserOrEnumRuleCall();
1294 newCompositeNode(grammarAccess.getPredicateAccess().getParametersParameterParserRuleCall_2_1_1_1_0()); 2595 }
1295 } 2596 )
1296 lv_parameters_5_0=ruleParameter 2597 )
1297 {
1298 if ($current==null) {
1299 $current = createModelElementForParent(grammarAccess.getPredicateRule());
1300 }
1301 add(
1302 $current,
1303 "parameters",
1304 lv_parameters_5_0,
1305 "org.eclipse.viatra.solver.language.SolverLanguage.Parameter");
1306 afterParserOrEnumRuleCall();
1307 }
1308 )
1309 )
1310 )*
1311 )?
1312 otherlv_6=')'
1313 {
1314 newLeafNode(otherlv_6, grammarAccess.getPredicateAccess().getRightParenthesisKeyword_2_2());
1315 }
1316 )?
1317 otherlv_7=':-'
1318 {
1319 newLeafNode(otherlv_7, grammarAccess.getPredicateAccess().getColonHyphenMinusKeyword_3());
1320 }
1321 (
1322 otherlv_8='false'
1323 {
1324 newLeafNode(otherlv_8, grammarAccess.getPredicateAccess().getFalseKeyword_4_0());
1325 }
1326 |
1327 ( 2598 (
2599 otherlv_5=','
2600 {
2601 newLeafNode(otherlv_5, grammarAccess.getClassDefinitionAccess().getCommaKeyword_3_2_0());
2602 }
1328 ( 2603 (
1329 ( 2604 (
1330 { 2605 {
1331 newCompositeNode(grammarAccess.getPredicateAccess().getBodiesPatternBodyParserRuleCall_4_1_0_0());
1332 }
1333 lv_bodies_9_0=rulePatternBody
1334 {
1335 if ($current==null) { 2606 if ($current==null) {
1336 $current = createModelElementForParent(grammarAccess.getPredicateRule()); 2607 $current = createModelElement(grammarAccess.getClassDefinitionRule());
1337 } 2608 }
1338 add( 2609 }
1339 $current, 2610 {
1340 "bodies", 2611 newCompositeNode(grammarAccess.getClassDefinitionAccess().getSuperclassesNamedElementCrossReference_3_2_1_0());
1341 lv_bodies_9_0, 2612 }
1342 "org.eclipse.viatra.solver.language.SolverLanguage.PatternBody"); 2613 ruleQualifiedName
2614 {
1343 afterParserOrEnumRuleCall(); 2615 afterParserOrEnumRuleCall();
1344 } 2616 }
1345 ) 2617 )
1346 ) 2618 )
1347 ( 2619 )*
1348 otherlv_10='|' 2620 )?
1349 { 2621 otherlv_7='{'
1350 newLeafNode(otherlv_10, grammarAccess.getPredicateAccess().getVerticalLineKeyword_4_1_1_0()); 2622 {
2623 newLeafNode(otherlv_7, grammarAccess.getClassDefinitionAccess().getLeftCurlyBracketKeyword_4());
2624 }
2625 (
2626 (
2627 {
2628 newCompositeNode(grammarAccess.getClassDefinitionAccess().getMembersMemberDefinitionParserRuleCall_5_0());
2629 }
2630 lv_members_8_0=ruleMemberDefinition
2631 {
2632 if ($current==null) {
2633 $current = createModelElementForParent(grammarAccess.getClassDefinitionRule());
1351 } 2634 }
1352 ( 2635 add(
1353 ( 2636 $current,
1354 { 2637 "members",
1355 newCompositeNode(grammarAccess.getPredicateAccess().getBodiesPatternBodyParserRuleCall_4_1_1_1_0()); 2638 lv_members_8_0,
1356 } 2639 "org.eclipse.viatra.solver.language.SolverLanguage.MemberDefinition");
1357 lv_bodies_11_0=rulePatternBody 2640 afterParserOrEnumRuleCall();
1358 { 2641 }
1359 if ($current==null) {
1360 $current = createModelElementForParent(grammarAccess.getPredicateRule());
1361 }
1362 add(
1363 $current,
1364 "bodies",
1365 lv_bodies_11_0,
1366 "org.eclipse.viatra.solver.language.SolverLanguage.PatternBody");
1367 afterParserOrEnumRuleCall();
1368 }
1369 )
1370 )
1371 )*
1372 ) 2642 )
1373 ) 2643 )*
1374 otherlv_12='.' 2644 otherlv_9='}'
1375 { 2645 {
1376 newLeafNode(otherlv_12, grammarAccess.getPredicateAccess().getFullStopKeyword_5()); 2646 newLeafNode(otherlv_9, grammarAccess.getClassDefinitionAccess().getRightCurlyBracketKeyword_6());
1377 } 2647 }
1378 ) 2648 )
1379; 2649;
1380 2650
1381// Entry rule entryRuleParameter 2651// Entry rule entryRuleMemberDefinition
1382entryRuleParameter returns [EObject current=null]: 2652entryRuleMemberDefinition returns [EObject current=null]:
1383 { newCompositeNode(grammarAccess.getParameterRule()); } 2653 { newCompositeNode(grammarAccess.getMemberDefinitionRule()); }
1384 iv_ruleParameter=ruleParameter 2654 iv_ruleMemberDefinition=ruleMemberDefinition
1385 { $current=$iv_ruleParameter.current; } 2655 { $current=$iv_ruleMemberDefinition.current; }
1386 EOF; 2656 EOF;
1387 2657
1388// Rule Parameter 2658// Rule MemberDefinition
1389ruleParameter returns [EObject current=null] 2659ruleMemberDefinition returns [EObject current=null]
1390@init { 2660@init {
1391 enterRule(); 2661 enterRule();
1392} 2662}
@@ -1396,60 +2666,156 @@ ruleParameter returns [EObject current=null]
1396 ( 2666 (
1397 ( 2667 (
1398 ( 2668 (
2669 lv_containment_0_0='contains'
2670 {
2671 newLeafNode(lv_containment_0_0, grammarAccess.getMemberDefinitionAccess().getContainmentContainsKeyword_0_0());
2672 }
1399 { 2673 {
1400 newCompositeNode(grammarAccess.getParameterAccess().getVariableVariableParserRuleCall_0_0()); 2674 if ($current==null) {
2675 $current = createModelElement(grammarAccess.getMemberDefinitionRule());
2676 }
2677 setWithLastConsumed($current, "containment", true, "contains");
1401 } 2678 }
1402 lv_variable_0_0=ruleVariable 2679 )
2680 )?
2681 (
2682 (
1403 { 2683 {
1404 if ($current==null) { 2684 if ($current==null) {
1405 $current = createModelElementForParent(grammarAccess.getParameterRule()); 2685 $current = createModelElement(grammarAccess.getMemberDefinitionRule());
2686 }
2687 }
2688 {
2689 newCompositeNode(grammarAccess.getMemberDefinitionAccess().getTypeNamedElementCrossReference_1_0());
2690 }
2691 ruleQualifiedName
2692 {
2693 afterParserOrEnumRuleCall();
2694 }
2695 )
2696 )
2697 (
2698 (
2699 {
2700 newCompositeNode(grammarAccess.getMemberDefinitionAccess().getMultiplicityMultiplicityParserRuleCall_2_0());
2701 }
2702 lv_multiplicity_2_0=ruleMultiplicity
2703 {
2704 if ($current==null) {
2705 $current = createModelElementForParent(grammarAccess.getMemberDefinitionRule());
1406 } 2706 }
1407 set( 2707 set(
1408 $current, 2708 $current,
1409 "variable", 2709 "multiplicity",
1410 lv_variable_0_0, 2710 lv_multiplicity_2_0,
1411 "org.eclipse.viatra.solver.language.SolverLanguage.Variable"); 2711 "org.eclipse.viatra.solver.language.SolverLanguage.Multiplicity");
1412 afterParserOrEnumRuleCall(); 2712 afterParserOrEnumRuleCall();
1413 } 2713 }
1414 ) 2714 )
2715 )?
2716 (
2717 (
2718 lv_name_3_0=RULE_ID
2719 {
2720 newLeafNode(lv_name_3_0, grammarAccess.getMemberDefinitionAccess().getNameIDTerminalRuleCall_3_0());
2721 }
2722 {
2723 if ($current==null) {
2724 $current = createModelElement(grammarAccess.getMemberDefinitionRule());
2725 }
2726 setWithLastConsumed(
2727 $current,
2728 "name",
2729 lv_name_3_0,
2730 "org.eclipse.xtext.common.Terminals.ID");
2731 }
2732 )
1415 ) 2733 )
1416 ( 2734 (
1417 otherlv_1=':' 2735 otherlv_4='opposite'
1418 { 2736 {
1419 newLeafNode(otherlv_1, grammarAccess.getParameterAccess().getColonKeyword_1_0()); 2737 newLeafNode(otherlv_4, grammarAccess.getMemberDefinitionAccess().getOppositeKeyword_4_0());
1420 } 2738 }
1421 ( 2739 (
1422 ( 2740 (
1423 { 2741 {
1424 newCompositeNode(grammarAccess.getParameterAccess().getTypeSymbolParserRuleCall_1_1_0());
1425 }
1426 lv_type_2_0=ruleSymbol
1427 {
1428 if ($current==null) { 2742 if ($current==null) {
1429 $current = createModelElementForParent(grammarAccess.getParameterRule()); 2743 $current = createModelElement(grammarAccess.getMemberDefinitionRule());
1430 } 2744 }
1431 set( 2745 }
1432 $current, 2746 {
1433 "type", 2747 newCompositeNode(grammarAccess.getMemberDefinitionAccess().getOppositeNamedElementCrossReference_4_1_0());
1434 lv_type_2_0, 2748 }
1435 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol"); 2749 ruleQualifiedName
2750 {
1436 afterParserOrEnumRuleCall(); 2751 afterParserOrEnumRuleCall();
1437 } 2752 }
1438 ) 2753 )
1439 ) 2754 )
1440 )? 2755 )?
2756 (
2757 otherlv_6=';'
2758 {
2759 newLeafNode(otherlv_6, grammarAccess.getMemberDefinitionAccess().getSemicolonKeyword_5());
2760 }
2761 )?
1441 ) 2762 )
1442; 2763;
1443 2764
1444// Entry rule entryRulePatternBody 2765// Entry rule entryRuleMultiplicity
1445entryRulePatternBody returns [EObject current=null]: 2766entryRuleMultiplicity returns [EObject current=null]:
1446 { newCompositeNode(grammarAccess.getPatternBodyRule()); } 2767 { newCompositeNode(grammarAccess.getMultiplicityRule()); }
1447 iv_rulePatternBody=rulePatternBody 2768 iv_ruleMultiplicity=ruleMultiplicity
1448 { $current=$iv_rulePatternBody.current; } 2769 { $current=$iv_ruleMultiplicity.current; }
1449 EOF; 2770 EOF;
1450 2771
1451// Rule PatternBody 2772// Rule Multiplicity
1452rulePatternBody returns [EObject current=null] 2773ruleMultiplicity returns [EObject current=null]
2774@init {
2775 enterRule();
2776}
2777@after {
2778 leaveRule();
2779}:
2780 (
2781 {
2782 newCompositeNode(grammarAccess.getMultiplicityAccess().getManyMultiplicityParserRuleCall_0());
2783 }
2784 this_ManyMultiplicity_0=ruleManyMultiplicity
2785 {
2786 $current = $this_ManyMultiplicity_0.current;
2787 afterParserOrEnumRuleCall();
2788 }
2789 |
2790 {
2791 newCompositeNode(grammarAccess.getMultiplicityAccess().getExactMultiplicityParserRuleCall_1());
2792 }
2793 this_ExactMultiplicity_1=ruleExactMultiplicity
2794 {
2795 $current = $this_ExactMultiplicity_1.current;
2796 afterParserOrEnumRuleCall();
2797 }
2798 |
2799 {
2800 newCompositeNode(grammarAccess.getMultiplicityAccess().getBoundedMultiplicityParserRuleCall_2());
2801 }
2802 this_BoundedMultiplicity_2=ruleBoundedMultiplicity
2803 {
2804 $current = $this_BoundedMultiplicity_2.current;
2805 afterParserOrEnumRuleCall();
2806 }
2807 )
2808;
2809
2810// Entry rule entryRuleManyMultiplicity
2811entryRuleManyMultiplicity returns [EObject current=null]:
2812 { newCompositeNode(grammarAccess.getManyMultiplicityRule()); }
2813 iv_ruleManyMultiplicity=ruleManyMultiplicity
2814 { $current=$iv_ruleManyMultiplicity.current; }
2815 EOF;
2816
2817// Rule ManyMultiplicity
2818ruleManyMultiplicity returns [EObject current=null]
1453@init { 2819@init {
1454 enterRule(); 2820 enterRule();
1455} 2821}
@@ -1460,48 +2826,76 @@ rulePatternBody returns [EObject current=null]
1460 ( 2826 (
1461 { 2827 {
1462 $current = forceCreateModelElement( 2828 $current = forceCreateModelElement(
1463 grammarAccess.getPatternBodyAccess().getPatternBodyAction_0(), 2829 grammarAccess.getManyMultiplicityAccess().getManyMultiplicityAction_0(),
1464 $current); 2830 $current);
1465 } 2831 }
1466 ) 2832 )
2833 otherlv_1='['
2834 {
2835 newLeafNode(otherlv_1, grammarAccess.getManyMultiplicityAccess().getLeftSquareBracketKeyword_1());
2836 }
2837 otherlv_2=']'
2838 {
2839 newLeafNode(otherlv_2, grammarAccess.getManyMultiplicityAccess().getRightSquareBracketKeyword_2());
2840 }
2841 )
2842;
2843
2844// Entry rule entryRuleExactMultiplicity
2845entryRuleExactMultiplicity returns [EObject current=null]:
2846 { newCompositeNode(grammarAccess.getExactMultiplicityRule()); }
2847 iv_ruleExactMultiplicity=ruleExactMultiplicity
2848 { $current=$iv_ruleExactMultiplicity.current; }
2849 EOF;
2850
2851// Rule ExactMultiplicity
2852ruleExactMultiplicity returns [EObject current=null]
2853@init {
2854 enterRule();
2855}
2856@after {
2857 leaveRule();
2858}:
2859 (
2860 otherlv_0='['
2861 {
2862 newLeafNode(otherlv_0, grammarAccess.getExactMultiplicityAccess().getLeftSquareBracketKeyword_0());
2863 }
1467 ( 2864 (
1468 otherlv_1='true'
1469 {
1470 newLeafNode(otherlv_1, grammarAccess.getPatternBodyAccess().getTrueKeyword_1_0());
1471 }
1472 |
1473 ( 2865 (
1474 ( 2866 {
1475 { 2867 newCompositeNode(grammarAccess.getExactMultiplicityAccess().getMultiplicityUpperMultiplictyParserRuleCall_1_0());
1476 newCompositeNode(grammarAccess.getPatternBodyAccess().getConstraintsConstraintParserRuleCall_1_1_0()); 2868 }
1477 } 2869 lv_multiplicity_1_0=ruleUpperMultiplicty
1478 lv_constraints_2_0=ruleConstraint 2870 {
1479 { 2871 if ($current==null) {
1480 if ($current==null) { 2872 $current = createModelElementForParent(grammarAccess.getExactMultiplicityRule());
1481 $current = createModelElementForParent(grammarAccess.getPatternBodyRule());
1482 }
1483 add(
1484 $current,
1485 "constraints",
1486 lv_constraints_2_0,
1487 "org.eclipse.viatra.solver.language.SolverLanguage.Constraint");
1488 afterParserOrEnumRuleCall();
1489 } 2873 }
1490 ) 2874 set(
1491 )* 2875 $current,
2876 "multiplicity",
2877 lv_multiplicity_1_0,
2878 "org.eclipse.viatra.solver.language.SolverLanguage.UpperMultiplicty");
2879 afterParserOrEnumRuleCall();
2880 }
2881 )
1492 ) 2882 )
2883 otherlv_2=']'
2884 {
2885 newLeafNode(otherlv_2, grammarAccess.getExactMultiplicityAccess().getRightSquareBracketKeyword_2());
2886 }
1493 ) 2887 )
1494; 2888;
1495 2889
1496// Entry rule entryRulePolarity 2890// Entry rule entryRuleBoundedMultiplicity
1497entryRulePolarity returns [EObject current=null]: 2891entryRuleBoundedMultiplicity returns [EObject current=null]:
1498 { newCompositeNode(grammarAccess.getPolarityRule()); } 2892 { newCompositeNode(grammarAccess.getBoundedMultiplicityRule()); }
1499 iv_rulePolarity=rulePolarity 2893 iv_ruleBoundedMultiplicity=ruleBoundedMultiplicity
1500 { $current=$iv_rulePolarity.current; } 2894 { $current=$iv_ruleBoundedMultiplicity.current; }
1501 EOF; 2895 EOF;
1502 2896
1503// Rule Polarity 2897// Rule BoundedMultiplicity
1504rulePolarity returns [EObject current=null] 2898ruleBoundedMultiplicity returns [EObject current=null]
1505@init { 2899@init {
1506 enterRule(); 2900 enterRule();
1507} 2901}
@@ -1509,45 +2903,173 @@ rulePolarity returns [EObject current=null]
1509 leaveRule(); 2903 leaveRule();
1510}: 2904}:
1511 ( 2905 (
2906 otherlv_0='['
2907 {
2908 newLeafNode(otherlv_0, grammarAccess.getBoundedMultiplicityAccess().getLeftSquareBracketKeyword_0());
2909 }
1512 ( 2910 (
1513 ( 2911 (
2912 lv_lowerBound_1_0=RULE_INT
1514 { 2913 {
1515 $current = forceCreateModelElement( 2914 newLeafNode(lv_lowerBound_1_0, grammarAccess.getBoundedMultiplicityAccess().getLowerBoundINTTerminalRuleCall_1_0());
1516 grammarAccess.getPolarityAccess().getPositiveAction_0_0(), 2915 }
1517 $current); 2916 {
2917 if ($current==null) {
2918 $current = createModelElement(grammarAccess.getBoundedMultiplicityRule());
2919 }
2920 setWithLastConsumed(
2921 $current,
2922 "lowerBound",
2923 lv_lowerBound_1_0,
2924 "org.eclipse.xtext.common.Terminals.INT");
1518 } 2925 }
1519 ) 2926 )
1520 otherlv_1='+'
1521 {
1522 newLeafNode(otherlv_1, grammarAccess.getPolarityAccess().getPlusSignKeyword_0_1());
1523 }
1524 ) 2927 )
2928 otherlv_2='..'
2929 {
2930 newLeafNode(otherlv_2, grammarAccess.getBoundedMultiplicityAccess().getFullStopFullStopKeyword_2());
2931 }
2932 (
2933 (
2934 {
2935 newCompositeNode(grammarAccess.getBoundedMultiplicityAccess().getUpperBoundUpperMultiplictyParserRuleCall_3_0());
2936 }
2937 lv_upperBound_3_0=ruleUpperMultiplicty
2938 {
2939 if ($current==null) {
2940 $current = createModelElementForParent(grammarAccess.getBoundedMultiplicityRule());
2941 }
2942 set(
2943 $current,
2944 "upperBound",
2945 lv_upperBound_3_0,
2946 "org.eclipse.viatra.solver.language.SolverLanguage.UpperMultiplicty");
2947 afterParserOrEnumRuleCall();
2948 }
2949 )
2950 )
2951 otherlv_4=']'
2952 {
2953 newLeafNode(otherlv_4, grammarAccess.getBoundedMultiplicityAccess().getRightSquareBracketKeyword_4());
2954 }
2955 )
2956;
2957
2958// Entry rule entryRuleScopeDefinition
2959entryRuleScopeDefinition returns [EObject current=null]:
2960 { newCompositeNode(grammarAccess.getScopeDefinitionRule()); }
2961 iv_ruleScopeDefinition=ruleScopeDefinition
2962 { $current=$iv_ruleScopeDefinition.current; }
2963 EOF;
2964
2965// Rule ScopeDefinition
2966ruleScopeDefinition returns [EObject current=null]
2967@init {
2968 enterRule();
2969}
2970@after {
2971 leaveRule();
2972}:
2973 (
2974 {
2975 newCompositeNode(grammarAccess.getScopeDefinitionAccess().getExactScopeDefinitionParserRuleCall_0());
2976 }
2977 this_ExactScopeDefinition_0=ruleExactScopeDefinition
2978 {
2979 $current = $this_ExactScopeDefinition_0.current;
2980 afterParserOrEnumRuleCall();
2981 }
2982 |
2983 {
2984 newCompositeNode(grammarAccess.getScopeDefinitionAccess().getBoundedScopeDefinitionParserRuleCall_1());
2985 }
2986 this_BoundedScopeDefinition_1=ruleBoundedScopeDefinition
2987 {
2988 $current = $this_BoundedScopeDefinition_1.current;
2989 afterParserOrEnumRuleCall();
2990 }
1525 | 2991 |
2992 {
2993 newCompositeNode(grammarAccess.getScopeDefinitionAccess().getLowerBoundedScopeDefinitionParserRuleCall_2());
2994 }
2995 this_LowerBoundedScopeDefinition_2=ruleLowerBoundedScopeDefinition
2996 {
2997 $current = $this_LowerBoundedScopeDefinition_2.current;
2998 afterParserOrEnumRuleCall();
2999 }
3000 )
3001;
3002
3003// Entry rule entryRuleExactScopeDefinition
3004entryRuleExactScopeDefinition returns [EObject current=null]:
3005 { newCompositeNode(grammarAccess.getExactScopeDefinitionRule()); }
3006 iv_ruleExactScopeDefinition=ruleExactScopeDefinition
3007 { $current=$iv_ruleExactScopeDefinition.current; }
3008 EOF;
3009
3010// Rule ExactScopeDefinition
3011ruleExactScopeDefinition returns [EObject current=null]
3012@init {
3013 enterRule();
3014}
3015@after {
3016 leaveRule();
3017}:
3018 (
3019 otherlv_0='scope'
3020 {
3021 newLeafNode(otherlv_0, grammarAccess.getExactScopeDefinitionAccess().getScopeKeyword_0());
3022 }
1526 ( 3023 (
1527 ( 3024 (
1528 { 3025 {
1529 $current = forceCreateModelElement( 3026 if ($current==null) {
1530 grammarAccess.getPolarityAccess().getNegativeAction_1_0(), 3027 $current = createModelElement(grammarAccess.getExactScopeDefinitionRule());
1531 $current); 3028 }
3029 }
3030 {
3031 newCompositeNode(grammarAccess.getExactScopeDefinitionAccess().getTypeNamedElementCrossReference_1_0());
3032 }
3033 ruleQualifiedName
3034 {
3035 afterParserOrEnumRuleCall();
3036 }
3037 )
3038 )
3039 otherlv_2='=='
3040 {
3041 newLeafNode(otherlv_2, grammarAccess.getExactScopeDefinitionAccess().getEqualsSignEqualsSignKeyword_2());
3042 }
3043 (
3044 (
3045 lv_exactScope_3_0=RULE_INT
3046 {
3047 newLeafNode(lv_exactScope_3_0, grammarAccess.getExactScopeDefinitionAccess().getExactScopeINTTerminalRuleCall_3_0());
3048 }
3049 {
3050 if ($current==null) {
3051 $current = createModelElement(grammarAccess.getExactScopeDefinitionRule());
3052 }
3053 setWithLastConsumed(
3054 $current,
3055 "exactScope",
3056 lv_exactScope_3_0,
3057 "org.eclipse.xtext.common.Terminals.INT");
1532 } 3058 }
1533 ) 3059 )
1534 otherlv_3='-'
1535 {
1536 newLeafNode(otherlv_3, grammarAccess.getPolarityAccess().getHyphenMinusKeyword_1_1());
1537 }
1538 ) 3060 )
1539 ) 3061 )
1540; 3062;
1541 3063
1542// Entry rule entryRuleConstraint 3064// Entry rule entryRuleBoundedScopeDefinition
1543entryRuleConstraint returns [EObject current=null]: 3065entryRuleBoundedScopeDefinition returns [EObject current=null]:
1544 { newCompositeNode(grammarAccess.getConstraintRule()); } 3066 { newCompositeNode(grammarAccess.getBoundedScopeDefinitionRule()); }
1545 iv_ruleConstraint=ruleConstraint 3067 iv_ruleBoundedScopeDefinition=ruleBoundedScopeDefinition
1546 { $current=$iv_ruleConstraint.current; } 3068 { $current=$iv_ruleBoundedScopeDefinition.current; }
1547 EOF; 3069 EOF;
1548 3070
1549// Rule Constraint 3071// Rule BoundedScopeDefinition
1550ruleConstraint returns [EObject current=null] 3072ruleBoundedScopeDefinition returns [EObject current=null]
1551@init { 3073@init {
1552 enterRule(); 3074 enterRule();
1553} 3075}
@@ -1555,186 +3077,267 @@ ruleConstraint returns [EObject current=null]
1555 leaveRule(); 3077 leaveRule();
1556}: 3078}:
1557 ( 3079 (
3080 otherlv_0='scope'
3081 {
3082 newLeafNode(otherlv_0, grammarAccess.getBoundedScopeDefinitionAccess().getScopeKeyword_0());
3083 }
1558 ( 3084 (
1559 ( 3085 (
1560 ( 3086 (
3087 (
3088 (
3089 lv_lowerBound_1_0=RULE_INT
3090 {
3091 newLeafNode(lv_lowerBound_1_0, grammarAccess.getBoundedScopeDefinitionAccess().getLowerBoundINTTerminalRuleCall_1_0_0_0_0());
3092 }
3093 {
3094 if ($current==null) {
3095 $current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
3096 }
3097 setWithLastConsumed(
3098 $current,
3099 "lowerBound",
3100 lv_lowerBound_1_0,
3101 "org.eclipse.xtext.common.Terminals.INT");
3102 }
3103 )
3104 )
3105 otherlv_2='<='
1561 { 3106 {
1562 newCompositeNode(grammarAccess.getConstraintAccess().getPolarityPolarityParserRuleCall_0_0_0()); 3107 newLeafNode(otherlv_2, grammarAccess.getBoundedScopeDefinitionAccess().getLessThanSignEqualsSignKeyword_1_0_0_1());
1563 } 3108 }
1564 lv_polarity_0_0=rulePolarity 3109 )?
1565 { 3110 (
1566 if ($current==null) { 3111 (
1567 $current = createModelElementForParent(grammarAccess.getConstraintRule()); 3112 {
3113 if ($current==null) {
3114 $current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
3115 }
1568 } 3116 }
1569 set( 3117 {
1570 $current, 3118 newCompositeNode(grammarAccess.getBoundedScopeDefinitionAccess().getTypeNamedElementCrossReference_1_0_1_0());
1571 "polarity", 3119 }
1572 lv_polarity_0_0, 3120 ruleQualifiedName
1573 "org.eclipse.viatra.solver.language.SolverLanguage.Polarity"); 3121 {
1574 afterParserOrEnumRuleCall(); 3122 afterParserOrEnumRuleCall();
1575 } 3123 }
3124 )
1576 ) 3125 )
1577 )? 3126 otherlv_4='<='
1578 ( 3127 {
3128 newLeafNode(otherlv_4, grammarAccess.getBoundedScopeDefinitionAccess().getLessThanSignEqualsSignKeyword_1_0_2());
3129 }
1579 ( 3130 (
1580 { 3131 (
1581 newCompositeNode(grammarAccess.getConstraintAccess().getSymbolModelSymbolParserRuleCall_0_1_0()); 3132 lv_upperBound_5_0=RULE_INT
1582 } 3133 {
1583 lv_symbol_1_0=ruleModelSymbol 3134 newLeafNode(lv_upperBound_5_0, grammarAccess.getBoundedScopeDefinitionAccess().getUpperBoundINTTerminalRuleCall_1_0_3_0());
1584 {
1585 if ($current==null) {
1586 $current = createModelElementForParent(grammarAccess.getConstraintRule());
1587 } 3135 }
1588 set( 3136 {
1589 $current, 3137 if ($current==null) {
1590 "symbol", 3138 $current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
1591 lv_symbol_1_0, 3139 }
1592 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol"); 3140 setWithLastConsumed(
1593 afterParserOrEnumRuleCall(); 3141 $current,
1594 } 3142 "upperBound",
3143 lv_upperBound_5_0,
3144 "org.eclipse.xtext.common.Terminals.INT");
3145 }
3146 )
1595 ) 3147 )
1596 ) 3148 )
3149 |
1597 ( 3150 (
1598 otherlv_2='('
1599 {
1600 newLeafNode(otherlv_2, grammarAccess.getConstraintAccess().getLeftParenthesisKeyword_0_2_0());
1601 }
1602 ( 3151 (
1603 ( 3152 (
3153 lv_upperBound_6_0=RULE_INT
1604 { 3154 {
1605 newCompositeNode(grammarAccess.getConstraintAccess().getParamsLiteralParserRuleCall_0_2_1_0()); 3155 newLeafNode(lv_upperBound_6_0, grammarAccess.getBoundedScopeDefinitionAccess().getUpperBoundINTTerminalRuleCall_1_1_0_0());
1606 } 3156 }
1607 lv_params_3_0=ruleLiteral
1608 { 3157 {
1609 if ($current==null) { 3158 if ($current==null) {
1610 $current = createModelElementForParent(grammarAccess.getConstraintRule()); 3159 $current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
1611 } 3160 }
1612 add( 3161 setWithLastConsumed(
1613 $current, 3162 $current,
1614 "params", 3163 "upperBound",
1615 lv_params_3_0, 3164 lv_upperBound_6_0,
1616 "org.eclipse.viatra.solver.language.SolverLanguage.Literal"); 3165 "org.eclipse.xtext.common.Terminals.INT");
3166 }
3167 )
3168 )
3169 otherlv_7='>='
3170 {
3171 newLeafNode(otherlv_7, grammarAccess.getBoundedScopeDefinitionAccess().getGreaterThanSignEqualsSignKeyword_1_1_1());
3172 }
3173 (
3174 (
3175 {
3176 if ($current==null) {
3177 $current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
3178 }
3179 }
3180 {
3181 newCompositeNode(grammarAccess.getBoundedScopeDefinitionAccess().getTypeNamedElementCrossReference_1_1_2_0());
3182 }
3183 ruleQualifiedName
3184 {
1617 afterParserOrEnumRuleCall(); 3185 afterParserOrEnumRuleCall();
1618 } 3186 }
1619 ) 3187 )
1620 )? 3188 )
1621 ( 3189 (
1622 otherlv_4=',' 3190 otherlv_9='>='
1623 { 3191 {
1624 newLeafNode(otherlv_4, grammarAccess.getConstraintAccess().getCommaKeyword_0_2_2_0()); 3192 newLeafNode(otherlv_9, grammarAccess.getBoundedScopeDefinitionAccess().getGreaterThanSignEqualsSignKeyword_1_1_3_0());
1625 } 3193 }
1626 ( 3194 (
1627 ( 3195 (
3196 lv_lowerBound_10_0=RULE_INT
1628 { 3197 {
1629 newCompositeNode(grammarAccess.getConstraintAccess().getParamsLiteralParserRuleCall_0_2_2_1_0()); 3198 newLeafNode(lv_lowerBound_10_0, grammarAccess.getBoundedScopeDefinitionAccess().getLowerBoundINTTerminalRuleCall_1_1_3_1_0());
1630 } 3199 }
1631 lv_params_5_0=ruleLiteral
1632 { 3200 {
1633 if ($current==null) { 3201 if ($current==null) {
1634 $current = createModelElementForParent(grammarAccess.getConstraintRule()); 3202 $current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
1635 } 3203 }
1636 add( 3204 setWithLastConsumed(
1637 $current, 3205 $current,
1638 "params", 3206 "lowerBound",
1639 lv_params_5_0, 3207 lv_lowerBound_10_0,
1640 "org.eclipse.viatra.solver.language.SolverLanguage.Literal"); 3208 "org.eclipse.xtext.common.Terminals.INT");
1641 afterParserOrEnumRuleCall();
1642 } 3209 }
1643 ) 3210 )
1644 ) 3211 )
1645 )* 3212 )?
1646 otherlv_6=')' 3213 )
1647 {
1648 newLeafNode(otherlv_6, grammarAccess.getConstraintAccess().getRightParenthesisKeyword_0_2_3());
1649 }
1650 )?
1651 ) 3214 )
1652 | 3215 otherlv_11='.'
3216 {
3217 newLeafNode(otherlv_11, grammarAccess.getBoundedScopeDefinitionAccess().getFullStopKeyword_2());
3218 }
3219 )
3220;
3221
3222// Entry rule entryRuleLowerBoundedScopeDefinition
3223entryRuleLowerBoundedScopeDefinition returns [EObject current=null]:
3224 { newCompositeNode(grammarAccess.getLowerBoundedScopeDefinitionRule()); }
3225 iv_ruleLowerBoundedScopeDefinition=ruleLowerBoundedScopeDefinition
3226 { $current=$iv_ruleLowerBoundedScopeDefinition.current; }
3227 EOF;
3228
3229// Rule LowerBoundedScopeDefinition
3230ruleLowerBoundedScopeDefinition returns [EObject current=null]
3231@init {
3232 enterRule();
3233}
3234@after {
3235 leaveRule();
3236}:
3237 (
3238 otherlv_0='scope'
3239 {
3240 newLeafNode(otherlv_0, grammarAccess.getLowerBoundedScopeDefinitionAccess().getScopeKeyword_0());
3241 }
1653 ( 3242 (
1654 ( 3243 (
1655 ( 3244 (
1656 { 3245 (
1657 newCompositeNode(grammarAccess.getConstraintAccess().getClosureTypeClosureTypeParserRuleCall_1_0_0()); 3246 lv_lowerBound_1_0=RULE_INT
1658 } 3247 {
1659 lv_closureType_7_0=ruleClosureType 3248 newLeafNode(lv_lowerBound_1_0, grammarAccess.getLowerBoundedScopeDefinitionAccess().getLowerBoundINTTerminalRuleCall_1_0_0_0());
1660 {
1661 if ($current==null) {
1662 $current = createModelElementForParent(grammarAccess.getConstraintRule());
1663 } 3249 }
1664 set( 3250 {
1665 $current, 3251 if ($current==null) {
1666 "closureType", 3252 $current = createModelElement(grammarAccess.getLowerBoundedScopeDefinitionRule());
1667 lv_closureType_7_0, 3253 }
1668 "org.eclipse.viatra.solver.language.SolverLanguage.ClosureType"); 3254 setWithLastConsumed(
1669 afterParserOrEnumRuleCall(); 3255 $current,
1670 } 3256 "lowerBound",
3257 lv_lowerBound_1_0,
3258 "org.eclipse.xtext.common.Terminals.INT");
3259 }
3260 )
3261 )
3262 otherlv_2='<='
3263 {
3264 newLeafNode(otherlv_2, grammarAccess.getLowerBoundedScopeDefinitionAccess().getLessThanSignEqualsSignKeyword_1_0_1());
3265 }
3266 (
3267 (
3268 {
3269 if ($current==null) {
3270 $current = createModelElement(grammarAccess.getLowerBoundedScopeDefinitionRule());
3271 }
3272 }
3273 {
3274 newCompositeNode(grammarAccess.getLowerBoundedScopeDefinitionAccess().getTypeNamedElementCrossReference_1_0_2_0());
3275 }
3276 ruleQualifiedName
3277 {
3278 afterParserOrEnumRuleCall();
3279 }
3280 )
1671 ) 3281 )
1672 ) 3282 )
1673 otherlv_8='(' 3283 |
1674 {
1675 newLeafNode(otherlv_8, grammarAccess.getConstraintAccess().getLeftParenthesisKeyword_1_1());
1676 }
1677 ( 3284 (
1678 ( 3285 (
1679 { 3286 (
1680 newCompositeNode(grammarAccess.getConstraintAccess().getParamsLiteralParserRuleCall_1_2_0()); 3287 {
1681 } 3288 if ($current==null) {
1682 lv_params_9_0=ruleLiteral 3289 $current = createModelElement(grammarAccess.getLowerBoundedScopeDefinitionRule());
1683 { 3290 }
1684 if ($current==null) {
1685 $current = createModelElementForParent(grammarAccess.getConstraintRule());
1686 } 3291 }
1687 add( 3292 {
1688 $current, 3293 newCompositeNode(grammarAccess.getLowerBoundedScopeDefinitionAccess().getTypeNamedElementCrossReference_1_1_0_0());
1689 "params", 3294 }
1690 lv_params_9_0, 3295 ruleQualifiedName
1691 "org.eclipse.viatra.solver.language.SolverLanguage.Literal"); 3296 {
1692 afterParserOrEnumRuleCall(); 3297 afterParserOrEnumRuleCall();
1693 } 3298 }
3299 )
1694 ) 3300 )
1695 )? 3301 otherlv_5='>='
1696 (
1697 otherlv_10=','
1698 { 3302 {
1699 newLeafNode(otherlv_10, grammarAccess.getConstraintAccess().getCommaKeyword_1_3_0()); 3303 newLeafNode(otherlv_5, grammarAccess.getLowerBoundedScopeDefinitionAccess().getGreaterThanSignEqualsSignKeyword_1_1_1());
1700 } 3304 }
1701 ( 3305 (
1702 ( 3306 (
3307 lv_lowerBound_6_0=RULE_INT
1703 { 3308 {
1704 newCompositeNode(grammarAccess.getConstraintAccess().getParamsLiteralParserRuleCall_1_3_1_0()); 3309 newLeafNode(lv_lowerBound_6_0, grammarAccess.getLowerBoundedScopeDefinitionAccess().getLowerBoundINTTerminalRuleCall_1_1_2_0());
1705 } 3310 }
1706 lv_params_11_0=ruleLiteral
1707 { 3311 {
1708 if ($current==null) { 3312 if ($current==null) {
1709 $current = createModelElementForParent(grammarAccess.getConstraintRule()); 3313 $current = createModelElement(grammarAccess.getLowerBoundedScopeDefinitionRule());
1710 } 3314 }
1711 add( 3315 setWithLastConsumed(
1712 $current, 3316 $current,
1713 "params", 3317 "lowerBound",
1714 lv_params_11_0, 3318 lv_lowerBound_6_0,
1715 "org.eclipse.viatra.solver.language.SolverLanguage.Literal"); 3319 "org.eclipse.xtext.common.Terminals.INT");
1716 afterParserOrEnumRuleCall();
1717 } 3320 }
1718 ) 3321 )
1719 ) 3322 )
1720 )* 3323 )
1721 otherlv_12=')'
1722 {
1723 newLeafNode(otherlv_12, grammarAccess.getConstraintAccess().getRightParenthesisKeyword_1_4());
1724 }
1725 ) 3324 )
3325 otherlv_7='.'
3326 {
3327 newLeafNode(otherlv_7, grammarAccess.getLowerBoundedScopeDefinitionAccess().getFullStopKeyword_2());
3328 }
1726 ) 3329 )
1727; 3330;
1728 3331
1729// Entry rule entryRuleClosureType 3332// Entry rule entryRuleObjectiveDefinition
1730entryRuleClosureType returns [EObject current=null]: 3333entryRuleObjectiveDefinition returns [EObject current=null]:
1731 { newCompositeNode(grammarAccess.getClosureTypeRule()); } 3334 { newCompositeNode(grammarAccess.getObjectiveDefinitionRule()); }
1732 iv_ruleClosureType=ruleClosureType 3335 iv_ruleObjectiveDefinition=ruleObjectiveDefinition
1733 { $current=$iv_ruleClosureType.current; } 3336 { $current=$iv_ruleObjectiveDefinition.current; }
1734 EOF; 3337 EOF;
1735 3338
1736// Rule ClosureType 3339// Rule ObjectiveDefinition
1737ruleClosureType returns [EObject current=null] 3340ruleObjectiveDefinition returns [EObject current=null]
1738@init { 3341@init {
1739 enterRule(); 3342 enterRule();
1740} 3343}
@@ -1745,42 +3348,53 @@ ruleClosureType returns [EObject current=null]
1745 ( 3348 (
1746 ( 3349 (
1747 { 3350 {
1748 $current = forceCreateModelElement( 3351 newCompositeNode(grammarAccess.getObjectiveDefinitionAccess().getKindObjectiveKindEnumRuleCall_0_0());
1749 grammarAccess.getClosureTypeAccess().getReflexiveClosureAction_0_0(), 3352 }
1750 $current); 3353 lv_kind_0_0=ruleObjectiveKind
3354 {
3355 if ($current==null) {
3356 $current = createModelElementForParent(grammarAccess.getObjectiveDefinitionRule());
3357 }
3358 set(
3359 $current,
3360 "kind",
3361 lv_kind_0_0,
3362 "org.eclipse.viatra.solver.language.SolverLanguage.ObjectiveKind");
3363 afterParserOrEnumRuleCall();
1751 } 3364 }
1752 ) 3365 )
1753 otherlv_1='*'
1754 {
1755 newLeafNode(otherlv_1, grammarAccess.getClosureTypeAccess().getAsteriskKeyword_0_1());
1756 }
1757 ) 3366 )
1758 |
1759 ( 3367 (
1760 ( 3368 (
1761 { 3369 {
1762 $current = forceCreateModelElement( 3370 newCompositeNode(grammarAccess.getObjectiveDefinitionAccess().getObjectiveExpressionParserRuleCall_1_0());
1763 grammarAccess.getClosureTypeAccess().getIrreflexiveClosureAction_1_0(), 3371 }
1764 $current); 3372 lv_objective_1_0=ruleExpression
3373 {
3374 if ($current==null) {
3375 $current = createModelElementForParent(grammarAccess.getObjectiveDefinitionRule());
3376 }
3377 set(
3378 $current,
3379 "objective",
3380 lv_objective_1_0,
3381 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
3382 afterParserOrEnumRuleCall();
1765 } 3383 }
1766 ) 3384 )
1767 otherlv_3='+'
1768 {
1769 newLeafNode(otherlv_3, grammarAccess.getClosureTypeAccess().getPlusSignKeyword_1_1());
1770 }
1771 ) 3385 )
1772 ) 3386 )
1773; 3387;
1774 3388
1775// Entry rule entryRuleLiteral 3389// Entry rule entryRuleUpperMultiplicty
1776entryRuleLiteral returns [EObject current=null]: 3390entryRuleUpperMultiplicty returns [String current=null]:
1777 { newCompositeNode(grammarAccess.getLiteralRule()); } 3391 { newCompositeNode(grammarAccess.getUpperMultiplictyRule()); }
1778 iv_ruleLiteral=ruleLiteral 3392 iv_ruleUpperMultiplicty=ruleUpperMultiplicty
1779 { $current=$iv_ruleLiteral.current; } 3393 { $current=$iv_ruleUpperMultiplicty.current.getText(); }
1780 EOF; 3394 EOF;
1781 3395
1782// Rule Literal 3396// Rule UpperMultiplicty
1783ruleLiteral returns [EObject current=null] 3397ruleUpperMultiplicty returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
1784@init { 3398@init {
1785 enterRule(); 3399 enterRule();
1786} 3400}
@@ -1788,121 +3402,132 @@ ruleLiteral returns [EObject current=null]
1788 leaveRule(); 3402 leaveRule();
1789}: 3403}:
1790 ( 3404 (
3405 this_INT_0=RULE_INT
1791 { 3406 {
1792 newCompositeNode(grammarAccess.getLiteralAccess().getVariableParserRuleCall_0()); 3407 $current.merge(this_INT_0);
1793 } 3408 }
1794 this_Variable_0=ruleVariable
1795 { 3409 {
1796 $current = $this_Variable_0.current; 3410 newLeafNode(this_INT_0, grammarAccess.getUpperMultiplictyAccess().getINTTerminalRuleCall_0());
1797 afterParserOrEnumRuleCall();
1798 } 3411 }
1799 | 3412 |
3413 kw='*'
1800 { 3414 {
1801 newCompositeNode(grammarAccess.getLiteralAccess().getDataObjectParserRuleCall_1()); 3415 $current.merge(kw);
1802 } 3416 newLeafNode(kw, grammarAccess.getUpperMultiplictyAccess().getAsteriskKeyword_1());
1803 this_DataObject_1=ruleDataObject
1804 {
1805 $current = $this_DataObject_1.current;
1806 afterParserOrEnumRuleCall();
1807 }
1808 |
1809 {
1810 newCompositeNode(grammarAccess.getLiteralAccess().getNamedObjectParserRuleCall_2());
1811 }
1812 this_NamedObject_2=ruleNamedObject
1813 {
1814 $current = $this_NamedObject_2.current;
1815 afterParserOrEnumRuleCall();
1816 } 3417 }
1817 ) 3418 )
1818; 3419;
1819 3420
1820// Entry rule entryRuleVariable 3421// Entry rule entryRuleReal
1821entryRuleVariable returns [EObject current=null]: 3422entryRuleReal returns [String current=null]@init {
1822 { newCompositeNode(grammarAccess.getVariableRule()); } 3423 HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
1823 iv_ruleVariable=ruleVariable 3424}:
1824 { $current=$iv_ruleVariable.current; } 3425 { newCompositeNode(grammarAccess.getRealRule()); }
3426 iv_ruleReal=ruleReal
3427 { $current=$iv_ruleReal.current.getText(); }
1825 EOF; 3428 EOF;
3429finally {
3430 myHiddenTokenState.restore();
3431}
1826 3432
1827// Rule Variable 3433// Rule Real
1828ruleVariable returns [EObject current=null] 3434ruleReal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
1829@init { 3435@init {
1830 enterRule(); 3436 enterRule();
3437 HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
1831} 3438}
1832@after { 3439@after {
1833 leaveRule(); 3440 leaveRule();
1834}: 3441}:
1835 ( 3442 (
3443 this_INT_0=RULE_INT
3444 {
3445 $current.merge(this_INT_0);
3446 }
3447 {
3448 newLeafNode(this_INT_0, grammarAccess.getRealAccess().getINTTerminalRuleCall_0());
3449 }
1836 ( 3450 (
1837 lv_name_0_0=RULE_ID 3451 kw='.'
1838 { 3452 {
1839 newLeafNode(lv_name_0_0, grammarAccess.getVariableAccess().getNameIDTerminalRuleCall_0()); 3453 $current.merge(kw);
3454 newLeafNode(kw, grammarAccess.getRealAccess().getFullStopKeyword_1_0());
1840 } 3455 }
3456 this_INT_2=RULE_INT
1841 { 3457 {
1842 if ($current==null) { 3458 $current.merge(this_INT_2);
1843 $current = createModelElement(grammarAccess.getVariableRule());
1844 }
1845 setWithLastConsumed(
1846 $current,
1847 "name",
1848 lv_name_0_0,
1849 "org.eclipse.xtext.common.Terminals.ID");
1850 } 3459 }
1851 ) 3460 {
3461 newLeafNode(this_INT_2, grammarAccess.getRealAccess().getINTTerminalRuleCall_1_1());
3462 }
3463 )?
1852 ) 3464 )
1853; 3465;
3466finally {
3467 myHiddenTokenState.restore();
3468}
1854 3469
1855// Entry rule entryRuleAllInstances 3470// Entry rule entryRuleQualifiedName
1856entryRuleAllInstances returns [EObject current=null]: 3471entryRuleQualifiedName returns [String current=null]@init {
1857 { newCompositeNode(grammarAccess.getAllInstancesRule()); } 3472 HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
1858 iv_ruleAllInstances=ruleAllInstances 3473}:
1859 { $current=$iv_ruleAllInstances.current; } 3474 { newCompositeNode(grammarAccess.getQualifiedNameRule()); }
3475 iv_ruleQualifiedName=ruleQualifiedName
3476 { $current=$iv_ruleQualifiedName.current.getText(); }
1860 EOF; 3477 EOF;
3478finally {
3479 myHiddenTokenState.restore();
3480}
1861 3481
1862// Rule AllInstances 3482// Rule QualifiedName
1863ruleAllInstances returns [EObject current=null] 3483ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
1864@init { 3484@init {
1865 enterRule(); 3485 enterRule();
3486 HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
1866} 3487}
1867@after { 3488@after {
1868 leaveRule(); 3489 leaveRule();
1869}: 3490}:
1870 ( 3491 (
1871 otherlv_0=':'
1872 {
1873 newLeafNode(otherlv_0, grammarAccess.getAllInstancesAccess().getColonKeyword_0());
1874 }
1875 ( 3492 (
3493 this_ID_0=RULE_ID
3494 {
3495 $current.merge(this_ID_0);
3496 }
3497 {
3498 newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0_0());
3499 }
1876 ( 3500 (
3501 kw='.'
1877 { 3502 {
1878 newCompositeNode(grammarAccess.getAllInstancesAccess().getSymbolSymbolParserRuleCall_1_0()); 3503 $current.merge(kw);
3504 newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_0_1_0());
1879 } 3505 }
1880 lv_symbol_1_0=ruleSymbol 3506 this_ID_2=RULE_ID
1881 { 3507 {
1882 if ($current==null) { 3508 $current.merge(this_ID_2);
1883 $current = createModelElementForParent(grammarAccess.getAllInstancesRule());
1884 }
1885 set(
1886 $current,
1887 "symbol",
1888 lv_symbol_1_0,
1889 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol");
1890 afterParserOrEnumRuleCall();
1891 } 3509 }
1892 ) 3510 {
3511 newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0_1_1());
3512 }
3513 )*
1893 ) 3514 )
3515 |
3516 this_QUOTED_ID_3=RULE_QUOTED_ID
3517 {
3518 $current.merge(this_QUOTED_ID_3);
3519 }
3520 {
3521 newLeafNode(this_QUOTED_ID_3, grammarAccess.getQualifiedNameAccess().getQUOTED_IDTerminalRuleCall_1());
3522 }
1894 ) 3523 )
1895; 3524;
3525finally {
3526 myHiddenTokenState.restore();
3527}
1896 3528
1897// Entry rule entryRuleAllObjects 3529// Rule MetricType
1898entryRuleAllObjects returns [EObject current=null]: 3530ruleMetricType returns [Enumerator current=null]
1899 { newCompositeNode(grammarAccess.getAllObjectsRule()); }
1900 iv_ruleAllObjects=ruleAllObjects
1901 { $current=$iv_ruleAllObjects.current; }
1902 EOF;
1903
1904// Rule AllObjects
1905ruleAllObjects returns [EObject current=null]
1906@init { 3531@init {
1907 enterRule(); 3532 enterRule();
1908} 3533}
@@ -1911,28 +3536,25 @@ ruleAllObjects returns [EObject current=null]
1911}: 3536}:
1912 ( 3537 (
1913 ( 3538 (
3539 enumLiteral_0='int'
1914 { 3540 {
1915 $current = forceCreateModelElement( 3541 $current = grammarAccess.getMetricTypeAccess().getINTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
1916 grammarAccess.getAllObjectsAccess().getAllObjectsAction_0(), 3542 newLeafNode(enumLiteral_0, grammarAccess.getMetricTypeAccess().getINTEnumLiteralDeclaration_0());
1917 $current); 3543 }
3544 )
3545 |
3546 (
3547 enumLiteral_1='real'
3548 {
3549 $current = grammarAccess.getMetricTypeAccess().getREALEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
3550 newLeafNode(enumLiteral_1, grammarAccess.getMetricTypeAccess().getREALEnumLiteralDeclaration_1());
1918 } 3551 }
1919 ) 3552 )
1920 otherlv_1='*'
1921 {
1922 newLeafNode(otherlv_1, grammarAccess.getAllObjectsAccess().getAsteriskKeyword_1());
1923 }
1924 ) 3553 )
1925; 3554;
1926 3555
1927// Entry rule entryRuleDefaultInterpretation 3556// Rule ComparisonOperator
1928entryRuleDefaultInterpretation returns [EObject current=null]: 3557ruleComparisonOperator returns [Enumerator current=null]
1929 { newCompositeNode(grammarAccess.getDefaultInterpretationRule()); }
1930 iv_ruleDefaultInterpretation=ruleDefaultInterpretation
1931 { $current=$iv_ruleDefaultInterpretation.current; }
1932 EOF;
1933
1934// Rule DefaultInterpretation
1935ruleDefaultInterpretation returns [EObject current=null]
1936@init { 3558@init {
1937 enterRule(); 3559 enterRule();
1938} 3560}
@@ -1940,41 +3562,66 @@ ruleDefaultInterpretation returns [EObject current=null]
1940 leaveRule(); 3562 leaveRule();
1941}: 3563}:
1942 ( 3564 (
1943 otherlv_0='default'
1944 {
1945 newLeafNode(otherlv_0, grammarAccess.getDefaultInterpretationAccess().getDefaultKeyword_0());
1946 }
1947 ( 3565 (
1948 ( 3566 enumLiteral_0='=='
1949 { 3567 {
1950 newCompositeNode(grammarAccess.getDefaultInterpretationAccess().getInterpretationBasicInterpretationParserRuleCall_1_0()); 3568 $current = grammarAccess.getComparisonOperatorAccess().getEQEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
1951 } 3569 newLeafNode(enumLiteral_0, grammarAccess.getComparisonOperatorAccess().getEQEnumLiteralDeclaration_0());
1952 lv_interpretation_1_0=ruleBasicInterpretation 3570 }
1953 { 3571 )
1954 if ($current==null) { 3572 |
1955 $current = createModelElementForParent(grammarAccess.getDefaultInterpretationRule()); 3573 (
1956 } 3574 enumLiteral_1='!='
1957 set( 3575 {
1958 $current, 3576 $current = grammarAccess.getComparisonOperatorAccess().getNOT_EQEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
1959 "interpretation", 3577 newLeafNode(enumLiteral_1, grammarAccess.getComparisonOperatorAccess().getNOT_EQEnumLiteralDeclaration_1());
1960 lv_interpretation_1_0, 3578 }
1961 "org.eclipse.viatra.solver.language.SolverLanguage.BasicInterpretation"); 3579 )
1962 afterParserOrEnumRuleCall(); 3580 |
1963 } 3581 (
1964 ) 3582 enumLiteral_2='<'
3583 {
3584 $current = grammarAccess.getComparisonOperatorAccess().getLESSEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
3585 newLeafNode(enumLiteral_2, grammarAccess.getComparisonOperatorAccess().getLESSEnumLiteralDeclaration_2());
3586 }
3587 )
3588 |
3589 (
3590 enumLiteral_3='<='
3591 {
3592 $current = grammarAccess.getComparisonOperatorAccess().getLESS_EQEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
3593 newLeafNode(enumLiteral_3, grammarAccess.getComparisonOperatorAccess().getLESS_EQEnumLiteralDeclaration_3());
3594 }
3595 )
3596 |
3597 (
3598 enumLiteral_4='>'
3599 {
3600 $current = grammarAccess.getComparisonOperatorAccess().getGREATEREnumLiteralDeclaration_4().getEnumLiteral().getInstance();
3601 newLeafNode(enumLiteral_4, grammarAccess.getComparisonOperatorAccess().getGREATEREnumLiteralDeclaration_4());
3602 }
3603 )
3604 |
3605 (
3606 enumLiteral_5='>='
3607 {
3608 $current = grammarAccess.getComparisonOperatorAccess().getGREATER_EQEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
3609 newLeafNode(enumLiteral_5, grammarAccess.getComparisonOperatorAccess().getGREATER_EQEnumLiteralDeclaration_5());
3610 }
3611 )
3612 |
3613 (
3614 enumLiteral_6='in'
3615 {
3616 $current = grammarAccess.getComparisonOperatorAccess().getINEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
3617 newLeafNode(enumLiteral_6, grammarAccess.getComparisonOperatorAccess().getINEnumLiteralDeclaration_6());
3618 }
1965 ) 3619 )
1966 ) 3620 )
1967; 3621;
1968 3622
1969// Entry rule entryRuleCDInterpretation 3623// Rule AdditiveBinaryOperator
1970entryRuleCDInterpretation returns [EObject current=null]: 3624ruleAdditiveBinaryOperator returns [Enumerator current=null]
1971 { newCompositeNode(grammarAccess.getCDInterpretationRule()); }
1972 iv_ruleCDInterpretation=ruleCDInterpretation
1973 { $current=$iv_ruleCDInterpretation.current; }
1974 EOF;
1975
1976// Rule CDInterpretation
1977ruleCDInterpretation returns [EObject current=null]
1978@init { 3625@init {
1979 enterRule(); 3626 enterRule();
1980} 3627}
@@ -1982,44 +3629,26 @@ ruleCDInterpretation returns [EObject current=null]
1982 leaveRule(); 3629 leaveRule();
1983}: 3630}:
1984 ( 3631 (
1985 { 3632 (
1986 newCompositeNode(grammarAccess.getCDInterpretationAccess().getClassInterpretationParserRuleCall_0()); 3633 enumLiteral_0='+'
1987 } 3634 {
1988 this_ClassInterpretation_0=ruleClassInterpretation 3635 $current = grammarAccess.getAdditiveBinaryOperatorAccess().getADDEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
1989 { 3636 newLeafNode(enumLiteral_0, grammarAccess.getAdditiveBinaryOperatorAccess().getADDEnumLiteralDeclaration_0());
1990 $current = $this_ClassInterpretation_0.current; 3637 }
1991 afterParserOrEnumRuleCall(); 3638 )
1992 }
1993 |
1994 {
1995 newCompositeNode(grammarAccess.getCDInterpretationAccess().getEnumInterpretationParserRuleCall_1());
1996 }
1997 this_EnumInterpretation_1=ruleEnumInterpretation
1998 {
1999 $current = $this_EnumInterpretation_1.current;
2000 afterParserOrEnumRuleCall();
2001 }
2002 | 3639 |
2003 { 3640 (
2004 newCompositeNode(grammarAccess.getCDInterpretationAccess().getGlobalRelationInterpretationParserRuleCall_2()); 3641 enumLiteral_1='-'
2005 } 3642 {
2006 this_GlobalRelationInterpretation_2=ruleGlobalRelationInterpretation 3643 $current = grammarAccess.getAdditiveBinaryOperatorAccess().getSUBEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
2007 { 3644 newLeafNode(enumLiteral_1, grammarAccess.getAdditiveBinaryOperatorAccess().getSUBEnumLiteralDeclaration_1());
2008 $current = $this_GlobalRelationInterpretation_2.current; 3645 }
2009 afterParserOrEnumRuleCall(); 3646 )
2010 }
2011 ) 3647 )
2012; 3648;
2013 3649
2014// Entry rule entryRuleClassInterpretation 3650// Rule MultiplicativeBinaryOperator
2015entryRuleClassInterpretation returns [EObject current=null]: 3651ruleMultiplicativeBinaryOperator returns [Enumerator current=null]
2016 { newCompositeNode(grammarAccess.getClassInterpretationRule()); }
2017 iv_ruleClassInterpretation=ruleClassInterpretation
2018 { $current=$iv_ruleClassInterpretation.current; }
2019 EOF;
2020
2021// Rule ClassInterpretation
2022ruleClassInterpretation returns [EObject current=null]
2023@init { 3652@init {
2024 enterRule(); 3653 enterRule();
2025} 3654}
@@ -2028,106 +3657,25 @@ ruleClassInterpretation returns [EObject current=null]
2028}: 3657}:
2029 ( 3658 (
2030 ( 3659 (
2031 ( 3660 enumLiteral_0='*'
2032 lv_abstract_0_0='abstract' 3661 {
2033 { 3662 $current = grammarAccess.getMultiplicativeBinaryOperatorAccess().getMULEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
2034 newLeafNode(lv_abstract_0_0, grammarAccess.getClassInterpretationAccess().getAbstractAbstractKeyword_0_0()); 3663 newLeafNode(enumLiteral_0, grammarAccess.getMultiplicativeBinaryOperatorAccess().getMULEnumLiteralDeclaration_0());
2035 } 3664 }
2036 {
2037 if ($current==null) {
2038 $current = createModelElement(grammarAccess.getClassInterpretationRule());
2039 }
2040 setWithLastConsumed($current, "abstract", true, "abstract");
2041 }
2042 )
2043 )?
2044 otherlv_1='class'
2045 {
2046 newLeafNode(otherlv_1, grammarAccess.getClassInterpretationAccess().getClassKeyword_1());
2047 }
2048 (
2049 (
2050 {
2051 newCompositeNode(grammarAccess.getClassInterpretationAccess().getSymbolModelSymbolParserRuleCall_2_0());
2052 }
2053 lv_symbol_2_0=ruleModelSymbol
2054 {
2055 if ($current==null) {
2056 $current = createModelElementForParent(grammarAccess.getClassInterpretationRule());
2057 }
2058 set(
2059 $current,
2060 "symbol",
2061 lv_symbol_2_0,
2062 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
2063 afterParserOrEnumRuleCall();
2064 }
2065 )
2066 ) 3665 )
3666 |
2067 ( 3667 (
2068 otherlv_3='extends' 3668 enumLiteral_1='/'
2069 { 3669 {
2070 newLeafNode(otherlv_3, grammarAccess.getClassInterpretationAccess().getExtendsKeyword_3_0()); 3670 $current = grammarAccess.getMultiplicativeBinaryOperatorAccess().getDIVEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
3671 newLeafNode(enumLiteral_1, grammarAccess.getMultiplicativeBinaryOperatorAccess().getDIVEnumLiteralDeclaration_1());
2071 } 3672 }
2072 ( 3673 )
2073 (
2074 {
2075 newCompositeNode(grammarAccess.getClassInterpretationAccess().getSupertypesModelSymbolParserRuleCall_3_1_0());
2076 }
2077 lv_supertypes_4_0=ruleModelSymbol
2078 {
2079 if ($current==null) {
2080 $current = createModelElementForParent(grammarAccess.getClassInterpretationRule());
2081 }
2082 add(
2083 $current,
2084 "supertypes",
2085 lv_supertypes_4_0,
2086 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
2087 afterParserOrEnumRuleCall();
2088 }
2089 )
2090 )+
2091 )?
2092 otherlv_5='{'
2093 {
2094 newLeafNode(otherlv_5, grammarAccess.getClassInterpretationAccess().getLeftCurlyBracketKeyword_4());
2095 }
2096 (
2097 (
2098 {
2099 newCompositeNode(grammarAccess.getClassInterpretationAccess().getFieltFieldRelationInterpretationParserRuleCall_5_0());
2100 }
2101 lv_fielt_6_0=ruleFieldRelationInterpretation
2102 {
2103 if ($current==null) {
2104 $current = createModelElementForParent(grammarAccess.getClassInterpretationRule());
2105 }
2106 add(
2107 $current,
2108 "fielt",
2109 lv_fielt_6_0,
2110 "org.eclipse.viatra.solver.language.SolverLanguage.FieldRelationInterpretation");
2111 afterParserOrEnumRuleCall();
2112 }
2113 )
2114 )*
2115 otherlv_7='}'
2116 {
2117 newLeafNode(otherlv_7, grammarAccess.getClassInterpretationAccess().getRightCurlyBracketKeyword_6());
2118 }
2119 ) 3674 )
2120; 3675;
2121 3676
2122// Entry rule entryRuleEnumInterpretation 3677// Rule ExponentialOp
2123entryRuleEnumInterpretation returns [EObject current=null]: 3678ruleExponentialOp returns [Enumerator current=null]
2124 { newCompositeNode(grammarAccess.getEnumInterpretationRule()); }
2125 iv_ruleEnumInterpretation=ruleEnumInterpretation
2126 { $current=$iv_ruleEnumInterpretation.current; }
2127 EOF;
2128
2129// Rule EnumInterpretation
2130ruleEnumInterpretation returns [EObject current=null]
2131@init { 3679@init {
2132 enterRule(); 3680 enterRule();
2133} 3681}
@@ -2135,68 +3683,16 @@ ruleEnumInterpretation returns [EObject current=null]
2135 leaveRule(); 3683 leaveRule();
2136}: 3684}:
2137 ( 3685 (
2138 otherlv_0='enum' 3686 enumLiteral_0='^'
2139 {
2140 newLeafNode(otherlv_0, grammarAccess.getEnumInterpretationAccess().getEnumKeyword_0());
2141 }
2142 (
2143 (
2144 {
2145 newCompositeNode(grammarAccess.getEnumInterpretationAccess().getSymbolModelSymbolParserRuleCall_1_0());
2146 }
2147 lv_Symbol_1_0=ruleModelSymbol
2148 {
2149 if ($current==null) {
2150 $current = createModelElementForParent(grammarAccess.getEnumInterpretationRule());
2151 }
2152 set(
2153 $current,
2154 "Symbol",
2155 lv_Symbol_1_0,
2156 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
2157 afterParserOrEnumRuleCall();
2158 }
2159 )
2160 )
2161 otherlv_2='{'
2162 {
2163 newLeafNode(otherlv_2, grammarAccess.getEnumInterpretationAccess().getLeftCurlyBracketKeyword_2());
2164 }
2165 (
2166 (
2167 {
2168 newCompositeNode(grammarAccess.getEnumInterpretationAccess().getObjectsNamedObjectParserRuleCall_3_0());
2169 }
2170 lv_objects_3_0=ruleNamedObject
2171 {
2172 if ($current==null) {
2173 $current = createModelElementForParent(grammarAccess.getEnumInterpretationRule());
2174 }
2175 add(
2176 $current,
2177 "objects",
2178 lv_objects_3_0,
2179 "org.eclipse.viatra.solver.language.SolverLanguage.NamedObject");
2180 afterParserOrEnumRuleCall();
2181 }
2182 )
2183 )+
2184 otherlv_4='}'
2185 { 3687 {
2186 newLeafNode(otherlv_4, grammarAccess.getEnumInterpretationAccess().getRightCurlyBracketKeyword_4()); 3688 $current = grammarAccess.getExponentialOpAccess().getPOWEnumLiteralDeclaration().getEnumLiteral().getInstance();
3689 newLeafNode(enumLiteral_0, grammarAccess.getExponentialOpAccess().getPOWEnumLiteralDeclaration());
2187 } 3690 }
2188 ) 3691 )
2189; 3692;
2190 3693
2191// Entry rule entryRuleFieldRelationInterpretation 3694// Rule UnaryOp
2192entryRuleFieldRelationInterpretation returns [EObject current=null]: 3695ruleUnaryOp returns [Enumerator current=null]
2193 { newCompositeNode(grammarAccess.getFieldRelationInterpretationRule()); }
2194 iv_ruleFieldRelationInterpretation=ruleFieldRelationInterpretation
2195 { $current=$iv_ruleFieldRelationInterpretation.current; }
2196 EOF;
2197
2198// Rule FieldRelationInterpretation
2199ruleFieldRelationInterpretation returns [EObject current=null]
2200@init { 3696@init {
2201 enterRule(); 3697 enterRule();
2202} 3698}
@@ -2205,92 +3701,57 @@ ruleFieldRelationInterpretation returns [EObject current=null]
2205}: 3701}:
2206 ( 3702 (
2207 ( 3703 (
2208 ( 3704 enumLiteral_0='!'
2209 lv_containment_0_0='containment' 3705 {
2210 { 3706 $current = grammarAccess.getUnaryOpAccess().getNEGEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
2211 newLeafNode(lv_containment_0_0, grammarAccess.getFieldRelationInterpretationAccess().getContainmentContainmentKeyword_0_0()); 3707 newLeafNode(enumLiteral_0, grammarAccess.getUnaryOpAccess().getNEGEnumLiteralDeclaration_0());
2212 } 3708 }
2213 { 3709 )
2214 if ($current==null) { 3710 |
2215 $current = createModelElement(grammarAccess.getFieldRelationInterpretationRule());
2216 }
2217 setWithLastConsumed($current, "containment", true, "containment");
2218 }
2219 )
2220 )?
2221 ( 3711 (
2222 ( 3712 enumLiteral_1='+'
2223 { 3713 {
2224 newCompositeNode(grammarAccess.getFieldRelationInterpretationAccess().getSymbolModelSymbolParserRuleCall_1_0()); 3714 $current = grammarAccess.getUnaryOpAccess().getPLUSEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
2225 } 3715 newLeafNode(enumLiteral_1, grammarAccess.getUnaryOpAccess().getPLUSEnumLiteralDeclaration_1());
2226 lv_symbol_1_0=ruleModelSymbol 3716 }
2227 {
2228 if ($current==null) {
2229 $current = createModelElementForParent(grammarAccess.getFieldRelationInterpretationRule());
2230 }
2231 set(
2232 $current,
2233 "symbol",
2234 lv_symbol_1_0,
2235 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
2236 afterParserOrEnumRuleCall();
2237 }
2238 )
2239 ) 3717 )
2240 otherlv_2=':' 3718 |
2241 {
2242 newLeafNode(otherlv_2, grammarAccess.getFieldRelationInterpretationAccess().getColonKeyword_2());
2243 }
2244 ( 3719 (
2245 ( 3720 enumLiteral_2='-'
2246 { 3721 {
2247 newCompositeNode(grammarAccess.getFieldRelationInterpretationAccess().getMultiplicityMultiplicityDefinitionParserRuleCall_3_0()); 3722 $current = grammarAccess.getUnaryOpAccess().getMINUSEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
2248 } 3723 newLeafNode(enumLiteral_2, grammarAccess.getUnaryOpAccess().getMINUSEnumLiteralDeclaration_2());
2249 lv_multiplicity_3_0=ruleMultiplicityDefinition 3724 }
2250 { 3725 )
2251 if ($current==null) { 3726 |
2252 $current = createModelElementForParent(grammarAccess.getFieldRelationInterpretationRule());
2253 }
2254 set(
2255 $current,
2256 "multiplicity",
2257 lv_multiplicity_3_0,
2258 "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicityDefinition");
2259 afterParserOrEnumRuleCall();
2260 }
2261 )
2262 )?
2263 ( 3727 (
2264 ( 3728 enumLiteral_3='may'
2265 { 3729 {
2266 newCompositeNode(grammarAccess.getFieldRelationInterpretationAccess().getTargetSymbolParserRuleCall_4_0()); 3730 $current = grammarAccess.getUnaryOpAccess().getMAYEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
2267 } 3731 newLeafNode(enumLiteral_3, grammarAccess.getUnaryOpAccess().getMAYEnumLiteralDeclaration_3());
2268 lv_target_4_0=ruleSymbol 3732 }
2269 { 3733 )
2270 if ($current==null) { 3734 |
2271 $current = createModelElementForParent(grammarAccess.getFieldRelationInterpretationRule()); 3735 (
2272 } 3736 enumLiteral_4='must'
2273 set( 3737 {
2274 $current, 3738 $current = grammarAccess.getUnaryOpAccess().getMUSTEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
2275 "target", 3739 newLeafNode(enumLiteral_4, grammarAccess.getUnaryOpAccess().getMUSTEnumLiteralDeclaration_4());
2276 lv_target_4_0, 3740 }
2277 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol"); 3741 )
2278 afterParserOrEnumRuleCall(); 3742 |
2279 } 3743 (
2280 ) 3744 enumLiteral_5='current'
3745 {
3746 $current = grammarAccess.getUnaryOpAccess().getCURRENTEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
3747 newLeafNode(enumLiteral_5, grammarAccess.getUnaryOpAccess().getCURRENTEnumLiteralDeclaration_5());
3748 }
2281 ) 3749 )
2282 ) 3750 )
2283; 3751;
2284 3752
2285// Entry rule entryRuleGlobalRelationInterpretation 3753// Rule AggregationOp
2286entryRuleGlobalRelationInterpretation returns [EObject current=null]: 3754ruleAggregationOp returns [Enumerator current=null]
2287 { newCompositeNode(grammarAccess.getGlobalRelationInterpretationRule()); }
2288 iv_ruleGlobalRelationInterpretation=ruleGlobalRelationInterpretation
2289 { $current=$iv_ruleGlobalRelationInterpretation.current; }
2290 EOF;
2291
2292// Rule GlobalRelationInterpretation
2293ruleGlobalRelationInterpretation returns [EObject current=null]
2294@init { 3755@init {
2295 enterRule(); 3756 enterRule();
2296} 3757}
@@ -2299,134 +3760,100 @@ ruleGlobalRelationInterpretation returns [EObject current=null]
2299}: 3760}:
2300 ( 3761 (
2301 ( 3762 (
2302 ( 3763 enumLiteral_0='only'
2303 lv_containment_0_0='containment' 3764 {
2304 { 3765 $current = grammarAccess.getAggregationOpAccess().getONLYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
2305 newLeafNode(lv_containment_0_0, grammarAccess.getGlobalRelationInterpretationAccess().getContainmentContainmentKeyword_0_0()); 3766 newLeafNode(enumLiteral_0, grammarAccess.getAggregationOpAccess().getONLYEnumLiteralDeclaration_0());
2306 } 3767 }
2307 { 3768 )
2308 if ($current==null) { 3769 |
2309 $current = createModelElement(grammarAccess.getGlobalRelationInterpretationRule());
2310 }
2311 setWithLastConsumed($current, "containment", true, "containment");
2312 }
2313 )
2314 )?
2315 otherlv_1='relation'
2316 {
2317 newLeafNode(otherlv_1, grammarAccess.getGlobalRelationInterpretationAccess().getRelationKeyword_1());
2318 }
2319 ( 3770 (
2320 ( 3771 enumLiteral_1='sum'
2321 { 3772 {
2322 newCompositeNode(grammarAccess.getGlobalRelationInterpretationAccess().getSymbolModelSymbolParserRuleCall_2_0()); 3773 $current = grammarAccess.getAggregationOpAccess().getSUMEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
2323 } 3774 newLeafNode(enumLiteral_1, grammarAccess.getAggregationOpAccess().getSUMEnumLiteralDeclaration_1());
2324 lv_symbol_2_0=ruleModelSymbol 3775 }
2325 {
2326 if ($current==null) {
2327 $current = createModelElementForParent(grammarAccess.getGlobalRelationInterpretationRule());
2328 }
2329 set(
2330 $current,
2331 "symbol",
2332 lv_symbol_2_0,
2333 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
2334 afterParserOrEnumRuleCall();
2335 }
2336 )
2337 ) 3776 )
2338 otherlv_3=':' 3777 |
2339 {
2340 newLeafNode(otherlv_3, grammarAccess.getGlobalRelationInterpretationAccess().getColonKeyword_3());
2341 }
2342 ( 3778 (
2343 ( 3779 enumLiteral_2='prod'
2344 { 3780 {
2345 newCompositeNode(grammarAccess.getGlobalRelationInterpretationAccess().getSourceMultiplicityMultiplicityDefinitionParserRuleCall_4_0()); 3781 $current = grammarAccess.getAggregationOpAccess().getPRODEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
2346 } 3782 newLeafNode(enumLiteral_2, grammarAccess.getAggregationOpAccess().getPRODEnumLiteralDeclaration_2());
2347 lv_sourceMultiplicity_4_0=ruleMultiplicityDefinition 3783 }
2348 { 3784 )
2349 if ($current==null) { 3785 |
2350 $current = createModelElementForParent(grammarAccess.getGlobalRelationInterpretationRule());
2351 }
2352 set(
2353 $current,
2354 "sourceMultiplicity",
2355 lv_sourceMultiplicity_4_0,
2356 "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicityDefinition");
2357 afterParserOrEnumRuleCall();
2358 }
2359 )
2360 )?
2361 ( 3786 (
2362 ( 3787 enumLiteral_3='avg'
2363 { 3788 {
2364 newCompositeNode(grammarAccess.getGlobalRelationInterpretationAccess().getSourceSymbolParserRuleCall_5_0()); 3789 $current = grammarAccess.getAggregationOpAccess().getAVGEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
2365 } 3790 newLeafNode(enumLiteral_3, grammarAccess.getAggregationOpAccess().getAVGEnumLiteralDeclaration_3());
2366 lv_source_5_0=ruleSymbol 3791 }
2367 {
2368 if ($current==null) {
2369 $current = createModelElementForParent(grammarAccess.getGlobalRelationInterpretationRule());
2370 }
2371 set(
2372 $current,
2373 "source",
2374 lv_source_5_0,
2375 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol");
2376 afterParserOrEnumRuleCall();
2377 }
2378 )
2379 ) 3792 )
3793 |
2380 ( 3794 (
2381 ( 3795 enumLiteral_4='min'
2382 { 3796 {
2383 newCompositeNode(grammarAccess.getGlobalRelationInterpretationAccess().getTargetMultiplicityMultiplicityDefinitionParserRuleCall_6_0()); 3797 $current = grammarAccess.getAggregationOpAccess().getMINEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
2384 } 3798 newLeafNode(enumLiteral_4, grammarAccess.getAggregationOpAccess().getMINEnumLiteralDeclaration_4());
2385 lv_targetMultiplicity_6_0=ruleMultiplicityDefinition 3799 }
2386 { 3800 )
2387 if ($current==null) { 3801 |
2388 $current = createModelElementForParent(grammarAccess.getGlobalRelationInterpretationRule());
2389 }
2390 set(
2391 $current,
2392 "targetMultiplicity",
2393 lv_targetMultiplicity_6_0,
2394 "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicityDefinition");
2395 afterParserOrEnumRuleCall();
2396 }
2397 )
2398 )?
2399 ( 3802 (
2400 ( 3803 enumLiteral_5='max'
2401 { 3804 {
2402 newCompositeNode(grammarAccess.getGlobalRelationInterpretationAccess().getTargetSymbolParserRuleCall_7_0()); 3805 $current = grammarAccess.getAggregationOpAccess().getMAXEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
2403 } 3806 newLeafNode(enumLiteral_5, grammarAccess.getAggregationOpAccess().getMAXEnumLiteralDeclaration_5());
2404 lv_target_7_0=ruleSymbol 3807 }
2405 {
2406 if ($current==null) {
2407 $current = createModelElementForParent(grammarAccess.getGlobalRelationInterpretationRule());
2408 }
2409 set(
2410 $current,
2411 "target",
2412 lv_target_7_0,
2413 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol");
2414 afterParserOrEnumRuleCall();
2415 }
2416 )
2417 ) 3808 )
2418 ) 3809 )
2419; 3810;
2420 3811
2421// Entry rule entryRuleMultiplicityDefinition 3812// Rule LogicValue
2422entryRuleMultiplicityDefinition returns [EObject current=null]: 3813ruleLogicValue returns [Enumerator current=null]
2423 { newCompositeNode(grammarAccess.getMultiplicityDefinitionRule()); } 3814@init {
2424 iv_ruleMultiplicityDefinition=ruleMultiplicityDefinition 3815 enterRule();
2425 { $current=$iv_ruleMultiplicityDefinition.current; } 3816}
2426 EOF; 3817@after {
3818 leaveRule();
3819}:
3820 (
3821 (
3822 enumLiteral_0='true'
3823 {
3824 $current = grammarAccess.getLogicValueAccess().getTRUEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
3825 newLeafNode(enumLiteral_0, grammarAccess.getLogicValueAccess().getTRUEEnumLiteralDeclaration_0());
3826 }
3827 )
3828 |
3829 (
3830 enumLiteral_1='false'
3831 {
3832 $current = grammarAccess.getLogicValueAccess().getFALSEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
3833 newLeafNode(enumLiteral_1, grammarAccess.getLogicValueAccess().getFALSEEnumLiteralDeclaration_1());
3834 }
3835 )
3836 |
3837 (
3838 enumLiteral_2='unknown'
3839 {
3840 $current = grammarAccess.getLogicValueAccess().getUNKNOWNEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
3841 newLeafNode(enumLiteral_2, grammarAccess.getLogicValueAccess().getUNKNOWNEnumLiteralDeclaration_2());
3842 }
3843 )
3844 |
3845 (
3846 enumLiteral_3='error'
3847 {
3848 $current = grammarAccess.getLogicValueAccess().getERROREnumLiteralDeclaration_3().getEnumLiteral().getInstance();
3849 newLeafNode(enumLiteral_3, grammarAccess.getLogicValueAccess().getERROREnumLiteralDeclaration_3());
3850 }
3851 )
3852 )
3853;
2427 3854
2428// Rule MultiplicityDefinition 3855// Rule ObjectiveKind
2429ruleMultiplicityDefinition returns [EObject current=null] 3856ruleObjectiveKind returns [Enumerator current=null]
2430@init { 3857@init {
2431 enterRule(); 3858 enterRule();
2432} 3859}
@@ -2435,67 +3862,33 @@ ruleMultiplicityDefinition returns [EObject current=null]
2435}: 3862}:
2436 ( 3863 (
2437 ( 3864 (
2438 ( 3865 enumLiteral_0='minimize'
2439 lv_lower_0_0=RULE_INT 3866 {
2440 { 3867 $current = grammarAccess.getObjectiveKindAccess().getMINIMIZEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
2441 newLeafNode(lv_lower_0_0, grammarAccess.getMultiplicityDefinitionAccess().getLowerINTTerminalRuleCall_0_0()); 3868 newLeafNode(enumLiteral_0, grammarAccess.getObjectiveKindAccess().getMINIMIZEEnumLiteralDeclaration_0());
2442 } 3869 }
2443 {
2444 if ($current==null) {
2445 $current = createModelElement(grammarAccess.getMultiplicityDefinitionRule());
2446 }
2447 setWithLastConsumed(
2448 $current,
2449 "lower",
2450 lv_lower_0_0,
2451 "org.eclipse.xtext.common.Terminals.INT");
2452 }
2453 )
2454 ) 3870 )
2455 otherlv_1='..' 3871 |
2456 {
2457 newLeafNode(otherlv_1, grammarAccess.getMultiplicityDefinitionAccess().getFullStopFullStopKeyword_1());
2458 }
2459 ( 3872 (
2460 ( 3873 enumLiteral_1='maximize'
2461 ( 3874 {
2462 lv_upper_2_0=RULE_INT 3875 $current = grammarAccess.getObjectiveKindAccess().getMAXIMIZEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
2463 { 3876 newLeafNode(enumLiteral_1, grammarAccess.getObjectiveKindAccess().getMAXIMIZEEnumLiteralDeclaration_1());
2464 newLeafNode(lv_upper_2_0, grammarAccess.getMultiplicityDefinitionAccess().getUpperINTTerminalRuleCall_2_0_0()); 3877 }
2465 }
2466 {
2467 if ($current==null) {
2468 $current = createModelElement(grammarAccess.getMultiplicityDefinitionRule());
2469 }
2470 setWithLastConsumed(
2471 $current,
2472 "upper",
2473 lv_upper_2_0,
2474 "org.eclipse.xtext.common.Terminals.INT");
2475 }
2476 )
2477 )
2478 |
2479 (
2480 (
2481 lv_unlimitedUpper_3_0='*'
2482 {
2483 newLeafNode(lv_unlimitedUpper_3_0, grammarAccess.getMultiplicityDefinitionAccess().getUnlimitedUpperAsteriskKeyword_2_1_0());
2484 }
2485 {
2486 if ($current==null) {
2487 $current = createModelElement(grammarAccess.getMultiplicityDefinitionRule());
2488 }
2489 setWithLastConsumed($current, "unlimitedUpper", true, "*");
2490 }
2491 )
2492 )
2493 ) 3878 )
2494 ) 3879 )
2495; 3880;
2496 3881
2497RULE_STRING : '"' ('\\' .|~(('\\'|'"')))* '"'; 3882RULE_STRING : '"' ('\\' .|~(('\\'|'"')))* '"';
2498 3883
3884RULE_QUOTED_ID : '\'' ('\\' .|~(('\\'|'\'')))* '\'';
3885
3886RULE_PLUS : 'synthetic::plus';
3887
3888RULE_STAR : 'synthetic::star';
3889
3890RULE_DOT : 'synthetic::dot';
3891
2499RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; 3892RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
2500 3893
2501RULE_INT : ('0'..'9')+; 3894RULE_INT : ('0'..'9')+;
diff --git a/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguage.tokens b/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguage.tokens
index 5054ccc5..1cf5b64f 100644
--- a/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguage.tokens
+++ b/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguage.tokens
@@ -1,45 +1,74 @@
1'('=17 1'!'=60
2')'=19 2'!='=52
3'*'=31 3'('=33
4'+'=30 4')'=34
5','=18 5'*'=35
6'-'=11 6'+'=56
7'.'=12 7','=28
8'..'=41 8'-'=57
9':'=20 9'->'=27
10':-'=28 10'.'=22
11'\''=27 11'..'=37
12'abstract'=33 12'/'=58
13'bool'=23 13':'=15
14'class'=34 14':-'=16
15'containment'=39 15';'=26
16'default'=32 16'<'=53
17'enum'=38 17'<='=48
18'equals'=22 18'='=17
19'error'=16 19'=='=47
20'exists'=21 20'>'=54
21'extends'=35 21'>='=49
22'false'=14 22'['=36
23'int'=24 23']'=38
24'real'=25 24'^'=59
25'relation'=40 25'abstract'=41
26'string'=26 26'avg'=67
27'true'=13 27'class'=42
28'unknown'=15 28'contains'=44
29'{'=36 29'count'=29
30'|'=29 30'current'=63
31'}'=37 31'default'=20
32RULE_ANY_OTHER=10 32'else'=25
33RULE_ID=5 33'empty'=40
34RULE_INT=4 34'error'=19
35RULE_ML_COMMENT=7 35'extends'=43
36RULE_SL_COMMENT=8 36'extern'=21
37RULE_STRING=6 37'false'=71
38RULE_WS=9 38'functional'=18
39T__11=11 39'if'=23
40T__12=12 40'in'=55
41T__13=13 41'inf'=39
42T__14=14 42'int'=50
43'max'=69
44'maximize'=74
45'may'=61
46'min'=68
47'minimize'=73
48'must'=62
49'only'=64
50'opposite'=45
51'prod'=66
52'real'=51
53'scope'=46
54'sum'=65
55'then'=24
56'true'=70
57'unknown'=72
58'{'=30
59'|'=32
60'}'=31
61RULE_ANY_OTHER=14
62RULE_DOT=4
63RULE_ID=8
64RULE_INT=9
65RULE_ML_COMMENT=11
66RULE_PLUS=6
67RULE_QUOTED_ID=10
68RULE_SL_COMMENT=12
69RULE_STAR=5
70RULE_STRING=7
71RULE_WS=13
43T__15=15 72T__15=15
44T__16=16 73T__16=16
45T__17=17 74T__17=17
@@ -67,3 +96,36 @@ T__38=38
67T__39=39 96T__39=39
68T__40=40 97T__40=40
69T__41=41 98T__41=41
99T__42=42
100T__43=43
101T__44=44
102T__45=45
103T__46=46
104T__47=47
105T__48=48
106T__49=49
107T__50=50
108T__51=51
109T__52=52
110T__53=53
111T__54=54
112T__55=55
113T__56=56
114T__57=57
115T__58=58
116T__59=59
117T__60=60
118T__61=61
119T__62=62
120T__63=63
121T__64=64
122T__65=65
123T__66=66
124T__67=67
125T__68=68
126T__69=69
127T__70=70
128T__71=71
129T__72=72
130T__73=73
131T__74=74
diff --git a/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageLexer.java b/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageLexer.java
index 53c80216..21e5bac9 100644
--- a/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageLexer.java
+++ b/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageLexer.java
@@ -12,45 +12,78 @@ import java.util.ArrayList;
12 12
13@SuppressWarnings("all") 13@SuppressWarnings("all")
14public class InternalSolverLanguageLexer extends Lexer { 14public class InternalSolverLanguageLexer extends Lexer {
15 public static final int RULE_STRING=6; 15 public static final int T__50=50;
16 public static final int RULE_SL_COMMENT=8;
17 public static final int T__19=19; 16 public static final int T__19=19;
18 public static final int T__15=15; 17 public static final int T__15=15;
19 public static final int T__37=37; 18 public static final int T__59=59;
20 public static final int T__16=16; 19 public static final int T__16=16;
21 public static final int T__38=38;
22 public static final int T__17=17; 20 public static final int T__17=17;
23 public static final int T__39=39;
24 public static final int T__18=18; 21 public static final int T__18=18;
25 public static final int T__11=11; 22 public static final int T__55=55;
26 public static final int T__33=33; 23 public static final int T__56=56;
27 public static final int T__12=12; 24 public static final int T__57=57;
28 public static final int T__34=34; 25 public static final int T__58=58;
29 public static final int T__13=13; 26 public static final int T__51=51;
30 public static final int T__35=35; 27 public static final int RULE_STAR=5;
31 public static final int T__14=14; 28 public static final int T__52=52;
32 public static final int T__36=36; 29 public static final int T__53=53;
33 public static final int EOF=-1; 30 public static final int T__54=54;
34 public static final int T__30=30; 31 public static final int T__60=60;
35 public static final int T__31=31; 32 public static final int T__61=61;
36 public static final int T__32=32; 33 public static final int RULE_ID=8;
37 public static final int RULE_ID=5; 34 public static final int RULE_QUOTED_ID=10;
38 public static final int RULE_WS=9;
39 public static final int RULE_ANY_OTHER=10;
40 public static final int T__26=26; 35 public static final int T__26=26;
41 public static final int T__27=27; 36 public static final int T__27=27;
42 public static final int T__28=28; 37 public static final int T__28=28;
43 public static final int RULE_INT=4; 38 public static final int RULE_INT=9;
44 public static final int T__29=29; 39 public static final int T__29=29;
45 public static final int T__22=22; 40 public static final int T__22=22;
46 public static final int RULE_ML_COMMENT=7; 41 public static final int T__66=66;
42 public static final int RULE_ML_COMMENT=11;
47 public static final int T__23=23; 43 public static final int T__23=23;
44 public static final int T__67=67;
48 public static final int T__24=24; 45 public static final int T__24=24;
46 public static final int T__68=68;
49 public static final int T__25=25; 47 public static final int T__25=25;
50 public static final int T__40=40; 48 public static final int T__69=69;
51 public static final int T__41=41; 49 public static final int T__62=62;
50 public static final int T__63=63;
52 public static final int T__20=20; 51 public static final int T__20=20;
52 public static final int T__64=64;
53 public static final int T__21=21; 53 public static final int T__21=21;
54 public static final int T__65=65;
55 public static final int T__70=70;
56 public static final int T__71=71;
57 public static final int T__72=72;
58 public static final int RULE_STRING=7;
59 public static final int RULE_SL_COMMENT=12;
60 public static final int T__37=37;
61 public static final int T__38=38;
62 public static final int T__39=39;
63 public static final int T__33=33;
64 public static final int T__34=34;
65 public static final int T__35=35;
66 public static final int RULE_PLUS=6;
67 public static final int T__36=36;
68 public static final int T__73=73;
69 public static final int RULE_DOT=4;
70 public static final int EOF=-1;
71 public static final int T__30=30;
72 public static final int T__74=74;
73 public static final int T__31=31;
74 public static final int T__32=32;
75 public static final int RULE_WS=13;
76 public static final int RULE_ANY_OTHER=14;
77 public static final int T__48=48;
78 public static final int T__49=49;
79 public static final int T__44=44;
80 public static final int T__45=45;
81 public static final int T__46=46;
82 public static final int T__47=47;
83 public static final int T__40=40;
84 public static final int T__41=41;
85 public static final int T__42=42;
86 public static final int T__43=43;
54 87
55 // delegates 88 // delegates
56 // delegators 89 // delegators
@@ -65,98 +98,15 @@ public class InternalSolverLanguageLexer extends Lexer {
65 } 98 }
66 public String getGrammarFileName() { return "InternalSolverLanguage.g"; } 99 public String getGrammarFileName() { return "InternalSolverLanguage.g"; }
67 100
68 // $ANTLR start "T__11"
69 public final void mT__11() throws RecognitionException {
70 try {
71 int _type = T__11;
72 int _channel = DEFAULT_TOKEN_CHANNEL;
73 // InternalSolverLanguage.g:11:7: ( '-' )
74 // InternalSolverLanguage.g:11:9: '-'
75 {
76 match('-');
77
78 }
79
80 state.type = _type;
81 state.channel = _channel;
82 }
83 finally {
84 }
85 }
86 // $ANTLR end "T__11"
87
88 // $ANTLR start "T__12"
89 public final void mT__12() throws RecognitionException {
90 try {
91 int _type = T__12;
92 int _channel = DEFAULT_TOKEN_CHANNEL;
93 // InternalSolverLanguage.g:12:7: ( '.' )
94 // InternalSolverLanguage.g:12:9: '.'
95 {
96 match('.');
97
98 }
99
100 state.type = _type;
101 state.channel = _channel;
102 }
103 finally {
104 }
105 }
106 // $ANTLR end "T__12"
107
108 // $ANTLR start "T__13"
109 public final void mT__13() throws RecognitionException {
110 try {
111 int _type = T__13;
112 int _channel = DEFAULT_TOKEN_CHANNEL;
113 // InternalSolverLanguage.g:13:7: ( 'true' )
114 // InternalSolverLanguage.g:13:9: 'true'
115 {
116 match("true");
117
118
119 }
120
121 state.type = _type;
122 state.channel = _channel;
123 }
124 finally {
125 }
126 }
127 // $ANTLR end "T__13"
128
129 // $ANTLR start "T__14"
130 public final void mT__14() throws RecognitionException {
131 try {
132 int _type = T__14;
133 int _channel = DEFAULT_TOKEN_CHANNEL;
134 // InternalSolverLanguage.g:14:7: ( 'false' )
135 // InternalSolverLanguage.g:14:9: 'false'
136 {
137 match("false");
138
139
140 }
141
142 state.type = _type;
143 state.channel = _channel;
144 }
145 finally {
146 }
147 }
148 // $ANTLR end "T__14"
149
150 // $ANTLR start "T__15" 101 // $ANTLR start "T__15"
151 public final void mT__15() throws RecognitionException { 102 public final void mT__15() throws RecognitionException {
152 try { 103 try {
153 int _type = T__15; 104 int _type = T__15;
154 int _channel = DEFAULT_TOKEN_CHANNEL; 105 int _channel = DEFAULT_TOKEN_CHANNEL;
155 // InternalSolverLanguage.g:15:7: ( 'unknown' ) 106 // InternalSolverLanguage.g:11:7: ( ':' )
156 // InternalSolverLanguage.g:15:9: 'unknown' 107 // InternalSolverLanguage.g:11:9: ':'
157 { 108 {
158 match("unknown"); 109 match(':');
159
160 110
161 } 111 }
162 112
@@ -173,10 +123,10 @@ public class InternalSolverLanguageLexer extends Lexer {
173 try { 123 try {
174 int _type = T__16; 124 int _type = T__16;
175 int _channel = DEFAULT_TOKEN_CHANNEL; 125 int _channel = DEFAULT_TOKEN_CHANNEL;
176 // InternalSolverLanguage.g:16:7: ( 'error' ) 126 // InternalSolverLanguage.g:12:7: ( ':-' )
177 // InternalSolverLanguage.g:16:9: 'error' 127 // InternalSolverLanguage.g:12:9: ':-'
178 { 128 {
179 match("error"); 129 match(":-");
180 130
181 131
182 } 132 }
@@ -194,10 +144,10 @@ public class InternalSolverLanguageLexer extends Lexer {
194 try { 144 try {
195 int _type = T__17; 145 int _type = T__17;
196 int _channel = DEFAULT_TOKEN_CHANNEL; 146 int _channel = DEFAULT_TOKEN_CHANNEL;
197 // InternalSolverLanguage.g:17:7: ( '(' ) 147 // InternalSolverLanguage.g:13:7: ( '=' )
198 // InternalSolverLanguage.g:17:9: '(' 148 // InternalSolverLanguage.g:13:9: '='
199 { 149 {
200 match('('); 150 match('=');
201 151
202 } 152 }
203 153
@@ -214,10 +164,11 @@ public class InternalSolverLanguageLexer extends Lexer {
214 try { 164 try {
215 int _type = T__18; 165 int _type = T__18;
216 int _channel = DEFAULT_TOKEN_CHANNEL; 166 int _channel = DEFAULT_TOKEN_CHANNEL;
217 // InternalSolverLanguage.g:18:7: ( ',' ) 167 // InternalSolverLanguage.g:14:7: ( 'functional' )
218 // InternalSolverLanguage.g:18:9: ',' 168 // InternalSolverLanguage.g:14:9: 'functional'
219 { 169 {
220 match(','); 170 match("functional");
171
221 172
222 } 173 }
223 174
@@ -234,10 +185,11 @@ public class InternalSolverLanguageLexer extends Lexer {
234 try { 185 try {
235 int _type = T__19; 186 int _type = T__19;
236 int _channel = DEFAULT_TOKEN_CHANNEL; 187 int _channel = DEFAULT_TOKEN_CHANNEL;
237 // InternalSolverLanguage.g:19:7: ( ')' ) 188 // InternalSolverLanguage.g:15:7: ( 'error' )
238 // InternalSolverLanguage.g:19:9: ')' 189 // InternalSolverLanguage.g:15:9: 'error'
239 { 190 {
240 match(')'); 191 match("error");
192
241 193
242 } 194 }
243 195
@@ -254,10 +206,11 @@ public class InternalSolverLanguageLexer extends Lexer {
254 try { 206 try {
255 int _type = T__20; 207 int _type = T__20;
256 int _channel = DEFAULT_TOKEN_CHANNEL; 208 int _channel = DEFAULT_TOKEN_CHANNEL;
257 // InternalSolverLanguage.g:20:7: ( ':' ) 209 // InternalSolverLanguage.g:16:7: ( 'default' )
258 // InternalSolverLanguage.g:20:9: ':' 210 // InternalSolverLanguage.g:16:9: 'default'
259 { 211 {
260 match(':'); 212 match("default");
213
261 214
262 } 215 }
263 216
@@ -274,10 +227,10 @@ public class InternalSolverLanguageLexer extends Lexer {
274 try { 227 try {
275 int _type = T__21; 228 int _type = T__21;
276 int _channel = DEFAULT_TOKEN_CHANNEL; 229 int _channel = DEFAULT_TOKEN_CHANNEL;
277 // InternalSolverLanguage.g:21:7: ( 'exists' ) 230 // InternalSolverLanguage.g:17:7: ( 'extern' )
278 // InternalSolverLanguage.g:21:9: 'exists' 231 // InternalSolverLanguage.g:17:9: 'extern'
279 { 232 {
280 match("exists"); 233 match("extern");
281 234
282 235
283 } 236 }
@@ -295,11 +248,10 @@ public class InternalSolverLanguageLexer extends Lexer {
295 try { 248 try {
296 int _type = T__22; 249 int _type = T__22;
297 int _channel = DEFAULT_TOKEN_CHANNEL; 250 int _channel = DEFAULT_TOKEN_CHANNEL;
298 // InternalSolverLanguage.g:22:7: ( 'equals' ) 251 // InternalSolverLanguage.g:18:7: ( '.' )
299 // InternalSolverLanguage.g:22:9: 'equals' 252 // InternalSolverLanguage.g:18:9: '.'
300 { 253 {
301 match("equals"); 254 match('.');
302
303 255
304 } 256 }
305 257
@@ -316,10 +268,10 @@ public class InternalSolverLanguageLexer extends Lexer {
316 try { 268 try {
317 int _type = T__23; 269 int _type = T__23;
318 int _channel = DEFAULT_TOKEN_CHANNEL; 270 int _channel = DEFAULT_TOKEN_CHANNEL;
319 // InternalSolverLanguage.g:23:7: ( 'bool' ) 271 // InternalSolverLanguage.g:19:7: ( 'if' )
320 // InternalSolverLanguage.g:23:9: 'bool' 272 // InternalSolverLanguage.g:19:9: 'if'
321 { 273 {
322 match("bool"); 274 match("if");
323 275
324 276
325 } 277 }
@@ -337,10 +289,10 @@ public class InternalSolverLanguageLexer extends Lexer {
337 try { 289 try {
338 int _type = T__24; 290 int _type = T__24;
339 int _channel = DEFAULT_TOKEN_CHANNEL; 291 int _channel = DEFAULT_TOKEN_CHANNEL;
340 // InternalSolverLanguage.g:24:7: ( 'int' ) 292 // InternalSolverLanguage.g:20:7: ( 'then' )
341 // InternalSolverLanguage.g:24:9: 'int' 293 // InternalSolverLanguage.g:20:9: 'then'
342 { 294 {
343 match("int"); 295 match("then");
344 296
345 297
346 } 298 }
@@ -358,10 +310,10 @@ public class InternalSolverLanguageLexer extends Lexer {
358 try { 310 try {
359 int _type = T__25; 311 int _type = T__25;
360 int _channel = DEFAULT_TOKEN_CHANNEL; 312 int _channel = DEFAULT_TOKEN_CHANNEL;
361 // InternalSolverLanguage.g:25:7: ( 'real' ) 313 // InternalSolverLanguage.g:21:7: ( 'else' )
362 // InternalSolverLanguage.g:25:9: 'real' 314 // InternalSolverLanguage.g:21:9: 'else'
363 { 315 {
364 match("real"); 316 match("else");
365 317
366 318
367 } 319 }
@@ -379,11 +331,10 @@ public class InternalSolverLanguageLexer extends Lexer {
379 try { 331 try {
380 int _type = T__26; 332 int _type = T__26;
381 int _channel = DEFAULT_TOKEN_CHANNEL; 333 int _channel = DEFAULT_TOKEN_CHANNEL;
382 // InternalSolverLanguage.g:26:7: ( 'string' ) 334 // InternalSolverLanguage.g:22:7: ( ';' )
383 // InternalSolverLanguage.g:26:9: 'string' 335 // InternalSolverLanguage.g:22:9: ';'
384 { 336 {
385 match("string"); 337 match(';');
386
387 338
388 } 339 }
389 340
@@ -400,10 +351,11 @@ public class InternalSolverLanguageLexer extends Lexer {
400 try { 351 try {
401 int _type = T__27; 352 int _type = T__27;
402 int _channel = DEFAULT_TOKEN_CHANNEL; 353 int _channel = DEFAULT_TOKEN_CHANNEL;
403 // InternalSolverLanguage.g:27:7: ( '\\'' ) 354 // InternalSolverLanguage.g:23:7: ( '->' )
404 // InternalSolverLanguage.g:27:9: '\\'' 355 // InternalSolverLanguage.g:23:9: '->'
405 { 356 {
406 match('\''); 357 match("->");
358
407 359
408 } 360 }
409 361
@@ -420,11 +372,10 @@ public class InternalSolverLanguageLexer extends Lexer {
420 try { 372 try {
421 int _type = T__28; 373 int _type = T__28;
422 int _channel = DEFAULT_TOKEN_CHANNEL; 374 int _channel = DEFAULT_TOKEN_CHANNEL;
423 // InternalSolverLanguage.g:28:7: ( ':-' ) 375 // InternalSolverLanguage.g:24:7: ( ',' )
424 // InternalSolverLanguage.g:28:9: ':-' 376 // InternalSolverLanguage.g:24:9: ','
425 { 377 {
426 match(":-"); 378 match(',');
427
428 379
429 } 380 }
430 381
@@ -441,10 +392,11 @@ public class InternalSolverLanguageLexer extends Lexer {
441 try { 392 try {
442 int _type = T__29; 393 int _type = T__29;
443 int _channel = DEFAULT_TOKEN_CHANNEL; 394 int _channel = DEFAULT_TOKEN_CHANNEL;
444 // InternalSolverLanguage.g:29:7: ( '|' ) 395 // InternalSolverLanguage.g:25:7: ( 'count' )
445 // InternalSolverLanguage.g:29:9: '|' 396 // InternalSolverLanguage.g:25:9: 'count'
446 { 397 {
447 match('|'); 398 match("count");
399
448 400
449 } 401 }
450 402
@@ -461,10 +413,10 @@ public class InternalSolverLanguageLexer extends Lexer {
461 try { 413 try {
462 int _type = T__30; 414 int _type = T__30;
463 int _channel = DEFAULT_TOKEN_CHANNEL; 415 int _channel = DEFAULT_TOKEN_CHANNEL;
464 // InternalSolverLanguage.g:30:7: ( '+' ) 416 // InternalSolverLanguage.g:26:7: ( '{' )
465 // InternalSolverLanguage.g:30:9: '+' 417 // InternalSolverLanguage.g:26:9: '{'
466 { 418 {
467 match('+'); 419 match('{');
468 420
469 } 421 }
470 422
@@ -481,10 +433,10 @@ public class InternalSolverLanguageLexer extends Lexer {
481 try { 433 try {
482 int _type = T__31; 434 int _type = T__31;
483 int _channel = DEFAULT_TOKEN_CHANNEL; 435 int _channel = DEFAULT_TOKEN_CHANNEL;
484 // InternalSolverLanguage.g:31:7: ( '*' ) 436 // InternalSolverLanguage.g:27:7: ( '}' )
485 // InternalSolverLanguage.g:31:9: '*' 437 // InternalSolverLanguage.g:27:9: '}'
486 { 438 {
487 match('*'); 439 match('}');
488 440
489 } 441 }
490 442
@@ -501,11 +453,10 @@ public class InternalSolverLanguageLexer extends Lexer {
501 try { 453 try {
502 int _type = T__32; 454 int _type = T__32;
503 int _channel = DEFAULT_TOKEN_CHANNEL; 455 int _channel = DEFAULT_TOKEN_CHANNEL;
504 // InternalSolverLanguage.g:32:7: ( 'default' ) 456 // InternalSolverLanguage.g:28:7: ( '|' )
505 // InternalSolverLanguage.g:32:9: 'default' 457 // InternalSolverLanguage.g:28:9: '|'
506 { 458 {
507 match("default"); 459 match('|');
508
509 460
510 } 461 }
511 462
@@ -522,11 +473,10 @@ public class InternalSolverLanguageLexer extends Lexer {
522 try { 473 try {
523 int _type = T__33; 474 int _type = T__33;
524 int _channel = DEFAULT_TOKEN_CHANNEL; 475 int _channel = DEFAULT_TOKEN_CHANNEL;
525 // InternalSolverLanguage.g:33:7: ( 'abstract' ) 476 // InternalSolverLanguage.g:29:7: ( '(' )
526 // InternalSolverLanguage.g:33:9: 'abstract' 477 // InternalSolverLanguage.g:29:9: '('
527 { 478 {
528 match("abstract"); 479 match('(');
529
530 480
531 } 481 }
532 482
@@ -543,11 +493,10 @@ public class InternalSolverLanguageLexer extends Lexer {
543 try { 493 try {
544 int _type = T__34; 494 int _type = T__34;
545 int _channel = DEFAULT_TOKEN_CHANNEL; 495 int _channel = DEFAULT_TOKEN_CHANNEL;
546 // InternalSolverLanguage.g:34:7: ( 'class' ) 496 // InternalSolverLanguage.g:30:7: ( ')' )
547 // InternalSolverLanguage.g:34:9: 'class' 497 // InternalSolverLanguage.g:30:9: ')'
548 { 498 {
549 match("class"); 499 match(')');
550
551 500
552 } 501 }
553 502
@@ -564,11 +513,10 @@ public class InternalSolverLanguageLexer extends Lexer {
564 try { 513 try {
565 int _type = T__35; 514 int _type = T__35;
566 int _channel = DEFAULT_TOKEN_CHANNEL; 515 int _channel = DEFAULT_TOKEN_CHANNEL;
567 // InternalSolverLanguage.g:35:7: ( 'extends' ) 516 // InternalSolverLanguage.g:31:7: ( '*' )
568 // InternalSolverLanguage.g:35:9: 'extends' 517 // InternalSolverLanguage.g:31:9: '*'
569 { 518 {
570 match("extends"); 519 match('*');
571
572 520
573 } 521 }
574 522
@@ -585,10 +533,10 @@ public class InternalSolverLanguageLexer extends Lexer {
585 try { 533 try {
586 int _type = T__36; 534 int _type = T__36;
587 int _channel = DEFAULT_TOKEN_CHANNEL; 535 int _channel = DEFAULT_TOKEN_CHANNEL;
588 // InternalSolverLanguage.g:36:7: ( '{' ) 536 // InternalSolverLanguage.g:32:7: ( '[' )
589 // InternalSolverLanguage.g:36:9: '{' 537 // InternalSolverLanguage.g:32:9: '['
590 { 538 {
591 match('{'); 539 match('[');
592 540
593 } 541 }
594 542
@@ -605,10 +553,11 @@ public class InternalSolverLanguageLexer extends Lexer {
605 try { 553 try {
606 int _type = T__37; 554 int _type = T__37;
607 int _channel = DEFAULT_TOKEN_CHANNEL; 555 int _channel = DEFAULT_TOKEN_CHANNEL;
608 // InternalSolverLanguage.g:37:7: ( '}' ) 556 // InternalSolverLanguage.g:33:7: ( '..' )
609 // InternalSolverLanguage.g:37:9: '}' 557 // InternalSolverLanguage.g:33:9: '..'
610 { 558 {
611 match('}'); 559 match("..");
560
612 561
613 } 562 }
614 563
@@ -625,11 +574,10 @@ public class InternalSolverLanguageLexer extends Lexer {
625 try { 574 try {
626 int _type = T__38; 575 int _type = T__38;
627 int _channel = DEFAULT_TOKEN_CHANNEL; 576 int _channel = DEFAULT_TOKEN_CHANNEL;
628 // InternalSolverLanguage.g:38:7: ( 'enum' ) 577 // InternalSolverLanguage.g:34:7: ( ']' )
629 // InternalSolverLanguage.g:38:9: 'enum' 578 // InternalSolverLanguage.g:34:9: ']'
630 { 579 {
631 match("enum"); 580 match(']');
632
633 581
634 } 582 }
635 583
@@ -646,10 +594,10 @@ public class InternalSolverLanguageLexer extends Lexer {
646 try { 594 try {
647 int _type = T__39; 595 int _type = T__39;
648 int _channel = DEFAULT_TOKEN_CHANNEL; 596 int _channel = DEFAULT_TOKEN_CHANNEL;
649 // InternalSolverLanguage.g:39:7: ( 'containment' ) 597 // InternalSolverLanguage.g:35:7: ( 'inf' )
650 // InternalSolverLanguage.g:39:9: 'containment' 598 // InternalSolverLanguage.g:35:9: 'inf'
651 { 599 {
652 match("containment"); 600 match("inf");
653 601
654 602
655 } 603 }
@@ -667,10 +615,10 @@ public class InternalSolverLanguageLexer extends Lexer {
667 try { 615 try {
668 int _type = T__40; 616 int _type = T__40;
669 int _channel = DEFAULT_TOKEN_CHANNEL; 617 int _channel = DEFAULT_TOKEN_CHANNEL;
670 // InternalSolverLanguage.g:40:7: ( 'relation' ) 618 // InternalSolverLanguage.g:36:7: ( 'empty' )
671 // InternalSolverLanguage.g:40:9: 'relation' 619 // InternalSolverLanguage.g:36:9: 'empty'
672 { 620 {
673 match("relation"); 621 match("empty");
674 622
675 623
676 } 624 }
@@ -688,10 +636,10 @@ public class InternalSolverLanguageLexer extends Lexer {
688 try { 636 try {
689 int _type = T__41; 637 int _type = T__41;
690 int _channel = DEFAULT_TOKEN_CHANNEL; 638 int _channel = DEFAULT_TOKEN_CHANNEL;
691 // InternalSolverLanguage.g:41:7: ( '..' ) 639 // InternalSolverLanguage.g:37:7: ( 'abstract' )
692 // InternalSolverLanguage.g:41:9: '..' 640 // InternalSolverLanguage.g:37:9: 'abstract'
693 { 641 {
694 match(".."); 642 match("abstract");
695 643
696 644
697 } 645 }
@@ -704,16 +652,702 @@ public class InternalSolverLanguageLexer extends Lexer {
704 } 652 }
705 // $ANTLR end "T__41" 653 // $ANTLR end "T__41"
706 654
655 // $ANTLR start "T__42"
656 public final void mT__42() throws RecognitionException {
657 try {
658 int _type = T__42;
659 int _channel = DEFAULT_TOKEN_CHANNEL;
660 // InternalSolverLanguage.g:38:7: ( 'class' )
661 // InternalSolverLanguage.g:38:9: 'class'
662 {
663 match("class");
664
665
666 }
667
668 state.type = _type;
669 state.channel = _channel;
670 }
671 finally {
672 }
673 }
674 // $ANTLR end "T__42"
675
676 // $ANTLR start "T__43"
677 public final void mT__43() throws RecognitionException {
678 try {
679 int _type = T__43;
680 int _channel = DEFAULT_TOKEN_CHANNEL;
681 // InternalSolverLanguage.g:39:7: ( 'extends' )
682 // InternalSolverLanguage.g:39:9: 'extends'
683 {
684 match("extends");
685
686
687 }
688
689 state.type = _type;
690 state.channel = _channel;
691 }
692 finally {
693 }
694 }
695 // $ANTLR end "T__43"
696
697 // $ANTLR start "T__44"
698 public final void mT__44() throws RecognitionException {
699 try {
700 int _type = T__44;
701 int _channel = DEFAULT_TOKEN_CHANNEL;
702 // InternalSolverLanguage.g:40:7: ( 'contains' )
703 // InternalSolverLanguage.g:40:9: 'contains'
704 {
705 match("contains");
706
707
708 }
709
710 state.type = _type;
711 state.channel = _channel;
712 }
713 finally {
714 }
715 }
716 // $ANTLR end "T__44"
717
718 // $ANTLR start "T__45"
719 public final void mT__45() throws RecognitionException {
720 try {
721 int _type = T__45;
722 int _channel = DEFAULT_TOKEN_CHANNEL;
723 // InternalSolverLanguage.g:41:7: ( 'opposite' )
724 // InternalSolverLanguage.g:41:9: 'opposite'
725 {
726 match("opposite");
727
728
729 }
730
731 state.type = _type;
732 state.channel = _channel;
733 }
734 finally {
735 }
736 }
737 // $ANTLR end "T__45"
738
739 // $ANTLR start "T__46"
740 public final void mT__46() throws RecognitionException {
741 try {
742 int _type = T__46;
743 int _channel = DEFAULT_TOKEN_CHANNEL;
744 // InternalSolverLanguage.g:42:7: ( 'scope' )
745 // InternalSolverLanguage.g:42:9: 'scope'
746 {
747 match("scope");
748
749
750 }
751
752 state.type = _type;
753 state.channel = _channel;
754 }
755 finally {
756 }
757 }
758 // $ANTLR end "T__46"
759
760 // $ANTLR start "T__47"
761 public final void mT__47() throws RecognitionException {
762 try {
763 int _type = T__47;
764 int _channel = DEFAULT_TOKEN_CHANNEL;
765 // InternalSolverLanguage.g:43:7: ( '==' )
766 // InternalSolverLanguage.g:43:9: '=='
767 {
768 match("==");
769
770
771 }
772
773 state.type = _type;
774 state.channel = _channel;
775 }
776 finally {
777 }
778 }
779 // $ANTLR end "T__47"
780
781 // $ANTLR start "T__48"
782 public final void mT__48() throws RecognitionException {
783 try {
784 int _type = T__48;
785 int _channel = DEFAULT_TOKEN_CHANNEL;
786 // InternalSolverLanguage.g:44:7: ( '<=' )
787 // InternalSolverLanguage.g:44:9: '<='
788 {
789 match("<=");
790
791
792 }
793
794 state.type = _type;
795 state.channel = _channel;
796 }
797 finally {
798 }
799 }
800 // $ANTLR end "T__48"
801
802 // $ANTLR start "T__49"
803 public final void mT__49() throws RecognitionException {
804 try {
805 int _type = T__49;
806 int _channel = DEFAULT_TOKEN_CHANNEL;
807 // InternalSolverLanguage.g:45:7: ( '>=' )
808 // InternalSolverLanguage.g:45:9: '>='
809 {
810 match(">=");
811
812
813 }
814
815 state.type = _type;
816 state.channel = _channel;
817 }
818 finally {
819 }
820 }
821 // $ANTLR end "T__49"
822
823 // $ANTLR start "T__50"
824 public final void mT__50() throws RecognitionException {
825 try {
826 int _type = T__50;
827 int _channel = DEFAULT_TOKEN_CHANNEL;
828 // InternalSolverLanguage.g:46:7: ( 'int' )
829 // InternalSolverLanguage.g:46:9: 'int'
830 {
831 match("int");
832
833
834 }
835
836 state.type = _type;
837 state.channel = _channel;
838 }
839 finally {
840 }
841 }
842 // $ANTLR end "T__50"
843
844 // $ANTLR start "T__51"
845 public final void mT__51() throws RecognitionException {
846 try {
847 int _type = T__51;
848 int _channel = DEFAULT_TOKEN_CHANNEL;
849 // InternalSolverLanguage.g:47:7: ( 'real' )
850 // InternalSolverLanguage.g:47:9: 'real'
851 {
852 match("real");
853
854
855 }
856
857 state.type = _type;
858 state.channel = _channel;
859 }
860 finally {
861 }
862 }
863 // $ANTLR end "T__51"
864
865 // $ANTLR start "T__52"
866 public final void mT__52() throws RecognitionException {
867 try {
868 int _type = T__52;
869 int _channel = DEFAULT_TOKEN_CHANNEL;
870 // InternalSolverLanguage.g:48:7: ( '!=' )
871 // InternalSolverLanguage.g:48:9: '!='
872 {
873 match("!=");
874
875
876 }
877
878 state.type = _type;
879 state.channel = _channel;
880 }
881 finally {
882 }
883 }
884 // $ANTLR end "T__52"
885
886 // $ANTLR start "T__53"
887 public final void mT__53() throws RecognitionException {
888 try {
889 int _type = T__53;
890 int _channel = DEFAULT_TOKEN_CHANNEL;
891 // InternalSolverLanguage.g:49:7: ( '<' )
892 // InternalSolverLanguage.g:49:9: '<'
893 {
894 match('<');
895
896 }
897
898 state.type = _type;
899 state.channel = _channel;
900 }
901 finally {
902 }
903 }
904 // $ANTLR end "T__53"
905
906 // $ANTLR start "T__54"
907 public final void mT__54() throws RecognitionException {
908 try {
909 int _type = T__54;
910 int _channel = DEFAULT_TOKEN_CHANNEL;
911 // InternalSolverLanguage.g:50:7: ( '>' )
912 // InternalSolverLanguage.g:50:9: '>'
913 {
914 match('>');
915
916 }
917
918 state.type = _type;
919 state.channel = _channel;
920 }
921 finally {
922 }
923 }
924 // $ANTLR end "T__54"
925
926 // $ANTLR start "T__55"
927 public final void mT__55() throws RecognitionException {
928 try {
929 int _type = T__55;
930 int _channel = DEFAULT_TOKEN_CHANNEL;
931 // InternalSolverLanguage.g:51:7: ( 'in' )
932 // InternalSolverLanguage.g:51:9: 'in'
933 {
934 match("in");
935
936
937 }
938
939 state.type = _type;
940 state.channel = _channel;
941 }
942 finally {
943 }
944 }
945 // $ANTLR end "T__55"
946
947 // $ANTLR start "T__56"
948 public final void mT__56() throws RecognitionException {
949 try {
950 int _type = T__56;
951 int _channel = DEFAULT_TOKEN_CHANNEL;
952 // InternalSolverLanguage.g:52:7: ( '+' )
953 // InternalSolverLanguage.g:52:9: '+'
954 {
955 match('+');
956
957 }
958
959 state.type = _type;
960 state.channel = _channel;
961 }
962 finally {
963 }
964 }
965 // $ANTLR end "T__56"
966
967 // $ANTLR start "T__57"
968 public final void mT__57() throws RecognitionException {
969 try {
970 int _type = T__57;
971 int _channel = DEFAULT_TOKEN_CHANNEL;
972 // InternalSolverLanguage.g:53:7: ( '-' )
973 // InternalSolverLanguage.g:53:9: '-'
974 {
975 match('-');
976
977 }
978
979 state.type = _type;
980 state.channel = _channel;
981 }
982 finally {
983 }
984 }
985 // $ANTLR end "T__57"
986
987 // $ANTLR start "T__58"
988 public final void mT__58() throws RecognitionException {
989 try {
990 int _type = T__58;
991 int _channel = DEFAULT_TOKEN_CHANNEL;
992 // InternalSolverLanguage.g:54:7: ( '/' )
993 // InternalSolverLanguage.g:54:9: '/'
994 {
995 match('/');
996
997 }
998
999 state.type = _type;
1000 state.channel = _channel;
1001 }
1002 finally {
1003 }
1004 }
1005 // $ANTLR end "T__58"
1006
1007 // $ANTLR start "T__59"
1008 public final void mT__59() throws RecognitionException {
1009 try {
1010 int _type = T__59;
1011 int _channel = DEFAULT_TOKEN_CHANNEL;
1012 // InternalSolverLanguage.g:55:7: ( '^' )
1013 // InternalSolverLanguage.g:55:9: '^'
1014 {
1015 match('^');
1016
1017 }
1018
1019 state.type = _type;
1020 state.channel = _channel;
1021 }
1022 finally {
1023 }
1024 }
1025 // $ANTLR end "T__59"
1026
1027 // $ANTLR start "T__60"
1028 public final void mT__60() throws RecognitionException {
1029 try {
1030 int _type = T__60;
1031 int _channel = DEFAULT_TOKEN_CHANNEL;
1032 // InternalSolverLanguage.g:56:7: ( '!' )
1033 // InternalSolverLanguage.g:56:9: '!'
1034 {
1035 match('!');
1036
1037 }
1038
1039 state.type = _type;
1040 state.channel = _channel;
1041 }
1042 finally {
1043 }
1044 }
1045 // $ANTLR end "T__60"
1046
1047 // $ANTLR start "T__61"
1048 public final void mT__61() throws RecognitionException {
1049 try {
1050 int _type = T__61;
1051 int _channel = DEFAULT_TOKEN_CHANNEL;
1052 // InternalSolverLanguage.g:57:7: ( 'may' )
1053 // InternalSolverLanguage.g:57:9: 'may'
1054 {
1055 match("may");
1056
1057
1058 }
1059
1060 state.type = _type;
1061 state.channel = _channel;
1062 }
1063 finally {
1064 }
1065 }
1066 // $ANTLR end "T__61"
1067
1068 // $ANTLR start "T__62"
1069 public final void mT__62() throws RecognitionException {
1070 try {
1071 int _type = T__62;
1072 int _channel = DEFAULT_TOKEN_CHANNEL;
1073 // InternalSolverLanguage.g:58:7: ( 'must' )
1074 // InternalSolverLanguage.g:58:9: 'must'
1075 {
1076 match("must");
1077
1078
1079 }
1080
1081 state.type = _type;
1082 state.channel = _channel;
1083 }
1084 finally {
1085 }
1086 }
1087 // $ANTLR end "T__62"
1088
1089 // $ANTLR start "T__63"
1090 public final void mT__63() throws RecognitionException {
1091 try {
1092 int _type = T__63;
1093 int _channel = DEFAULT_TOKEN_CHANNEL;
1094 // InternalSolverLanguage.g:59:7: ( 'current' )
1095 // InternalSolverLanguage.g:59:9: 'current'
1096 {
1097 match("current");
1098
1099
1100 }
1101
1102 state.type = _type;
1103 state.channel = _channel;
1104 }
1105 finally {
1106 }
1107 }
1108 // $ANTLR end "T__63"
1109
1110 // $ANTLR start "T__64"
1111 public final void mT__64() throws RecognitionException {
1112 try {
1113 int _type = T__64;
1114 int _channel = DEFAULT_TOKEN_CHANNEL;
1115 // InternalSolverLanguage.g:60:7: ( 'only' )
1116 // InternalSolverLanguage.g:60:9: 'only'
1117 {
1118 match("only");
1119
1120
1121 }
1122
1123 state.type = _type;
1124 state.channel = _channel;
1125 }
1126 finally {
1127 }
1128 }
1129 // $ANTLR end "T__64"
1130
1131 // $ANTLR start "T__65"
1132 public final void mT__65() throws RecognitionException {
1133 try {
1134 int _type = T__65;
1135 int _channel = DEFAULT_TOKEN_CHANNEL;
1136 // InternalSolverLanguage.g:61:7: ( 'sum' )
1137 // InternalSolverLanguage.g:61:9: 'sum'
1138 {
1139 match("sum");
1140
1141
1142 }
1143
1144 state.type = _type;
1145 state.channel = _channel;
1146 }
1147 finally {
1148 }
1149 }
1150 // $ANTLR end "T__65"
1151
1152 // $ANTLR start "T__66"
1153 public final void mT__66() throws RecognitionException {
1154 try {
1155 int _type = T__66;
1156 int _channel = DEFAULT_TOKEN_CHANNEL;
1157 // InternalSolverLanguage.g:62:7: ( 'prod' )
1158 // InternalSolverLanguage.g:62:9: 'prod'
1159 {
1160 match("prod");
1161
1162
1163 }
1164
1165 state.type = _type;
1166 state.channel = _channel;
1167 }
1168 finally {
1169 }
1170 }
1171 // $ANTLR end "T__66"
1172
1173 // $ANTLR start "T__67"
1174 public final void mT__67() throws RecognitionException {
1175 try {
1176 int _type = T__67;
1177 int _channel = DEFAULT_TOKEN_CHANNEL;
1178 // InternalSolverLanguage.g:63:7: ( 'avg' )
1179 // InternalSolverLanguage.g:63:9: 'avg'
1180 {
1181 match("avg");
1182
1183
1184 }
1185
1186 state.type = _type;
1187 state.channel = _channel;
1188 }
1189 finally {
1190 }
1191 }
1192 // $ANTLR end "T__67"
1193
1194 // $ANTLR start "T__68"
1195 public final void mT__68() throws RecognitionException {
1196 try {
1197 int _type = T__68;
1198 int _channel = DEFAULT_TOKEN_CHANNEL;
1199 // InternalSolverLanguage.g:64:7: ( 'min' )
1200 // InternalSolverLanguage.g:64:9: 'min'
1201 {
1202 match("min");
1203
1204
1205 }
1206
1207 state.type = _type;
1208 state.channel = _channel;
1209 }
1210 finally {
1211 }
1212 }
1213 // $ANTLR end "T__68"
1214
1215 // $ANTLR start "T__69"
1216 public final void mT__69() throws RecognitionException {
1217 try {
1218 int _type = T__69;
1219 int _channel = DEFAULT_TOKEN_CHANNEL;
1220 // InternalSolverLanguage.g:65:7: ( 'max' )
1221 // InternalSolverLanguage.g:65:9: 'max'
1222 {
1223 match("max");
1224
1225
1226 }
1227
1228 state.type = _type;
1229 state.channel = _channel;
1230 }
1231 finally {
1232 }
1233 }
1234 // $ANTLR end "T__69"
1235
1236 // $ANTLR start "T__70"
1237 public final void mT__70() throws RecognitionException {
1238 try {
1239 int _type = T__70;
1240 int _channel = DEFAULT_TOKEN_CHANNEL;
1241 // InternalSolverLanguage.g:66:7: ( 'true' )
1242 // InternalSolverLanguage.g:66:9: 'true'
1243 {
1244 match("true");
1245
1246
1247 }
1248
1249 state.type = _type;
1250 state.channel = _channel;
1251 }
1252 finally {
1253 }
1254 }
1255 // $ANTLR end "T__70"
1256
1257 // $ANTLR start "T__71"
1258 public final void mT__71() throws RecognitionException {
1259 try {
1260 int _type = T__71;
1261 int _channel = DEFAULT_TOKEN_CHANNEL;
1262 // InternalSolverLanguage.g:67:7: ( 'false' )
1263 // InternalSolverLanguage.g:67:9: 'false'
1264 {
1265 match("false");
1266
1267
1268 }
1269
1270 state.type = _type;
1271 state.channel = _channel;
1272 }
1273 finally {
1274 }
1275 }
1276 // $ANTLR end "T__71"
1277
1278 // $ANTLR start "T__72"
1279 public final void mT__72() throws RecognitionException {
1280 try {
1281 int _type = T__72;
1282 int _channel = DEFAULT_TOKEN_CHANNEL;
1283 // InternalSolverLanguage.g:68:7: ( 'unknown' )
1284 // InternalSolverLanguage.g:68:9: 'unknown'
1285 {
1286 match("unknown");
1287
1288
1289 }
1290
1291 state.type = _type;
1292 state.channel = _channel;
1293 }
1294 finally {
1295 }
1296 }
1297 // $ANTLR end "T__72"
1298
1299 // $ANTLR start "T__73"
1300 public final void mT__73() throws RecognitionException {
1301 try {
1302 int _type = T__73;
1303 int _channel = DEFAULT_TOKEN_CHANNEL;
1304 // InternalSolverLanguage.g:69:7: ( 'minimize' )
1305 // InternalSolverLanguage.g:69:9: 'minimize'
1306 {
1307 match("minimize");
1308
1309
1310 }
1311
1312 state.type = _type;
1313 state.channel = _channel;
1314 }
1315 finally {
1316 }
1317 }
1318 // $ANTLR end "T__73"
1319
1320 // $ANTLR start "T__74"
1321 public final void mT__74() throws RecognitionException {
1322 try {
1323 int _type = T__74;
1324 int _channel = DEFAULT_TOKEN_CHANNEL;
1325 // InternalSolverLanguage.g:70:7: ( 'maximize' )
1326 // InternalSolverLanguage.g:70:9: 'maximize'
1327 {
1328 match("maximize");
1329
1330
1331 }
1332
1333 state.type = _type;
1334 state.channel = _channel;
1335 }
1336 finally {
1337 }
1338 }
1339 // $ANTLR end "T__74"
1340
707 // $ANTLR start "RULE_STRING" 1341 // $ANTLR start "RULE_STRING"
708 public final void mRULE_STRING() throws RecognitionException { 1342 public final void mRULE_STRING() throws RecognitionException {
709 try { 1343 try {
710 int _type = RULE_STRING; 1344 int _type = RULE_STRING;
711 int _channel = DEFAULT_TOKEN_CHANNEL; 1345 int _channel = DEFAULT_TOKEN_CHANNEL;
712 // InternalSolverLanguage.g:2497:13: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' ) 1346 // InternalSolverLanguage.g:3882:13: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' )
713 // InternalSolverLanguage.g:2497:15: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' 1347 // InternalSolverLanguage.g:3882:15: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
714 { 1348 {
715 match('\"'); 1349 match('\"');
716 // InternalSolverLanguage.g:2497:19: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* 1350 // InternalSolverLanguage.g:3882:19: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
717 loop1: 1351 loop1:
718 do { 1352 do {
719 int alt1=3; 1353 int alt1=3;
@@ -729,7 +1363,7 @@ public class InternalSolverLanguageLexer extends Lexer {
729 1363
730 switch (alt1) { 1364 switch (alt1) {
731 case 1 : 1365 case 1 :
732 // InternalSolverLanguage.g:2497:20: '\\\\' . 1366 // InternalSolverLanguage.g:3882:20: '\\\\' .
733 { 1367 {
734 match('\\'); 1368 match('\\');
735 matchAny(); 1369 matchAny();
@@ -737,7 +1371,7 @@ public class InternalSolverLanguageLexer extends Lexer {
737 } 1371 }
738 break; 1372 break;
739 case 2 : 1373 case 2 :
740 // InternalSolverLanguage.g:2497:27: ~ ( ( '\\\\' | '\"' ) ) 1374 // InternalSolverLanguage.g:3882:27: ~ ( ( '\\\\' | '\"' ) )
741 { 1375 {
742 if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { 1376 if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
743 input.consume(); 1377 input.consume();
@@ -769,24 +1403,152 @@ public class InternalSolverLanguageLexer extends Lexer {
769 } 1403 }
770 // $ANTLR end "RULE_STRING" 1404 // $ANTLR end "RULE_STRING"
771 1405
1406 // $ANTLR start "RULE_QUOTED_ID"
1407 public final void mRULE_QUOTED_ID() throws RecognitionException {
1408 try {
1409 int _type = RULE_QUOTED_ID;
1410 int _channel = DEFAULT_TOKEN_CHANNEL;
1411 // InternalSolverLanguage.g:3884:16: ( '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
1412 // InternalSolverLanguage.g:3884:18: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
1413 {
1414 match('\'');
1415 // InternalSolverLanguage.g:3884:23: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
1416 loop2:
1417 do {
1418 int alt2=3;
1419 int LA2_0 = input.LA(1);
1420
1421 if ( (LA2_0=='\\') ) {
1422 alt2=1;
1423 }
1424 else if ( ((LA2_0>='\u0000' && LA2_0<='&')||(LA2_0>='(' && LA2_0<='[')||(LA2_0>=']' && LA2_0<='\uFFFF')) ) {
1425 alt2=2;
1426 }
1427
1428
1429 switch (alt2) {
1430 case 1 :
1431 // InternalSolverLanguage.g:3884:24: '\\\\' .
1432 {
1433 match('\\');
1434 matchAny();
1435
1436 }
1437 break;
1438 case 2 :
1439 // InternalSolverLanguage.g:3884:31: ~ ( ( '\\\\' | '\\'' ) )
1440 {
1441 if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
1442 input.consume();
1443
1444 }
1445 else {
1446 MismatchedSetException mse = new MismatchedSetException(null,input);
1447 recover(mse);
1448 throw mse;}
1449
1450
1451 }
1452 break;
1453
1454 default :
1455 break loop2;
1456 }
1457 } while (true);
1458
1459 match('\'');
1460
1461 }
1462
1463 state.type = _type;
1464 state.channel = _channel;
1465 }
1466 finally {
1467 }
1468 }
1469 // $ANTLR end "RULE_QUOTED_ID"
1470
1471 // $ANTLR start "RULE_PLUS"
1472 public final void mRULE_PLUS() throws RecognitionException {
1473 try {
1474 int _type = RULE_PLUS;
1475 int _channel = DEFAULT_TOKEN_CHANNEL;
1476 // InternalSolverLanguage.g:3886:11: ( 'synthetic::plus' )
1477 // InternalSolverLanguage.g:3886:13: 'synthetic::plus'
1478 {
1479 match("synthetic::plus");
1480
1481
1482 }
1483
1484 state.type = _type;
1485 state.channel = _channel;
1486 }
1487 finally {
1488 }
1489 }
1490 // $ANTLR end "RULE_PLUS"
1491
1492 // $ANTLR start "RULE_STAR"
1493 public final void mRULE_STAR() throws RecognitionException {
1494 try {
1495 int _type = RULE_STAR;
1496 int _channel = DEFAULT_TOKEN_CHANNEL;
1497 // InternalSolverLanguage.g:3888:11: ( 'synthetic::star' )
1498 // InternalSolverLanguage.g:3888:13: 'synthetic::star'
1499 {
1500 match("synthetic::star");
1501
1502
1503 }
1504
1505 state.type = _type;
1506 state.channel = _channel;
1507 }
1508 finally {
1509 }
1510 }
1511 // $ANTLR end "RULE_STAR"
1512
1513 // $ANTLR start "RULE_DOT"
1514 public final void mRULE_DOT() throws RecognitionException {
1515 try {
1516 int _type = RULE_DOT;
1517 int _channel = DEFAULT_TOKEN_CHANNEL;
1518 // InternalSolverLanguage.g:3890:10: ( 'synthetic::dot' )
1519 // InternalSolverLanguage.g:3890:12: 'synthetic::dot'
1520 {
1521 match("synthetic::dot");
1522
1523
1524 }
1525
1526 state.type = _type;
1527 state.channel = _channel;
1528 }
1529 finally {
1530 }
1531 }
1532 // $ANTLR end "RULE_DOT"
1533
772 // $ANTLR start "RULE_ID" 1534 // $ANTLR start "RULE_ID"
773 public final void mRULE_ID() throws RecognitionException { 1535 public final void mRULE_ID() throws RecognitionException {
774 try { 1536 try {
775 int _type = RULE_ID; 1537 int _type = RULE_ID;
776 int _channel = DEFAULT_TOKEN_CHANNEL; 1538 int _channel = DEFAULT_TOKEN_CHANNEL;
777 // InternalSolverLanguage.g:2499:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) 1539 // InternalSolverLanguage.g:3892:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
778 // InternalSolverLanguage.g:2499:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* 1540 // InternalSolverLanguage.g:3892:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
779 { 1541 {
780 // InternalSolverLanguage.g:2499:11: ( '^' )? 1542 // InternalSolverLanguage.g:3892:11: ( '^' )?
781 int alt2=2; 1543 int alt3=2;
782 int LA2_0 = input.LA(1); 1544 int LA3_0 = input.LA(1);
783 1545
784 if ( (LA2_0=='^') ) { 1546 if ( (LA3_0=='^') ) {
785 alt2=1; 1547 alt3=1;
786 } 1548 }
787 switch (alt2) { 1549 switch (alt3) {
788 case 1 : 1550 case 1 :
789 // InternalSolverLanguage.g:2499:11: '^' 1551 // InternalSolverLanguage.g:3892:11: '^'
790 { 1552 {
791 match('^'); 1553 match('^');
792 1554
@@ -804,18 +1566,18 @@ public class InternalSolverLanguageLexer extends Lexer {
804 recover(mse); 1566 recover(mse);
805 throw mse;} 1567 throw mse;}
806 1568
807 // InternalSolverLanguage.g:2499:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* 1569 // InternalSolverLanguage.g:3892:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
808 loop3: 1570 loop4:
809 do { 1571 do {
810 int alt3=2; 1572 int alt4=2;
811 int LA3_0 = input.LA(1); 1573 int LA4_0 = input.LA(1);
812 1574
813 if ( ((LA3_0>='0' && LA3_0<='9')||(LA3_0>='A' && LA3_0<='Z')||LA3_0=='_'||(LA3_0>='a' && LA3_0<='z')) ) { 1575 if ( ((LA4_0>='0' && LA4_0<='9')||(LA4_0>='A' && LA4_0<='Z')||LA4_0=='_'||(LA4_0>='a' && LA4_0<='z')) ) {
814 alt3=1; 1576 alt4=1;
815 } 1577 }
816 1578
817 1579
818 switch (alt3) { 1580 switch (alt4) {
819 case 1 : 1581 case 1 :
820 // InternalSolverLanguage.g: 1582 // InternalSolverLanguage.g:
821 { 1583 {
@@ -833,7 +1595,7 @@ public class InternalSolverLanguageLexer extends Lexer {
833 break; 1595 break;
834 1596
835 default : 1597 default :
836 break loop3; 1598 break loop4;
837 } 1599 }
838 } while (true); 1600 } while (true);
839 1601
@@ -853,24 +1615,24 @@ public class InternalSolverLanguageLexer extends Lexer {
853 try { 1615 try {
854 int _type = RULE_INT; 1616 int _type = RULE_INT;
855 int _channel = DEFAULT_TOKEN_CHANNEL; 1617 int _channel = DEFAULT_TOKEN_CHANNEL;
856 // InternalSolverLanguage.g:2501:10: ( ( '0' .. '9' )+ ) 1618 // InternalSolverLanguage.g:3894:10: ( ( '0' .. '9' )+ )
857 // InternalSolverLanguage.g:2501:12: ( '0' .. '9' )+ 1619 // InternalSolverLanguage.g:3894:12: ( '0' .. '9' )+
858 { 1620 {
859 // InternalSolverLanguage.g:2501:12: ( '0' .. '9' )+ 1621 // InternalSolverLanguage.g:3894:12: ( '0' .. '9' )+
860 int cnt4=0; 1622 int cnt5=0;
861 loop4: 1623 loop5:
862 do { 1624 do {
863 int alt4=2; 1625 int alt5=2;
864 int LA4_0 = input.LA(1); 1626 int LA5_0 = input.LA(1);
865 1627
866 if ( ((LA4_0>='0' && LA4_0<='9')) ) { 1628 if ( ((LA5_0>='0' && LA5_0<='9')) ) {
867 alt4=1; 1629 alt5=1;
868 } 1630 }
869 1631
870 1632
871 switch (alt4) { 1633 switch (alt5) {
872 case 1 : 1634 case 1 :
873 // InternalSolverLanguage.g:2501:13: '0' .. '9' 1635 // InternalSolverLanguage.g:3894:13: '0' .. '9'
874 { 1636 {
875 matchRange('0','9'); 1637 matchRange('0','9');
876 1638
@@ -878,12 +1640,12 @@ public class InternalSolverLanguageLexer extends Lexer {
878 break; 1640 break;
879 1641
880 default : 1642 default :
881 if ( cnt4 >= 1 ) break loop4; 1643 if ( cnt5 >= 1 ) break loop5;
882 EarlyExitException eee = 1644 EarlyExitException eee =
883 new EarlyExitException(4, input); 1645 new EarlyExitException(5, input);
884 throw eee; 1646 throw eee;
885 } 1647 }
886 cnt4++; 1648 cnt5++;
887 } while (true); 1649 } while (true);
888 1650
889 1651
@@ -902,37 +1664,37 @@ public class InternalSolverLanguageLexer extends Lexer {
902 try { 1664 try {
903 int _type = RULE_ML_COMMENT; 1665 int _type = RULE_ML_COMMENT;
904 int _channel = DEFAULT_TOKEN_CHANNEL; 1666 int _channel = DEFAULT_TOKEN_CHANNEL;
905 // InternalSolverLanguage.g:2503:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) 1667 // InternalSolverLanguage.g:3896:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
906 // InternalSolverLanguage.g:2503:19: '/*' ( options {greedy=false; } : . )* '*/' 1668 // InternalSolverLanguage.g:3896:19: '/*' ( options {greedy=false; } : . )* '*/'
907 { 1669 {
908 match("/*"); 1670 match("/*");
909 1671
910 // InternalSolverLanguage.g:2503:24: ( options {greedy=false; } : . )* 1672 // InternalSolverLanguage.g:3896:24: ( options {greedy=false; } : . )*
911 loop5: 1673 loop6:
912 do { 1674 do {
913 int alt5=2; 1675 int alt6=2;
914 int LA5_0 = input.LA(1); 1676 int LA6_0 = input.LA(1);
915 1677
916 if ( (LA5_0=='*') ) { 1678 if ( (LA6_0=='*') ) {
917 int LA5_1 = input.LA(2); 1679 int LA6_1 = input.LA(2);
918 1680
919 if ( (LA5_1=='/') ) { 1681 if ( (LA6_1=='/') ) {
920 alt5=2; 1682 alt6=2;
921 } 1683 }
922 else if ( ((LA5_1>='\u0000' && LA5_1<='.')||(LA5_1>='0' && LA5_1<='\uFFFF')) ) { 1684 else if ( ((LA6_1>='\u0000' && LA6_1<='.')||(LA6_1>='0' && LA6_1<='\uFFFF')) ) {
923 alt5=1; 1685 alt6=1;
924 } 1686 }
925 1687
926 1688
927 } 1689 }
928 else if ( ((LA5_0>='\u0000' && LA5_0<=')')||(LA5_0>='+' && LA5_0<='\uFFFF')) ) { 1690 else if ( ((LA6_0>='\u0000' && LA6_0<=')')||(LA6_0>='+' && LA6_0<='\uFFFF')) ) {
929 alt5=1; 1691 alt6=1;
930 } 1692 }
931 1693
932 1694
933 switch (alt5) { 1695 switch (alt6) {
934 case 1 : 1696 case 1 :
935 // InternalSolverLanguage.g:2503:52: . 1697 // InternalSolverLanguage.g:3896:52: .
936 { 1698 {
937 matchAny(); 1699 matchAny();
938 1700
@@ -940,7 +1702,7 @@ public class InternalSolverLanguageLexer extends Lexer {
940 break; 1702 break;
941 1703
942 default : 1704 default :
943 break loop5; 1705 break loop6;
944 } 1706 }
945 } while (true); 1707 } while (true);
946 1708
@@ -962,25 +1724,25 @@ public class InternalSolverLanguageLexer extends Lexer {
962 try { 1724 try {
963 int _type = RULE_SL_COMMENT; 1725 int _type = RULE_SL_COMMENT;
964 int _channel = DEFAULT_TOKEN_CHANNEL; 1726 int _channel = DEFAULT_TOKEN_CHANNEL;
965 // InternalSolverLanguage.g:2505:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) 1727 // InternalSolverLanguage.g:3898:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
966 // InternalSolverLanguage.g:2505:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? 1728 // InternalSolverLanguage.g:3898:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
967 { 1729 {
968 match("//"); 1730 match("//");
969 1731
970 // InternalSolverLanguage.g:2505:24: (~ ( ( '\\n' | '\\r' ) ) )* 1732 // InternalSolverLanguage.g:3898:24: (~ ( ( '\\n' | '\\r' ) ) )*
971 loop6: 1733 loop7:
972 do { 1734 do {
973 int alt6=2; 1735 int alt7=2;
974 int LA6_0 = input.LA(1); 1736 int LA7_0 = input.LA(1);
975 1737
976 if ( ((LA6_0>='\u0000' && LA6_0<='\t')||(LA6_0>='\u000B' && LA6_0<='\f')||(LA6_0>='\u000E' && LA6_0<='\uFFFF')) ) { 1738 if ( ((LA7_0>='\u0000' && LA7_0<='\t')||(LA7_0>='\u000B' && LA7_0<='\f')||(LA7_0>='\u000E' && LA7_0<='\uFFFF')) ) {
977 alt6=1; 1739 alt7=1;
978 } 1740 }
979 1741
980 1742
981 switch (alt6) { 1743 switch (alt7) {
982 case 1 : 1744 case 1 :
983 // InternalSolverLanguage.g:2505:24: ~ ( ( '\\n' | '\\r' ) ) 1745 // InternalSolverLanguage.g:3898:24: ~ ( ( '\\n' | '\\r' ) )
984 { 1746 {
985 if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { 1747 if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
986 input.consume(); 1748 input.consume();
@@ -996,31 +1758,31 @@ public class InternalSolverLanguageLexer extends Lexer {
996 break; 1758 break;
997 1759
998 default : 1760 default :
999 break loop6; 1761 break loop7;
1000 } 1762 }
1001 } while (true); 1763 } while (true);
1002 1764
1003 // InternalSolverLanguage.g:2505:40: ( ( '\\r' )? '\\n' )? 1765 // InternalSolverLanguage.g:3898:40: ( ( '\\r' )? '\\n' )?
1004 int alt8=2; 1766 int alt9=2;
1005 int LA8_0 = input.LA(1); 1767 int LA9_0 = input.LA(1);
1006 1768
1007 if ( (LA8_0=='\n'||LA8_0=='\r') ) { 1769 if ( (LA9_0=='\n'||LA9_0=='\r') ) {
1008 alt8=1; 1770 alt9=1;
1009 } 1771 }
1010 switch (alt8) { 1772 switch (alt9) {
1011 case 1 : 1773 case 1 :
1012 // InternalSolverLanguage.g:2505:41: ( '\\r' )? '\\n' 1774 // InternalSolverLanguage.g:3898:41: ( '\\r' )? '\\n'
1013 { 1775 {
1014 // InternalSolverLanguage.g:2505:41: ( '\\r' )? 1776 // InternalSolverLanguage.g:3898:41: ( '\\r' )?
1015 int alt7=2; 1777 int alt8=2;
1016 int LA7_0 = input.LA(1); 1778 int LA8_0 = input.LA(1);
1017 1779
1018 if ( (LA7_0=='\r') ) { 1780 if ( (LA8_0=='\r') ) {
1019 alt7=1; 1781 alt8=1;
1020 } 1782 }
1021 switch (alt7) { 1783 switch (alt8) {
1022 case 1 : 1784 case 1 :
1023 // InternalSolverLanguage.g:2505:41: '\\r' 1785 // InternalSolverLanguage.g:3898:41: '\\r'
1024 { 1786 {
1025 match('\r'); 1787 match('\r');
1026 1788
@@ -1052,22 +1814,22 @@ public class InternalSolverLanguageLexer extends Lexer {
1052 try { 1814 try {
1053 int _type = RULE_WS; 1815 int _type = RULE_WS;
1054 int _channel = DEFAULT_TOKEN_CHANNEL; 1816 int _channel = DEFAULT_TOKEN_CHANNEL;
1055 // InternalSolverLanguage.g:2507:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) 1817 // InternalSolverLanguage.g:3900:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
1056 // InternalSolverLanguage.g:2507:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ 1818 // InternalSolverLanguage.g:3900:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
1057 { 1819 {
1058 // InternalSolverLanguage.g:2507:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ 1820 // InternalSolverLanguage.g:3900:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
1059 int cnt9=0; 1821 int cnt10=0;
1060 loop9: 1822 loop10:
1061 do { 1823 do {
1062 int alt9=2; 1824 int alt10=2;
1063 int LA9_0 = input.LA(1); 1825 int LA10_0 = input.LA(1);
1064 1826
1065 if ( ((LA9_0>='\t' && LA9_0<='\n')||LA9_0=='\r'||LA9_0==' ') ) { 1827 if ( ((LA10_0>='\t' && LA10_0<='\n')||LA10_0=='\r'||LA10_0==' ') ) {
1066 alt9=1; 1828 alt10=1;
1067 } 1829 }
1068 1830
1069 1831
1070 switch (alt9) { 1832 switch (alt10) {
1071 case 1 : 1833 case 1 :
1072 // InternalSolverLanguage.g: 1834 // InternalSolverLanguage.g:
1073 { 1835 {
@@ -1085,12 +1847,12 @@ public class InternalSolverLanguageLexer extends Lexer {
1085 break; 1847 break;
1086 1848
1087 default : 1849 default :
1088 if ( cnt9 >= 1 ) break loop9; 1850 if ( cnt10 >= 1 ) break loop10;
1089 EarlyExitException eee = 1851 EarlyExitException eee =
1090 new EarlyExitException(9, input); 1852 new EarlyExitException(10, input);
1091 throw eee; 1853 throw eee;
1092 } 1854 }
1093 cnt9++; 1855 cnt10++;
1094 } while (true); 1856 } while (true);
1095 1857
1096 1858
@@ -1109,8 +1871,8 @@ public class InternalSolverLanguageLexer extends Lexer {
1109 try { 1871 try {
1110 int _type = RULE_ANY_OTHER; 1872 int _type = RULE_ANY_OTHER;
1111 int _channel = DEFAULT_TOKEN_CHANNEL; 1873 int _channel = DEFAULT_TOKEN_CHANNEL;
1112 // InternalSolverLanguage.g:2509:16: ( . ) 1874 // InternalSolverLanguage.g:3902:16: ( . )
1113 // InternalSolverLanguage.g:2509:18: . 1875 // InternalSolverLanguage.g:3902:18: .
1114 { 1876 {
1115 matchAny(); 1877 matchAny();
1116 1878
@@ -1125,271 +1887,502 @@ public class InternalSolverLanguageLexer extends Lexer {
1125 // $ANTLR end "RULE_ANY_OTHER" 1887 // $ANTLR end "RULE_ANY_OTHER"
1126 1888
1127 public void mTokens() throws RecognitionException { 1889 public void mTokens() throws RecognitionException {
1128 // InternalSolverLanguage.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | RULE_STRING | RULE_ID | RULE_INT | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER ) 1890 // InternalSolverLanguage.g:1:8: ( T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | RULE_STRING | RULE_QUOTED_ID | RULE_PLUS | RULE_STAR | RULE_DOT | RULE_ID | RULE_INT | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
1129 int alt10=38; 1891 int alt11=71;
1130 alt10 = dfa10.predict(input); 1892 alt11 = dfa11.predict(input);
1131 switch (alt10) { 1893 switch (alt11) {
1132 case 1 : 1894 case 1 :
1133 // InternalSolverLanguage.g:1:10: T__11 1895 // InternalSolverLanguage.g:1:10: T__15
1134 { 1896 {
1135 mT__11(); 1897 mT__15();
1136 1898
1137 } 1899 }
1138 break; 1900 break;
1139 case 2 : 1901 case 2 :
1140 // InternalSolverLanguage.g:1:16: T__12 1902 // InternalSolverLanguage.g:1:16: T__16
1141 { 1903 {
1142 mT__12(); 1904 mT__16();
1143 1905
1144 } 1906 }
1145 break; 1907 break;
1146 case 3 : 1908 case 3 :
1147 // InternalSolverLanguage.g:1:22: T__13 1909 // InternalSolverLanguage.g:1:22: T__17
1148 { 1910 {
1149 mT__13(); 1911 mT__17();
1150 1912
1151 } 1913 }
1152 break; 1914 break;
1153 case 4 : 1915 case 4 :
1154 // InternalSolverLanguage.g:1:28: T__14 1916 // InternalSolverLanguage.g:1:28: T__18
1155 { 1917 {
1156 mT__14(); 1918 mT__18();
1157 1919
1158 } 1920 }
1159 break; 1921 break;
1160 case 5 : 1922 case 5 :
1161 // InternalSolverLanguage.g:1:34: T__15 1923 // InternalSolverLanguage.g:1:34: T__19
1162 { 1924 {
1163 mT__15(); 1925 mT__19();
1164 1926
1165 } 1927 }
1166 break; 1928 break;
1167 case 6 : 1929 case 6 :
1168 // InternalSolverLanguage.g:1:40: T__16 1930 // InternalSolverLanguage.g:1:40: T__20
1169 { 1931 {
1170 mT__16(); 1932 mT__20();
1171 1933
1172 } 1934 }
1173 break; 1935 break;
1174 case 7 : 1936 case 7 :
1175 // InternalSolverLanguage.g:1:46: T__17 1937 // InternalSolverLanguage.g:1:46: T__21
1176 { 1938 {
1177 mT__17(); 1939 mT__21();
1178 1940
1179 } 1941 }
1180 break; 1942 break;
1181 case 8 : 1943 case 8 :
1182 // InternalSolverLanguage.g:1:52: T__18 1944 // InternalSolverLanguage.g:1:52: T__22
1183 { 1945 {
1184 mT__18(); 1946 mT__22();
1185 1947
1186 } 1948 }
1187 break; 1949 break;
1188 case 9 : 1950 case 9 :
1189 // InternalSolverLanguage.g:1:58: T__19 1951 // InternalSolverLanguage.g:1:58: T__23
1190 { 1952 {
1191 mT__19(); 1953 mT__23();
1192 1954
1193 } 1955 }
1194 break; 1956 break;
1195 case 10 : 1957 case 10 :
1196 // InternalSolverLanguage.g:1:64: T__20 1958 // InternalSolverLanguage.g:1:64: T__24
1197 { 1959 {
1198 mT__20(); 1960 mT__24();
1199 1961
1200 } 1962 }
1201 break; 1963 break;
1202 case 11 : 1964 case 11 :
1203 // InternalSolverLanguage.g:1:70: T__21 1965 // InternalSolverLanguage.g:1:70: T__25
1204 { 1966 {
1205 mT__21(); 1967 mT__25();
1206 1968
1207 } 1969 }
1208 break; 1970 break;
1209 case 12 : 1971 case 12 :
1210 // InternalSolverLanguage.g:1:76: T__22 1972 // InternalSolverLanguage.g:1:76: T__26
1211 { 1973 {
1212 mT__22(); 1974 mT__26();
1213 1975
1214 } 1976 }
1215 break; 1977 break;
1216 case 13 : 1978 case 13 :
1217 // InternalSolverLanguage.g:1:82: T__23 1979 // InternalSolverLanguage.g:1:82: T__27
1218 { 1980 {
1219 mT__23(); 1981 mT__27();
1220 1982
1221 } 1983 }
1222 break; 1984 break;
1223 case 14 : 1985 case 14 :
1224 // InternalSolverLanguage.g:1:88: T__24 1986 // InternalSolverLanguage.g:1:88: T__28
1225 { 1987 {
1226 mT__24(); 1988 mT__28();
1227 1989
1228 } 1990 }
1229 break; 1991 break;
1230 case 15 : 1992 case 15 :
1231 // InternalSolverLanguage.g:1:94: T__25 1993 // InternalSolverLanguage.g:1:94: T__29
1232 { 1994 {
1233 mT__25(); 1995 mT__29();
1234 1996
1235 } 1997 }
1236 break; 1998 break;
1237 case 16 : 1999 case 16 :
1238 // InternalSolverLanguage.g:1:100: T__26 2000 // InternalSolverLanguage.g:1:100: T__30
1239 { 2001 {
1240 mT__26(); 2002 mT__30();
1241 2003
1242 } 2004 }
1243 break; 2005 break;
1244 case 17 : 2006 case 17 :
1245 // InternalSolverLanguage.g:1:106: T__27 2007 // InternalSolverLanguage.g:1:106: T__31
1246 { 2008 {
1247 mT__27(); 2009 mT__31();
1248 2010
1249 } 2011 }
1250 break; 2012 break;
1251 case 18 : 2013 case 18 :
1252 // InternalSolverLanguage.g:1:112: T__28 2014 // InternalSolverLanguage.g:1:112: T__32
1253 { 2015 {
1254 mT__28(); 2016 mT__32();
1255 2017
1256 } 2018 }
1257 break; 2019 break;
1258 case 19 : 2020 case 19 :
1259 // InternalSolverLanguage.g:1:118: T__29 2021 // InternalSolverLanguage.g:1:118: T__33
1260 { 2022 {
1261 mT__29(); 2023 mT__33();
1262 2024
1263 } 2025 }
1264 break; 2026 break;
1265 case 20 : 2027 case 20 :
1266 // InternalSolverLanguage.g:1:124: T__30 2028 // InternalSolverLanguage.g:1:124: T__34
1267 { 2029 {
1268 mT__30(); 2030 mT__34();
1269 2031
1270 } 2032 }
1271 break; 2033 break;
1272 case 21 : 2034 case 21 :
1273 // InternalSolverLanguage.g:1:130: T__31 2035 // InternalSolverLanguage.g:1:130: T__35
1274 { 2036 {
1275 mT__31(); 2037 mT__35();
1276 2038
1277 } 2039 }
1278 break; 2040 break;
1279 case 22 : 2041 case 22 :
1280 // InternalSolverLanguage.g:1:136: T__32 2042 // InternalSolverLanguage.g:1:136: T__36
1281 { 2043 {
1282 mT__32(); 2044 mT__36();
1283 2045
1284 } 2046 }
1285 break; 2047 break;
1286 case 23 : 2048 case 23 :
1287 // InternalSolverLanguage.g:1:142: T__33 2049 // InternalSolverLanguage.g:1:142: T__37
1288 { 2050 {
1289 mT__33(); 2051 mT__37();
1290 2052
1291 } 2053 }
1292 break; 2054 break;
1293 case 24 : 2055 case 24 :
1294 // InternalSolverLanguage.g:1:148: T__34 2056 // InternalSolverLanguage.g:1:148: T__38
1295 { 2057 {
1296 mT__34(); 2058 mT__38();
1297 2059
1298 } 2060 }
1299 break; 2061 break;
1300 case 25 : 2062 case 25 :
1301 // InternalSolverLanguage.g:1:154: T__35 2063 // InternalSolverLanguage.g:1:154: T__39
1302 { 2064 {
1303 mT__35(); 2065 mT__39();
1304 2066
1305 } 2067 }
1306 break; 2068 break;
1307 case 26 : 2069 case 26 :
1308 // InternalSolverLanguage.g:1:160: T__36 2070 // InternalSolverLanguage.g:1:160: T__40
1309 { 2071 {
1310 mT__36(); 2072 mT__40();
1311 2073
1312 } 2074 }
1313 break; 2075 break;
1314 case 27 : 2076 case 27 :
1315 // InternalSolverLanguage.g:1:166: T__37 2077 // InternalSolverLanguage.g:1:166: T__41
1316 { 2078 {
1317 mT__37(); 2079 mT__41();
1318 2080
1319 } 2081 }
1320 break; 2082 break;
1321 case 28 : 2083 case 28 :
1322 // InternalSolverLanguage.g:1:172: T__38 2084 // InternalSolverLanguage.g:1:172: T__42
1323 { 2085 {
1324 mT__38(); 2086 mT__42();
1325 2087
1326 } 2088 }
1327 break; 2089 break;
1328 case 29 : 2090 case 29 :
1329 // InternalSolverLanguage.g:1:178: T__39 2091 // InternalSolverLanguage.g:1:178: T__43
1330 { 2092 {
1331 mT__39(); 2093 mT__43();
1332 2094
1333 } 2095 }
1334 break; 2096 break;
1335 case 30 : 2097 case 30 :
1336 // InternalSolverLanguage.g:1:184: T__40 2098 // InternalSolverLanguage.g:1:184: T__44
1337 { 2099 {
1338 mT__40(); 2100 mT__44();
1339 2101
1340 } 2102 }
1341 break; 2103 break;
1342 case 31 : 2104 case 31 :
1343 // InternalSolverLanguage.g:1:190: T__41 2105 // InternalSolverLanguage.g:1:190: T__45
1344 { 2106 {
1345 mT__41(); 2107 mT__45();
1346 2108
1347 } 2109 }
1348 break; 2110 break;
1349 case 32 : 2111 case 32 :
1350 // InternalSolverLanguage.g:1:196: RULE_STRING 2112 // InternalSolverLanguage.g:1:196: T__46
1351 { 2113 {
1352 mRULE_STRING(); 2114 mT__46();
1353 2115
1354 } 2116 }
1355 break; 2117 break;
1356 case 33 : 2118 case 33 :
1357 // InternalSolverLanguage.g:1:208: RULE_ID 2119 // InternalSolverLanguage.g:1:202: T__47
1358 { 2120 {
1359 mRULE_ID(); 2121 mT__47();
1360 2122
1361 } 2123 }
1362 break; 2124 break;
1363 case 34 : 2125 case 34 :
1364 // InternalSolverLanguage.g:1:216: RULE_INT 2126 // InternalSolverLanguage.g:1:208: T__48
1365 { 2127 {
1366 mRULE_INT(); 2128 mT__48();
1367 2129
1368 } 2130 }
1369 break; 2131 break;
1370 case 35 : 2132 case 35 :
1371 // InternalSolverLanguage.g:1:225: RULE_ML_COMMENT 2133 // InternalSolverLanguage.g:1:214: T__49
1372 { 2134 {
1373 mRULE_ML_COMMENT(); 2135 mT__49();
1374 2136
1375 } 2137 }
1376 break; 2138 break;
1377 case 36 : 2139 case 36 :
1378 // InternalSolverLanguage.g:1:241: RULE_SL_COMMENT 2140 // InternalSolverLanguage.g:1:220: T__50
1379 { 2141 {
1380 mRULE_SL_COMMENT(); 2142 mT__50();
1381 2143
1382 } 2144 }
1383 break; 2145 break;
1384 case 37 : 2146 case 37 :
1385 // InternalSolverLanguage.g:1:257: RULE_WS 2147 // InternalSolverLanguage.g:1:226: T__51
1386 { 2148 {
1387 mRULE_WS(); 2149 mT__51();
1388 2150
1389 } 2151 }
1390 break; 2152 break;
1391 case 38 : 2153 case 38 :
1392 // InternalSolverLanguage.g:1:265: RULE_ANY_OTHER 2154 // InternalSolverLanguage.g:1:232: T__52
2155 {
2156 mT__52();
2157
2158 }
2159 break;
2160 case 39 :
2161 // InternalSolverLanguage.g:1:238: T__53
2162 {
2163 mT__53();
2164
2165 }
2166 break;
2167 case 40 :
2168 // InternalSolverLanguage.g:1:244: T__54
2169 {
2170 mT__54();
2171
2172 }
2173 break;
2174 case 41 :
2175 // InternalSolverLanguage.g:1:250: T__55
2176 {
2177 mT__55();
2178
2179 }
2180 break;
2181 case 42 :
2182 // InternalSolverLanguage.g:1:256: T__56
2183 {
2184 mT__56();
2185
2186 }
2187 break;
2188 case 43 :
2189 // InternalSolverLanguage.g:1:262: T__57
2190 {
2191 mT__57();
2192
2193 }
2194 break;
2195 case 44 :
2196 // InternalSolverLanguage.g:1:268: T__58
2197 {
2198 mT__58();
2199
2200 }
2201 break;
2202 case 45 :
2203 // InternalSolverLanguage.g:1:274: T__59
2204 {
2205 mT__59();
2206
2207 }
2208 break;
2209 case 46 :
2210 // InternalSolverLanguage.g:1:280: T__60
2211 {
2212 mT__60();
2213
2214 }
2215 break;
2216 case 47 :
2217 // InternalSolverLanguage.g:1:286: T__61
2218 {
2219 mT__61();
2220
2221 }
2222 break;
2223 case 48 :
2224 // InternalSolverLanguage.g:1:292: T__62
2225 {
2226 mT__62();
2227
2228 }
2229 break;
2230 case 49 :
2231 // InternalSolverLanguage.g:1:298: T__63
2232 {
2233 mT__63();
2234
2235 }
2236 break;
2237 case 50 :
2238 // InternalSolverLanguage.g:1:304: T__64
2239 {
2240 mT__64();
2241
2242 }
2243 break;
2244 case 51 :
2245 // InternalSolverLanguage.g:1:310: T__65
2246 {
2247 mT__65();
2248
2249 }
2250 break;
2251 case 52 :
2252 // InternalSolverLanguage.g:1:316: T__66
2253 {
2254 mT__66();
2255
2256 }
2257 break;
2258 case 53 :
2259 // InternalSolverLanguage.g:1:322: T__67
2260 {
2261 mT__67();
2262
2263 }
2264 break;
2265 case 54 :
2266 // InternalSolverLanguage.g:1:328: T__68
2267 {
2268 mT__68();
2269
2270 }
2271 break;
2272 case 55 :
2273 // InternalSolverLanguage.g:1:334: T__69
2274 {
2275 mT__69();
2276
2277 }
2278 break;
2279 case 56 :
2280 // InternalSolverLanguage.g:1:340: T__70
2281 {
2282 mT__70();
2283
2284 }
2285 break;
2286 case 57 :
2287 // InternalSolverLanguage.g:1:346: T__71
2288 {
2289 mT__71();
2290
2291 }
2292 break;
2293 case 58 :
2294 // InternalSolverLanguage.g:1:352: T__72
2295 {
2296 mT__72();
2297
2298 }
2299 break;
2300 case 59 :
2301 // InternalSolverLanguage.g:1:358: T__73
2302 {
2303 mT__73();
2304
2305 }
2306 break;
2307 case 60 :
2308 // InternalSolverLanguage.g:1:364: T__74
2309 {
2310 mT__74();
2311
2312 }
2313 break;
2314 case 61 :
2315 // InternalSolverLanguage.g:1:370: RULE_STRING
2316 {
2317 mRULE_STRING();
2318
2319 }
2320 break;
2321 case 62 :
2322 // InternalSolverLanguage.g:1:382: RULE_QUOTED_ID
2323 {
2324 mRULE_QUOTED_ID();
2325
2326 }
2327 break;
2328 case 63 :
2329 // InternalSolverLanguage.g:1:397: RULE_PLUS
2330 {
2331 mRULE_PLUS();
2332
2333 }
2334 break;
2335 case 64 :
2336 // InternalSolverLanguage.g:1:407: RULE_STAR
2337 {
2338 mRULE_STAR();
2339
2340 }
2341 break;
2342 case 65 :
2343 // InternalSolverLanguage.g:1:417: RULE_DOT
2344 {
2345 mRULE_DOT();
2346
2347 }
2348 break;
2349 case 66 :
2350 // InternalSolverLanguage.g:1:426: RULE_ID
2351 {
2352 mRULE_ID();
2353
2354 }
2355 break;
2356 case 67 :
2357 // InternalSolverLanguage.g:1:434: RULE_INT
2358 {
2359 mRULE_INT();
2360
2361 }
2362 break;
2363 case 68 :
2364 // InternalSolverLanguage.g:1:443: RULE_ML_COMMENT
2365 {
2366 mRULE_ML_COMMENT();
2367
2368 }
2369 break;
2370 case 69 :
2371 // InternalSolverLanguage.g:1:459: RULE_SL_COMMENT
2372 {
2373 mRULE_SL_COMMENT();
2374
2375 }
2376 break;
2377 case 70 :
2378 // InternalSolverLanguage.g:1:475: RULE_WS
2379 {
2380 mRULE_WS();
2381
2382 }
2383 break;
2384 case 71 :
2385 // InternalSolverLanguage.g:1:483: RULE_ANY_OTHER
1393 { 2386 {
1394 mRULE_ANY_OTHER(); 2387 mRULE_ANY_OTHER();
1395 2388
@@ -1401,286 +2394,408 @@ public class InternalSolverLanguageLexer extends Lexer {
1401 } 2394 }
1402 2395
1403 2396
1404 protected DFA10 dfa10 = new DFA10(this); 2397 protected DFA11 dfa11 = new DFA11(this);
1405 static final String DFA10_eotS = 2398 static final String DFA11_eotS =
1406 "\2\uffff\1\41\4\43\3\uffff\1\56\4\43\4\uffff\3\43\2\uffff\2\36\2\uffff\1\36\5\uffff\1\43\1\uffff\6\43\5\uffff\4\43\4\uffff\4\43\7\uffff\11\43\1\134\7\43\1\144\6\43\1\153\1\154\1\uffff\1\155\6\43\1\uffff\1\164\1\43\1\166\3\43\3\uffff\4\43\1\176\1\43\1\uffff\1\43\1\uffff\1\u0081\1\43\1\u0083\1\43\1\u0085\2\43\1\uffff\1\43\1\u0089\1\uffff\1\u008a\1\uffff\1\43\1\uffff\1\u008c\2\43\2\uffff\1\u008f\1\uffff\1\u0090\1\43\2\uffff\2\43\1\u0094\1\uffff"; 2399 "\1\uffff\1\51\1\53\3\56\1\65\2\56\1\uffff\1\74\1\uffff\1\56\10\uffff\3\56\1\121\1\123\1\56\1\126\1\uffff\1\132\1\133\3\56\2\47\10\uffff\2\56\1\uffff\5\56\2\uffff\1\154\1\157\2\56\4\uffff\3\56\10\uffff\7\56\4\uffff\1\56\7\uffff\5\56\4\uffff\7\56\1\uffff\1\u008b\1\u008c\1\uffff\7\56\1\u0094\3\56\1\u0098\2\56\1\u009b\1\u009d\1\56\1\u00a0\6\56\1\u00a8\2\56\2\uffff\1\u00ab\1\u00ac\5\56\1\uffff\1\56\1\u00b3\1\56\1\uffff\1\56\1\u00b6\1\uffff\1\56\1\uffff\1\u00b8\1\56\1\uffff\1\u00ba\2\56\1\u00bd\1\u00be\2\56\1\uffff\1\u00c1\1\56\2\uffff\1\u00c3\1\56\1\u00c5\3\56\1\uffff\1\u00c9\1\56\1\uffff\1\56\1\uffff\1\56\1\uffff\2\56\2\uffff\1\u00cf\1\56\1\uffff\1\56\1\uffff\1\56\1\uffff\3\56\1\uffff\5\56\1\uffff\1\u00db\1\u00dc\1\56\1\u00de\5\56\1\u00e4\1\56\2\uffff\1\u00e6\1\uffff\1\u00e7\1\u00e8\1\56\1\u00ea\1\u00eb\1\uffff\1\56\3\uffff\1\56\2\uffff\1\u00ee\6\uffff";
1407 static final String DFA10_eofS = 2400 static final String DFA11_eofS =
1408 "\u0095\uffff"; 2401 "\u00f3\uffff";
1409 static final String DFA10_minS = 2402 static final String DFA11_minS =
1410 "\1\0\1\uffff\1\56\1\162\1\141\2\156\3\uffff\1\55\1\157\1\156\1\145\1\164\4\uffff\1\145\1\142\1\154\2\uffff\1\0\1\101\2\uffff\1\52\5\uffff\1\165\1\uffff\1\154\1\153\1\162\1\151\2\165\5\uffff\1\157\1\164\1\141\1\162\4\uffff\1\146\1\163\1\141\1\156\7\uffff\1\145\1\163\1\156\1\157\1\163\1\145\1\141\1\155\1\154\1\60\1\154\1\141\1\151\1\141\1\164\1\163\1\164\1\60\1\145\1\157\1\162\1\164\1\156\1\154\2\60\1\uffff\1\60\1\164\1\156\1\165\1\162\1\163\1\141\1\uffff\1\60\1\167\1\60\1\163\1\144\1\163\3\uffff\1\151\1\147\1\154\1\141\1\60\1\151\1\uffff\1\156\1\uffff\1\60\1\163\1\60\1\157\1\60\1\164\1\143\1\uffff\1\156\1\60\1\uffff\1\60\1\uffff\1\156\1\uffff\1\60\1\164\1\155\2\uffff\1\60\1\uffff\1\60\1\145\2\uffff\1\156\1\164\1\60\1\uffff"; 2403 "\1\0\1\55\1\75\1\141\1\154\1\145\1\56\1\146\1\150\1\uffff\1\76\1\uffff\1\154\10\uffff\1\142\1\156\1\143\2\75\1\145\1\75\1\uffff\1\52\1\101\1\141\1\162\1\156\2\0\10\uffff\1\156\1\154\1\uffff\1\162\1\164\1\163\1\160\1\146\2\uffff\2\60\1\145\1\165\4\uffff\1\156\1\141\1\162\10\uffff\1\163\1\147\1\160\1\154\1\157\1\155\1\156\4\uffff\1\141\7\uffff\1\170\1\163\1\156\1\157\1\153\4\uffff\1\143\1\163\1\157\2\145\1\164\1\141\1\uffff\2\60\1\uffff\1\156\1\145\1\156\1\164\1\163\1\162\1\164\1\60\1\157\1\171\1\160\1\60\1\164\1\154\2\60\1\164\1\60\1\144\1\156\1\164\1\145\1\162\1\156\1\60\1\171\1\165\2\uffff\2\60\1\164\1\141\1\163\1\145\1\162\1\uffff\1\163\1\60\1\145\1\uffff\1\150\1\60\1\uffff\1\155\1\uffff\1\60\1\155\1\uffff\1\60\1\157\1\151\2\60\1\156\1\144\1\uffff\1\60\1\154\2\uffff\1\60\1\151\1\60\1\156\1\141\1\151\1\uffff\1\60\1\145\1\uffff\1\151\1\uffff\1\151\1\uffff\1\167\1\157\2\uffff\1\60\1\163\1\uffff\1\164\1\uffff\1\156\1\uffff\1\164\1\143\1\164\1\uffff\1\164\2\172\2\156\1\uffff\2\60\1\163\1\60\1\164\1\145\1\151\2\145\1\60\1\141\2\uffff\1\60\1\uffff\2\60\1\143\2\60\1\uffff\1\154\3\uffff\1\72\2\uffff\1\60\1\72\1\uffff\1\144\3\uffff";
1411 static final String DFA10_maxS = 2404 static final String DFA11_maxS =
1412 "\1\uffff\1\uffff\1\56\1\162\1\141\1\156\1\170\3\uffff\1\55\1\157\1\156\1\145\1\164\4\uffff\1\145\1\142\1\157\2\uffff\1\uffff\1\172\2\uffff\1\57\5\uffff\1\165\1\uffff\1\154\1\153\1\162\1\164\2\165\5\uffff\1\157\1\164\1\154\1\162\4\uffff\1\146\1\163\1\141\1\156\7\uffff\1\145\1\163\1\156\1\157\1\163\1\145\1\141\1\155\1\154\1\172\1\154\1\141\1\151\1\141\1\164\1\163\1\164\1\172\1\145\1\157\1\162\1\164\1\156\1\154\2\172\1\uffff\1\172\1\164\1\156\1\165\1\162\1\163\1\141\1\uffff\1\172\1\167\1\172\1\163\1\144\1\163\3\uffff\1\151\1\147\1\154\1\141\1\172\1\151\1\uffff\1\156\1\uffff\1\172\1\163\1\172\1\157\1\172\1\164\1\143\1\uffff\1\156\1\172\1\uffff\1\172\1\uffff\1\156\1\uffff\1\172\1\164\1\155\2\uffff\1\172\1\uffff\1\172\1\145\2\uffff\1\156\1\164\1\172\1\uffff"; 2405 "\1\uffff\1\55\1\75\1\165\1\170\1\145\1\56\1\156\1\162\1\uffff\1\76\1\uffff\1\165\10\uffff\1\166\1\160\1\171\2\75\1\145\1\75\1\uffff\1\57\1\172\1\165\1\162\1\156\2\uffff\10\uffff\1\156\1\154\1\uffff\1\162\1\164\1\163\1\160\1\146\2\uffff\2\172\1\145\1\165\4\uffff\1\165\1\141\1\162\10\uffff\1\163\1\147\1\160\1\154\1\157\1\155\1\156\4\uffff\1\141\7\uffff\1\171\1\163\1\156\1\157\1\153\4\uffff\1\143\1\163\1\157\2\145\1\164\1\141\1\uffff\2\172\1\uffff\1\156\1\145\1\156\1\164\1\163\1\162\1\164\1\172\1\157\1\171\1\160\1\172\1\164\1\154\2\172\1\164\1\172\1\144\1\156\1\164\1\145\2\162\1\172\1\171\1\165\2\uffff\2\172\1\164\1\141\1\163\1\145\1\162\1\uffff\1\163\1\172\1\145\1\uffff\1\150\1\172\1\uffff\1\155\1\uffff\1\172\1\155\1\uffff\1\172\1\157\1\151\2\172\1\156\1\144\1\uffff\1\172\1\154\2\uffff\1\172\1\151\1\172\1\156\1\141\1\151\1\uffff\1\172\1\145\1\uffff\1\151\1\uffff\1\151\1\uffff\1\167\1\157\2\uffff\1\172\1\163\1\uffff\1\164\1\uffff\1\156\1\uffff\1\164\1\143\1\164\1\uffff\1\164\2\172\2\156\1\uffff\2\172\1\163\1\172\1\164\1\145\1\151\2\145\1\172\1\141\2\uffff\1\172\1\uffff\2\172\1\143\2\172\1\uffff\1\154\3\uffff\1\72\2\uffff\1\172\1\72\1\uffff\1\163\3\uffff";
1413 static final String DFA10_acceptS = 2406 static final String DFA11_acceptS =
1414 "\1\uffff\1\1\5\uffff\1\7\1\10\1\11\5\uffff\1\21\1\23\1\24\1\25\3\uffff\1\32\1\33\2\uffff\1\41\1\42\1\uffff\1\45\1\46\1\1\1\37\1\2\1\uffff\1\41\6\uffff\1\7\1\10\1\11\1\22\1\12\4\uffff\1\21\1\23\1\24\1\25\4\uffff\1\32\1\33\1\40\1\42\1\43\1\44\1\45\32\uffff\1\16\7\uffff\1\3\6\uffff\1\34\1\15\1\17\6\uffff\1\4\1\uffff\1\6\7\uffff\1\30\2\uffff\1\13\1\uffff\1\14\1\uffff\1\20\3\uffff\1\5\1\31\1\uffff\1\26\2\uffff\1\36\1\27\3\uffff\1\35"; 2407 "\11\uffff\1\14\1\uffff\1\16\1\uffff\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\30\7\uffff\1\52\7\uffff\1\102\1\103\1\106\1\107\1\2\1\1\1\41\1\3\2\uffff\1\102\5\uffff\1\27\1\10\4\uffff\1\14\1\15\1\53\1\16\3\uffff\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\30\7\uffff\1\42\1\47\1\43\1\50\1\uffff\1\46\1\56\1\52\1\104\1\105\1\54\1\55\5\uffff\1\75\1\76\1\103\1\106\7\uffff\1\11\2\uffff\1\51\33\uffff\1\31\1\44\7\uffff\1\65\3\uffff\1\63\2\uffff\1\57\1\uffff\1\67\2\uffff\1\66\7\uffff\1\13\2\uffff\1\12\1\70\6\uffff\1\62\2\uffff\1\45\1\uffff\1\60\1\uffff\1\64\2\uffff\1\71\1\5\2\uffff\1\32\1\uffff\1\17\1\uffff\1\34\3\uffff\1\40\5\uffff\1\7\13\uffff\1\35\1\6\1\uffff\1\61\5\uffff\1\72\1\uffff\1\36\1\33\1\37\1\uffff\1\74\1\73\2\uffff\1\4\1\uffff\1\77\1\100\1\101";
1415 static final String DFA10_specialS = 2408 static final String DFA11_specialS =
1416 "\1\0\27\uffff\1\1\174\uffff}>"; 2409 "\1\1\41\uffff\1\2\1\0\u00cf\uffff}>";
1417 static final String[] DFA10_transitionS = { 2410 static final String[] DFA11_transitionS = {
1418 "\11\36\2\35\2\36\1\35\22\36\1\35\1\36\1\30\4\36\1\17\1\7\1\11\1\22\1\21\1\10\1\1\1\2\1\34\12\33\1\12\6\36\32\32\3\36\1\31\1\32\1\36\1\24\1\13\1\25\1\23\1\6\1\4\2\32\1\14\10\32\1\15\1\16\1\3\1\5\5\32\1\26\1\20\1\27\uff82\36", 2411 "\11\47\2\46\2\47\1\46\22\47\1\46\1\33\1\42\4\47\1\43\1\20\1\21\1\22\1\34\1\13\1\12\1\6\1\35\12\45\1\1\1\11\1\30\1\2\1\31\2\47\32\44\1\23\1\47\1\24\1\36\1\44\1\47\1\25\1\44\1\14\1\5\1\4\1\3\2\44\1\7\3\44\1\37\1\44\1\26\1\40\1\44\1\32\1\27\1\10\1\41\5\44\1\15\1\17\1\16\uff82\47",
2412 "\1\50",
2413 "\1\52",
2414 "\1\55\23\uffff\1\54",
2415 "\1\61\1\62\4\uffff\1\57\5\uffff\1\60",
2416 "\1\63",
2417 "\1\64",
2418 "\1\66\7\uffff\1\67",
2419 "\1\70\11\uffff\1\71",
1419 "", 2420 "",
1420 "\1\40", 2421 "\1\73",
1421 "\1\42",
1422 "\1\44",
1423 "\1\45",
1424 "\1\51\2\uffff\1\50\1\46\5\uffff\1\47",
1425 "", 2422 "",
2423 "\1\77\2\uffff\1\76\5\uffff\1\100",
1426 "", 2424 "",
1427 "", 2425 "",
1428 "\1\55",
1429 "\1\57",
1430 "\1\60",
1431 "\1\61",
1432 "\1\62",
1433 "", 2426 "",
1434 "", 2427 "",
1435 "", 2428 "",
1436 "", 2429 "",
1437 "\1\67",
1438 "\1\70",
1439 "\1\71\2\uffff\1\72",
1440 "", 2430 "",
1441 "", 2431 "",
1442 "\0\75", 2432 "\1\111\23\uffff\1\112",
1443 "\32\43\4\uffff\1\43\1\uffff\32\43", 2433 "\1\114\1\uffff\1\113",
1444 "", 2434 "\1\115\21\uffff\1\116\3\uffff\1\117",
1445 "", 2435 "\1\120",
1446 "\1\77\4\uffff\1\100", 2436 "\1\122",
2437 "\1\124",
2438 "\1\125",
1447 "", 2439 "",
2440 "\1\130\4\uffff\1\131",
2441 "\32\56\4\uffff\1\56\1\uffff\32\56",
2442 "\1\134\7\uffff\1\136\13\uffff\1\135",
2443 "\1\137",
2444 "\1\140",
2445 "\0\141",
2446 "\0\142",
1448 "", 2447 "",
1449 "", 2448 "",
1450 "", 2449 "",
1451 "", 2450 "",
1452 "\1\102",
1453 "", 2451 "",
1454 "\1\103",
1455 "\1\104",
1456 "\1\105",
1457 "\1\106\12\uffff\1\107",
1458 "\1\110",
1459 "\1\111",
1460 "", 2452 "",
1461 "", 2453 "",
1462 "", 2454 "",
2455 "\1\145",
2456 "\1\146",
1463 "", 2457 "",
2458 "\1\147",
2459 "\1\150",
2460 "\1\151",
2461 "\1\152",
2462 "\1\153",
1464 "", 2463 "",
1465 "\1\112",
1466 "\1\113",
1467 "\1\114\12\uffff\1\115",
1468 "\1\116",
1469 "", 2464 "",
2465 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2466 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\5\56\1\155\15\56\1\156\6\56",
2467 "\1\160",
2468 "\1\161",
1470 "", 2469 "",
1471 "", 2470 "",
1472 "", 2471 "",
1473 "\1\117",
1474 "\1\120",
1475 "\1\121",
1476 "\1\122",
1477 "", 2472 "",
2473 "\1\163\6\uffff\1\162",
2474 "\1\164",
2475 "\1\165",
1478 "", 2476 "",
1479 "", 2477 "",
1480 "", 2478 "",
1481 "", 2479 "",
1482 "", 2480 "",
1483 "", 2481 "",
1484 "\1\123",
1485 "\1\124",
1486 "\1\125",
1487 "\1\126",
1488 "\1\127",
1489 "\1\130",
1490 "\1\131",
1491 "\1\132",
1492 "\1\133",
1493 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43",
1494 "\1\135",
1495 "\1\136",
1496 "\1\137",
1497 "\1\140",
1498 "\1\141",
1499 "\1\142",
1500 "\1\143",
1501 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43",
1502 "\1\145",
1503 "\1\146",
1504 "\1\147",
1505 "\1\150",
1506 "\1\151",
1507 "\1\152",
1508 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43",
1509 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43",
1510 "", 2482 "",
1511 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43",
1512 "\1\156",
1513 "\1\157",
1514 "\1\160",
1515 "\1\161",
1516 "\1\162",
1517 "\1\163",
1518 "", 2483 "",
1519 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43", 2484 "\1\166",
1520 "\1\165",
1521 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43",
1522 "\1\167", 2485 "\1\167",
1523 "\1\170", 2486 "\1\170",
1524 "\1\171", 2487 "\1\171",
1525 "",
1526 "",
1527 "",
1528 "\1\172", 2488 "\1\172",
1529 "\1\173", 2489 "\1\173",
1530 "\1\174", 2490 "\1\174",
2491 "",
2492 "",
2493 "",
2494 "",
1531 "\1\175", 2495 "\1\175",
1532 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43",
1533 "\1\177",
1534 "", 2496 "",
1535 "\1\u0080",
1536 "", 2497 "",
1537 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43", 2498 "",
2499 "",
2500 "",
2501 "",
2502 "",
2503 "\1\177\1\176",
2504 "\1\u0080",
2505 "\1\u0081",
1538 "\1\u0082", 2506 "\1\u0082",
1539 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43", 2507 "\1\u0083",
2508 "",
2509 "",
2510 "",
2511 "",
1540 "\1\u0084", 2512 "\1\u0084",
1541 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43", 2513 "\1\u0085",
1542 "\1\u0086", 2514 "\1\u0086",
1543 "\1\u0087", 2515 "\1\u0087",
1544 "",
1545 "\1\u0088", 2516 "\1\u0088",
1546 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43", 2517 "\1\u0089",
1547 "", 2518 "\1\u008a",
1548 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43",
1549 "", 2519 "",
1550 "\1\u008b", 2520 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2521 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
1551 "", 2522 "",
1552 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43",
1553 "\1\u008d", 2523 "\1\u008d",
1554 "\1\u008e", 2524 "\1\u008e",
2525 "\1\u008f",
2526 "\1\u0090",
2527 "\1\u0091",
2528 "\1\u0092",
2529 "\1\u0093",
2530 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2531 "\1\u0095",
2532 "\1\u0096",
2533 "\1\u0097",
2534 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2535 "\1\u0099",
2536 "\1\u009a",
2537 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2538 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\10\56\1\u009c\21\56",
2539 "\1\u009e",
2540 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\10\56\1\u009f\21\56",
2541 "\1\u00a1",
2542 "\1\u00a2",
2543 "\1\u00a3",
2544 "\1\u00a4",
2545 "\1\u00a5",
2546 "\1\u00a7\3\uffff\1\u00a6",
2547 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2548 "\1\u00a9",
2549 "\1\u00aa",
1555 "", 2550 "",
1556 "", 2551 "",
1557 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43", 2552 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2553 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2554 "\1\u00ad",
2555 "\1\u00ae",
2556 "\1\u00af",
2557 "\1\u00b0",
2558 "\1\u00b1",
1558 "", 2559 "",
1559 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43", 2560 "\1\u00b2",
1560 "\1\u0091", 2561 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2562 "\1\u00b4",
2563 "",
2564 "\1\u00b5",
2565 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2566 "",
2567 "\1\u00b7",
2568 "",
2569 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2570 "\1\u00b9",
2571 "",
2572 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2573 "\1\u00bb",
2574 "\1\u00bc",
2575 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2576 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2577 "\1\u00bf",
2578 "\1\u00c0",
2579 "",
2580 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2581 "\1\u00c2",
2582 "",
2583 "",
2584 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2585 "\1\u00c4",
2586 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2587 "\1\u00c6",
2588 "\1\u00c7",
2589 "\1\u00c8",
2590 "",
2591 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2592 "\1\u00ca",
2593 "",
2594 "\1\u00cb",
2595 "",
2596 "\1\u00cc",
2597 "",
2598 "\1\u00cd",
2599 "\1\u00ce",
2600 "",
2601 "",
2602 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2603 "\1\u00d0",
2604 "",
2605 "\1\u00d1",
2606 "",
2607 "\1\u00d2",
2608 "",
2609 "\1\u00d3",
2610 "\1\u00d4",
2611 "\1\u00d5",
2612 "",
2613 "\1\u00d6",
2614 "\1\u00d7",
2615 "\1\u00d8",
2616 "\1\u00d9",
2617 "\1\u00da",
2618 "",
2619 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2620 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2621 "\1\u00dd",
2622 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2623 "\1\u00df",
2624 "\1\u00e0",
2625 "\1\u00e1",
2626 "\1\u00e2",
2627 "\1\u00e3",
2628 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2629 "\1\u00e5",
2630 "",
2631 "",
2632 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2633 "",
2634 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2635 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2636 "\1\u00e9",
2637 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2638 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2639 "",
2640 "\1\u00ec",
2641 "",
2642 "",
2643 "",
2644 "\1\u00ed",
2645 "",
2646 "",
2647 "\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32\56",
2648 "\1\u00ef",
2649 "",
2650 "\1\u00f2\13\uffff\1\u00f0\2\uffff\1\u00f1",
1561 "", 2651 "",
1562 "", 2652 "",
1563 "\1\u0092",
1564 "\1\u0093",
1565 "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43",
1566 "" 2653 ""
1567 }; 2654 };
1568 2655
1569 static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS); 2656 static final short[] DFA11_eot = DFA.unpackEncodedString(DFA11_eotS);
1570 static final short[] DFA10_eof = DFA.unpackEncodedString(DFA10_eofS); 2657 static final short[] DFA11_eof = DFA.unpackEncodedString(DFA11_eofS);
1571 static final char[] DFA10_min = DFA.unpackEncodedStringToUnsignedChars(DFA10_minS); 2658 static final char[] DFA11_min = DFA.unpackEncodedStringToUnsignedChars(DFA11_minS);
1572 static final char[] DFA10_max = DFA.unpackEncodedStringToUnsignedChars(DFA10_maxS); 2659 static final char[] DFA11_max = DFA.unpackEncodedStringToUnsignedChars(DFA11_maxS);
1573 static final short[] DFA10_accept = DFA.unpackEncodedString(DFA10_acceptS); 2660 static final short[] DFA11_accept = DFA.unpackEncodedString(DFA11_acceptS);
1574 static final short[] DFA10_special = DFA.unpackEncodedString(DFA10_specialS); 2661 static final short[] DFA11_special = DFA.unpackEncodedString(DFA11_specialS);
1575 static final short[][] DFA10_transition; 2662 static final short[][] DFA11_transition;
1576 2663
1577 static { 2664 static {
1578 int numStates = DFA10_transitionS.length; 2665 int numStates = DFA11_transitionS.length;
1579 DFA10_transition = new short[numStates][]; 2666 DFA11_transition = new short[numStates][];
1580 for (int i=0; i<numStates; i++) { 2667 for (int i=0; i<numStates; i++) {
1581 DFA10_transition[i] = DFA.unpackEncodedString(DFA10_transitionS[i]); 2668 DFA11_transition[i] = DFA.unpackEncodedString(DFA11_transitionS[i]);
1582 } 2669 }
1583 } 2670 }
1584 2671
1585 class DFA10 extends DFA { 2672 class DFA11 extends DFA {
1586 2673
1587 public DFA10(BaseRecognizer recognizer) { 2674 public DFA11(BaseRecognizer recognizer) {
1588 this.recognizer = recognizer; 2675 this.recognizer = recognizer;
1589 this.decisionNumber = 10; 2676 this.decisionNumber = 11;
1590 this.eot = DFA10_eot; 2677 this.eot = DFA11_eot;
1591 this.eof = DFA10_eof; 2678 this.eof = DFA11_eof;
1592 this.min = DFA10_min; 2679 this.min = DFA11_min;
1593 this.max = DFA10_max; 2680 this.max = DFA11_max;
1594 this.accept = DFA10_accept; 2681 this.accept = DFA11_accept;
1595 this.special = DFA10_special; 2682 this.special = DFA11_special;
1596 this.transition = DFA10_transition; 2683 this.transition = DFA11_transition;
1597 } 2684 }
1598 public String getDescription() { 2685 public String getDescription() {
1599 return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | RULE_STRING | RULE_ID | RULE_INT | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );"; 2686 return "1:1: Tokens : ( T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | RULE_STRING | RULE_QUOTED_ID | RULE_PLUS | RULE_STAR | RULE_DOT | RULE_ID | RULE_INT | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
1600 } 2687 }
1601 public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { 2688 public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
1602 IntStream input = _input; 2689 IntStream input = _input;
1603 int _s = s; 2690 int _s = s;
1604 switch ( s ) { 2691 switch ( s ) {
1605 case 0 : 2692 case 0 :
1606 int LA10_0 = input.LA(1); 2693 int LA11_35 = input.LA(1);
1607 2694
1608 s = -1; 2695 s = -1;
1609 if ( (LA10_0=='-') ) {s = 1;} 2696 if ( ((LA11_35>='\u0000' && LA11_35<='\uFFFF')) ) {s = 98;}
1610 2697
1611 else if ( (LA10_0=='.') ) {s = 2;} 2698 else s = 39;
1612 2699
1613 else if ( (LA10_0=='t') ) {s = 3;} 2700 if ( s>=0 ) return s;
2701 break;
2702 case 1 :
2703 int LA11_0 = input.LA(1);
2704
2705 s = -1;
2706 if ( (LA11_0==':') ) {s = 1;}
2707
2708 else if ( (LA11_0=='=') ) {s = 2;}
2709
2710 else if ( (LA11_0=='f') ) {s = 3;}
2711
2712 else if ( (LA11_0=='e') ) {s = 4;}
2713
2714 else if ( (LA11_0=='d') ) {s = 5;}
2715
2716 else if ( (LA11_0=='.') ) {s = 6;}
1614 2717
1615 else if ( (LA10_0=='f') ) {s = 4;} 2718 else if ( (LA11_0=='i') ) {s = 7;}
1616 2719
1617 else if ( (LA10_0=='u') ) {s = 5;} 2720 else if ( (LA11_0=='t') ) {s = 8;}
1618 2721
1619 else if ( (LA10_0=='e') ) {s = 6;} 2722 else if ( (LA11_0==';') ) {s = 9;}
1620 2723
1621 else if ( (LA10_0=='(') ) {s = 7;} 2724 else if ( (LA11_0=='-') ) {s = 10;}
1622 2725
1623 else if ( (LA10_0==',') ) {s = 8;} 2726 else if ( (LA11_0==',') ) {s = 11;}
1624 2727
1625 else if ( (LA10_0==')') ) {s = 9;} 2728 else if ( (LA11_0=='c') ) {s = 12;}
1626 2729
1627 else if ( (LA10_0==':') ) {s = 10;} 2730 else if ( (LA11_0=='{') ) {s = 13;}
1628 2731
1629 else if ( (LA10_0=='b') ) {s = 11;} 2732 else if ( (LA11_0=='}') ) {s = 14;}
1630 2733
1631 else if ( (LA10_0=='i') ) {s = 12;} 2734 else if ( (LA11_0=='|') ) {s = 15;}
1632 2735
1633 else if ( (LA10_0=='r') ) {s = 13;} 2736 else if ( (LA11_0=='(') ) {s = 16;}
1634 2737
1635 else if ( (LA10_0=='s') ) {s = 14;} 2738 else if ( (LA11_0==')') ) {s = 17;}
1636 2739
1637 else if ( (LA10_0=='\'') ) {s = 15;} 2740 else if ( (LA11_0=='*') ) {s = 18;}
1638 2741
1639 else if ( (LA10_0=='|') ) {s = 16;} 2742 else if ( (LA11_0=='[') ) {s = 19;}
1640 2743
1641 else if ( (LA10_0=='+') ) {s = 17;} 2744 else if ( (LA11_0==']') ) {s = 20;}
1642 2745
1643 else if ( (LA10_0=='*') ) {s = 18;} 2746 else if ( (LA11_0=='a') ) {s = 21;}
1644 2747
1645 else if ( (LA10_0=='d') ) {s = 19;} 2748 else if ( (LA11_0=='o') ) {s = 22;}
1646 2749
1647 else if ( (LA10_0=='a') ) {s = 20;} 2750 else if ( (LA11_0=='s') ) {s = 23;}
1648 2751
1649 else if ( (LA10_0=='c') ) {s = 21;} 2752 else if ( (LA11_0=='<') ) {s = 24;}
1650 2753
1651 else if ( (LA10_0=='{') ) {s = 22;} 2754 else if ( (LA11_0=='>') ) {s = 25;}
1652 2755
1653 else if ( (LA10_0=='}') ) {s = 23;} 2756 else if ( (LA11_0=='r') ) {s = 26;}
1654 2757
1655 else if ( (LA10_0=='\"') ) {s = 24;} 2758 else if ( (LA11_0=='!') ) {s = 27;}
1656 2759
1657 else if ( (LA10_0=='^') ) {s = 25;} 2760 else if ( (LA11_0=='+') ) {s = 28;}
1658 2761
1659 else if ( ((LA10_0>='A' && LA10_0<='Z')||LA10_0=='_'||(LA10_0>='g' && LA10_0<='h')||(LA10_0>='j' && LA10_0<='q')||(LA10_0>='v' && LA10_0<='z')) ) {s = 26;} 2762 else if ( (LA11_0=='/') ) {s = 29;}
1660 2763
1661 else if ( ((LA10_0>='0' && LA10_0<='9')) ) {s = 27;} 2764 else if ( (LA11_0=='^') ) {s = 30;}
1662 2765
1663 else if ( (LA10_0=='/') ) {s = 28;} 2766 else if ( (LA11_0=='m') ) {s = 31;}
1664 2767
1665 else if ( ((LA10_0>='\t' && LA10_0<='\n')||LA10_0=='\r'||LA10_0==' ') ) {s = 29;} 2768 else if ( (LA11_0=='p') ) {s = 32;}
1666 2769
1667 else if ( ((LA10_0>='\u0000' && LA10_0<='\b')||(LA10_0>='\u000B' && LA10_0<='\f')||(LA10_0>='\u000E' && LA10_0<='\u001F')||LA10_0=='!'||(LA10_0>='#' && LA10_0<='&')||(LA10_0>=';' && LA10_0<='@')||(LA10_0>='[' && LA10_0<=']')||LA10_0=='`'||(LA10_0>='~' && LA10_0<='\uFFFF')) ) {s = 30;} 2770 else if ( (LA11_0=='u') ) {s = 33;}
2771
2772 else if ( (LA11_0=='\"') ) {s = 34;}
2773
2774 else if ( (LA11_0=='\'') ) {s = 35;}
2775
2776 else if ( ((LA11_0>='A' && LA11_0<='Z')||LA11_0=='_'||LA11_0=='b'||(LA11_0>='g' && LA11_0<='h')||(LA11_0>='j' && LA11_0<='l')||LA11_0=='n'||LA11_0=='q'||(LA11_0>='v' && LA11_0<='z')) ) {s = 36;}
2777
2778 else if ( ((LA11_0>='0' && LA11_0<='9')) ) {s = 37;}
2779
2780 else if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {s = 38;}
2781
2782 else if ( ((LA11_0>='\u0000' && LA11_0<='\b')||(LA11_0>='\u000B' && LA11_0<='\f')||(LA11_0>='\u000E' && LA11_0<='\u001F')||(LA11_0>='#' && LA11_0<='&')||(LA11_0>='?' && LA11_0<='@')||LA11_0=='\\'||LA11_0=='`'||(LA11_0>='~' && LA11_0<='\uFFFF')) ) {s = 39;}
1668 2783
1669 if ( s>=0 ) return s; 2784 if ( s>=0 ) return s;
1670 break; 2785 break;
1671 case 1 : 2786 case 2 :
1672 int LA10_24 = input.LA(1); 2787 int LA11_34 = input.LA(1);
1673 2788
1674 s = -1; 2789 s = -1;
1675 if ( ((LA10_24>='\u0000' && LA10_24<='\uFFFF')) ) {s = 61;} 2790 if ( ((LA11_34>='\u0000' && LA11_34<='\uFFFF')) ) {s = 97;}
1676 2791
1677 else s = 30; 2792 else s = 39;
1678 2793
1679 if ( s>=0 ) return s; 2794 if ( s>=0 ) return s;
1680 break; 2795 break;
1681 } 2796 }
1682 NoViableAltException nvae = 2797 NoViableAltException nvae =
1683 new NoViableAltException(getDescription(), 10, _s, input); 2798 new NoViableAltException(getDescription(), 11, _s, input);
1684 error(nvae); 2799 error(nvae);
1685 throw nvae; 2800 throw nvae;
1686 } 2801 }
diff --git a/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.java b/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.java
index 1d449e49..ee2f6175 100644
--- a/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.java
+++ b/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.java
@@ -5,6 +5,7 @@ import org.eclipse.xtext.parser.*;
5import org.eclipse.xtext.parser.impl.*; 5import org.eclipse.xtext.parser.impl.*;
6import org.eclipse.emf.ecore.util.EcoreUtil; 6import org.eclipse.emf.ecore.util.EcoreUtil;
7import org.eclipse.emf.ecore.EObject; 7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.common.util.Enumerator;
8import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser; 9import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
9import org.eclipse.xtext.parser.antlr.XtextTokenStream; 10import org.eclipse.xtext.parser.antlr.XtextTokenStream;
10import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; 11import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
@@ -17,51 +18,85 @@ import org.antlr.runtime.*;
17import java.util.Stack; 18import java.util.Stack;
18import java.util.List; 19import java.util.List;
19import java.util.ArrayList; 20import java.util.ArrayList;
20 21import java.util.Map;
22import java.util.HashMap;
21@SuppressWarnings("all") 23@SuppressWarnings("all")
22public class InternalSolverLanguageParser extends AbstractInternalAntlrParser { 24public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
23 public static final String[] tokenNames = new String[] { 25 public static final String[] tokenNames = new String[] {
24 "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_ID", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'-'", "'.'", "'true'", "'false'", "'unknown'", "'error'", "'('", "','", "')'", "':'", "'exists'", "'equals'", "'bool'", "'int'", "'real'", "'string'", "'\\''", "':-'", "'|'", "'+'", "'*'", "'default'", "'abstract'", "'class'", "'extends'", "'{'", "'}'", "'enum'", "'containment'", "'relation'", "'..'" 26 "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_DOT", "RULE_STAR", "RULE_PLUS", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_QUOTED_ID", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "':'", "':-'", "'='", "'functional'", "'error'", "'default'", "'extern'", "'.'", "'if'", "'then'", "'else'", "';'", "'->'", "','", "'count'", "'{'", "'}'", "'|'", "'('", "')'", "'*'", "'['", "'..'", "']'", "'inf'", "'empty'", "'abstract'", "'class'", "'extends'", "'contains'", "'opposite'", "'scope'", "'=='", "'<='", "'>='", "'int'", "'real'", "'!='", "'<'", "'>'", "'in'", "'+'", "'-'", "'/'", "'^'", "'!'", "'may'", "'must'", "'current'", "'only'", "'sum'", "'prod'", "'avg'", "'min'", "'max'", "'true'", "'false'", "'unknown'", "'minimize'", "'maximize'"
25 }; 27 };
26 public static final int RULE_STRING=6; 28 public static final int T__50=50;
27 public static final int RULE_SL_COMMENT=8;
28 public static final int T__19=19; 29 public static final int T__19=19;
29 public static final int T__15=15; 30 public static final int T__15=15;
30 public static final int T__37=37; 31 public static final int T__59=59;
31 public static final int T__16=16; 32 public static final int T__16=16;
32 public static final int T__38=38;
33 public static final int T__17=17; 33 public static final int T__17=17;
34 public static final int T__39=39;
35 public static final int T__18=18; 34 public static final int T__18=18;
36 public static final int T__11=11; 35 public static final int T__55=55;
37 public static final int T__33=33; 36 public static final int T__56=56;
38 public static final int T__12=12; 37 public static final int T__57=57;
39 public static final int T__34=34; 38 public static final int T__58=58;
40 public static final int T__13=13; 39 public static final int T__51=51;
41 public static final int T__35=35; 40 public static final int RULE_STAR=5;
42 public static final int T__14=14; 41 public static final int T__52=52;
43 public static final int T__36=36; 42 public static final int T__53=53;
44 public static final int EOF=-1; 43 public static final int T__54=54;
45 public static final int T__30=30; 44 public static final int T__60=60;
46 public static final int T__31=31; 45 public static final int T__61=61;
47 public static final int T__32=32; 46 public static final int RULE_ID=8;
48 public static final int RULE_ID=5; 47 public static final int RULE_QUOTED_ID=10;
49 public static final int RULE_WS=9;
50 public static final int RULE_ANY_OTHER=10;
51 public static final int T__26=26; 48 public static final int T__26=26;
52 public static final int T__27=27; 49 public static final int T__27=27;
53 public static final int T__28=28; 50 public static final int T__28=28;
54 public static final int RULE_INT=4; 51 public static final int RULE_INT=9;
55 public static final int T__29=29; 52 public static final int T__29=29;
56 public static final int T__22=22; 53 public static final int T__22=22;
57 public static final int RULE_ML_COMMENT=7; 54 public static final int T__66=66;
55 public static final int RULE_ML_COMMENT=11;
58 public static final int T__23=23; 56 public static final int T__23=23;
57 public static final int T__67=67;
59 public static final int T__24=24; 58 public static final int T__24=24;
59 public static final int T__68=68;
60 public static final int T__25=25; 60 public static final int T__25=25;
61 public static final int T__40=40; 61 public static final int T__69=69;
62 public static final int T__41=41; 62 public static final int T__62=62;
63 public static final int T__63=63;
63 public static final int T__20=20; 64 public static final int T__20=20;
65 public static final int T__64=64;
64 public static final int T__21=21; 66 public static final int T__21=21;
67 public static final int T__65=65;
68 public static final int T__70=70;
69 public static final int T__71=71;
70 public static final int T__72=72;
71 public static final int RULE_STRING=7;
72 public static final int RULE_SL_COMMENT=12;
73 public static final int T__37=37;
74 public static final int T__38=38;
75 public static final int T__39=39;
76 public static final int T__33=33;
77 public static final int T__34=34;
78 public static final int T__35=35;
79 public static final int RULE_PLUS=6;
80 public static final int T__36=36;
81 public static final int T__73=73;
82 public static final int RULE_DOT=4;
83 public static final int EOF=-1;
84 public static final int T__30=30;
85 public static final int T__74=74;
86 public static final int T__31=31;
87 public static final int T__32=32;
88 public static final int RULE_WS=13;
89 public static final int RULE_ANY_OTHER=14;
90 public static final int T__48=48;
91 public static final int T__49=49;
92 public static final int T__44=44;
93 public static final int T__45=45;
94 public static final int T__46=46;
95 public static final int T__47=47;
96 public static final int T__40=40;
97 public static final int T__41=41;
98 public static final int T__42=42;
99 public static final int T__43=43;
65 100
66 // delegates 101 // delegates
67 // delegators 102 // delegators
@@ -103,7 +138,7 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
103 138
104 139
105 // $ANTLR start "entryRuleProblem" 140 // $ANTLR start "entryRuleProblem"
106 // InternalSolverLanguage.g:64:1: entryRuleProblem returns [EObject current=null] : iv_ruleProblem= ruleProblem EOF ; 141 // InternalSolverLanguage.g:65:1: entryRuleProblem returns [EObject current=null] : iv_ruleProblem= ruleProblem EOF ;
107 public final EObject entryRuleProblem() throws RecognitionException { 142 public final EObject entryRuleProblem() throws RecognitionException {
108 EObject current = null; 143 EObject current = null;
109 144
@@ -111,17 +146,21 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
111 146
112 147
113 try { 148 try {
114 // InternalSolverLanguage.g:64:48: (iv_ruleProblem= ruleProblem EOF ) 149 // InternalSolverLanguage.g:65:48: (iv_ruleProblem= ruleProblem EOF )
115 // InternalSolverLanguage.g:65:2: iv_ruleProblem= ruleProblem EOF 150 // InternalSolverLanguage.g:66:2: iv_ruleProblem= ruleProblem EOF
116 { 151 {
117 newCompositeNode(grammarAccess.getProblemRule()); 152 if ( state.backtracking==0 ) {
153 newCompositeNode(grammarAccess.getProblemRule());
154 }
118 pushFollow(FOLLOW_1); 155 pushFollow(FOLLOW_1);
119 iv_ruleProblem=ruleProblem(); 156 iv_ruleProblem=ruleProblem();
120 157
121 state._fsp--; 158 state._fsp--;
122 159 if (state.failed) return current;
123 current =iv_ruleProblem; 160 if ( state.backtracking==0 ) {
124 match(input,EOF,FOLLOW_2); 161 current =iv_ruleProblem;
162 }
163 match(input,EOF,FOLLOW_2); if (state.failed) return current;
125 164
126 } 165 }
127 166
@@ -139,7 +178,7 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
139 178
140 179
141 // $ANTLR start "ruleProblem" 180 // $ANTLR start "ruleProblem"
142 // InternalSolverLanguage.g:71:1: ruleProblem returns [EObject current=null] : ( (lv_statements_0_0= ruleStatement ) )* ; 181 // InternalSolverLanguage.g:72:1: ruleProblem returns [EObject current=null] : ( (lv_statements_0_0= ruleStatement ) )* ;
143 public final EObject ruleProblem() throws RecognitionException { 182 public final EObject ruleProblem() throws RecognitionException {
144 EObject current = null; 183 EObject current = null;
145 184
@@ -150,46 +189,50 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
150 enterRule(); 189 enterRule();
151 190
152 try { 191 try {
153 // InternalSolverLanguage.g:77:2: ( ( (lv_statements_0_0= ruleStatement ) )* ) 192 // InternalSolverLanguage.g:78:2: ( ( (lv_statements_0_0= ruleStatement ) )* )
154 // InternalSolverLanguage.g:78:2: ( (lv_statements_0_0= ruleStatement ) )* 193 // InternalSolverLanguage.g:79:2: ( (lv_statements_0_0= ruleStatement ) )*
155 { 194 {
156 // InternalSolverLanguage.g:78:2: ( (lv_statements_0_0= ruleStatement ) )* 195 // InternalSolverLanguage.g:79:2: ( (lv_statements_0_0= ruleStatement ) )*
157 loop1: 196 loop1:
158 do { 197 do {
159 int alt1=2; 198 int alt1=2;
160 int LA1_0 = input.LA(1); 199 int LA1_0 = input.LA(1);
161 200
162 if ( (LA1_0==RULE_ID||LA1_0==16||(LA1_0>=21 && LA1_0<=26)||(LA1_0>=32 && LA1_0<=34)||(LA1_0>=38 && LA1_0<=40)) ) { 201 if ( ((LA1_0>=RULE_STRING && LA1_0<=RULE_QUOTED_ID)||(LA1_0>=18 && LA1_0<=21)||LA1_0==23||LA1_0==29||LA1_0==33||LA1_0==36||(LA1_0>=39 && LA1_0<=42)||LA1_0==46||(LA1_0>=50 && LA1_0<=51)||(LA1_0>=56 && LA1_0<=57)||(LA1_0>=60 && LA1_0<=74)) ) {
163 alt1=1; 202 alt1=1;
164 } 203 }
165 204
166 205
167 switch (alt1) { 206 switch (alt1) {
168 case 1 : 207 case 1 :
169 // InternalSolverLanguage.g:79:3: (lv_statements_0_0= ruleStatement ) 208 // InternalSolverLanguage.g:80:3: (lv_statements_0_0= ruleStatement )
170 { 209 {
171 // InternalSolverLanguage.g:79:3: (lv_statements_0_0= ruleStatement ) 210 // InternalSolverLanguage.g:80:3: (lv_statements_0_0= ruleStatement )
172 // InternalSolverLanguage.g:80:4: lv_statements_0_0= ruleStatement 211 // InternalSolverLanguage.g:81:4: lv_statements_0_0= ruleStatement
173 { 212 {
213 if ( state.backtracking==0 ) {
174 214
175 newCompositeNode(grammarAccess.getProblemAccess().getStatementsStatementParserRuleCall_0()); 215 newCompositeNode(grammarAccess.getProblemAccess().getStatementsStatementParserRuleCall_0());
176 216
217 }
177 pushFollow(FOLLOW_3); 218 pushFollow(FOLLOW_3);
178 lv_statements_0_0=ruleStatement(); 219 lv_statements_0_0=ruleStatement();
179 220
180 state._fsp--; 221 state._fsp--;
181 222 if (state.failed) return current;
182 223 if ( state.backtracking==0 ) {
183 if (current==null) { 224
184 current = createModelElementForParent(grammarAccess.getProblemRule()); 225 if (current==null) {
185 } 226 current = createModelElementForParent(grammarAccess.getProblemRule());
186 add( 227 }
187 current, 228 add(
188 "statements", 229 current,
189 lv_statements_0_0, 230 "statements",
190 "org.eclipse.viatra.solver.language.SolverLanguage.Statement"); 231 lv_statements_0_0,
191 afterParserOrEnumRuleCall(); 232 "org.eclipse.viatra.solver.language.SolverLanguage.Statement");
192 233 afterParserOrEnumRuleCall();
234
235 }
193 236
194 } 237 }
195 238
@@ -205,9 +248,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
205 248
206 } 249 }
207 250
251 if ( state.backtracking==0 ) {
208 252
209 leaveRule(); 253 leaveRule();
210 254
255 }
211 } 256 }
212 257
213 catch (RecognitionException re) { 258 catch (RecognitionException re) {
@@ -222,7 +267,7 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
222 267
223 268
224 // $ANTLR start "entryRuleStatement" 269 // $ANTLR start "entryRuleStatement"
225 // InternalSolverLanguage.g:100:1: entryRuleStatement returns [EObject current=null] : iv_ruleStatement= ruleStatement EOF ; 270 // InternalSolverLanguage.g:101:1: entryRuleStatement returns [EObject current=null] : iv_ruleStatement= ruleStatement EOF ;
226 public final EObject entryRuleStatement() throws RecognitionException { 271 public final EObject entryRuleStatement() throws RecognitionException {
227 EObject current = null; 272 EObject current = null;
228 273
@@ -230,17 +275,21 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
230 275
231 276
232 try { 277 try {
233 // InternalSolverLanguage.g:100:50: (iv_ruleStatement= ruleStatement EOF ) 278 // InternalSolverLanguage.g:101:50: (iv_ruleStatement= ruleStatement EOF )
234 // InternalSolverLanguage.g:101:2: iv_ruleStatement= ruleStatement EOF 279 // InternalSolverLanguage.g:102:2: iv_ruleStatement= ruleStatement EOF
235 { 280 {
236 newCompositeNode(grammarAccess.getStatementRule()); 281 if ( state.backtracking==0 ) {
282 newCompositeNode(grammarAccess.getStatementRule());
283 }
237 pushFollow(FOLLOW_1); 284 pushFollow(FOLLOW_1);
238 iv_ruleStatement=ruleStatement(); 285 iv_ruleStatement=ruleStatement();
239 286
240 state._fsp--; 287 state._fsp--;
241 288 if (state.failed) return current;
242 current =iv_ruleStatement; 289 if ( state.backtracking==0 ) {
243 match(input,EOF,FOLLOW_2); 290 current =iv_ruleStatement;
291 }
292 match(input,EOF,FOLLOW_2); if (state.failed) return current;
244 293
245 } 294 }
246 295
@@ -258,189 +307,286 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
258 307
259 308
260 // $ANTLR start "ruleStatement" 309 // $ANTLR start "ruleStatement"
261 // InternalSolverLanguage.g:107:1: ruleStatement returns [EObject current=null] : (this_Interpretation_0= ruleInterpretation | this_Predicate_1= rulePredicate ) ; 310 // InternalSolverLanguage.g:108:1: ruleStatement returns [EObject current=null] : ( (this_AssertionOrDefinition_0= ruleAssertionOrDefinition | this_PredicateDefinition_1= rulePredicateDefinition | this_UnnamedErrorPrediateDefinition_2= ruleUnnamedErrorPrediateDefinition | this_DefaultDefinition_3= ruleDefaultDefinition | this_ExternPredicateDefinition_4= ruleExternPredicateDefinition | this_MetricDefinition_5= ruleMetricDefinition | this_ExternMetricDefinition_6= ruleExternMetricDefinition | this_ClassDefinition_7= ruleClassDefinition | this_ScopeDefinition_8= ruleScopeDefinition | this_ObjectiveDefinition_9= ruleObjectiveDefinition ) this_DOT_10= RULE_DOT ) ;
262 public final EObject ruleStatement() throws RecognitionException { 311 public final EObject ruleStatement() throws RecognitionException {
263 EObject current = null; 312 EObject current = null;
264 313
265 EObject this_Interpretation_0 = null; 314 Token this_DOT_10=null;
315 EObject this_AssertionOrDefinition_0 = null;
316
317 EObject this_PredicateDefinition_1 = null;
318
319 EObject this_UnnamedErrorPrediateDefinition_2 = null;
320
321 EObject this_DefaultDefinition_3 = null;
322
323 EObject this_ExternPredicateDefinition_4 = null;
324
325 EObject this_MetricDefinition_5 = null;
326
327 EObject this_ExternMetricDefinition_6 = null;
328
329 EObject this_ClassDefinition_7 = null;
266 330
267 EObject this_Predicate_1 = null; 331 EObject this_ScopeDefinition_8 = null;
332
333 EObject this_ObjectiveDefinition_9 = null;
268 334
269 335
270 336
271 enterRule(); 337 enterRule();
272 338
273 try { 339 try {
274 // InternalSolverLanguage.g:113:2: ( (this_Interpretation_0= ruleInterpretation | this_Predicate_1= rulePredicate ) ) 340 // InternalSolverLanguage.g:114:2: ( ( (this_AssertionOrDefinition_0= ruleAssertionOrDefinition | this_PredicateDefinition_1= rulePredicateDefinition | this_UnnamedErrorPrediateDefinition_2= ruleUnnamedErrorPrediateDefinition | this_DefaultDefinition_3= ruleDefaultDefinition | this_ExternPredicateDefinition_4= ruleExternPredicateDefinition | this_MetricDefinition_5= ruleMetricDefinition | this_ExternMetricDefinition_6= ruleExternMetricDefinition | this_ClassDefinition_7= ruleClassDefinition | this_ScopeDefinition_8= ruleScopeDefinition | this_ObjectiveDefinition_9= ruleObjectiveDefinition ) this_DOT_10= RULE_DOT ) )
275 // InternalSolverLanguage.g:114:2: (this_Interpretation_0= ruleInterpretation | this_Predicate_1= rulePredicate ) 341 // InternalSolverLanguage.g:115:2: ( (this_AssertionOrDefinition_0= ruleAssertionOrDefinition | this_PredicateDefinition_1= rulePredicateDefinition | this_UnnamedErrorPrediateDefinition_2= ruleUnnamedErrorPrediateDefinition | this_DefaultDefinition_3= ruleDefaultDefinition | this_ExternPredicateDefinition_4= ruleExternPredicateDefinition | this_MetricDefinition_5= ruleMetricDefinition | this_ExternMetricDefinition_6= ruleExternMetricDefinition | this_ClassDefinition_7= ruleClassDefinition | this_ScopeDefinition_8= ruleScopeDefinition | this_ObjectiveDefinition_9= ruleObjectiveDefinition ) this_DOT_10= RULE_DOT )
342 {
343 // InternalSolverLanguage.g:115:2: ( (this_AssertionOrDefinition_0= ruleAssertionOrDefinition | this_PredicateDefinition_1= rulePredicateDefinition | this_UnnamedErrorPrediateDefinition_2= ruleUnnamedErrorPrediateDefinition | this_DefaultDefinition_3= ruleDefaultDefinition | this_ExternPredicateDefinition_4= ruleExternPredicateDefinition | this_MetricDefinition_5= ruleMetricDefinition | this_ExternMetricDefinition_6= ruleExternMetricDefinition | this_ClassDefinition_7= ruleClassDefinition | this_ScopeDefinition_8= ruleScopeDefinition | this_ObjectiveDefinition_9= ruleObjectiveDefinition ) this_DOT_10= RULE_DOT )
344 // InternalSolverLanguage.g:116:3: (this_AssertionOrDefinition_0= ruleAssertionOrDefinition | this_PredicateDefinition_1= rulePredicateDefinition | this_UnnamedErrorPrediateDefinition_2= ruleUnnamedErrorPrediateDefinition | this_DefaultDefinition_3= ruleDefaultDefinition | this_ExternPredicateDefinition_4= ruleExternPredicateDefinition | this_MetricDefinition_5= ruleMetricDefinition | this_ExternMetricDefinition_6= ruleExternMetricDefinition | this_ClassDefinition_7= ruleClassDefinition | this_ScopeDefinition_8= ruleScopeDefinition | this_ObjectiveDefinition_9= ruleObjectiveDefinition ) this_DOT_10= RULE_DOT
276 { 345 {
277 // InternalSolverLanguage.g:114:2: (this_Interpretation_0= ruleInterpretation | this_Predicate_1= rulePredicate ) 346 // InternalSolverLanguage.g:116:3: (this_AssertionOrDefinition_0= ruleAssertionOrDefinition | this_PredicateDefinition_1= rulePredicateDefinition | this_UnnamedErrorPrediateDefinition_2= ruleUnnamedErrorPrediateDefinition | this_DefaultDefinition_3= ruleDefaultDefinition | this_ExternPredicateDefinition_4= ruleExternPredicateDefinition | this_MetricDefinition_5= ruleMetricDefinition | this_ExternMetricDefinition_6= ruleExternMetricDefinition | this_ClassDefinition_7= ruleClassDefinition | this_ScopeDefinition_8= ruleScopeDefinition | this_ObjectiveDefinition_9= ruleObjectiveDefinition )
278 int alt2=2; 347 int alt2=10;
279 alt2 = dfa2.predict(input); 348 alt2 = dfa2.predict(input);
280 switch (alt2) { 349 switch (alt2) {
281 case 1 : 350 case 1 :
282 // InternalSolverLanguage.g:115:3: this_Interpretation_0= ruleInterpretation 351 // InternalSolverLanguage.g:117:4: this_AssertionOrDefinition_0= ruleAssertionOrDefinition
283 { 352 {
353 if ( state.backtracking==0 ) {
284 354
285 newCompositeNode(grammarAccess.getStatementAccess().getInterpretationParserRuleCall_0()); 355 newCompositeNode(grammarAccess.getStatementAccess().getAssertionOrDefinitionParserRuleCall_0_0());
286 356
287 pushFollow(FOLLOW_2); 357 }
288 this_Interpretation_0=ruleInterpretation(); 358 pushFollow(FOLLOW_4);
359 this_AssertionOrDefinition_0=ruleAssertionOrDefinition();
289 360
290 state._fsp--; 361 state._fsp--;
362 if (state.failed) return current;
363 if ( state.backtracking==0 ) {
291 364
292 365 current = this_AssertionOrDefinition_0;
293 current = this_Interpretation_0; 366 afterParserOrEnumRuleCall();
294 afterParserOrEnumRuleCall(); 367
295 368 }
296 369
297 } 370 }
298 break; 371 break;
299 case 2 : 372 case 2 :
300 // InternalSolverLanguage.g:124:3: this_Predicate_1= rulePredicate 373 // InternalSolverLanguage.g:126:4: this_PredicateDefinition_1= rulePredicateDefinition
301 { 374 {
375 if ( state.backtracking==0 ) {
302 376
303 newCompositeNode(grammarAccess.getStatementAccess().getPredicateParserRuleCall_1()); 377 newCompositeNode(grammarAccess.getStatementAccess().getPredicateDefinitionParserRuleCall_0_1());
304 378
305 pushFollow(FOLLOW_2); 379 }
306 this_Predicate_1=rulePredicate(); 380 pushFollow(FOLLOW_4);
381 this_PredicateDefinition_1=rulePredicateDefinition();
307 382
308 state._fsp--; 383 state._fsp--;
384 if (state.failed) return current;
385 if ( state.backtracking==0 ) {
309 386
310 387 current = this_PredicateDefinition_1;
311 current = this_Predicate_1; 388 afterParserOrEnumRuleCall();
312 afterParserOrEnumRuleCall(); 389
313 390 }
314 391
315 } 392 }
316 break; 393 break;
394 case 3 :
395 // InternalSolverLanguage.g:135:4: this_UnnamedErrorPrediateDefinition_2= ruleUnnamedErrorPrediateDefinition
396 {
397 if ( state.backtracking==0 ) {
317 398
318 } 399 newCompositeNode(grammarAccess.getStatementAccess().getUnnamedErrorPrediateDefinitionParserRuleCall_0_2());
400
401 }
402 pushFollow(FOLLOW_4);
403 this_UnnamedErrorPrediateDefinition_2=ruleUnnamedErrorPrediateDefinition();
319 404
405 state._fsp--;
406 if (state.failed) return current;
407 if ( state.backtracking==0 ) {
320 408
321 } 409 current = this_UnnamedErrorPrediateDefinition_2;
410 afterParserOrEnumRuleCall();
411
412 }
322 413
414 }
415 break;
416 case 4 :
417 // InternalSolverLanguage.g:144:4: this_DefaultDefinition_3= ruleDefaultDefinition
418 {
419 if ( state.backtracking==0 ) {
323 420
324 leaveRule(); 421 newCompositeNode(grammarAccess.getStatementAccess().getDefaultDefinitionParserRuleCall_0_3());
422
423 }
424 pushFollow(FOLLOW_4);
425 this_DefaultDefinition_3=ruleDefaultDefinition();
325 426
326 } 427 state._fsp--;
428 if (state.failed) return current;
429 if ( state.backtracking==0 ) {
327 430
328 catch (RecognitionException re) { 431 current = this_DefaultDefinition_3;
329 recover(input,re); 432 afterParserOrEnumRuleCall();
330 appendSkippedTokens(); 433
331 } 434 }
332 finally {
333 }
334 return current;
335 }
336 // $ANTLR end "ruleStatement"
337 435
436 }
437 break;
438 case 5 :
439 // InternalSolverLanguage.g:153:4: this_ExternPredicateDefinition_4= ruleExternPredicateDefinition
440 {
441 if ( state.backtracking==0 ) {
338 442
339 // $ANTLR start "entryRuleREALLiteral" 443 newCompositeNode(grammarAccess.getStatementAccess().getExternPredicateDefinitionParserRuleCall_0_4());
340 // InternalSolverLanguage.g:136:1: entryRuleREALLiteral returns [String current=null] : iv_ruleREALLiteral= ruleREALLiteral EOF ; 444
341 public final String entryRuleREALLiteral() throws RecognitionException { 445 }
342 String current = null; 446 pushFollow(FOLLOW_4);
447 this_ExternPredicateDefinition_4=ruleExternPredicateDefinition();
343 448
344 AntlrDatatypeRuleToken iv_ruleREALLiteral = null; 449 state._fsp--;
450 if (state.failed) return current;
451 if ( state.backtracking==0 ) {
345 452
453 current = this_ExternPredicateDefinition_4;
454 afterParserOrEnumRuleCall();
455
456 }
346 457
347 try { 458 }
348 // InternalSolverLanguage.g:136:51: (iv_ruleREALLiteral= ruleREALLiteral EOF ) 459 break;
349 // InternalSolverLanguage.g:137:2: iv_ruleREALLiteral= ruleREALLiteral EOF 460 case 6 :
350 { 461 // InternalSolverLanguage.g:162:4: this_MetricDefinition_5= ruleMetricDefinition
351 newCompositeNode(grammarAccess.getREALLiteralRule()); 462 {
352 pushFollow(FOLLOW_1); 463 if ( state.backtracking==0 ) {
353 iv_ruleREALLiteral=ruleREALLiteral();
354 464
355 state._fsp--; 465 newCompositeNode(grammarAccess.getStatementAccess().getMetricDefinitionParserRuleCall_0_5());
466
467 }
468 pushFollow(FOLLOW_4);
469 this_MetricDefinition_5=ruleMetricDefinition();
356 470
357 current =iv_ruleREALLiteral.getText(); 471 state._fsp--;
358 match(input,EOF,FOLLOW_2); 472 if (state.failed) return current;
473 if ( state.backtracking==0 ) {
359 474
360 } 475 current = this_MetricDefinition_5;
476 afterParserOrEnumRuleCall();
477
478 }
361 479
362 } 480 }
481 break;
482 case 7 :
483 // InternalSolverLanguage.g:171:4: this_ExternMetricDefinition_6= ruleExternMetricDefinition
484 {
485 if ( state.backtracking==0 ) {
363 486
364 catch (RecognitionException re) { 487 newCompositeNode(grammarAccess.getStatementAccess().getExternMetricDefinitionParserRuleCall_0_6());
365 recover(input,re); 488
366 appendSkippedTokens(); 489 }
367 } 490 pushFollow(FOLLOW_4);
368 finally { 491 this_ExternMetricDefinition_6=ruleExternMetricDefinition();
369 }
370 return current;
371 }
372 // $ANTLR end "entryRuleREALLiteral"
373 492
493 state._fsp--;
494 if (state.failed) return current;
495 if ( state.backtracking==0 ) {
374 496
375 // $ANTLR start "ruleREALLiteral" 497 current = this_ExternMetricDefinition_6;
376 // InternalSolverLanguage.g:143:1: ruleREALLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_INT_1= RULE_INT kw= '.' this_INT_3= RULE_INT ) ; 498 afterParserOrEnumRuleCall();
377 public final AntlrDatatypeRuleToken ruleREALLiteral() throws RecognitionException { 499
378 AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken(); 500 }
379 501
380 Token kw=null; 502 }
381 Token this_INT_1=null; 503 break;
382 Token this_INT_3=null; 504 case 8 :
505 // InternalSolverLanguage.g:180:4: this_ClassDefinition_7= ruleClassDefinition
506 {
507 if ( state.backtracking==0 ) {
383 508
509 newCompositeNode(grammarAccess.getStatementAccess().getClassDefinitionParserRuleCall_0_7());
510
511 }
512 pushFollow(FOLLOW_4);
513 this_ClassDefinition_7=ruleClassDefinition();
384 514
385 enterRule(); 515 state._fsp--;
516 if (state.failed) return current;
517 if ( state.backtracking==0 ) {
386 518
387 try { 519 current = this_ClassDefinition_7;
388 // InternalSolverLanguage.g:149:2: ( ( (kw= '-' )? this_INT_1= RULE_INT kw= '.' this_INT_3= RULE_INT ) ) 520 afterParserOrEnumRuleCall();
389 // InternalSolverLanguage.g:150:2: ( (kw= '-' )? this_INT_1= RULE_INT kw= '.' this_INT_3= RULE_INT ) 521
390 { 522 }
391 // InternalSolverLanguage.g:150:2: ( (kw= '-' )? this_INT_1= RULE_INT kw= '.' this_INT_3= RULE_INT )
392 // InternalSolverLanguage.g:151:3: (kw= '-' )? this_INT_1= RULE_INT kw= '.' this_INT_3= RULE_INT
393 {
394 // InternalSolverLanguage.g:151:3: (kw= '-' )?
395 int alt3=2;
396 int LA3_0 = input.LA(1);
397 523
398 if ( (LA3_0==11) ) { 524 }
399 alt3=1; 525 break;
400 } 526 case 9 :
401 switch (alt3) { 527 // InternalSolverLanguage.g:189:4: this_ScopeDefinition_8= ruleScopeDefinition
402 case 1 :
403 // InternalSolverLanguage.g:152:4: kw= '-'
404 { 528 {
405 kw=(Token)match(input,11,FOLLOW_4); 529 if ( state.backtracking==0 ) {
406 530
407 current.merge(kw); 531 newCompositeNode(grammarAccess.getStatementAccess().getScopeDefinitionParserRuleCall_0_8());
408 newLeafNode(kw, grammarAccess.getREALLiteralAccess().getHyphenMinusKeyword_0()); 532
409 533 }
534 pushFollow(FOLLOW_4);
535 this_ScopeDefinition_8=ruleScopeDefinition();
536
537 state._fsp--;
538 if (state.failed) return current;
539 if ( state.backtracking==0 ) {
540
541 current = this_ScopeDefinition_8;
542 afterParserOrEnumRuleCall();
543
544 }
410 545
411 } 546 }
412 break; 547 break;
548 case 10 :
549 // InternalSolverLanguage.g:198:4: this_ObjectiveDefinition_9= ruleObjectiveDefinition
550 {
551 if ( state.backtracking==0 ) {
413 552
414 } 553 newCompositeNode(grammarAccess.getStatementAccess().getObjectiveDefinitionParserRuleCall_0_9());
554
555 }
556 pushFollow(FOLLOW_4);
557 this_ObjectiveDefinition_9=ruleObjectiveDefinition();
415 558
416 this_INT_1=(Token)match(input,RULE_INT,FOLLOW_5); 559 state._fsp--;
560 if (state.failed) return current;
561 if ( state.backtracking==0 ) {
417 562
418 current.merge(this_INT_1); 563 current = this_ObjectiveDefinition_9;
419 564 afterParserOrEnumRuleCall();
565
566 }
420 567
421 newLeafNode(this_INT_1, grammarAccess.getREALLiteralAccess().getINTTerminalRuleCall_1()); 568 }
422 569 break;
423 kw=(Token)match(input,12,FOLLOW_4);
424 570
425 current.merge(kw); 571 }
426 newLeafNode(kw, grammarAccess.getREALLiteralAccess().getFullStopKeyword_2());
427
428 this_INT_3=(Token)match(input,RULE_INT,FOLLOW_2);
429 572
430 current.merge(this_INT_3); 573 this_DOT_10=(Token)match(input,RULE_DOT,FOLLOW_2); if (state.failed) return current;
431 574 if ( state.backtracking==0 ) {
432 575
433 newLeafNode(this_INT_3, grammarAccess.getREALLiteralAccess().getINTTerminalRuleCall_3()); 576 newLeafNode(this_DOT_10, grammarAccess.getStatementAccess().getDOTTerminalRuleCall_1());
434 577
578 }
435 579
436 } 580 }
437 581
438 582
439 } 583 }
440 584
585 if ( state.backtracking==0 ) {
441 586
442 leaveRule(); 587 leaveRule();
443 588
589 }
444 } 590 }
445 591
446 catch (RecognitionException re) { 592 catch (RecognitionException re) {
@@ -451,29 +597,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
451 } 597 }
452 return current; 598 return current;
453 } 599 }
454 // $ANTLR end "ruleREALLiteral" 600 // $ANTLR end "ruleStatement"
455 601
456 602
457 // $ANTLR start "entryRuleINTLiteral" 603 // $ANTLR start "entryRuleAssertionOrDefinition"
458 // InternalSolverLanguage.g:181:1: entryRuleINTLiteral returns [String current=null] : iv_ruleINTLiteral= ruleINTLiteral EOF ; 604 // InternalSolverLanguage.g:215:1: entryRuleAssertionOrDefinition returns [EObject current=null] : iv_ruleAssertionOrDefinition= ruleAssertionOrDefinition EOF ;
459 public final String entryRuleINTLiteral() throws RecognitionException { 605 public final EObject entryRuleAssertionOrDefinition() throws RecognitionException {
460 String current = null; 606 EObject current = null;
461 607
462 AntlrDatatypeRuleToken iv_ruleINTLiteral = null; 608 EObject iv_ruleAssertionOrDefinition = null;
463 609
464 610
465 try { 611 try {
466 // InternalSolverLanguage.g:181:50: (iv_ruleINTLiteral= ruleINTLiteral EOF ) 612 // InternalSolverLanguage.g:215:62: (iv_ruleAssertionOrDefinition= ruleAssertionOrDefinition EOF )
467 // InternalSolverLanguage.g:182:2: iv_ruleINTLiteral= ruleINTLiteral EOF 613 // InternalSolverLanguage.g:216:2: iv_ruleAssertionOrDefinition= ruleAssertionOrDefinition EOF
468 { 614 {
469 newCompositeNode(grammarAccess.getINTLiteralRule()); 615 if ( state.backtracking==0 ) {
616 newCompositeNode(grammarAccess.getAssertionOrDefinitionRule());
617 }
470 pushFollow(FOLLOW_1); 618 pushFollow(FOLLOW_1);
471 iv_ruleINTLiteral=ruleINTLiteral(); 619 iv_ruleAssertionOrDefinition=ruleAssertionOrDefinition();
472 620
473 state._fsp--; 621 state._fsp--;
474 622 if (state.failed) return current;
475 current =iv_ruleINTLiteral.getText(); 623 if ( state.backtracking==0 ) {
476 match(input,EOF,FOLLOW_2); 624 current =iv_ruleAssertionOrDefinition;
625 }
626 match(input,EOF,FOLLOW_2); if (state.failed) return current;
477 627
478 } 628 }
479 629
@@ -487,191 +637,287 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
487 } 637 }
488 return current; 638 return current;
489 } 639 }
490 // $ANTLR end "entryRuleINTLiteral" 640 // $ANTLR end "entryRuleAssertionOrDefinition"
491 641
492 642
493 // $ANTLR start "ruleINTLiteral" 643 // $ANTLR start "ruleAssertionOrDefinition"
494 // InternalSolverLanguage.g:188:1: ruleINTLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_INT_1= RULE_INT ) ; 644 // InternalSolverLanguage.g:222:1: ruleAssertionOrDefinition returns [EObject current=null] : (this_Expression_0= ruleExpression ( ( () (otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )? ) | ( () otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) ) | ( () otherlv_8= '=' ( (lv_body_9_0= ruleExpression ) ) ) ) ) ;
495 public final AntlrDatatypeRuleToken ruleINTLiteral() throws RecognitionException { 645 public final EObject ruleAssertionOrDefinition() throws RecognitionException {
496 AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken(); 646 EObject current = null;
647
648 Token otherlv_2=null;
649 Token otherlv_5=null;
650 Token otherlv_8=null;
651 EObject this_Expression_0 = null;
652
653 EObject lv_range_3_0 = null;
654
655 EObject lv_body_6_0 = null;
656
657 EObject lv_body_9_0 = null;
497 658
498 Token kw=null;
499 Token this_INT_1=null;
500 659
501 660
502 enterRule(); 661 enterRule();
503 662
504 try { 663 try {
505 // InternalSolverLanguage.g:194:2: ( ( (kw= '-' )? this_INT_1= RULE_INT ) ) 664 // InternalSolverLanguage.g:228:2: ( (this_Expression_0= ruleExpression ( ( () (otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )? ) | ( () otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) ) | ( () otherlv_8= '=' ( (lv_body_9_0= ruleExpression ) ) ) ) ) )
506 // InternalSolverLanguage.g:195:2: ( (kw= '-' )? this_INT_1= RULE_INT ) 665 // InternalSolverLanguage.g:229:2: (this_Expression_0= ruleExpression ( ( () (otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )? ) | ( () otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) ) | ( () otherlv_8= '=' ( (lv_body_9_0= ruleExpression ) ) ) ) )
507 { 666 {
508 // InternalSolverLanguage.g:195:2: ( (kw= '-' )? this_INT_1= RULE_INT ) 667 // InternalSolverLanguage.g:229:2: (this_Expression_0= ruleExpression ( ( () (otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )? ) | ( () otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) ) | ( () otherlv_8= '=' ( (lv_body_9_0= ruleExpression ) ) ) ) )
509 // InternalSolverLanguage.g:196:3: (kw= '-' )? this_INT_1= RULE_INT 668 // InternalSolverLanguage.g:230:3: this_Expression_0= ruleExpression ( ( () (otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )? ) | ( () otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) ) | ( () otherlv_8= '=' ( (lv_body_9_0= ruleExpression ) ) ) )
510 { 669 {
511 // InternalSolverLanguage.g:196:3: (kw= '-' )? 670 if ( state.backtracking==0 ) {
512 int alt4=2; 671
513 int LA4_0 = input.LA(1); 672 newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getExpressionParserRuleCall_0());
673
674 }
675 pushFollow(FOLLOW_5);
676 this_Expression_0=ruleExpression();
514 677
515 if ( (LA4_0==11) ) { 678 state._fsp--;
679 if (state.failed) return current;
680 if ( state.backtracking==0 ) {
681
682 current = this_Expression_0;
683 afterParserOrEnumRuleCall();
684
685 }
686 // InternalSolverLanguage.g:238:3: ( ( () (otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )? ) | ( () otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) ) | ( () otherlv_8= '=' ( (lv_body_9_0= ruleExpression ) ) ) )
687 int alt4=3;
688 switch ( input.LA(1) ) {
689 case EOF:
690 case RULE_DOT:
691 case 15:
692 {
516 alt4=1; 693 alt4=1;
694 }
695 break;
696 case 16:
697 {
698 alt4=2;
699 }
700 break;
701 case 17:
702 {
703 alt4=3;
704 }
705 break;
706 default:
707 if (state.backtracking>0) {state.failed=true; return current;}
708 NoViableAltException nvae =
709 new NoViableAltException("", 4, 0, input);
710
711 throw nvae;
517 } 712 }
713
518 switch (alt4) { 714 switch (alt4) {
519 case 1 : 715 case 1 :
520 // InternalSolverLanguage.g:197:4: kw= '-' 716 // InternalSolverLanguage.g:239:4: ( () (otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )? )
521 { 717 {
522 kw=(Token)match(input,11,FOLLOW_4); 718 // InternalSolverLanguage.g:239:4: ( () (otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )? )
523 719 // InternalSolverLanguage.g:240:5: () (otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )?
524 current.merge(kw); 720 {
525 newLeafNode(kw, grammarAccess.getINTLiteralAccess().getHyphenMinusKeyword_0()); 721 // InternalSolverLanguage.g:240:5: ()
526 722 // InternalSolverLanguage.g:241:6:
723 {
724 if ( state.backtracking==0 ) {
527 725
726 current = forceCreateModelElementAndSet(
727 grammarAccess.getAssertionOrDefinitionAccess().getAssertionBodyAction_1_0_0(),
728 current);
729
528 } 730 }
529 break;
530 731
531 } 732 }
532 733
533 this_INT_1=(Token)match(input,RULE_INT,FOLLOW_2); 734 // InternalSolverLanguage.g:247:5: (otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )?
735 int alt3=2;
736 int LA3_0 = input.LA(1);
534 737
535 current.merge(this_INT_1); 738 if ( (LA3_0==15) ) {
536 739 alt3=1;
740 }
741 switch (alt3) {
742 case 1 :
743 // InternalSolverLanguage.g:248:6: otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) )
744 {
745 otherlv_2=(Token)match(input,15,FOLLOW_6); if (state.failed) return current;
746 if ( state.backtracking==0 ) {
537 747
538 newLeafNode(this_INT_1, grammarAccess.getINTLiteralAccess().getINTTerminalRuleCall_1()); 748 newLeafNode(otherlv_2, grammarAccess.getAssertionOrDefinitionAccess().getColonKeyword_1_0_1_0());
539 749
750 }
751 // InternalSolverLanguage.g:252:6: ( (lv_range_3_0= ruleExpression ) )
752 // InternalSolverLanguage.g:253:7: (lv_range_3_0= ruleExpression )
753 {
754 // InternalSolverLanguage.g:253:7: (lv_range_3_0= ruleExpression )
755 // InternalSolverLanguage.g:254:8: lv_range_3_0= ruleExpression
756 {
757 if ( state.backtracking==0 ) {
540 758
541 } 759 newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getRangeExpressionParserRuleCall_1_0_1_1_0());
760
761 }
762 pushFollow(FOLLOW_2);
763 lv_range_3_0=ruleExpression();
542 764
765 state._fsp--;
766 if (state.failed) return current;
767 if ( state.backtracking==0 ) {
768
769 if (current==null) {
770 current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule());
771 }
772 set(
773 current,
774 "range",
775 lv_range_3_0,
776 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
777 afterParserOrEnumRuleCall();
778
779 }
543 780
544 } 781 }
545 782
546 783
547 leaveRule(); 784 }
548 785
549 }
550 786
551 catch (RecognitionException re) { 787 }
552 recover(input,re); 788 break;
553 appendSkippedTokens();
554 }
555 finally {
556 }
557 return current;
558 }
559 // $ANTLR end "ruleINTLiteral"
560 789
790 }
561 791
562 // $ANTLR start "entryRuleBooleanValue"
563 // InternalSolverLanguage.g:214:1: entryRuleBooleanValue returns [EObject current=null] : iv_ruleBooleanValue= ruleBooleanValue EOF ;
564 public final EObject entryRuleBooleanValue() throws RecognitionException {
565 EObject current = null;
566 792
567 EObject iv_ruleBooleanValue = null; 793 }
568 794
569 795
570 try { 796 }
571 // InternalSolverLanguage.g:214:53: (iv_ruleBooleanValue= ruleBooleanValue EOF ) 797 break;
572 // InternalSolverLanguage.g:215:2: iv_ruleBooleanValue= ruleBooleanValue EOF 798 case 2 :
573 { 799 // InternalSolverLanguage.g:274:4: ( () otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) )
574 newCompositeNode(grammarAccess.getBooleanValueRule()); 800 {
575 pushFollow(FOLLOW_1); 801 // InternalSolverLanguage.g:274:4: ( () otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) )
576 iv_ruleBooleanValue=ruleBooleanValue(); 802 // InternalSolverLanguage.g:275:5: () otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) )
803 {
804 // InternalSolverLanguage.g:275:5: ()
805 // InternalSolverLanguage.g:276:6:
806 {
807 if ( state.backtracking==0 ) {
577 808
578 state._fsp--; 809 current = forceCreateModelElementAndSet(
810 grammarAccess.getAssertionOrDefinitionAccess().getPredicateDefinitionHeadAction_1_1_0(),
811 current);
812
813 }
579 814
580 current =iv_ruleBooleanValue; 815 }
581 match(input,EOF,FOLLOW_2);
582 816
583 } 817 otherlv_5=(Token)match(input,16,FOLLOW_6); if (state.failed) return current;
818 if ( state.backtracking==0 ) {
584 819
585 } 820 newLeafNode(otherlv_5, grammarAccess.getAssertionOrDefinitionAccess().getColonHyphenMinusKeyword_1_1_1());
821
822 }
823 // InternalSolverLanguage.g:286:5: ( (lv_body_6_0= ruleExpression ) )
824 // InternalSolverLanguage.g:287:6: (lv_body_6_0= ruleExpression )
825 {
826 // InternalSolverLanguage.g:287:6: (lv_body_6_0= ruleExpression )
827 // InternalSolverLanguage.g:288:7: lv_body_6_0= ruleExpression
828 {
829 if ( state.backtracking==0 ) {
586 830
587 catch (RecognitionException re) { 831 newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getBodyExpressionParserRuleCall_1_1_2_0());
588 recover(input,re); 832
589 appendSkippedTokens(); 833 }
590 } 834 pushFollow(FOLLOW_2);
591 finally { 835 lv_body_6_0=ruleExpression();
592 }
593 return current;
594 }
595 // $ANTLR end "entryRuleBooleanValue"
596 836
837 state._fsp--;
838 if (state.failed) return current;
839 if ( state.backtracking==0 ) {
840
841 if (current==null) {
842 current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule());
843 }
844 set(
845 current,
846 "body",
847 lv_body_6_0,
848 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
849 afterParserOrEnumRuleCall();
850
851 }
597 852
598 // $ANTLR start "ruleBooleanValue" 853 }
599 // InternalSolverLanguage.g:221:1: ruleBooleanValue returns [EObject current=null] : ( ( () otherlv_1= 'true' ) | (otherlv_2= 'false' () ) ) ;
600 public final EObject ruleBooleanValue() throws RecognitionException {
601 EObject current = null;
602 854
603 Token otherlv_1=null;
604 Token otherlv_2=null;
605 855
856 }
606 857
607 enterRule();
608 858
609 try { 859 }
610 // InternalSolverLanguage.g:227:2: ( ( ( () otherlv_1= 'true' ) | (otherlv_2= 'false' () ) ) )
611 // InternalSolverLanguage.g:228:2: ( ( () otherlv_1= 'true' ) | (otherlv_2= 'false' () ) )
612 {
613 // InternalSolverLanguage.g:228:2: ( ( () otherlv_1= 'true' ) | (otherlv_2= 'false' () ) )
614 int alt5=2;
615 int LA5_0 = input.LA(1);
616 860
617 if ( (LA5_0==13) ) {
618 alt5=1;
619 }
620 else if ( (LA5_0==14) ) {
621 alt5=2;
622 }
623 else {
624 NoViableAltException nvae =
625 new NoViableAltException("", 5, 0, input);
626 861
627 throw nvae; 862 }
628 } 863 break;
629 switch (alt5) { 864 case 3 :
630 case 1 : 865 // InternalSolverLanguage.g:307:4: ( () otherlv_8= '=' ( (lv_body_9_0= ruleExpression ) ) )
631 // InternalSolverLanguage.g:229:3: ( () otherlv_1= 'true' )
632 { 866 {
633 // InternalSolverLanguage.g:229:3: ( () otherlv_1= 'true' ) 867 // InternalSolverLanguage.g:307:4: ( () otherlv_8= '=' ( (lv_body_9_0= ruleExpression ) ) )
634 // InternalSolverLanguage.g:230:4: () otherlv_1= 'true' 868 // InternalSolverLanguage.g:308:5: () otherlv_8= '=' ( (lv_body_9_0= ruleExpression ) )
635 { 869 {
636 // InternalSolverLanguage.g:230:4: () 870 // InternalSolverLanguage.g:308:5: ()
637 // InternalSolverLanguage.g:231:5: 871 // InternalSolverLanguage.g:309:6:
638 { 872 {
873 if ( state.backtracking==0 ) {
639 874
640 current = forceCreateModelElement( 875 current = forceCreateModelElementAndSet(
641 grammarAccess.getBooleanValueAccess().getBooleanTrueAction_0_0(), 876 grammarAccess.getAssertionOrDefinitionAccess().getMetricDefinitionHeadAction_1_2_0(),
642 current); 877 current);
643 878
644
645 } 879 }
646 880
647 otherlv_1=(Token)match(input,13,FOLLOW_2);
648
649 newLeafNode(otherlv_1, grammarAccess.getBooleanValueAccess().getTrueKeyword_0_1());
650
651
652 } 881 }
653 882
883 otherlv_8=(Token)match(input,17,FOLLOW_6); if (state.failed) return current;
884 if ( state.backtracking==0 ) {
654 885
886 newLeafNode(otherlv_8, grammarAccess.getAssertionOrDefinitionAccess().getEqualsSignKeyword_1_2_1());
887
655 } 888 }
656 break; 889 // InternalSolverLanguage.g:319:5: ( (lv_body_9_0= ruleExpression ) )
657 case 2 : 890 // InternalSolverLanguage.g:320:6: (lv_body_9_0= ruleExpression )
658 // InternalSolverLanguage.g:243:3: (otherlv_2= 'false' () )
659 { 891 {
660 // InternalSolverLanguage.g:243:3: (otherlv_2= 'false' () ) 892 // InternalSolverLanguage.g:320:6: (lv_body_9_0= ruleExpression )
661 // InternalSolverLanguage.g:244:4: otherlv_2= 'false' () 893 // InternalSolverLanguage.g:321:7: lv_body_9_0= ruleExpression
662 { 894 {
663 otherlv_2=(Token)match(input,14,FOLLOW_2); 895 if ( state.backtracking==0 ) {
664 896
665 newLeafNode(otherlv_2, grammarAccess.getBooleanValueAccess().getFalseKeyword_1_0()); 897 newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getBodyExpressionParserRuleCall_1_2_2_0());
666 898
667 // InternalSolverLanguage.g:248:4: () 899 }
668 // InternalSolverLanguage.g:249:5: 900 pushFollow(FOLLOW_2);
669 { 901 lv_body_9_0=ruleExpression();
902
903 state._fsp--;
904 if (state.failed) return current;
905 if ( state.backtracking==0 ) {
906
907 if (current==null) {
908 current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule());
909 }
910 set(
911 current,
912 "body",
913 lv_body_9_0,
914 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
915 afterParserOrEnumRuleCall();
916
917 }
918
919 }
670 920
671 current = forceCreateModelElement(
672 grammarAccess.getBooleanValueAccess().getBooleanFalseAction_1_1(),
673 current);
674
675 921
676 } 922 }
677 923
@@ -688,8 +934,13 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
688 } 934 }
689 935
690 936
691 leaveRule(); 937 }
938
939 if ( state.backtracking==0 ) {
692 940
941 leaveRule();
942
943 }
693 } 944 }
694 945
695 catch (RecognitionException re) { 946 catch (RecognitionException re) {
@@ -700,29 +951,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
700 } 951 }
701 return current; 952 return current;
702 } 953 }
703 // $ANTLR end "ruleBooleanValue" 954 // $ANTLR end "ruleAssertionOrDefinition"
704 955
705 956
706 // $ANTLR start "entryRuleTruthValue" 957 // $ANTLR start "entryRulePredicateDefinition"
707 // InternalSolverLanguage.g:260:1: entryRuleTruthValue returns [EObject current=null] : iv_ruleTruthValue= ruleTruthValue EOF ; 958 // InternalSolverLanguage.g:344:1: entryRulePredicateDefinition returns [EObject current=null] : iv_rulePredicateDefinition= rulePredicateDefinition EOF ;
708 public final EObject entryRuleTruthValue() throws RecognitionException { 959 public final EObject entryRulePredicateDefinition() throws RecognitionException {
709 EObject current = null; 960 EObject current = null;
710 961
711 EObject iv_ruleTruthValue = null; 962 EObject iv_rulePredicateDefinition = null;
712 963
713 964
714 try { 965 try {
715 // InternalSolverLanguage.g:260:51: (iv_ruleTruthValue= ruleTruthValue EOF ) 966 // InternalSolverLanguage.g:344:60: (iv_rulePredicateDefinition= rulePredicateDefinition EOF )
716 // InternalSolverLanguage.g:261:2: iv_ruleTruthValue= ruleTruthValue EOF 967 // InternalSolverLanguage.g:345:2: iv_rulePredicateDefinition= rulePredicateDefinition EOF
717 { 968 {
718 newCompositeNode(grammarAccess.getTruthValueRule()); 969 if ( state.backtracking==0 ) {
970 newCompositeNode(grammarAccess.getPredicateDefinitionRule());
971 }
719 pushFollow(FOLLOW_1); 972 pushFollow(FOLLOW_1);
720 iv_ruleTruthValue=ruleTruthValue(); 973 iv_rulePredicateDefinition=rulePredicateDefinition();
721 974
722 state._fsp--; 975 state._fsp--;
723 976 if (state.failed) return current;
724 current =iv_ruleTruthValue; 977 if ( state.backtracking==0 ) {
725 match(input,EOF,FOLLOW_2); 978 current =iv_rulePredicateDefinition;
979 }
980 match(input,EOF,FOLLOW_2); if (state.failed) return current;
726 981
727 } 982 }
728 983
@@ -736,159 +991,196 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
736 } 991 }
737 return current; 992 return current;
738 } 993 }
739 // $ANTLR end "entryRuleTruthValue" 994 // $ANTLR end "entryRulePredicateDefinition"
740 995
741 996
742 // $ANTLR start "ruleTruthValue" 997 // $ANTLR start "rulePredicateDefinition"
743 // InternalSolverLanguage.g:267:1: ruleTruthValue returns [EObject current=null] : ( ( () otherlv_1= 'true' ) | ( () otherlv_3= 'false' ) | ( () otherlv_5= 'unknown' ) | ( () otherlv_7= 'error' ) ) ; 998 // InternalSolverLanguage.g:351:1: rulePredicateDefinition returns [EObject current=null] : ( ( ( ( (lv_functional_0_0= 'functional' ) ) ( (lv_error_1_0= 'error' ) )? ) | ( ( (lv_error_2_0= 'error' ) ) ( (lv_functional_3_0= 'functional' ) )? ) ) ( (lv_head_4_0= ruleCall ) ) otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) ) ;
744 public final EObject ruleTruthValue() throws RecognitionException { 999 public final EObject rulePredicateDefinition() throws RecognitionException {
745 EObject current = null; 1000 EObject current = null;
746 1001
747 Token otherlv_1=null; 1002 Token lv_functional_0_0=null;
748 Token otherlv_3=null; 1003 Token lv_error_1_0=null;
1004 Token lv_error_2_0=null;
1005 Token lv_functional_3_0=null;
749 Token otherlv_5=null; 1006 Token otherlv_5=null;
750 Token otherlv_7=null; 1007 EObject lv_head_4_0 = null;
1008
1009 EObject lv_body_6_0 = null;
1010
751 1011
752 1012
753 enterRule(); 1013 enterRule();
754 1014
755 try { 1015 try {
756 // InternalSolverLanguage.g:273:2: ( ( ( () otherlv_1= 'true' ) | ( () otherlv_3= 'false' ) | ( () otherlv_5= 'unknown' ) | ( () otherlv_7= 'error' ) ) ) 1016 // InternalSolverLanguage.g:357:2: ( ( ( ( ( (lv_functional_0_0= 'functional' ) ) ( (lv_error_1_0= 'error' ) )? ) | ( ( (lv_error_2_0= 'error' ) ) ( (lv_functional_3_0= 'functional' ) )? ) ) ( (lv_head_4_0= ruleCall ) ) otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) ) )
757 // InternalSolverLanguage.g:274:2: ( ( () otherlv_1= 'true' ) | ( () otherlv_3= 'false' ) | ( () otherlv_5= 'unknown' ) | ( () otherlv_7= 'error' ) ) 1017 // InternalSolverLanguage.g:358:2: ( ( ( ( (lv_functional_0_0= 'functional' ) ) ( (lv_error_1_0= 'error' ) )? ) | ( ( (lv_error_2_0= 'error' ) ) ( (lv_functional_3_0= 'functional' ) )? ) ) ( (lv_head_4_0= ruleCall ) ) otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) )
758 { 1018 {
759 // InternalSolverLanguage.g:274:2: ( ( () otherlv_1= 'true' ) | ( () otherlv_3= 'false' ) | ( () otherlv_5= 'unknown' ) | ( () otherlv_7= 'error' ) ) 1019 // InternalSolverLanguage.g:358:2: ( ( ( ( (lv_functional_0_0= 'functional' ) ) ( (lv_error_1_0= 'error' ) )? ) | ( ( (lv_error_2_0= 'error' ) ) ( (lv_functional_3_0= 'functional' ) )? ) ) ( (lv_head_4_0= ruleCall ) ) otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) ) )
760 int alt6=4; 1020 // InternalSolverLanguage.g:359:3: ( ( ( (lv_functional_0_0= 'functional' ) ) ( (lv_error_1_0= 'error' ) )? ) | ( ( (lv_error_2_0= 'error' ) ) ( (lv_functional_3_0= 'functional' ) )? ) ) ( (lv_head_4_0= ruleCall ) ) otherlv_5= ':-' ( (lv_body_6_0= ruleExpression ) )
761 switch ( input.LA(1) ) { 1021 {
762 case 13: 1022 // InternalSolverLanguage.g:359:3: ( ( ( (lv_functional_0_0= 'functional' ) ) ( (lv_error_1_0= 'error' ) )? ) | ( ( (lv_error_2_0= 'error' ) ) ( (lv_functional_3_0= 'functional' ) )? ) )
763 { 1023 int alt7=2;
764 alt6=1; 1024 int LA7_0 = input.LA(1);
765 } 1025
766 break; 1026 if ( (LA7_0==18) ) {
767 case 14: 1027 alt7=1;
768 { 1028 }
769 alt6=2; 1029 else if ( (LA7_0==19) ) {
770 } 1030 alt7=2;
771 break; 1031 }
772 case 15: 1032 else {
773 { 1033 if (state.backtracking>0) {state.failed=true; return current;}
774 alt6=3;
775 }
776 break;
777 case 16:
778 {
779 alt6=4;
780 }
781 break;
782 default:
783 NoViableAltException nvae = 1034 NoViableAltException nvae =
784 new NoViableAltException("", 6, 0, input); 1035 new NoViableAltException("", 7, 0, input);
785 1036
786 throw nvae; 1037 throw nvae;
787 } 1038 }
788 1039 switch (alt7) {
789 switch (alt6) {
790 case 1 : 1040 case 1 :
791 // InternalSolverLanguage.g:275:3: ( () otherlv_1= 'true' ) 1041 // InternalSolverLanguage.g:360:4: ( ( (lv_functional_0_0= 'functional' ) ) ( (lv_error_1_0= 'error' ) )? )
1042 {
1043 // InternalSolverLanguage.g:360:4: ( ( (lv_functional_0_0= 'functional' ) ) ( (lv_error_1_0= 'error' ) )? )
1044 // InternalSolverLanguage.g:361:5: ( (lv_functional_0_0= 'functional' ) ) ( (lv_error_1_0= 'error' ) )?
792 { 1045 {
793 // InternalSolverLanguage.g:275:3: ( () otherlv_1= 'true' ) 1046 // InternalSolverLanguage.g:361:5: ( (lv_functional_0_0= 'functional' ) )
794 // InternalSolverLanguage.g:276:4: () otherlv_1= 'true' 1047 // InternalSolverLanguage.g:362:6: (lv_functional_0_0= 'functional' )
795 { 1048 {
796 // InternalSolverLanguage.g:276:4: () 1049 // InternalSolverLanguage.g:362:6: (lv_functional_0_0= 'functional' )
797 // InternalSolverLanguage.g:277:5: 1050 // InternalSolverLanguage.g:363:7: lv_functional_0_0= 'functional'
798 { 1051 {
1052 lv_functional_0_0=(Token)match(input,18,FOLLOW_7); if (state.failed) return current;
1053 if ( state.backtracking==0 ) {
799 1054
800 current = forceCreateModelElement( 1055 newLeafNode(lv_functional_0_0, grammarAccess.getPredicateDefinitionAccess().getFunctionalFunctionalKeyword_0_0_0_0());
801 grammarAccess.getTruthValueAccess().getTrueAction_0_0(), 1056
802 current); 1057 }
803 1058 if ( state.backtracking==0 ) {
804 1059
1060 if (current==null) {
1061 current = createModelElement(grammarAccess.getPredicateDefinitionRule());
1062 }
1063 setWithLastConsumed(current, "functional", true, "functional");
1064
805 } 1065 }
806 1066
807 otherlv_1=(Token)match(input,13,FOLLOW_2); 1067 }
808 1068
809 newLeafNode(otherlv_1, grammarAccess.getTruthValueAccess().getTrueKeyword_0_1());
810
811 1069
812 } 1070 }
813 1071
1072 // InternalSolverLanguage.g:375:5: ( (lv_error_1_0= 'error' ) )?
1073 int alt5=2;
1074 int LA5_0 = input.LA(1);
814 1075
1076 if ( (LA5_0==19) ) {
1077 alt5=1;
815 } 1078 }
816 break; 1079 switch (alt5) {
817 case 2 : 1080 case 1 :
818 // InternalSolverLanguage.g:289:3: ( () otherlv_3= 'false' ) 1081 // InternalSolverLanguage.g:376:6: (lv_error_1_0= 'error' )
819 { 1082 {
820 // InternalSolverLanguage.g:289:3: ( () otherlv_3= 'false' ) 1083 // InternalSolverLanguage.g:376:6: (lv_error_1_0= 'error' )
821 // InternalSolverLanguage.g:290:4: () otherlv_3= 'false' 1084 // InternalSolverLanguage.g:377:7: lv_error_1_0= 'error'
822 { 1085 {
823 // InternalSolverLanguage.g:290:4: () 1086 lv_error_1_0=(Token)match(input,19,FOLLOW_7); if (state.failed) return current;
824 // InternalSolverLanguage.g:291:5: 1087 if ( state.backtracking==0 ) {
825 {
826 1088
827 current = forceCreateModelElement( 1089 newLeafNode(lv_error_1_0, grammarAccess.getPredicateDefinitionAccess().getErrorErrorKeyword_0_0_1_0());
828 grammarAccess.getTruthValueAccess().getFalseAction_1_0(), 1090
829 current); 1091 }
830 1092 if ( state.backtracking==0 ) {
831 1093
832 } 1094 if (current==null) {
1095 current = createModelElement(grammarAccess.getPredicateDefinitionRule());
1096 }
1097 setWithLastConsumed(current, "error", true, "error");
1098
1099 }
833 1100
834 otherlv_3=(Token)match(input,14,FOLLOW_2); 1101 }
1102
1103
1104 }
1105 break;
1106
1107 }
835 1108
836 newLeafNode(otherlv_3, grammarAccess.getTruthValueAccess().getFalseKeyword_1_1());
837
838 1109
839 } 1110 }
840 1111
841 1112
842 } 1113 }
843 break; 1114 break;
844 case 3 : 1115 case 2 :
845 // InternalSolverLanguage.g:303:3: ( () otherlv_5= 'unknown' ) 1116 // InternalSolverLanguage.g:391:4: ( ( (lv_error_2_0= 'error' ) ) ( (lv_functional_3_0= 'functional' ) )? )
1117 {
1118 // InternalSolverLanguage.g:391:4: ( ( (lv_error_2_0= 'error' ) ) ( (lv_functional_3_0= 'functional' ) )? )
1119 // InternalSolverLanguage.g:392:5: ( (lv_error_2_0= 'error' ) ) ( (lv_functional_3_0= 'functional' ) )?
846 { 1120 {
847 // InternalSolverLanguage.g:303:3: ( () otherlv_5= 'unknown' ) 1121 // InternalSolverLanguage.g:392:5: ( (lv_error_2_0= 'error' ) )
848 // InternalSolverLanguage.g:304:4: () otherlv_5= 'unknown' 1122 // InternalSolverLanguage.g:393:6: (lv_error_2_0= 'error' )
849 { 1123 {
850 // InternalSolverLanguage.g:304:4: () 1124 // InternalSolverLanguage.g:393:6: (lv_error_2_0= 'error' )
851 // InternalSolverLanguage.g:305:5: 1125 // InternalSolverLanguage.g:394:7: lv_error_2_0= 'error'
852 { 1126 {
1127 lv_error_2_0=(Token)match(input,19,FOLLOW_8); if (state.failed) return current;
1128 if ( state.backtracking==0 ) {
853 1129
854 current = forceCreateModelElement( 1130 newLeafNode(lv_error_2_0, grammarAccess.getPredicateDefinitionAccess().getErrorErrorKeyword_0_1_0_0());
855 grammarAccess.getTruthValueAccess().getUnknownAction_2_0(), 1131
856 current); 1132 }
857 1133 if ( state.backtracking==0 ) {
858 1134
1135 if (current==null) {
1136 current = createModelElement(grammarAccess.getPredicateDefinitionRule());
1137 }
1138 setWithLastConsumed(current, "error", true, "error");
1139
859 } 1140 }
860 1141
861 otherlv_5=(Token)match(input,15,FOLLOW_2); 1142 }
862 1143
863 newLeafNode(otherlv_5, grammarAccess.getTruthValueAccess().getUnknownKeyword_2_1());
864
865 1144
866 } 1145 }
867 1146
1147 // InternalSolverLanguage.g:406:5: ( (lv_functional_3_0= 'functional' ) )?
1148 int alt6=2;
1149 int LA6_0 = input.LA(1);
868 1150
1151 if ( (LA6_0==18) ) {
1152 alt6=1;
869 } 1153 }
870 break; 1154 switch (alt6) {
871 case 4 : 1155 case 1 :
872 // InternalSolverLanguage.g:317:3: ( () otherlv_7= 'error' ) 1156 // InternalSolverLanguage.g:407:6: (lv_functional_3_0= 'functional' )
873 { 1157 {
874 // InternalSolverLanguage.g:317:3: ( () otherlv_7= 'error' ) 1158 // InternalSolverLanguage.g:407:6: (lv_functional_3_0= 'functional' )
875 // InternalSolverLanguage.g:318:4: () otherlv_7= 'error' 1159 // InternalSolverLanguage.g:408:7: lv_functional_3_0= 'functional'
876 { 1160 {
877 // InternalSolverLanguage.g:318:4: () 1161 lv_functional_3_0=(Token)match(input,18,FOLLOW_7); if (state.failed) return current;
878 // InternalSolverLanguage.g:319:5: 1162 if ( state.backtracking==0 ) {
879 {
880 1163
881 current = forceCreateModelElement( 1164 newLeafNode(lv_functional_3_0, grammarAccess.getPredicateDefinitionAccess().getFunctionalFunctionalKeyword_0_1_1_0());
882 grammarAccess.getTruthValueAccess().getErrorAction_3_0(), 1165
883 current); 1166 }
884 1167 if ( state.backtracking==0 ) {
885 1168
886 } 1169 if (current==null) {
1170 current = createModelElement(grammarAccess.getPredicateDefinitionRule());
1171 }
1172 setWithLastConsumed(current, "functional", true, "functional");
1173
1174 }
1175
1176 }
887 1177
888 otherlv_7=(Token)match(input,16,FOLLOW_2);
889 1178
890 newLeafNode(otherlv_7, grammarAccess.getTruthValueAccess().getErrorKeyword_3_1()); 1179 }
891 1180 break;
1181
1182 }
1183
892 1184
893 } 1185 }
894 1186
@@ -898,12 +1190,93 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
898 1190
899 } 1191 }
900 1192
1193 // InternalSolverLanguage.g:422:3: ( (lv_head_4_0= ruleCall ) )
1194 // InternalSolverLanguage.g:423:4: (lv_head_4_0= ruleCall )
1195 {
1196 // InternalSolverLanguage.g:423:4: (lv_head_4_0= ruleCall )
1197 // InternalSolverLanguage.g:424:5: lv_head_4_0= ruleCall
1198 {
1199 if ( state.backtracking==0 ) {
1200
1201 newCompositeNode(grammarAccess.getPredicateDefinitionAccess().getHeadCallParserRuleCall_1_0());
1202
1203 }
1204 pushFollow(FOLLOW_9);
1205 lv_head_4_0=ruleCall();
1206
1207 state._fsp--;
1208 if (state.failed) return current;
1209 if ( state.backtracking==0 ) {
1210
1211 if (current==null) {
1212 current = createModelElementForParent(grammarAccess.getPredicateDefinitionRule());
1213 }
1214 set(
1215 current,
1216 "head",
1217 lv_head_4_0,
1218 "org.eclipse.viatra.solver.language.SolverLanguage.Call");
1219 afterParserOrEnumRuleCall();
1220
1221 }
1222
1223 }
1224
1225
1226 }
1227
1228 otherlv_5=(Token)match(input,16,FOLLOW_6); if (state.failed) return current;
1229 if ( state.backtracking==0 ) {
1230
1231 newLeafNode(otherlv_5, grammarAccess.getPredicateDefinitionAccess().getColonHyphenMinusKeyword_2());
1232
1233 }
1234 // InternalSolverLanguage.g:445:3: ( (lv_body_6_0= ruleExpression ) )
1235 // InternalSolverLanguage.g:446:4: (lv_body_6_0= ruleExpression )
1236 {
1237 // InternalSolverLanguage.g:446:4: (lv_body_6_0= ruleExpression )
1238 // InternalSolverLanguage.g:447:5: lv_body_6_0= ruleExpression
1239 {
1240 if ( state.backtracking==0 ) {
1241
1242 newCompositeNode(grammarAccess.getPredicateDefinitionAccess().getBodyExpressionParserRuleCall_3_0());
1243
1244 }
1245 pushFollow(FOLLOW_2);
1246 lv_body_6_0=ruleExpression();
1247
1248 state._fsp--;
1249 if (state.failed) return current;
1250 if ( state.backtracking==0 ) {
1251
1252 if (current==null) {
1253 current = createModelElementForParent(grammarAccess.getPredicateDefinitionRule());
1254 }
1255 set(
1256 current,
1257 "body",
1258 lv_body_6_0,
1259 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1260 afterParserOrEnumRuleCall();
1261
1262 }
1263
1264 }
1265
1266
1267 }
1268
901 1269
902 } 1270 }
903 1271
904 1272
905 leaveRule(); 1273 }
1274
1275 if ( state.backtracking==0 ) {
906 1276
1277 leaveRule();
1278
1279 }
907 } 1280 }
908 1281
909 catch (RecognitionException re) { 1282 catch (RecognitionException re) {
@@ -914,29 +1287,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
914 } 1287 }
915 return current; 1288 return current;
916 } 1289 }
917 // $ANTLR end "ruleTruthValue" 1290 // $ANTLR end "rulePredicateDefinition"
918 1291
919 1292
920 // $ANTLR start "entryRuleInterpretation" 1293 // $ANTLR start "entryRuleUnnamedErrorPrediateDefinition"
921 // InternalSolverLanguage.g:334:1: entryRuleInterpretation returns [EObject current=null] : iv_ruleInterpretation= ruleInterpretation EOF ; 1294 // InternalSolverLanguage.g:468:1: entryRuleUnnamedErrorPrediateDefinition returns [EObject current=null] : iv_ruleUnnamedErrorPrediateDefinition= ruleUnnamedErrorPrediateDefinition EOF ;
922 public final EObject entryRuleInterpretation() throws RecognitionException { 1295 public final EObject entryRuleUnnamedErrorPrediateDefinition() throws RecognitionException {
923 EObject current = null; 1296 EObject current = null;
924 1297
925 EObject iv_ruleInterpretation = null; 1298 EObject iv_ruleUnnamedErrorPrediateDefinition = null;
926 1299
927 1300
928 try { 1301 try {
929 // InternalSolverLanguage.g:334:55: (iv_ruleInterpretation= ruleInterpretation EOF ) 1302 // InternalSolverLanguage.g:468:71: (iv_ruleUnnamedErrorPrediateDefinition= ruleUnnamedErrorPrediateDefinition EOF )
930 // InternalSolverLanguage.g:335:2: iv_ruleInterpretation= ruleInterpretation EOF 1303 // InternalSolverLanguage.g:469:2: iv_ruleUnnamedErrorPrediateDefinition= ruleUnnamedErrorPrediateDefinition EOF
931 { 1304 {
932 newCompositeNode(grammarAccess.getInterpretationRule()); 1305 if ( state.backtracking==0 ) {
1306 newCompositeNode(grammarAccess.getUnnamedErrorPrediateDefinitionRule());
1307 }
933 pushFollow(FOLLOW_1); 1308 pushFollow(FOLLOW_1);
934 iv_ruleInterpretation=ruleInterpretation(); 1309 iv_ruleUnnamedErrorPrediateDefinition=ruleUnnamedErrorPrediateDefinition();
935 1310
936 state._fsp--; 1311 state._fsp--;
937 1312 if (state.failed) return current;
938 current =iv_ruleInterpretation; 1313 if ( state.backtracking==0 ) {
939 match(input,EOF,FOLLOW_2); 1314 current =iv_ruleUnnamedErrorPrediateDefinition;
1315 }
1316 match(input,EOF,FOLLOW_2); if (state.failed) return current;
940 1317
941 } 1318 }
942 1319
@@ -950,127 +1327,124 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
950 } 1327 }
951 return current; 1328 return current;
952 } 1329 }
953 // $ANTLR end "entryRuleInterpretation" 1330 // $ANTLR end "entryRuleUnnamedErrorPrediateDefinition"
954 1331
955 1332
956 // $ANTLR start "ruleInterpretation" 1333 // $ANTLR start "ruleUnnamedErrorPrediateDefinition"
957 // InternalSolverLanguage.g:341:1: ruleInterpretation returns [EObject current=null] : (this_BasicInterpretation_0= ruleBasicInterpretation | this_DefaultInterpretation_1= ruleDefaultInterpretation | this_CDInterpretation_2= ruleCDInterpretation ) ; 1334 // InternalSolverLanguage.g:475:1: ruleUnnamedErrorPrediateDefinition returns [EObject current=null] : (otherlv_0= 'error' ( (lv_argumentList_1_0= ruleArgumentList ) ) otherlv_2= ':-' ( (lv_body_3_0= ruleExpression ) ) ) ;
958 public final EObject ruleInterpretation() throws RecognitionException { 1335 public final EObject ruleUnnamedErrorPrediateDefinition() throws RecognitionException {
959 EObject current = null; 1336 EObject current = null;
960 1337
961 EObject this_BasicInterpretation_0 = null; 1338 Token otherlv_0=null;
962 1339 Token otherlv_2=null;
963 EObject this_DefaultInterpretation_1 = null; 1340 EObject lv_argumentList_1_0 = null;
964 1341
965 EObject this_CDInterpretation_2 = null; 1342 EObject lv_body_3_0 = null;
966 1343
967 1344
968 1345
969 enterRule(); 1346 enterRule();
970 1347
971 try { 1348 try {
972 // InternalSolverLanguage.g:347:2: ( (this_BasicInterpretation_0= ruleBasicInterpretation | this_DefaultInterpretation_1= ruleDefaultInterpretation | this_CDInterpretation_2= ruleCDInterpretation ) ) 1349 // InternalSolverLanguage.g:481:2: ( (otherlv_0= 'error' ( (lv_argumentList_1_0= ruleArgumentList ) ) otherlv_2= ':-' ( (lv_body_3_0= ruleExpression ) ) ) )
973 // InternalSolverLanguage.g:348:2: (this_BasicInterpretation_0= ruleBasicInterpretation | this_DefaultInterpretation_1= ruleDefaultInterpretation | this_CDInterpretation_2= ruleCDInterpretation ) 1350 // InternalSolverLanguage.g:482:2: (otherlv_0= 'error' ( (lv_argumentList_1_0= ruleArgumentList ) ) otherlv_2= ':-' ( (lv_body_3_0= ruleExpression ) ) )
974 { 1351 {
975 // InternalSolverLanguage.g:348:2: (this_BasicInterpretation_0= ruleBasicInterpretation | this_DefaultInterpretation_1= ruleDefaultInterpretation | this_CDInterpretation_2= ruleCDInterpretation ) 1352 // InternalSolverLanguage.g:482:2: (otherlv_0= 'error' ( (lv_argumentList_1_0= ruleArgumentList ) ) otherlv_2= ':-' ( (lv_body_3_0= ruleExpression ) ) )
976 int alt7=3; 1353 // InternalSolverLanguage.g:483:3: otherlv_0= 'error' ( (lv_argumentList_1_0= ruleArgumentList ) ) otherlv_2= ':-' ( (lv_body_3_0= ruleExpression ) )
977 switch ( input.LA(1) ) { 1354 {
978 case RULE_ID: 1355 otherlv_0=(Token)match(input,19,FOLLOW_10); if (state.failed) return current;
979 case 21: 1356 if ( state.backtracking==0 ) {
980 case 22:
981 case 23:
982 case 24:
983 case 25:
984 case 26:
985 {
986 alt7=1;
987 }
988 break;
989 case 32:
990 {
991 alt7=2;
992 }
993 break;
994 case 33:
995 case 34:
996 case 38:
997 case 39:
998 case 40:
999 {
1000 alt7=3;
1001 }
1002 break;
1003 default:
1004 NoViableAltException nvae =
1005 new NoViableAltException("", 7, 0, input);
1006 1357
1007 throw nvae; 1358 newLeafNode(otherlv_0, grammarAccess.getUnnamedErrorPrediateDefinitionAccess().getErrorKeyword_0());
1359
1008 } 1360 }
1361 // InternalSolverLanguage.g:487:3: ( (lv_argumentList_1_0= ruleArgumentList ) )
1362 // InternalSolverLanguage.g:488:4: (lv_argumentList_1_0= ruleArgumentList )
1363 {
1364 // InternalSolverLanguage.g:488:4: (lv_argumentList_1_0= ruleArgumentList )
1365 // InternalSolverLanguage.g:489:5: lv_argumentList_1_0= ruleArgumentList
1366 {
1367 if ( state.backtracking==0 ) {
1009 1368
1010 switch (alt7) { 1369 newCompositeNode(grammarAccess.getUnnamedErrorPrediateDefinitionAccess().getArgumentListArgumentListParserRuleCall_1_0());
1011 case 1 : 1370
1012 // InternalSolverLanguage.g:349:3: this_BasicInterpretation_0= ruleBasicInterpretation 1371 }
1013 { 1372 pushFollow(FOLLOW_9);
1014 1373 lv_argumentList_1_0=ruleArgumentList();
1015 newCompositeNode(grammarAccess.getInterpretationAccess().getBasicInterpretationParserRuleCall_0());
1016
1017 pushFollow(FOLLOW_2);
1018 this_BasicInterpretation_0=ruleBasicInterpretation();
1019 1374
1020 state._fsp--; 1375 state._fsp--;
1376 if (state.failed) return current;
1377 if ( state.backtracking==0 ) {
1021 1378
1379 if (current==null) {
1380 current = createModelElementForParent(grammarAccess.getUnnamedErrorPrediateDefinitionRule());
1381 }
1382 set(
1383 current,
1384 "argumentList",
1385 lv_argumentList_1_0,
1386 "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList");
1387 afterParserOrEnumRuleCall();
1388
1389 }
1022 1390
1023 current = this_BasicInterpretation_0; 1391 }
1024 afterParserOrEnumRuleCall();
1025
1026 1392
1027 }
1028 break;
1029 case 2 :
1030 // InternalSolverLanguage.g:358:3: this_DefaultInterpretation_1= ruleDefaultInterpretation
1031 {
1032 1393
1033 newCompositeNode(grammarAccess.getInterpretationAccess().getDefaultInterpretationParserRuleCall_1()); 1394 }
1034
1035 pushFollow(FOLLOW_2);
1036 this_DefaultInterpretation_1=ruleDefaultInterpretation();
1037 1395
1038 state._fsp--; 1396 otherlv_2=(Token)match(input,16,FOLLOW_6); if (state.failed) return current;
1397 if ( state.backtracking==0 ) {
1039 1398
1399 newLeafNode(otherlv_2, grammarAccess.getUnnamedErrorPrediateDefinitionAccess().getColonHyphenMinusKeyword_2());
1400
1401 }
1402 // InternalSolverLanguage.g:510:3: ( (lv_body_3_0= ruleExpression ) )
1403 // InternalSolverLanguage.g:511:4: (lv_body_3_0= ruleExpression )
1404 {
1405 // InternalSolverLanguage.g:511:4: (lv_body_3_0= ruleExpression )
1406 // InternalSolverLanguage.g:512:5: lv_body_3_0= ruleExpression
1407 {
1408 if ( state.backtracking==0 ) {
1040 1409
1041 current = this_DefaultInterpretation_1; 1410 newCompositeNode(grammarAccess.getUnnamedErrorPrediateDefinitionAccess().getBodyExpressionParserRuleCall_3_0());
1042 afterParserOrEnumRuleCall(); 1411
1043 1412 }
1413 pushFollow(FOLLOW_2);
1414 lv_body_3_0=ruleExpression();
1044 1415
1045 } 1416 state._fsp--;
1046 break; 1417 if (state.failed) return current;
1047 case 3 : 1418 if ( state.backtracking==0 ) {
1048 // InternalSolverLanguage.g:367:3: this_CDInterpretation_2= ruleCDInterpretation
1049 {
1050 1419
1051 newCompositeNode(grammarAccess.getInterpretationAccess().getCDInterpretationParserRuleCall_2()); 1420 if (current==null) {
1052 1421 current = createModelElementForParent(grammarAccess.getUnnamedErrorPrediateDefinitionRule());
1053 pushFollow(FOLLOW_2); 1422 }
1054 this_CDInterpretation_2=ruleCDInterpretation(); 1423 set(
1424 current,
1425 "body",
1426 lv_body_3_0,
1427 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1428 afterParserOrEnumRuleCall();
1429
1430 }
1055 1431
1056 state._fsp--; 1432 }
1057 1433
1058 1434
1059 current = this_CDInterpretation_2; 1435 }
1060 afterParserOrEnumRuleCall();
1061
1062 1436
1063 }
1064 break;
1065 1437
1066 } 1438 }
1067 1439
1068 1440
1069 } 1441 }
1070 1442
1443 if ( state.backtracking==0 ) {
1071 1444
1072 leaveRule(); 1445 leaveRule();
1073 1446
1447 }
1074 } 1448 }
1075 1449
1076 catch (RecognitionException re) { 1450 catch (RecognitionException re) {
@@ -1081,29 +1455,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1081 } 1455 }
1082 return current; 1456 return current;
1083 } 1457 }
1084 // $ANTLR end "ruleInterpretation" 1458 // $ANTLR end "ruleUnnamedErrorPrediateDefinition"
1085 1459
1086 1460
1087 // $ANTLR start "entryRuleBasicInterpretation" 1461 // $ANTLR start "entryRuleDefaultDefinition"
1088 // InternalSolverLanguage.g:379:1: entryRuleBasicInterpretation returns [EObject current=null] : iv_ruleBasicInterpretation= ruleBasicInterpretation EOF ; 1462 // InternalSolverLanguage.g:533:1: entryRuleDefaultDefinition returns [EObject current=null] : iv_ruleDefaultDefinition= ruleDefaultDefinition EOF ;
1089 public final EObject entryRuleBasicInterpretation() throws RecognitionException { 1463 public final EObject entryRuleDefaultDefinition() throws RecognitionException {
1090 EObject current = null; 1464 EObject current = null;
1091 1465
1092 EObject iv_ruleBasicInterpretation = null; 1466 EObject iv_ruleDefaultDefinition = null;
1093 1467
1094 1468
1095 try { 1469 try {
1096 // InternalSolverLanguage.g:379:60: (iv_ruleBasicInterpretation= ruleBasicInterpretation EOF ) 1470 // InternalSolverLanguage.g:533:58: (iv_ruleDefaultDefinition= ruleDefaultDefinition EOF )
1097 // InternalSolverLanguage.g:380:2: iv_ruleBasicInterpretation= ruleBasicInterpretation EOF 1471 // InternalSolverLanguage.g:534:2: iv_ruleDefaultDefinition= ruleDefaultDefinition EOF
1098 { 1472 {
1099 newCompositeNode(grammarAccess.getBasicInterpretationRule()); 1473 if ( state.backtracking==0 ) {
1474 newCompositeNode(grammarAccess.getDefaultDefinitionRule());
1475 }
1100 pushFollow(FOLLOW_1); 1476 pushFollow(FOLLOW_1);
1101 iv_ruleBasicInterpretation=ruleBasicInterpretation(); 1477 iv_ruleDefaultDefinition=ruleDefaultDefinition();
1102 1478
1103 state._fsp--; 1479 state._fsp--;
1104 1480 if (state.failed) return current;
1105 current =iv_ruleBasicInterpretation; 1481 if ( state.backtracking==0 ) {
1106 match(input,EOF,FOLLOW_2); 1482 current =iv_ruleDefaultDefinition;
1483 }
1484 match(input,EOF,FOLLOW_2); if (state.failed) return current;
1107 1485
1108 } 1486 }
1109 1487
@@ -1117,244 +1495,255 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1117 } 1495 }
1118 return current; 1496 return current;
1119 } 1497 }
1120 // $ANTLR end "entryRuleBasicInterpretation" 1498 // $ANTLR end "entryRuleDefaultDefinition"
1121 1499
1122 1500
1123 // $ANTLR start "ruleBasicInterpretation" 1501 // $ANTLR start "ruleDefaultDefinition"
1124 // InternalSolverLanguage.g:386:1: ruleBasicInterpretation returns [EObject current=null] : ( ( (lv_symbol_0_0= ruleSymbol ) ) (otherlv_1= '(' ( ( (lv_objects_2_0= ruleComplexObject ) ) (otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) ) )* )? otherlv_5= ')' )? otherlv_6= ':' ( (lv_value_7_0= ruleTruthValue ) ) ) ; 1502 // InternalSolverLanguage.g:540:1: ruleDefaultDefinition returns [EObject current=null] : (otherlv_0= 'default' ( (lv_head_1_0= ruleCall ) ) otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) ) ;
1125 public final EObject ruleBasicInterpretation() throws RecognitionException { 1503 public final EObject ruleDefaultDefinition() throws RecognitionException {
1126 EObject current = null; 1504 EObject current = null;
1127 1505
1128 Token otherlv_1=null; 1506 Token otherlv_0=null;
1129 Token otherlv_3=null; 1507 Token otherlv_2=null;
1130 Token otherlv_5=null; 1508 EObject lv_head_1_0 = null;
1131 Token otherlv_6=null;
1132 EObject lv_symbol_0_0 = null;
1133
1134 EObject lv_objects_2_0 = null;
1135
1136 EObject lv_objects_4_0 = null;
1137 1509
1138 EObject lv_value_7_0 = null; 1510 EObject lv_range_3_0 = null;
1139 1511
1140 1512
1141 1513
1142 enterRule(); 1514 enterRule();
1143 1515
1144 try { 1516 try {
1145 // InternalSolverLanguage.g:392:2: ( ( ( (lv_symbol_0_0= ruleSymbol ) ) (otherlv_1= '(' ( ( (lv_objects_2_0= ruleComplexObject ) ) (otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) ) )* )? otherlv_5= ')' )? otherlv_6= ':' ( (lv_value_7_0= ruleTruthValue ) ) ) ) 1517 // InternalSolverLanguage.g:546:2: ( (otherlv_0= 'default' ( (lv_head_1_0= ruleCall ) ) otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) ) )
1146 // InternalSolverLanguage.g:393:2: ( ( (lv_symbol_0_0= ruleSymbol ) ) (otherlv_1= '(' ( ( (lv_objects_2_0= ruleComplexObject ) ) (otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) ) )* )? otherlv_5= ')' )? otherlv_6= ':' ( (lv_value_7_0= ruleTruthValue ) ) ) 1518 // InternalSolverLanguage.g:547:2: (otherlv_0= 'default' ( (lv_head_1_0= ruleCall ) ) otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )
1147 { 1519 {
1148 // InternalSolverLanguage.g:393:2: ( ( (lv_symbol_0_0= ruleSymbol ) ) (otherlv_1= '(' ( ( (lv_objects_2_0= ruleComplexObject ) ) (otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) ) )* )? otherlv_5= ')' )? otherlv_6= ':' ( (lv_value_7_0= ruleTruthValue ) ) ) 1520 // InternalSolverLanguage.g:547:2: (otherlv_0= 'default' ( (lv_head_1_0= ruleCall ) ) otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) ) )
1149 // InternalSolverLanguage.g:394:3: ( (lv_symbol_0_0= ruleSymbol ) ) (otherlv_1= '(' ( ( (lv_objects_2_0= ruleComplexObject ) ) (otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) ) )* )? otherlv_5= ')' )? otherlv_6= ':' ( (lv_value_7_0= ruleTruthValue ) ) 1521 // InternalSolverLanguage.g:548:3: otherlv_0= 'default' ( (lv_head_1_0= ruleCall ) ) otherlv_2= ':' ( (lv_range_3_0= ruleExpression ) )
1150 { 1522 {
1151 // InternalSolverLanguage.g:394:3: ( (lv_symbol_0_0= ruleSymbol ) ) 1523 otherlv_0=(Token)match(input,20,FOLLOW_7); if (state.failed) return current;
1152 // InternalSolverLanguage.g:395:4: (lv_symbol_0_0= ruleSymbol ) 1524 if ( state.backtracking==0 ) {
1525
1526 newLeafNode(otherlv_0, grammarAccess.getDefaultDefinitionAccess().getDefaultKeyword_0());
1527
1528 }
1529 // InternalSolverLanguage.g:552:3: ( (lv_head_1_0= ruleCall ) )
1530 // InternalSolverLanguage.g:553:4: (lv_head_1_0= ruleCall )
1153 { 1531 {
1154 // InternalSolverLanguage.g:395:4: (lv_symbol_0_0= ruleSymbol ) 1532 // InternalSolverLanguage.g:553:4: (lv_head_1_0= ruleCall )
1155 // InternalSolverLanguage.g:396:5: lv_symbol_0_0= ruleSymbol 1533 // InternalSolverLanguage.g:554:5: lv_head_1_0= ruleCall
1156 { 1534 {
1535 if ( state.backtracking==0 ) {
1157 1536
1158 newCompositeNode(grammarAccess.getBasicInterpretationAccess().getSymbolSymbolParserRuleCall_0_0()); 1537 newCompositeNode(grammarAccess.getDefaultDefinitionAccess().getHeadCallParserRuleCall_1_0());
1159 1538
1160 pushFollow(FOLLOW_6); 1539 }
1161 lv_symbol_0_0=ruleSymbol(); 1540 pushFollow(FOLLOW_11);
1541 lv_head_1_0=ruleCall();
1162 1542
1163 state._fsp--; 1543 state._fsp--;
1544 if (state.failed) return current;
1545 if ( state.backtracking==0 ) {
1164 1546
1165 1547 if (current==null) {
1166 if (current==null) { 1548 current = createModelElementForParent(grammarAccess.getDefaultDefinitionRule());
1167 current = createModelElementForParent(grammarAccess.getBasicInterpretationRule()); 1549 }
1168 } 1550 set(
1169 set( 1551 current,
1170 current, 1552 "head",
1171 "symbol", 1553 lv_head_1_0,
1172 lv_symbol_0_0, 1554 "org.eclipse.viatra.solver.language.SolverLanguage.Call");
1173 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol"); 1555 afterParserOrEnumRuleCall();
1174 afterParserOrEnumRuleCall(); 1556
1175 1557 }
1176 1558
1177 } 1559 }
1178 1560
1179 1561
1180 } 1562 }
1181 1563
1182 // InternalSolverLanguage.g:413:3: (otherlv_1= '(' ( ( (lv_objects_2_0= ruleComplexObject ) ) (otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) ) )* )? otherlv_5= ')' )? 1564 otherlv_2=(Token)match(input,15,FOLLOW_6); if (state.failed) return current;
1183 int alt10=2; 1565 if ( state.backtracking==0 ) {
1184 int LA10_0 = input.LA(1);
1185 1566
1186 if ( (LA10_0==17) ) { 1567 newLeafNode(otherlv_2, grammarAccess.getDefaultDefinitionAccess().getColonKeyword_2());
1187 alt10=1; 1568
1188 } 1569 }
1189 switch (alt10) { 1570 // InternalSolverLanguage.g:575:3: ( (lv_range_3_0= ruleExpression ) )
1190 case 1 : 1571 // InternalSolverLanguage.g:576:4: (lv_range_3_0= ruleExpression )
1191 // InternalSolverLanguage.g:414:4: otherlv_1= '(' ( ( (lv_objects_2_0= ruleComplexObject ) ) (otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) ) )* )? otherlv_5= ')' 1572 {
1192 { 1573 // InternalSolverLanguage.g:576:4: (lv_range_3_0= ruleExpression )
1193 otherlv_1=(Token)match(input,17,FOLLOW_7); 1574 // InternalSolverLanguage.g:577:5: lv_range_3_0= ruleExpression
1575 {
1576 if ( state.backtracking==0 ) {
1194 1577
1195 newLeafNode(otherlv_1, grammarAccess.getBasicInterpretationAccess().getLeftParenthesisKeyword_1_0()); 1578 newCompositeNode(grammarAccess.getDefaultDefinitionAccess().getRangeExpressionParserRuleCall_3_0());
1196 1579
1197 // InternalSolverLanguage.g:418:4: ( ( (lv_objects_2_0= ruleComplexObject ) ) (otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) ) )* )? 1580 }
1198 int alt9=2; 1581 pushFollow(FOLLOW_2);
1199 int LA9_0 = input.LA(1); 1582 lv_range_3_0=ruleExpression();
1200 1583
1201 if ( ((LA9_0>=RULE_INT && LA9_0<=RULE_STRING)||LA9_0==11||(LA9_0>=13 && LA9_0<=14)||LA9_0==20||LA9_0==27||LA9_0==31) ) { 1584 state._fsp--;
1202 alt9=1; 1585 if (state.failed) return current;
1203 } 1586 if ( state.backtracking==0 ) {
1204 switch (alt9) {
1205 case 1 :
1206 // InternalSolverLanguage.g:419:5: ( (lv_objects_2_0= ruleComplexObject ) ) (otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) ) )*
1207 {
1208 // InternalSolverLanguage.g:419:5: ( (lv_objects_2_0= ruleComplexObject ) )
1209 // InternalSolverLanguage.g:420:6: (lv_objects_2_0= ruleComplexObject )
1210 {
1211 // InternalSolverLanguage.g:420:6: (lv_objects_2_0= ruleComplexObject )
1212 // InternalSolverLanguage.g:421:7: lv_objects_2_0= ruleComplexObject
1213 {
1214 1587
1215 newCompositeNode(grammarAccess.getBasicInterpretationAccess().getObjectsComplexObjectParserRuleCall_1_1_0_0()); 1588 if (current==null) {
1216 1589 current = createModelElementForParent(grammarAccess.getDefaultDefinitionRule());
1217 pushFollow(FOLLOW_8); 1590 }
1218 lv_objects_2_0=ruleComplexObject(); 1591 set(
1592 current,
1593 "range",
1594 lv_range_3_0,
1595 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1596 afterParserOrEnumRuleCall();
1597
1598 }
1219 1599
1220 state._fsp--; 1600 }
1221 1601
1222 1602
1223 if (current==null) { 1603 }
1224 current = createModelElementForParent(grammarAccess.getBasicInterpretationRule());
1225 }
1226 add(
1227 current,
1228 "objects",
1229 lv_objects_2_0,
1230 "org.eclipse.viatra.solver.language.SolverLanguage.ComplexObject");
1231 afterParserOrEnumRuleCall();
1232
1233 1604
1234 }
1235 1605
1606 }
1236 1607
1237 }
1238 1608
1239 // InternalSolverLanguage.g:438:5: (otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) ) )* 1609 }
1240 loop8:
1241 do {
1242 int alt8=2;
1243 int LA8_0 = input.LA(1);
1244 1610
1245 if ( (LA8_0==18) ) { 1611 if ( state.backtracking==0 ) {
1246 alt8=1;
1247 }
1248 1612
1613 leaveRule();
1249 1614
1250 switch (alt8) { 1615 }
1251 case 1 : 1616 }
1252 // InternalSolverLanguage.g:439:6: otherlv_3= ',' ( (lv_objects_4_0= ruleComplexObject ) )
1253 {
1254 otherlv_3=(Token)match(input,18,FOLLOW_9);
1255 1617
1256 newLeafNode(otherlv_3, grammarAccess.getBasicInterpretationAccess().getCommaKeyword_1_1_1_0()); 1618 catch (RecognitionException re) {
1257 1619 recover(input,re);
1258 // InternalSolverLanguage.g:443:6: ( (lv_objects_4_0= ruleComplexObject ) ) 1620 appendSkippedTokens();
1259 // InternalSolverLanguage.g:444:7: (lv_objects_4_0= ruleComplexObject ) 1621 }
1260 { 1622 finally {
1261 // InternalSolverLanguage.g:444:7: (lv_objects_4_0= ruleComplexObject ) 1623 }
1262 // InternalSolverLanguage.g:445:8: lv_objects_4_0= ruleComplexObject 1624 return current;
1263 { 1625 }
1626 // $ANTLR end "ruleDefaultDefinition"
1264 1627
1265 newCompositeNode(grammarAccess.getBasicInterpretationAccess().getObjectsComplexObjectParserRuleCall_1_1_1_1_0());
1266
1267 pushFollow(FOLLOW_8);
1268 lv_objects_4_0=ruleComplexObject();
1269 1628
1270 state._fsp--; 1629 // $ANTLR start "entryRuleExternPredicateDefinition"
1630 // InternalSolverLanguage.g:598:1: entryRuleExternPredicateDefinition returns [EObject current=null] : iv_ruleExternPredicateDefinition= ruleExternPredicateDefinition EOF ;
1631 public final EObject entryRuleExternPredicateDefinition() throws RecognitionException {
1632 EObject current = null;
1271 1633
1634 EObject iv_ruleExternPredicateDefinition = null;
1272 1635
1273 if (current==null) {
1274 current = createModelElementForParent(grammarAccess.getBasicInterpretationRule());
1275 }
1276 add(
1277 current,
1278 "objects",
1279 lv_objects_4_0,
1280 "org.eclipse.viatra.solver.language.SolverLanguage.ComplexObject");
1281 afterParserOrEnumRuleCall();
1282
1283 1636
1284 } 1637 try {
1638 // InternalSolverLanguage.g:598:66: (iv_ruleExternPredicateDefinition= ruleExternPredicateDefinition EOF )
1639 // InternalSolverLanguage.g:599:2: iv_ruleExternPredicateDefinition= ruleExternPredicateDefinition EOF
1640 {
1641 if ( state.backtracking==0 ) {
1642 newCompositeNode(grammarAccess.getExternPredicateDefinitionRule());
1643 }
1644 pushFollow(FOLLOW_1);
1645 iv_ruleExternPredicateDefinition=ruleExternPredicateDefinition();
1285 1646
1647 state._fsp--;
1648 if (state.failed) return current;
1649 if ( state.backtracking==0 ) {
1650 current =iv_ruleExternPredicateDefinition;
1651 }
1652 match(input,EOF,FOLLOW_2); if (state.failed) return current;
1286 1653
1287 } 1654 }
1288 1655
1656 }
1289 1657
1290 } 1658 catch (RecognitionException re) {
1291 break; 1659 recover(input,re);
1660 appendSkippedTokens();
1661 }
1662 finally {
1663 }
1664 return current;
1665 }
1666 // $ANTLR end "entryRuleExternPredicateDefinition"
1292 1667
1293 default :
1294 break loop8;
1295 }
1296 } while (true);
1297 1668
1669 // $ANTLR start "ruleExternPredicateDefinition"
1670 // InternalSolverLanguage.g:605:1: ruleExternPredicateDefinition returns [EObject current=null] : (otherlv_0= 'extern' ( (lv_head_1_0= ruleCall ) ) otherlv_2= '.' ) ;
1671 public final EObject ruleExternPredicateDefinition() throws RecognitionException {
1672 EObject current = null;
1298 1673
1299 } 1674 Token otherlv_0=null;
1300 break; 1675 Token otherlv_2=null;
1676 EObject lv_head_1_0 = null;
1301 1677
1302 }
1303 1678
1304 otherlv_5=(Token)match(input,19,FOLLOW_10);
1305 1679
1306 newLeafNode(otherlv_5, grammarAccess.getBasicInterpretationAccess().getRightParenthesisKeyword_1_2()); 1680 enterRule();
1307
1308 1681
1309 } 1682 try {
1310 break; 1683 // InternalSolverLanguage.g:611:2: ( (otherlv_0= 'extern' ( (lv_head_1_0= ruleCall ) ) otherlv_2= '.' ) )
1684 // InternalSolverLanguage.g:612:2: (otherlv_0= 'extern' ( (lv_head_1_0= ruleCall ) ) otherlv_2= '.' )
1685 {
1686 // InternalSolverLanguage.g:612:2: (otherlv_0= 'extern' ( (lv_head_1_0= ruleCall ) ) otherlv_2= '.' )
1687 // InternalSolverLanguage.g:613:3: otherlv_0= 'extern' ( (lv_head_1_0= ruleCall ) ) otherlv_2= '.'
1688 {
1689 otherlv_0=(Token)match(input,21,FOLLOW_7); if (state.failed) return current;
1690 if ( state.backtracking==0 ) {
1311 1691
1692 newLeafNode(otherlv_0, grammarAccess.getExternPredicateDefinitionAccess().getExternKeyword_0());
1693
1312 } 1694 }
1313 1695 // InternalSolverLanguage.g:617:3: ( (lv_head_1_0= ruleCall ) )
1314 otherlv_6=(Token)match(input,20,FOLLOW_11); 1696 // InternalSolverLanguage.g:618:4: (lv_head_1_0= ruleCall )
1315
1316 newLeafNode(otherlv_6, grammarAccess.getBasicInterpretationAccess().getColonKeyword_2());
1317
1318 // InternalSolverLanguage.g:473:3: ( (lv_value_7_0= ruleTruthValue ) )
1319 // InternalSolverLanguage.g:474:4: (lv_value_7_0= ruleTruthValue )
1320 { 1697 {
1321 // InternalSolverLanguage.g:474:4: (lv_value_7_0= ruleTruthValue ) 1698 // InternalSolverLanguage.g:618:4: (lv_head_1_0= ruleCall )
1322 // InternalSolverLanguage.g:475:5: lv_value_7_0= ruleTruthValue 1699 // InternalSolverLanguage.g:619:5: lv_head_1_0= ruleCall
1323 { 1700 {
1701 if ( state.backtracking==0 ) {
1324 1702
1325 newCompositeNode(grammarAccess.getBasicInterpretationAccess().getValueTruthValueParserRuleCall_3_0()); 1703 newCompositeNode(grammarAccess.getExternPredicateDefinitionAccess().getHeadCallParserRuleCall_1_0());
1326 1704
1327 pushFollow(FOLLOW_2); 1705 }
1328 lv_value_7_0=ruleTruthValue(); 1706 pushFollow(FOLLOW_12);
1707 lv_head_1_0=ruleCall();
1329 1708
1330 state._fsp--; 1709 state._fsp--;
1710 if (state.failed) return current;
1711 if ( state.backtracking==0 ) {
1331 1712
1332 1713 if (current==null) {
1333 if (current==null) { 1714 current = createModelElementForParent(grammarAccess.getExternPredicateDefinitionRule());
1334 current = createModelElementForParent(grammarAccess.getBasicInterpretationRule()); 1715 }
1335 } 1716 set(
1336 set( 1717 current,
1337 current, 1718 "head",
1338 "value", 1719 lv_head_1_0,
1339 lv_value_7_0, 1720 "org.eclipse.viatra.solver.language.SolverLanguage.Call");
1340 "org.eclipse.viatra.solver.language.SolverLanguage.TruthValue"); 1721 afterParserOrEnumRuleCall();
1341 afterParserOrEnumRuleCall(); 1722
1342 1723 }
1343 1724
1344 } 1725 }
1345 1726
1346 1727
1347 } 1728 }
1348 1729
1730 otherlv_2=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
1731 if ( state.backtracking==0 ) {
1732
1733 newLeafNode(otherlv_2, grammarAccess.getExternPredicateDefinitionAccess().getFullStopKeyword_2());
1734
1735 }
1349 1736
1350 } 1737 }
1351 1738
1352 1739
1353 } 1740 }
1354 1741
1742 if ( state.backtracking==0 ) {
1355 1743
1356 leaveRule(); 1744 leaveRule();
1357 1745
1746 }
1358 } 1747 }
1359 1748
1360 catch (RecognitionException re) { 1749 catch (RecognitionException re) {
@@ -1365,29 +1754,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1365 } 1754 }
1366 return current; 1755 return current;
1367 } 1756 }
1368 // $ANTLR end "ruleBasicInterpretation" 1757 // $ANTLR end "ruleExternPredicateDefinition"
1369 1758
1370 1759
1371 // $ANTLR start "entryRuleSymbol" 1760 // $ANTLR start "entryRuleMetricDefinition"
1372 // InternalSolverLanguage.g:496:1: entryRuleSymbol returns [EObject current=null] : iv_ruleSymbol= ruleSymbol EOF ; 1761 // InternalSolverLanguage.g:644:1: entryRuleMetricDefinition returns [EObject current=null] : iv_ruleMetricDefinition= ruleMetricDefinition EOF ;
1373 public final EObject entryRuleSymbol() throws RecognitionException { 1762 public final EObject entryRuleMetricDefinition() throws RecognitionException {
1374 EObject current = null; 1763 EObject current = null;
1375 1764
1376 EObject iv_ruleSymbol = null; 1765 EObject iv_ruleMetricDefinition = null;
1377 1766
1378 1767
1379 try { 1768 try {
1380 // InternalSolverLanguage.g:496:47: (iv_ruleSymbol= ruleSymbol EOF ) 1769 // InternalSolverLanguage.g:644:57: (iv_ruleMetricDefinition= ruleMetricDefinition EOF )
1381 // InternalSolverLanguage.g:497:2: iv_ruleSymbol= ruleSymbol EOF 1770 // InternalSolverLanguage.g:645:2: iv_ruleMetricDefinition= ruleMetricDefinition EOF
1382 { 1771 {
1383 newCompositeNode(grammarAccess.getSymbolRule()); 1772 if ( state.backtracking==0 ) {
1773 newCompositeNode(grammarAccess.getMetricDefinitionRule());
1774 }
1384 pushFollow(FOLLOW_1); 1775 pushFollow(FOLLOW_1);
1385 iv_ruleSymbol=ruleSymbol(); 1776 iv_ruleMetricDefinition=ruleMetricDefinition();
1386 1777
1387 state._fsp--; 1778 state._fsp--;
1388 1779 if (state.failed) return current;
1389 current =iv_ruleSymbol; 1780 if ( state.backtracking==0 ) {
1390 match(input,EOF,FOLLOW_2); 1781 current =iv_ruleMetricDefinition;
1782 }
1783 match(input,EOF,FOLLOW_2); if (state.failed) return current;
1391 1784
1392 } 1785 }
1393 1786
@@ -1401,112 +1794,137 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1401 } 1794 }
1402 return current; 1795 return current;
1403 } 1796 }
1404 // $ANTLR end "entryRuleSymbol" 1797 // $ANTLR end "entryRuleMetricDefinition"
1405 1798
1406 1799
1407 // $ANTLR start "ruleSymbol" 1800 // $ANTLR start "ruleMetricDefinition"
1408 // InternalSolverLanguage.g:503:1: ruleSymbol returns [EObject current=null] : (this_ModelSymbol_0= ruleModelSymbol | this_PartialitySymbol_1= rulePartialitySymbol | this_DataSymbol_2= ruleDataSymbol ) ; 1801 // InternalSolverLanguage.g:651:1: ruleMetricDefinition returns [EObject current=null] : ( ( (lv_type_0_0= ruleMetricType ) ) ( (lv_head_1_0= ruleExpression ) ) otherlv_2= '=' ( (lv_body_3_0= ruleExpression ) ) ) ;
1409 public final EObject ruleSymbol() throws RecognitionException { 1802 public final EObject ruleMetricDefinition() throws RecognitionException {
1410 EObject current = null; 1803 EObject current = null;
1411 1804
1412 EObject this_ModelSymbol_0 = null; 1805 Token otherlv_2=null;
1806 Enumerator lv_type_0_0 = null;
1413 1807
1414 EObject this_PartialitySymbol_1 = null; 1808 EObject lv_head_1_0 = null;
1415 1809
1416 EObject this_DataSymbol_2 = null; 1810 EObject lv_body_3_0 = null;
1417 1811
1418 1812
1419 1813
1420 enterRule(); 1814 enterRule();
1421 1815
1422 try { 1816 try {
1423 // InternalSolverLanguage.g:509:2: ( (this_ModelSymbol_0= ruleModelSymbol | this_PartialitySymbol_1= rulePartialitySymbol | this_DataSymbol_2= ruleDataSymbol ) ) 1817 // InternalSolverLanguage.g:657:2: ( ( ( (lv_type_0_0= ruleMetricType ) ) ( (lv_head_1_0= ruleExpression ) ) otherlv_2= '=' ( (lv_body_3_0= ruleExpression ) ) ) )
1424 // InternalSolverLanguage.g:510:2: (this_ModelSymbol_0= ruleModelSymbol | this_PartialitySymbol_1= rulePartialitySymbol | this_DataSymbol_2= ruleDataSymbol ) 1818 // InternalSolverLanguage.g:658:2: ( ( (lv_type_0_0= ruleMetricType ) ) ( (lv_head_1_0= ruleExpression ) ) otherlv_2= '=' ( (lv_body_3_0= ruleExpression ) ) )
1425 { 1819 {
1426 // InternalSolverLanguage.g:510:2: (this_ModelSymbol_0= ruleModelSymbol | this_PartialitySymbol_1= rulePartialitySymbol | this_DataSymbol_2= ruleDataSymbol ) 1820 // InternalSolverLanguage.g:658:2: ( ( (lv_type_0_0= ruleMetricType ) ) ( (lv_head_1_0= ruleExpression ) ) otherlv_2= '=' ( (lv_body_3_0= ruleExpression ) ) )
1427 int alt11=3; 1821 // InternalSolverLanguage.g:659:3: ( (lv_type_0_0= ruleMetricType ) ) ( (lv_head_1_0= ruleExpression ) ) otherlv_2= '=' ( (lv_body_3_0= ruleExpression ) )
1428 switch ( input.LA(1) ) { 1822 {
1429 case RULE_ID: 1823 // InternalSolverLanguage.g:659:3: ( (lv_type_0_0= ruleMetricType ) )
1430 { 1824 // InternalSolverLanguage.g:660:4: (lv_type_0_0= ruleMetricType )
1431 alt11=1; 1825 {
1432 } 1826 // InternalSolverLanguage.g:660:4: (lv_type_0_0= ruleMetricType )
1433 break; 1827 // InternalSolverLanguage.g:661:5: lv_type_0_0= ruleMetricType
1434 case 21: 1828 {
1435 case 22: 1829 if ( state.backtracking==0 ) {
1436 {
1437 alt11=2;
1438 }
1439 break;
1440 case 23:
1441 case 24:
1442 case 25:
1443 case 26:
1444 {
1445 alt11=3;
1446 }
1447 break;
1448 default:
1449 NoViableAltException nvae =
1450 new NoViableAltException("", 11, 0, input);
1451 1830
1452 throw nvae; 1831 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getTypeMetricTypeEnumRuleCall_0_0());
1832
1453 } 1833 }
1834 pushFollow(FOLLOW_6);
1835 lv_type_0_0=ruleMetricType();
1454 1836
1455 switch (alt11) { 1837 state._fsp--;
1456 case 1 : 1838 if (state.failed) return current;
1457 // InternalSolverLanguage.g:511:3: this_ModelSymbol_0= ruleModelSymbol 1839 if ( state.backtracking==0 ) {
1458 {
1459 1840
1460 newCompositeNode(grammarAccess.getSymbolAccess().getModelSymbolParserRuleCall_0()); 1841 if (current==null) {
1461 1842 current = createModelElementForParent(grammarAccess.getMetricDefinitionRule());
1462 pushFollow(FOLLOW_2); 1843 }
1463 this_ModelSymbol_0=ruleModelSymbol(); 1844 set(
1845 current,
1846 "type",
1847 lv_type_0_0,
1848 "org.eclipse.viatra.solver.language.SolverLanguage.MetricType");
1849 afterParserOrEnumRuleCall();
1850
1851 }
1464 1852
1465 state._fsp--; 1853 }
1466 1854
1467 1855
1468 current = this_ModelSymbol_0; 1856 }
1469 afterParserOrEnumRuleCall();
1470
1471 1857
1472 } 1858 // InternalSolverLanguage.g:678:3: ( (lv_head_1_0= ruleExpression ) )
1473 break; 1859 // InternalSolverLanguage.g:679:4: (lv_head_1_0= ruleExpression )
1474 case 2 : 1860 {
1475 // InternalSolverLanguage.g:520:3: this_PartialitySymbol_1= rulePartialitySymbol 1861 // InternalSolverLanguage.g:679:4: (lv_head_1_0= ruleExpression )
1476 { 1862 // InternalSolverLanguage.g:680:5: lv_head_1_0= ruleExpression
1863 {
1864 if ( state.backtracking==0 ) {
1477 1865
1478 newCompositeNode(grammarAccess.getSymbolAccess().getPartialitySymbolParserRuleCall_1()); 1866 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getHeadExpressionParserRuleCall_1_0());
1479 1867
1480 pushFollow(FOLLOW_2); 1868 }
1481 this_PartialitySymbol_1=rulePartialitySymbol(); 1869 pushFollow(FOLLOW_13);
1870 lv_head_1_0=ruleExpression();
1482 1871
1483 state._fsp--; 1872 state._fsp--;
1873 if (state.failed) return current;
1874 if ( state.backtracking==0 ) {
1484 1875
1876 if (current==null) {
1877 current = createModelElementForParent(grammarAccess.getMetricDefinitionRule());
1878 }
1879 set(
1880 current,
1881 "head",
1882 lv_head_1_0,
1883 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1884 afterParserOrEnumRuleCall();
1885
1886 }
1485 1887
1486 current = this_PartialitySymbol_1; 1888 }
1487 afterParserOrEnumRuleCall();
1488
1489 1889
1490 }
1491 break;
1492 case 3 :
1493 // InternalSolverLanguage.g:529:3: this_DataSymbol_2= ruleDataSymbol
1494 {
1495 1890
1496 newCompositeNode(grammarAccess.getSymbolAccess().getDataSymbolParserRuleCall_2()); 1891 }
1497
1498 pushFollow(FOLLOW_2);
1499 this_DataSymbol_2=ruleDataSymbol();
1500 1892
1501 state._fsp--; 1893 otherlv_2=(Token)match(input,17,FOLLOW_6); if (state.failed) return current;
1894 if ( state.backtracking==0 ) {
1895
1896 newLeafNode(otherlv_2, grammarAccess.getMetricDefinitionAccess().getEqualsSignKeyword_2());
1897
1898 }
1899 // InternalSolverLanguage.g:701:3: ( (lv_body_3_0= ruleExpression ) )
1900 // InternalSolverLanguage.g:702:4: (lv_body_3_0= ruleExpression )
1901 {
1902 // InternalSolverLanguage.g:702:4: (lv_body_3_0= ruleExpression )
1903 // InternalSolverLanguage.g:703:5: lv_body_3_0= ruleExpression
1904 {
1905 if ( state.backtracking==0 ) {
1502 1906
1907 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getBodyExpressionParserRuleCall_3_0());
1908
1909 }
1910 pushFollow(FOLLOW_2);
1911 lv_body_3_0=ruleExpression();
1503 1912
1504 current = this_DataSymbol_2; 1913 state._fsp--;
1505 afterParserOrEnumRuleCall(); 1914 if (state.failed) return current;
1506 1915 if ( state.backtracking==0 ) {
1507 1916
1508 } 1917 if (current==null) {
1509 break; 1918 current = createModelElementForParent(grammarAccess.getMetricDefinitionRule());
1919 }
1920 set(
1921 current,
1922 "body",
1923 lv_body_3_0,
1924 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1925 afterParserOrEnumRuleCall();
1926
1927 }
1510 1928
1511 } 1929 }
1512 1930
@@ -1514,8 +1932,16 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1514 } 1932 }
1515 1933
1516 1934
1517 leaveRule(); 1935 }
1936
1937
1938 }
1518 1939
1940 if ( state.backtracking==0 ) {
1941
1942 leaveRule();
1943
1944 }
1519 } 1945 }
1520 1946
1521 catch (RecognitionException re) { 1947 catch (RecognitionException re) {
@@ -1526,29 +1952,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1526 } 1952 }
1527 return current; 1953 return current;
1528 } 1954 }
1529 // $ANTLR end "ruleSymbol" 1955 // $ANTLR end "ruleMetricDefinition"
1530 1956
1531 1957
1532 // $ANTLR start "entryRuleModelSymbol" 1958 // $ANTLR start "entryRuleExternMetricDefinition"
1533 // InternalSolverLanguage.g:541:1: entryRuleModelSymbol returns [EObject current=null] : iv_ruleModelSymbol= ruleModelSymbol EOF ; 1959 // InternalSolverLanguage.g:724:1: entryRuleExternMetricDefinition returns [EObject current=null] : iv_ruleExternMetricDefinition= ruleExternMetricDefinition EOF ;
1534 public final EObject entryRuleModelSymbol() throws RecognitionException { 1960 public final EObject entryRuleExternMetricDefinition() throws RecognitionException {
1535 EObject current = null; 1961 EObject current = null;
1536 1962
1537 EObject iv_ruleModelSymbol = null; 1963 EObject iv_ruleExternMetricDefinition = null;
1538 1964
1539 1965
1540 try { 1966 try {
1541 // InternalSolverLanguage.g:541:52: (iv_ruleModelSymbol= ruleModelSymbol EOF ) 1967 // InternalSolverLanguage.g:724:63: (iv_ruleExternMetricDefinition= ruleExternMetricDefinition EOF )
1542 // InternalSolverLanguage.g:542:2: iv_ruleModelSymbol= ruleModelSymbol EOF 1968 // InternalSolverLanguage.g:725:2: iv_ruleExternMetricDefinition= ruleExternMetricDefinition EOF
1543 { 1969 {
1544 newCompositeNode(grammarAccess.getModelSymbolRule()); 1970 if ( state.backtracking==0 ) {
1971 newCompositeNode(grammarAccess.getExternMetricDefinitionRule());
1972 }
1545 pushFollow(FOLLOW_1); 1973 pushFollow(FOLLOW_1);
1546 iv_ruleModelSymbol=ruleModelSymbol(); 1974 iv_ruleExternMetricDefinition=ruleExternMetricDefinition();
1547 1975
1548 state._fsp--; 1976 state._fsp--;
1549 1977 if (state.failed) return current;
1550 current =iv_ruleModelSymbol; 1978 if ( state.backtracking==0 ) {
1551 match(input,EOF,FOLLOW_2); 1979 current =iv_ruleExternMetricDefinition;
1980 }
1981 match(input,EOF,FOLLOW_2); if (state.failed) return current;
1552 1982
1553 } 1983 }
1554 1984
@@ -1562,43 +1992,103 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1562 } 1992 }
1563 return current; 1993 return current;
1564 } 1994 }
1565 // $ANTLR end "entryRuleModelSymbol" 1995 // $ANTLR end "entryRuleExternMetricDefinition"
1566 1996
1567 1997
1568 // $ANTLR start "ruleModelSymbol" 1998 // $ANTLR start "ruleExternMetricDefinition"
1569 // InternalSolverLanguage.g:548:1: ruleModelSymbol returns [EObject current=null] : ( (lv_name_0_0= RULE_ID ) ) ; 1999 // InternalSolverLanguage.g:731:1: ruleExternMetricDefinition returns [EObject current=null] : (otherlv_0= 'extern' ( (lv_type_1_0= ruleMetricType ) ) ( (lv_head_2_0= ruleCall ) ) ) ;
1570 public final EObject ruleModelSymbol() throws RecognitionException { 2000 public final EObject ruleExternMetricDefinition() throws RecognitionException {
1571 EObject current = null; 2001 EObject current = null;
1572 2002
1573 Token lv_name_0_0=null; 2003 Token otherlv_0=null;
2004 Enumerator lv_type_1_0 = null;
2005
2006 EObject lv_head_2_0 = null;
2007
1574 2008
1575 2009
1576 enterRule(); 2010 enterRule();
1577 2011
1578 try { 2012 try {
1579 // InternalSolverLanguage.g:554:2: ( ( (lv_name_0_0= RULE_ID ) ) ) 2013 // InternalSolverLanguage.g:737:2: ( (otherlv_0= 'extern' ( (lv_type_1_0= ruleMetricType ) ) ( (lv_head_2_0= ruleCall ) ) ) )
1580 // InternalSolverLanguage.g:555:2: ( (lv_name_0_0= RULE_ID ) ) 2014 // InternalSolverLanguage.g:738:2: (otherlv_0= 'extern' ( (lv_type_1_0= ruleMetricType ) ) ( (lv_head_2_0= ruleCall ) ) )
1581 { 2015 {
1582 // InternalSolverLanguage.g:555:2: ( (lv_name_0_0= RULE_ID ) ) 2016 // InternalSolverLanguage.g:738:2: (otherlv_0= 'extern' ( (lv_type_1_0= ruleMetricType ) ) ( (lv_head_2_0= ruleCall ) ) )
1583 // InternalSolverLanguage.g:556:3: (lv_name_0_0= RULE_ID ) 2017 // InternalSolverLanguage.g:739:3: otherlv_0= 'extern' ( (lv_type_1_0= ruleMetricType ) ) ( (lv_head_2_0= ruleCall ) )
2018 {
2019 otherlv_0=(Token)match(input,21,FOLLOW_14); if (state.failed) return current;
2020 if ( state.backtracking==0 ) {
2021
2022 newLeafNode(otherlv_0, grammarAccess.getExternMetricDefinitionAccess().getExternKeyword_0());
2023
2024 }
2025 // InternalSolverLanguage.g:743:3: ( (lv_type_1_0= ruleMetricType ) )
2026 // InternalSolverLanguage.g:744:4: (lv_type_1_0= ruleMetricType )
2027 {
2028 // InternalSolverLanguage.g:744:4: (lv_type_1_0= ruleMetricType )
2029 // InternalSolverLanguage.g:745:5: lv_type_1_0= ruleMetricType
2030 {
2031 if ( state.backtracking==0 ) {
2032
2033 newCompositeNode(grammarAccess.getExternMetricDefinitionAccess().getTypeMetricTypeEnumRuleCall_1_0());
2034
2035 }
2036 pushFollow(FOLLOW_7);
2037 lv_type_1_0=ruleMetricType();
2038
2039 state._fsp--;
2040 if (state.failed) return current;
2041 if ( state.backtracking==0 ) {
2042
2043 if (current==null) {
2044 current = createModelElementForParent(grammarAccess.getExternMetricDefinitionRule());
2045 }
2046 set(
2047 current,
2048 "type",
2049 lv_type_1_0,
2050 "org.eclipse.viatra.solver.language.SolverLanguage.MetricType");
2051 afterParserOrEnumRuleCall();
2052
2053 }
2054
2055 }
2056
2057
2058 }
2059
2060 // InternalSolverLanguage.g:762:3: ( (lv_head_2_0= ruleCall ) )
2061 // InternalSolverLanguage.g:763:4: (lv_head_2_0= ruleCall )
1584 { 2062 {
1585 // InternalSolverLanguage.g:556:3: (lv_name_0_0= RULE_ID ) 2063 // InternalSolverLanguage.g:763:4: (lv_head_2_0= ruleCall )
1586 // InternalSolverLanguage.g:557:4: lv_name_0_0= RULE_ID 2064 // InternalSolverLanguage.g:764:5: lv_head_2_0= ruleCall
1587 { 2065 {
1588 lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_2); 2066 if ( state.backtracking==0 ) {
2067
2068 newCompositeNode(grammarAccess.getExternMetricDefinitionAccess().getHeadCallParserRuleCall_2_0());
2069
2070 }
2071 pushFollow(FOLLOW_2);
2072 lv_head_2_0=ruleCall();
2073
2074 state._fsp--;
2075 if (state.failed) return current;
2076 if ( state.backtracking==0 ) {
2077
2078 if (current==null) {
2079 current = createModelElementForParent(grammarAccess.getExternMetricDefinitionRule());
2080 }
2081 set(
2082 current,
2083 "head",
2084 lv_head_2_0,
2085 "org.eclipse.viatra.solver.language.SolverLanguage.Call");
2086 afterParserOrEnumRuleCall();
2087
2088 }
1589 2089
1590 newLeafNode(lv_name_0_0, grammarAccess.getModelSymbolAccess().getNameIDTerminalRuleCall_0()); 2090 }
1591
1592 2091
1593 if (current==null) {
1594 current = createModelElement(grammarAccess.getModelSymbolRule());
1595 }
1596 setWithLastConsumed(
1597 current,
1598 "name",
1599 lv_name_0_0,
1600 "org.eclipse.xtext.common.Terminals.ID");
1601
1602 2092
1603 } 2093 }
1604 2094
@@ -1608,9 +2098,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1608 2098
1609 } 2099 }
1610 2100
2101 if ( state.backtracking==0 ) {
1611 2102
1612 leaveRule(); 2103 leaveRule();
1613 2104
2105 }
1614 } 2106 }
1615 2107
1616 catch (RecognitionException re) { 2108 catch (RecognitionException re) {
@@ -1621,29 +2113,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1621 } 2113 }
1622 return current; 2114 return current;
1623 } 2115 }
1624 // $ANTLR end "ruleModelSymbol" 2116 // $ANTLR end "ruleExternMetricDefinition"
1625 2117
1626 2118
1627 // $ANTLR start "entryRulePartialitySymbol" 2119 // $ANTLR start "entryRuleExpression"
1628 // InternalSolverLanguage.g:576:1: entryRulePartialitySymbol returns [EObject current=null] : iv_rulePartialitySymbol= rulePartialitySymbol EOF ; 2120 // InternalSolverLanguage.g:785:1: entryRuleExpression returns [EObject current=null] : iv_ruleExpression= ruleExpression EOF ;
1629 public final EObject entryRulePartialitySymbol() throws RecognitionException { 2121 public final EObject entryRuleExpression() throws RecognitionException {
1630 EObject current = null; 2122 EObject current = null;
1631 2123
1632 EObject iv_rulePartialitySymbol = null; 2124 EObject iv_ruleExpression = null;
1633 2125
1634 2126
1635 try { 2127 try {
1636 // InternalSolverLanguage.g:576:57: (iv_rulePartialitySymbol= rulePartialitySymbol EOF ) 2128 // InternalSolverLanguage.g:785:51: (iv_ruleExpression= ruleExpression EOF )
1637 // InternalSolverLanguage.g:577:2: iv_rulePartialitySymbol= rulePartialitySymbol EOF 2129 // InternalSolverLanguage.g:786:2: iv_ruleExpression= ruleExpression EOF
1638 { 2130 {
1639 newCompositeNode(grammarAccess.getPartialitySymbolRule()); 2131 if ( state.backtracking==0 ) {
2132 newCompositeNode(grammarAccess.getExpressionRule());
2133 }
1640 pushFollow(FOLLOW_1); 2134 pushFollow(FOLLOW_1);
1641 iv_rulePartialitySymbol=rulePartialitySymbol(); 2135 iv_ruleExpression=ruleExpression();
1642 2136
1643 state._fsp--; 2137 state._fsp--;
1644 2138 if (state.failed) return current;
1645 current =iv_rulePartialitySymbol; 2139 if ( state.backtracking==0 ) {
1646 match(input,EOF,FOLLOW_2); 2140 current =iv_ruleExpression;
2141 }
2142 match(input,EOF,FOLLOW_2); if (state.failed) return current;
1647 2143
1648 } 2144 }
1649 2145
@@ -1657,76 +2153,85 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1657 } 2153 }
1658 return current; 2154 return current;
1659 } 2155 }
1660 // $ANTLR end "entryRulePartialitySymbol" 2156 // $ANTLR end "entryRuleExpression"
1661 2157
1662 2158
1663 // $ANTLR start "rulePartialitySymbol" 2159 // $ANTLR start "ruleExpression"
1664 // InternalSolverLanguage.g:583:1: rulePartialitySymbol returns [EObject current=null] : (this_ExistSymbol_0= ruleExistSymbol | this_EqualsSymbol_1= ruleEqualsSymbol ) ; 2160 // InternalSolverLanguage.g:792:1: ruleExpression returns [EObject current=null] : (this_IfElse_0= ruleIfElse | this_DisjunctiveExpression_1= ruleDisjunctiveExpression ) ;
1665 public final EObject rulePartialitySymbol() throws RecognitionException { 2161 public final EObject ruleExpression() throws RecognitionException {
1666 EObject current = null; 2162 EObject current = null;
1667 2163
1668 EObject this_ExistSymbol_0 = null; 2164 EObject this_IfElse_0 = null;
1669 2165
1670 EObject this_EqualsSymbol_1 = null; 2166 EObject this_DisjunctiveExpression_1 = null;
1671 2167
1672 2168
1673 2169
1674 enterRule(); 2170 enterRule();
1675 2171
1676 try { 2172 try {
1677 // InternalSolverLanguage.g:589:2: ( (this_ExistSymbol_0= ruleExistSymbol | this_EqualsSymbol_1= ruleEqualsSymbol ) ) 2173 // InternalSolverLanguage.g:798:2: ( (this_IfElse_0= ruleIfElse | this_DisjunctiveExpression_1= ruleDisjunctiveExpression ) )
1678 // InternalSolverLanguage.g:590:2: (this_ExistSymbol_0= ruleExistSymbol | this_EqualsSymbol_1= ruleEqualsSymbol ) 2174 // InternalSolverLanguage.g:799:2: (this_IfElse_0= ruleIfElse | this_DisjunctiveExpression_1= ruleDisjunctiveExpression )
1679 { 2175 {
1680 // InternalSolverLanguage.g:590:2: (this_ExistSymbol_0= ruleExistSymbol | this_EqualsSymbol_1= ruleEqualsSymbol ) 2176 // InternalSolverLanguage.g:799:2: (this_IfElse_0= ruleIfElse | this_DisjunctiveExpression_1= ruleDisjunctiveExpression )
1681 int alt12=2; 2177 int alt8=2;
1682 int LA12_0 = input.LA(1); 2178 int LA8_0 = input.LA(1);
1683 2179
1684 if ( (LA12_0==21) ) { 2180 if ( (LA8_0==23) ) {
1685 alt12=1; 2181 alt8=1;
1686 } 2182 }
1687 else if ( (LA12_0==22) ) { 2183 else if ( ((LA8_0>=RULE_STRING && LA8_0<=RULE_QUOTED_ID)||LA8_0==19||LA8_0==29||LA8_0==33||LA8_0==36||(LA8_0>=39 && LA8_0<=40)||(LA8_0>=56 && LA8_0<=57)||(LA8_0>=60 && LA8_0<=72)) ) {
1688 alt12=2; 2184 alt8=2;
1689 } 2185 }
1690 else { 2186 else {
2187 if (state.backtracking>0) {state.failed=true; return current;}
1691 NoViableAltException nvae = 2188 NoViableAltException nvae =
1692 new NoViableAltException("", 12, 0, input); 2189 new NoViableAltException("", 8, 0, input);
1693 2190
1694 throw nvae; 2191 throw nvae;
1695 } 2192 }
1696 switch (alt12) { 2193 switch (alt8) {
1697 case 1 : 2194 case 1 :
1698 // InternalSolverLanguage.g:591:3: this_ExistSymbol_0= ruleExistSymbol 2195 // InternalSolverLanguage.g:800:3: this_IfElse_0= ruleIfElse
1699 { 2196 {
2197 if ( state.backtracking==0 ) {
1700 2198
1701 newCompositeNode(grammarAccess.getPartialitySymbolAccess().getExistSymbolParserRuleCall_0()); 2199 newCompositeNode(grammarAccess.getExpressionAccess().getIfElseParserRuleCall_0());
1702 2200
2201 }
1703 pushFollow(FOLLOW_2); 2202 pushFollow(FOLLOW_2);
1704 this_ExistSymbol_0=ruleExistSymbol(); 2203 this_IfElse_0=ruleIfElse();
1705 2204
1706 state._fsp--; 2205 state._fsp--;
2206 if (state.failed) return current;
2207 if ( state.backtracking==0 ) {
1707 2208
1708 2209 current = this_IfElse_0;
1709 current = this_ExistSymbol_0; 2210 afterParserOrEnumRuleCall();
1710 afterParserOrEnumRuleCall(); 2211
1711 2212 }
1712 2213
1713 } 2214 }
1714 break; 2215 break;
1715 case 2 : 2216 case 2 :
1716 // InternalSolverLanguage.g:600:3: this_EqualsSymbol_1= ruleEqualsSymbol 2217 // InternalSolverLanguage.g:809:3: this_DisjunctiveExpression_1= ruleDisjunctiveExpression
1717 { 2218 {
2219 if ( state.backtracking==0 ) {
1718 2220
1719 newCompositeNode(grammarAccess.getPartialitySymbolAccess().getEqualsSymbolParserRuleCall_1()); 2221 newCompositeNode(grammarAccess.getExpressionAccess().getDisjunctiveExpressionParserRuleCall_1());
1720 2222
2223 }
1721 pushFollow(FOLLOW_2); 2224 pushFollow(FOLLOW_2);
1722 this_EqualsSymbol_1=ruleEqualsSymbol(); 2225 this_DisjunctiveExpression_1=ruleDisjunctiveExpression();
1723 2226
1724 state._fsp--; 2227 state._fsp--;
2228 if (state.failed) return current;
2229 if ( state.backtracking==0 ) {
1725 2230
1726 2231 current = this_DisjunctiveExpression_1;
1727 current = this_EqualsSymbol_1; 2232 afterParserOrEnumRuleCall();
1728 afterParserOrEnumRuleCall(); 2233
1729 2234 }
1730 2235
1731 } 2236 }
1732 break; 2237 break;
@@ -1736,9 +2241,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1736 2241
1737 } 2242 }
1738 2243
2244 if ( state.backtracking==0 ) {
1739 2245
1740 leaveRule(); 2246 leaveRule();
1741 2247
2248 }
1742 } 2249 }
1743 2250
1744 catch (RecognitionException re) { 2251 catch (RecognitionException re) {
@@ -1749,29 +2256,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1749 } 2256 }
1750 return current; 2257 return current;
1751 } 2258 }
1752 // $ANTLR end "rulePartialitySymbol" 2259 // $ANTLR end "ruleExpression"
1753 2260
1754 2261
1755 // $ANTLR start "entryRuleExistSymbol" 2262 // $ANTLR start "entryRuleIfElse"
1756 // InternalSolverLanguage.g:612:1: entryRuleExistSymbol returns [EObject current=null] : iv_ruleExistSymbol= ruleExistSymbol EOF ; 2263 // InternalSolverLanguage.g:821:1: entryRuleIfElse returns [EObject current=null] : iv_ruleIfElse= ruleIfElse EOF ;
1757 public final EObject entryRuleExistSymbol() throws RecognitionException { 2264 public final EObject entryRuleIfElse() throws RecognitionException {
1758 EObject current = null; 2265 EObject current = null;
1759 2266
1760 EObject iv_ruleExistSymbol = null; 2267 EObject iv_ruleIfElse = null;
1761 2268
1762 2269
1763 try { 2270 try {
1764 // InternalSolverLanguage.g:612:52: (iv_ruleExistSymbol= ruleExistSymbol EOF ) 2271 // InternalSolverLanguage.g:821:47: (iv_ruleIfElse= ruleIfElse EOF )
1765 // InternalSolverLanguage.g:613:2: iv_ruleExistSymbol= ruleExistSymbol EOF 2272 // InternalSolverLanguage.g:822:2: iv_ruleIfElse= ruleIfElse EOF
1766 { 2273 {
1767 newCompositeNode(grammarAccess.getExistSymbolRule()); 2274 if ( state.backtracking==0 ) {
2275 newCompositeNode(grammarAccess.getIfElseRule());
2276 }
1768 pushFollow(FOLLOW_1); 2277 pushFollow(FOLLOW_1);
1769 iv_ruleExistSymbol=ruleExistSymbol(); 2278 iv_ruleIfElse=ruleIfElse();
1770 2279
1771 state._fsp--; 2280 state._fsp--;
1772 2281 if (state.failed) return current;
1773 current =iv_ruleExistSymbol; 2282 if ( state.backtracking==0 ) {
1774 match(input,EOF,FOLLOW_2); 2283 current =iv_ruleIfElse;
2284 }
2285 match(input,EOF,FOLLOW_2); if (state.failed) return current;
1775 2286
1776 } 2287 }
1777 2288
@@ -1785,50 +2296,168 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1785 } 2296 }
1786 return current; 2297 return current;
1787 } 2298 }
1788 // $ANTLR end "entryRuleExistSymbol" 2299 // $ANTLR end "entryRuleIfElse"
1789 2300
1790 2301
1791 // $ANTLR start "ruleExistSymbol" 2302 // $ANTLR start "ruleIfElse"
1792 // InternalSolverLanguage.g:619:1: ruleExistSymbol returns [EObject current=null] : (otherlv_0= 'exists' () ) ; 2303 // InternalSolverLanguage.g:828:1: ruleIfElse returns [EObject current=null] : (otherlv_0= 'if' ( (lv_condition_1_0= ruleExpression ) ) otherlv_2= 'then' ( (lv_then_3_0= ruleExpression ) ) otherlv_4= 'else' ( (lv_else_5_0= ruleExpression ) ) ) ;
1793 public final EObject ruleExistSymbol() throws RecognitionException { 2304 public final EObject ruleIfElse() throws RecognitionException {
1794 EObject current = null; 2305 EObject current = null;
1795 2306
1796 Token otherlv_0=null; 2307 Token otherlv_0=null;
2308 Token otherlv_2=null;
2309 Token otherlv_4=null;
2310 EObject lv_condition_1_0 = null;
2311
2312 EObject lv_then_3_0 = null;
2313
2314 EObject lv_else_5_0 = null;
2315
1797 2316
1798 2317
1799 enterRule(); 2318 enterRule();
1800 2319
1801 try { 2320 try {
1802 // InternalSolverLanguage.g:625:2: ( (otherlv_0= 'exists' () ) ) 2321 // InternalSolverLanguage.g:834:2: ( (otherlv_0= 'if' ( (lv_condition_1_0= ruleExpression ) ) otherlv_2= 'then' ( (lv_then_3_0= ruleExpression ) ) otherlv_4= 'else' ( (lv_else_5_0= ruleExpression ) ) ) )
1803 // InternalSolverLanguage.g:626:2: (otherlv_0= 'exists' () ) 2322 // InternalSolverLanguage.g:835:2: (otherlv_0= 'if' ( (lv_condition_1_0= ruleExpression ) ) otherlv_2= 'then' ( (lv_then_3_0= ruleExpression ) ) otherlv_4= 'else' ( (lv_else_5_0= ruleExpression ) ) )
1804 { 2323 {
1805 // InternalSolverLanguage.g:626:2: (otherlv_0= 'exists' () ) 2324 // InternalSolverLanguage.g:835:2: (otherlv_0= 'if' ( (lv_condition_1_0= ruleExpression ) ) otherlv_2= 'then' ( (lv_then_3_0= ruleExpression ) ) otherlv_4= 'else' ( (lv_else_5_0= ruleExpression ) ) )
1806 // InternalSolverLanguage.g:627:3: otherlv_0= 'exists' () 2325 // InternalSolverLanguage.g:836:3: otherlv_0= 'if' ( (lv_condition_1_0= ruleExpression ) ) otherlv_2= 'then' ( (lv_then_3_0= ruleExpression ) ) otherlv_4= 'else' ( (lv_else_5_0= ruleExpression ) )
1807 { 2326 {
1808 otherlv_0=(Token)match(input,21,FOLLOW_2); 2327 otherlv_0=(Token)match(input,23,FOLLOW_6); if (state.failed) return current;
2328 if ( state.backtracking==0 ) {
1809 2329
1810 newLeafNode(otherlv_0, grammarAccess.getExistSymbolAccess().getExistsKeyword_0()); 2330 newLeafNode(otherlv_0, grammarAccess.getIfElseAccess().getIfKeyword_0());
1811 2331
1812 // InternalSolverLanguage.g:631:3: () 2332 }
1813 // InternalSolverLanguage.g:632:4: 2333 // InternalSolverLanguage.g:840:3: ( (lv_condition_1_0= ruleExpression ) )
2334 // InternalSolverLanguage.g:841:4: (lv_condition_1_0= ruleExpression )
1814 { 2335 {
2336 // InternalSolverLanguage.g:841:4: (lv_condition_1_0= ruleExpression )
2337 // InternalSolverLanguage.g:842:5: lv_condition_1_0= ruleExpression
2338 {
2339 if ( state.backtracking==0 ) {
2340
2341 newCompositeNode(grammarAccess.getIfElseAccess().getConditionExpressionParserRuleCall_1_0());
2342
2343 }
2344 pushFollow(FOLLOW_15);
2345 lv_condition_1_0=ruleExpression();
2346
2347 state._fsp--;
2348 if (state.failed) return current;
2349 if ( state.backtracking==0 ) {
2350
2351 if (current==null) {
2352 current = createModelElementForParent(grammarAccess.getIfElseRule());
2353 }
2354 set(
2355 current,
2356 "condition",
2357 lv_condition_1_0,
2358 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
2359 afterParserOrEnumRuleCall();
2360
2361 }
2362
2363 }
1815 2364
1816 current = forceCreateModelElement(
1817 grammarAccess.getExistSymbolAccess().getExistSymbolAction_1(),
1818 current);
1819
1820 2365
1821 } 2366 }
1822 2367
2368 otherlv_2=(Token)match(input,24,FOLLOW_6); if (state.failed) return current;
2369 if ( state.backtracking==0 ) {
1823 2370
2371 newLeafNode(otherlv_2, grammarAccess.getIfElseAccess().getThenKeyword_2());
2372
1824 } 2373 }
2374 // InternalSolverLanguage.g:863:3: ( (lv_then_3_0= ruleExpression ) )
2375 // InternalSolverLanguage.g:864:4: (lv_then_3_0= ruleExpression )
2376 {
2377 // InternalSolverLanguage.g:864:4: (lv_then_3_0= ruleExpression )
2378 // InternalSolverLanguage.g:865:5: lv_then_3_0= ruleExpression
2379 {
2380 if ( state.backtracking==0 ) {
2381
2382 newCompositeNode(grammarAccess.getIfElseAccess().getThenExpressionParserRuleCall_3_0());
2383
2384 }
2385 pushFollow(FOLLOW_16);
2386 lv_then_3_0=ruleExpression();
1825 2387
2388 state._fsp--;
2389 if (state.failed) return current;
2390 if ( state.backtracking==0 ) {
2391
2392 if (current==null) {
2393 current = createModelElementForParent(grammarAccess.getIfElseRule());
2394 }
2395 set(
2396 current,
2397 "then",
2398 lv_then_3_0,
2399 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
2400 afterParserOrEnumRuleCall();
2401
2402 }
1826 2403
1827 } 2404 }
1828 2405
1829 2406
1830 leaveRule(); 2407 }
1831 2408
2409 otherlv_4=(Token)match(input,25,FOLLOW_6); if (state.failed) return current;
2410 if ( state.backtracking==0 ) {
2411
2412 newLeafNode(otherlv_4, grammarAccess.getIfElseAccess().getElseKeyword_4());
2413
2414 }
2415 // InternalSolverLanguage.g:886:3: ( (lv_else_5_0= ruleExpression ) )
2416 // InternalSolverLanguage.g:887:4: (lv_else_5_0= ruleExpression )
2417 {
2418 // InternalSolverLanguage.g:887:4: (lv_else_5_0= ruleExpression )
2419 // InternalSolverLanguage.g:888:5: lv_else_5_0= ruleExpression
2420 {
2421 if ( state.backtracking==0 ) {
2422
2423 newCompositeNode(grammarAccess.getIfElseAccess().getElseExpressionParserRuleCall_5_0());
2424
2425 }
2426 pushFollow(FOLLOW_2);
2427 lv_else_5_0=ruleExpression();
2428
2429 state._fsp--;
2430 if (state.failed) return current;
2431 if ( state.backtracking==0 ) {
2432
2433 if (current==null) {
2434 current = createModelElementForParent(grammarAccess.getIfElseRule());
2435 }
2436 set(
2437 current,
2438 "else",
2439 lv_else_5_0,
2440 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
2441 afterParserOrEnumRuleCall();
2442
2443 }
2444
2445 }
2446
2447
2448 }
2449
2450
2451 }
2452
2453
2454 }
2455
2456 if ( state.backtracking==0 ) {
2457
2458 leaveRule();
2459
2460 }
1832 } 2461 }
1833 2462
1834 catch (RecognitionException re) { 2463 catch (RecognitionException re) {
@@ -1839,29 +2468,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1839 } 2468 }
1840 return current; 2469 return current;
1841 } 2470 }
1842 // $ANTLR end "ruleExistSymbol" 2471 // $ANTLR end "ruleIfElse"
1843 2472
1844 2473
1845 // $ANTLR start "entryRuleEqualsSymbol" 2474 // $ANTLR start "entryRuleDisjunctiveExpression"
1846 // InternalSolverLanguage.g:642:1: entryRuleEqualsSymbol returns [EObject current=null] : iv_ruleEqualsSymbol= ruleEqualsSymbol EOF ; 2475 // InternalSolverLanguage.g:909:1: entryRuleDisjunctiveExpression returns [EObject current=null] : iv_ruleDisjunctiveExpression= ruleDisjunctiveExpression EOF ;
1847 public final EObject entryRuleEqualsSymbol() throws RecognitionException { 2476 public final EObject entryRuleDisjunctiveExpression() throws RecognitionException {
1848 EObject current = null; 2477 EObject current = null;
1849 2478
1850 EObject iv_ruleEqualsSymbol = null; 2479 EObject iv_ruleDisjunctiveExpression = null;
1851 2480
1852 2481
1853 try { 2482 try {
1854 // InternalSolverLanguage.g:642:53: (iv_ruleEqualsSymbol= ruleEqualsSymbol EOF ) 2483 // InternalSolverLanguage.g:909:62: (iv_ruleDisjunctiveExpression= ruleDisjunctiveExpression EOF )
1855 // InternalSolverLanguage.g:643:2: iv_ruleEqualsSymbol= ruleEqualsSymbol EOF 2484 // InternalSolverLanguage.g:910:2: iv_ruleDisjunctiveExpression= ruleDisjunctiveExpression EOF
1856 { 2485 {
1857 newCompositeNode(grammarAccess.getEqualsSymbolRule()); 2486 if ( state.backtracking==0 ) {
2487 newCompositeNode(grammarAccess.getDisjunctiveExpressionRule());
2488 }
1858 pushFollow(FOLLOW_1); 2489 pushFollow(FOLLOW_1);
1859 iv_ruleEqualsSymbol=ruleEqualsSymbol(); 2490 iv_ruleDisjunctiveExpression=ruleDisjunctiveExpression();
1860 2491
1861 state._fsp--; 2492 state._fsp--;
1862 2493 if (state.failed) return current;
1863 current =iv_ruleEqualsSymbol; 2494 if ( state.backtracking==0 ) {
1864 match(input,EOF,FOLLOW_2); 2495 current =iv_ruleDisjunctiveExpression;
2496 }
2497 match(input,EOF,FOLLOW_2); if (state.failed) return current;
1865 2498
1866 } 2499 }
1867 2500
@@ -1875,38 +2508,303 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1875 } 2508 }
1876 return current; 2509 return current;
1877 } 2510 }
1878 // $ANTLR end "entryRuleEqualsSymbol" 2511 // $ANTLR end "entryRuleDisjunctiveExpression"
1879 2512
1880 2513
1881 // $ANTLR start "ruleEqualsSymbol" 2514 // $ANTLR start "ruleDisjunctiveExpression"
1882 // InternalSolverLanguage.g:649:1: ruleEqualsSymbol returns [EObject current=null] : (otherlv_0= 'equals' () ) ; 2515 // InternalSolverLanguage.g:916:1: ruleDisjunctiveExpression returns [EObject current=null] : (this_ConjunctiveExpression_0= ruleConjunctiveExpression ( ( () (otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) ) )+ ) | ( () otherlv_5= '->' ( (lv_body_6_0= ruleConjunctiveExpression ) ) () (otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) ) )* ) )? ) ;
1883 public final EObject ruleEqualsSymbol() throws RecognitionException { 2516 public final EObject ruleDisjunctiveExpression() throws RecognitionException {
1884 EObject current = null; 2517 EObject current = null;
1885 2518
1886 Token otherlv_0=null; 2519 Token otherlv_2=null;
2520 Token otherlv_5=null;
2521 Token otherlv_8=null;
2522 EObject this_ConjunctiveExpression_0 = null;
2523
2524 EObject lv_children_3_0 = null;
2525
2526 EObject lv_body_6_0 = null;
2527
2528 EObject lv_cases_9_0 = null;
2529
1887 2530
1888 2531
1889 enterRule(); 2532 enterRule();
1890 2533
1891 try { 2534 try {
1892 // InternalSolverLanguage.g:655:2: ( (otherlv_0= 'equals' () ) ) 2535 // InternalSolverLanguage.g:922:2: ( (this_ConjunctiveExpression_0= ruleConjunctiveExpression ( ( () (otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) ) )+ ) | ( () otherlv_5= '->' ( (lv_body_6_0= ruleConjunctiveExpression ) ) () (otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) ) )* ) )? ) )
1893 // InternalSolverLanguage.g:656:2: (otherlv_0= 'equals' () ) 2536 // InternalSolverLanguage.g:923:2: (this_ConjunctiveExpression_0= ruleConjunctiveExpression ( ( () (otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) ) )+ ) | ( () otherlv_5= '->' ( (lv_body_6_0= ruleConjunctiveExpression ) ) () (otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) ) )* ) )? )
1894 { 2537 {
1895 // InternalSolverLanguage.g:656:2: (otherlv_0= 'equals' () ) 2538 // InternalSolverLanguage.g:923:2: (this_ConjunctiveExpression_0= ruleConjunctiveExpression ( ( () (otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) ) )+ ) | ( () otherlv_5= '->' ( (lv_body_6_0= ruleConjunctiveExpression ) ) () (otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) ) )* ) )? )
1896 // InternalSolverLanguage.g:657:3: otherlv_0= 'equals' () 2539 // InternalSolverLanguage.g:924:3: this_ConjunctiveExpression_0= ruleConjunctiveExpression ( ( () (otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) ) )+ ) | ( () otherlv_5= '->' ( (lv_body_6_0= ruleConjunctiveExpression ) ) () (otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) ) )* ) )?
1897 { 2540 {
1898 otherlv_0=(Token)match(input,22,FOLLOW_2); 2541 if ( state.backtracking==0 ) {
1899 2542
1900 newLeafNode(otherlv_0, grammarAccess.getEqualsSymbolAccess().getEqualsKeyword_0()); 2543 newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getConjunctiveExpressionParserRuleCall_0());
1901 2544
1902 // InternalSolverLanguage.g:661:3: () 2545 }
1903 // InternalSolverLanguage.g:662:4: 2546 pushFollow(FOLLOW_17);
1904 { 2547 this_ConjunctiveExpression_0=ruleConjunctiveExpression();
2548
2549 state._fsp--;
2550 if (state.failed) return current;
2551 if ( state.backtracking==0 ) {
2552
2553 current = this_ConjunctiveExpression_0;
2554 afterParserOrEnumRuleCall();
2555
2556 }
2557 // InternalSolverLanguage.g:932:3: ( ( () (otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) ) )+ ) | ( () otherlv_5= '->' ( (lv_body_6_0= ruleConjunctiveExpression ) ) () (otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) ) )* ) )?
2558 int alt11=3;
2559 int LA11_0 = input.LA(1);
2560
2561 if ( (LA11_0==26) ) {
2562 alt11=1;
2563 }
2564 else if ( (LA11_0==27) ) {
2565 alt11=2;
2566 }
2567 switch (alt11) {
2568 case 1 :
2569 // InternalSolverLanguage.g:933:4: ( () (otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) ) )+ )
2570 {
2571 // InternalSolverLanguage.g:933:4: ( () (otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) ) )+ )
2572 // InternalSolverLanguage.g:934:5: () (otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) ) )+
2573 {
2574 // InternalSolverLanguage.g:934:5: ()
2575 // InternalSolverLanguage.g:935:6:
2576 {
2577 if ( state.backtracking==0 ) {
2578
2579 current = forceCreateModelElementAndAdd(
2580 grammarAccess.getDisjunctiveExpressionAccess().getDisjunctionChildrenAction_1_0_0(),
2581 current);
2582
2583 }
2584
2585 }
2586
2587 // InternalSolverLanguage.g:941:5: (otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) ) )+
2588 int cnt9=0;
2589 loop9:
2590 do {
2591 int alt9=2;
2592 int LA9_0 = input.LA(1);
2593
2594 if ( (LA9_0==26) ) {
2595 alt9=1;
2596 }
2597
2598
2599 switch (alt9) {
2600 case 1 :
2601 // InternalSolverLanguage.g:942:6: otherlv_2= ';' ( (lv_children_3_0= ruleConjunctiveExpression ) )
2602 {
2603 otherlv_2=(Token)match(input,26,FOLLOW_6); if (state.failed) return current;
2604 if ( state.backtracking==0 ) {
2605
2606 newLeafNode(otherlv_2, grammarAccess.getDisjunctiveExpressionAccess().getSemicolonKeyword_1_0_1_0());
2607
2608 }
2609 // InternalSolverLanguage.g:946:6: ( (lv_children_3_0= ruleConjunctiveExpression ) )
2610 // InternalSolverLanguage.g:947:7: (lv_children_3_0= ruleConjunctiveExpression )
2611 {
2612 // InternalSolverLanguage.g:947:7: (lv_children_3_0= ruleConjunctiveExpression )
2613 // InternalSolverLanguage.g:948:8: lv_children_3_0= ruleConjunctiveExpression
2614 {
2615 if ( state.backtracking==0 ) {
2616
2617 newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getChildrenConjunctiveExpressionParserRuleCall_1_0_1_1_0());
2618
2619 }
2620 pushFollow(FOLLOW_18);
2621 lv_children_3_0=ruleConjunctiveExpression();
2622
2623 state._fsp--;
2624 if (state.failed) return current;
2625 if ( state.backtracking==0 ) {
2626
2627 if (current==null) {
2628 current = createModelElementForParent(grammarAccess.getDisjunctiveExpressionRule());
2629 }
2630 add(
2631 current,
2632 "children",
2633 lv_children_3_0,
2634 "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression");
2635 afterParserOrEnumRuleCall();
2636
2637 }
2638
2639 }
2640
2641
2642 }
2643
2644
2645 }
2646 break;
2647
2648 default :
2649 if ( cnt9 >= 1 ) break loop9;
2650 if (state.backtracking>0) {state.failed=true; return current;}
2651 EarlyExitException eee =
2652 new EarlyExitException(9, input);
2653 throw eee;
2654 }
2655 cnt9++;
2656 } while (true);
2657
2658
2659 }
2660
2661
2662 }
2663 break;
2664 case 2 :
2665 // InternalSolverLanguage.g:968:4: ( () otherlv_5= '->' ( (lv_body_6_0= ruleConjunctiveExpression ) ) () (otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) ) )* )
2666 {
2667 // InternalSolverLanguage.g:968:4: ( () otherlv_5= '->' ( (lv_body_6_0= ruleConjunctiveExpression ) ) () (otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) ) )* )
2668 // InternalSolverLanguage.g:969:5: () otherlv_5= '->' ( (lv_body_6_0= ruleConjunctiveExpression ) ) () (otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) ) )*
2669 {
2670 // InternalSolverLanguage.g:969:5: ()
2671 // InternalSolverLanguage.g:970:6:
2672 {
2673 if ( state.backtracking==0 ) {
2674
2675 current = forceCreateModelElementAndSet(
2676 grammarAccess.getDisjunctiveExpressionAccess().getCaseConditionAction_1_1_0(),
2677 current);
2678
2679 }
2680
2681 }
2682
2683 otherlv_5=(Token)match(input,27,FOLLOW_6); if (state.failed) return current;
2684 if ( state.backtracking==0 ) {
2685
2686 newLeafNode(otherlv_5, grammarAccess.getDisjunctiveExpressionAccess().getHyphenMinusGreaterThanSignKeyword_1_1_1());
2687
2688 }
2689 // InternalSolverLanguage.g:980:5: ( (lv_body_6_0= ruleConjunctiveExpression ) )
2690 // InternalSolverLanguage.g:981:6: (lv_body_6_0= ruleConjunctiveExpression )
2691 {
2692 // InternalSolverLanguage.g:981:6: (lv_body_6_0= ruleConjunctiveExpression )
2693 // InternalSolverLanguage.g:982:7: lv_body_6_0= ruleConjunctiveExpression
2694 {
2695 if ( state.backtracking==0 ) {
2696
2697 newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getBodyConjunctiveExpressionParserRuleCall_1_1_2_0());
2698
2699 }
2700 pushFollow(FOLLOW_18);
2701 lv_body_6_0=ruleConjunctiveExpression();
2702
2703 state._fsp--;
2704 if (state.failed) return current;
2705 if ( state.backtracking==0 ) {
2706
2707 if (current==null) {
2708 current = createModelElementForParent(grammarAccess.getDisjunctiveExpressionRule());
2709 }
2710 set(
2711 current,
2712 "body",
2713 lv_body_6_0,
2714 "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression");
2715 afterParserOrEnumRuleCall();
2716
2717 }
2718
2719 }
2720
2721
2722 }
2723
2724 // InternalSolverLanguage.g:999:5: ()
2725 // InternalSolverLanguage.g:1000:6:
2726 {
2727 if ( state.backtracking==0 ) {
2728
2729 current = forceCreateModelElementAndAdd(
2730 grammarAccess.getDisjunctiveExpressionAccess().getSwitchCasesAction_1_1_3(),
2731 current);
2732
2733 }
2734
2735 }
2736
2737 // InternalSolverLanguage.g:1006:5: (otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) ) )*
2738 loop10:
2739 do {
2740 int alt10=2;
2741 int LA10_0 = input.LA(1);
2742
2743 if ( (LA10_0==26) ) {
2744 alt10=1;
2745 }
2746
2747
2748 switch (alt10) {
2749 case 1 :
2750 // InternalSolverLanguage.g:1007:6: otherlv_8= ';' ( (lv_cases_9_0= ruleCase ) )
2751 {
2752 otherlv_8=(Token)match(input,26,FOLLOW_6); if (state.failed) return current;
2753 if ( state.backtracking==0 ) {
2754
2755 newLeafNode(otherlv_8, grammarAccess.getDisjunctiveExpressionAccess().getSemicolonKeyword_1_1_4_0());
2756
2757 }
2758 // InternalSolverLanguage.g:1011:6: ( (lv_cases_9_0= ruleCase ) )
2759 // InternalSolverLanguage.g:1012:7: (lv_cases_9_0= ruleCase )
2760 {
2761 // InternalSolverLanguage.g:1012:7: (lv_cases_9_0= ruleCase )
2762 // InternalSolverLanguage.g:1013:8: lv_cases_9_0= ruleCase
2763 {
2764 if ( state.backtracking==0 ) {
2765
2766 newCompositeNode(grammarAccess.getDisjunctiveExpressionAccess().getCasesCaseParserRuleCall_1_1_4_1_0());
2767
2768 }
2769 pushFollow(FOLLOW_18);
2770 lv_cases_9_0=ruleCase();
2771
2772 state._fsp--;
2773 if (state.failed) return current;
2774 if ( state.backtracking==0 ) {
2775
2776 if (current==null) {
2777 current = createModelElementForParent(grammarAccess.getDisjunctiveExpressionRule());
2778 }
2779 add(
2780 current,
2781 "cases",
2782 lv_cases_9_0,
2783 "org.eclipse.viatra.solver.language.SolverLanguage.Case");
2784 afterParserOrEnumRuleCall();
2785
2786 }
2787
2788 }
2789
2790
2791 }
2792
2793
2794 }
2795 break;
2796
2797 default :
2798 break loop10;
2799 }
2800 } while (true);
1905 2801
1906 current = forceCreateModelElement( 2802
1907 grammarAccess.getEqualsSymbolAccess().getEqualsSymbolAction_1(), 2803 }
1908 current); 2804
1909 2805
2806 }
2807 break;
1910 2808
1911 } 2809 }
1912 2810
@@ -1916,9 +2814,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1916 2814
1917 } 2815 }
1918 2816
2817 if ( state.backtracking==0 ) {
1919 2818
1920 leaveRule(); 2819 leaveRule();
1921 2820
2821 }
1922 } 2822 }
1923 2823
1924 catch (RecognitionException re) { 2824 catch (RecognitionException re) {
@@ -1929,32 +2829,157 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1929 } 2829 }
1930 return current; 2830 return current;
1931 } 2831 }
1932 // $ANTLR end "ruleEqualsSymbol" 2832 // $ANTLR end "ruleDisjunctiveExpression"
1933 2833
1934 2834
1935 // $ANTLR start "entryRuleDataSymbol" 2835 // $ANTLR start "entryRuleCase"
1936 // InternalSolverLanguage.g:672:1: entryRuleDataSymbol returns [EObject current=null] : iv_ruleDataSymbol= ruleDataSymbol EOF ; 2836 // InternalSolverLanguage.g:1037:1: entryRuleCase returns [EObject current=null] : iv_ruleCase= ruleCase EOF ;
1937 public final EObject entryRuleDataSymbol() throws RecognitionException { 2837 public final EObject entryRuleCase() throws RecognitionException {
1938 EObject current = null; 2838 EObject current = null;
1939 2839
1940 EObject iv_ruleDataSymbol = null; 2840 EObject iv_ruleCase = null;
1941 2841
1942 2842
1943 try { 2843 try {
1944 // InternalSolverLanguage.g:672:51: (iv_ruleDataSymbol= ruleDataSymbol EOF ) 2844 // InternalSolverLanguage.g:1037:45: (iv_ruleCase= ruleCase EOF )
1945 // InternalSolverLanguage.g:673:2: iv_ruleDataSymbol= ruleDataSymbol EOF 2845 // InternalSolverLanguage.g:1038:2: iv_ruleCase= ruleCase EOF
1946 { 2846 {
1947 newCompositeNode(grammarAccess.getDataSymbolRule()); 2847 if ( state.backtracking==0 ) {
2848 newCompositeNode(grammarAccess.getCaseRule());
2849 }
1948 pushFollow(FOLLOW_1); 2850 pushFollow(FOLLOW_1);
1949 iv_ruleDataSymbol=ruleDataSymbol(); 2851 iv_ruleCase=ruleCase();
2852
2853 state._fsp--;
2854 if (state.failed) return current;
2855 if ( state.backtracking==0 ) {
2856 current =iv_ruleCase;
2857 }
2858 match(input,EOF,FOLLOW_2); if (state.failed) return current;
2859
2860 }
2861
2862 }
2863
2864 catch (RecognitionException re) {
2865 recover(input,re);
2866 appendSkippedTokens();
2867 }
2868 finally {
2869 }
2870 return current;
2871 }
2872 // $ANTLR end "entryRuleCase"
2873
2874
2875 // $ANTLR start "ruleCase"
2876 // InternalSolverLanguage.g:1044:1: ruleCase returns [EObject current=null] : ( ( (lv_condition_0_0= ruleConjunctiveExpression ) ) otherlv_1= '->' ( (lv_body_2_0= ruleConjunctiveExpression ) ) ) ;
2877 public final EObject ruleCase() throws RecognitionException {
2878 EObject current = null;
2879
2880 Token otherlv_1=null;
2881 EObject lv_condition_0_0 = null;
2882
2883 EObject lv_body_2_0 = null;
2884
2885
2886
2887 enterRule();
2888
2889 try {
2890 // InternalSolverLanguage.g:1050:2: ( ( ( (lv_condition_0_0= ruleConjunctiveExpression ) ) otherlv_1= '->' ( (lv_body_2_0= ruleConjunctiveExpression ) ) ) )
2891 // InternalSolverLanguage.g:1051:2: ( ( (lv_condition_0_0= ruleConjunctiveExpression ) ) otherlv_1= '->' ( (lv_body_2_0= ruleConjunctiveExpression ) ) )
2892 {
2893 // InternalSolverLanguage.g:1051:2: ( ( (lv_condition_0_0= ruleConjunctiveExpression ) ) otherlv_1= '->' ( (lv_body_2_0= ruleConjunctiveExpression ) ) )
2894 // InternalSolverLanguage.g:1052:3: ( (lv_condition_0_0= ruleConjunctiveExpression ) ) otherlv_1= '->' ( (lv_body_2_0= ruleConjunctiveExpression ) )
2895 {
2896 // InternalSolverLanguage.g:1052:3: ( (lv_condition_0_0= ruleConjunctiveExpression ) )
2897 // InternalSolverLanguage.g:1053:4: (lv_condition_0_0= ruleConjunctiveExpression )
2898 {
2899 // InternalSolverLanguage.g:1053:4: (lv_condition_0_0= ruleConjunctiveExpression )
2900 // InternalSolverLanguage.g:1054:5: lv_condition_0_0= ruleConjunctiveExpression
2901 {
2902 if ( state.backtracking==0 ) {
2903
2904 newCompositeNode(grammarAccess.getCaseAccess().getConditionConjunctiveExpressionParserRuleCall_0_0());
2905
2906 }
2907 pushFollow(FOLLOW_19);
2908 lv_condition_0_0=ruleConjunctiveExpression();
1950 2909
1951 state._fsp--; 2910 state._fsp--;
2911 if (state.failed) return current;
2912 if ( state.backtracking==0 ) {
2913
2914 if (current==null) {
2915 current = createModelElementForParent(grammarAccess.getCaseRule());
2916 }
2917 set(
2918 current,
2919 "condition",
2920 lv_condition_0_0,
2921 "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression");
2922 afterParserOrEnumRuleCall();
2923
2924 }
2925
2926 }
2927
2928
2929 }
1952 2930
1953 current =iv_ruleDataSymbol; 2931 otherlv_1=(Token)match(input,27,FOLLOW_6); if (state.failed) return current;
1954 match(input,EOF,FOLLOW_2); 2932 if ( state.backtracking==0 ) {
1955 2933
2934 newLeafNode(otherlv_1, grammarAccess.getCaseAccess().getHyphenMinusGreaterThanSignKeyword_1());
2935
1956 } 2936 }
2937 // InternalSolverLanguage.g:1075:3: ( (lv_body_2_0= ruleConjunctiveExpression ) )
2938 // InternalSolverLanguage.g:1076:4: (lv_body_2_0= ruleConjunctiveExpression )
2939 {
2940 // InternalSolverLanguage.g:1076:4: (lv_body_2_0= ruleConjunctiveExpression )
2941 // InternalSolverLanguage.g:1077:5: lv_body_2_0= ruleConjunctiveExpression
2942 {
2943 if ( state.backtracking==0 ) {
2944
2945 newCompositeNode(grammarAccess.getCaseAccess().getBodyConjunctiveExpressionParserRuleCall_2_0());
2946
2947 }
2948 pushFollow(FOLLOW_2);
2949 lv_body_2_0=ruleConjunctiveExpression();
2950
2951 state._fsp--;
2952 if (state.failed) return current;
2953 if ( state.backtracking==0 ) {
1957 2954
2955 if (current==null) {
2956 current = createModelElementForParent(grammarAccess.getCaseRule());
2957 }
2958 set(
2959 current,
2960 "body",
2961 lv_body_2_0,
2962 "org.eclipse.viatra.solver.language.SolverLanguage.ConjunctiveExpression");
2963 afterParserOrEnumRuleCall();
2964
2965 }
2966
2967 }
2968
2969
2970 }
2971
2972
2973 }
2974
2975
2976 }
2977
2978 if ( state.backtracking==0 ) {
2979
2980 leaveRule();
2981
2982 }
1958 } 2983 }
1959 2984
1960 catch (RecognitionException re) { 2985 catch (RecognitionException re) {
@@ -1965,130 +2990,181 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
1965 } 2990 }
1966 return current; 2991 return current;
1967 } 2992 }
1968 // $ANTLR end "entryRuleDataSymbol" 2993 // $ANTLR end "ruleCase"
1969 2994
1970 2995
1971 // $ANTLR start "ruleDataSymbol" 2996 // $ANTLR start "entryRuleConjunctiveExpression"
1972 // InternalSolverLanguage.g:679:1: ruleDataSymbol returns [EObject current=null] : (this_BooleanSymbol_0= ruleBooleanSymbol | this_IntegerSymbol_1= ruleIntegerSymbol | this_RealSymbol_2= ruleRealSymbol | this_StringSymbol_3= ruleStringSymbol ) ; 2997 // InternalSolverLanguage.g:1098:1: entryRuleConjunctiveExpression returns [EObject current=null] : iv_ruleConjunctiveExpression= ruleConjunctiveExpression EOF ;
1973 public final EObject ruleDataSymbol() throws RecognitionException { 2998 public final EObject entryRuleConjunctiveExpression() throws RecognitionException {
1974 EObject current = null; 2999 EObject current = null;
1975 3000
1976 EObject this_BooleanSymbol_0 = null; 3001 EObject iv_ruleConjunctiveExpression = null;
1977 3002
1978 EObject this_IntegerSymbol_1 = null;
1979 3003
1980 EObject this_RealSymbol_2 = null; 3004 try {
3005 // InternalSolverLanguage.g:1098:62: (iv_ruleConjunctiveExpression= ruleConjunctiveExpression EOF )
3006 // InternalSolverLanguage.g:1099:2: iv_ruleConjunctiveExpression= ruleConjunctiveExpression EOF
3007 {
3008 if ( state.backtracking==0 ) {
3009 newCompositeNode(grammarAccess.getConjunctiveExpressionRule());
3010 }
3011 pushFollow(FOLLOW_1);
3012 iv_ruleConjunctiveExpression=ruleConjunctiveExpression();
1981 3013
1982 EObject this_StringSymbol_3 = null; 3014 state._fsp--;
3015 if (state.failed) return current;
3016 if ( state.backtracking==0 ) {
3017 current =iv_ruleConjunctiveExpression;
3018 }
3019 match(input,EOF,FOLLOW_2); if (state.failed) return current;
3020
3021 }
3022
3023 }
3024
3025 catch (RecognitionException re) {
3026 recover(input,re);
3027 appendSkippedTokens();
3028 }
3029 finally {
3030 }
3031 return current;
3032 }
3033 // $ANTLR end "entryRuleConjunctiveExpression"
3034
3035
3036 // $ANTLR start "ruleConjunctiveExpression"
3037 // InternalSolverLanguage.g:1105:1: ruleConjunctiveExpression returns [EObject current=null] : (this_ComparisonExpression_0= ruleComparisonExpression ( () (otherlv_2= ',' ( (lv_children_3_0= ruleComparisonExpression ) ) )+ )? ) ;
3038 public final EObject ruleConjunctiveExpression() throws RecognitionException {
3039 EObject current = null;
3040
3041 Token otherlv_2=null;
3042 EObject this_ComparisonExpression_0 = null;
3043
3044 EObject lv_children_3_0 = null;
1983 3045
1984 3046
1985 3047
1986 enterRule(); 3048 enterRule();
1987 3049
1988 try { 3050 try {
1989 // InternalSolverLanguage.g:685:2: ( (this_BooleanSymbol_0= ruleBooleanSymbol | this_IntegerSymbol_1= ruleIntegerSymbol | this_RealSymbol_2= ruleRealSymbol | this_StringSymbol_3= ruleStringSymbol ) ) 3051 // InternalSolverLanguage.g:1111:2: ( (this_ComparisonExpression_0= ruleComparisonExpression ( () (otherlv_2= ',' ( (lv_children_3_0= ruleComparisonExpression ) ) )+ )? ) )
1990 // InternalSolverLanguage.g:686:2: (this_BooleanSymbol_0= ruleBooleanSymbol | this_IntegerSymbol_1= ruleIntegerSymbol | this_RealSymbol_2= ruleRealSymbol | this_StringSymbol_3= ruleStringSymbol ) 3052 // InternalSolverLanguage.g:1112:2: (this_ComparisonExpression_0= ruleComparisonExpression ( () (otherlv_2= ',' ( (lv_children_3_0= ruleComparisonExpression ) ) )+ )? )
1991 { 3053 {
1992 // InternalSolverLanguage.g:686:2: (this_BooleanSymbol_0= ruleBooleanSymbol | this_IntegerSymbol_1= ruleIntegerSymbol | this_RealSymbol_2= ruleRealSymbol | this_StringSymbol_3= ruleStringSymbol ) 3054 // InternalSolverLanguage.g:1112:2: (this_ComparisonExpression_0= ruleComparisonExpression ( () (otherlv_2= ',' ( (lv_children_3_0= ruleComparisonExpression ) ) )+ )? )
1993 int alt13=4; 3055 // InternalSolverLanguage.g:1113:3: this_ComparisonExpression_0= ruleComparisonExpression ( () (otherlv_2= ',' ( (lv_children_3_0= ruleComparisonExpression ) ) )+ )?
1994 switch ( input.LA(1) ) { 3056 {
1995 case 23: 3057 if ( state.backtracking==0 ) {
1996 {
1997 alt13=1;
1998 }
1999 break;
2000 case 24:
2001 {
2002 alt13=2;
2003 }
2004 break;
2005 case 25:
2006 {
2007 alt13=3;
2008 }
2009 break;
2010 case 26:
2011 {
2012 alt13=4;
2013 }
2014 break;
2015 default:
2016 NoViableAltException nvae =
2017 new NoViableAltException("", 13, 0, input);
2018 3058
2019 throw nvae; 3059 newCompositeNode(grammarAccess.getConjunctiveExpressionAccess().getComparisonExpressionParserRuleCall_0());
3060
2020 } 3061 }
3062 pushFollow(FOLLOW_20);
3063 this_ComparisonExpression_0=ruleComparisonExpression();
3064
3065 state._fsp--;
3066 if (state.failed) return current;
3067 if ( state.backtracking==0 ) {
3068
3069 current = this_ComparisonExpression_0;
3070 afterParserOrEnumRuleCall();
3071
3072 }
3073 // InternalSolverLanguage.g:1121:3: ( () (otherlv_2= ',' ( (lv_children_3_0= ruleComparisonExpression ) ) )+ )?
3074 int alt13=2;
3075 int LA13_0 = input.LA(1);
2021 3076
3077 if ( (LA13_0==28) ) {
3078 alt13=1;
3079 }
2022 switch (alt13) { 3080 switch (alt13) {
2023 case 1 : 3081 case 1 :
2024 // InternalSolverLanguage.g:687:3: this_BooleanSymbol_0= ruleBooleanSymbol 3082 // InternalSolverLanguage.g:1122:4: () (otherlv_2= ',' ( (lv_children_3_0= ruleComparisonExpression ) ) )+
2025 { 3083 {
3084 // InternalSolverLanguage.g:1122:4: ()
3085 // InternalSolverLanguage.g:1123:5:
3086 {
3087 if ( state.backtracking==0 ) {
2026 3088
2027 newCompositeNode(grammarAccess.getDataSymbolAccess().getBooleanSymbolParserRuleCall_0()); 3089 current = forceCreateModelElementAndAdd(
2028 3090 grammarAccess.getConjunctiveExpressionAccess().getConjunctionChildrenAction_1_0(),
2029 pushFollow(FOLLOW_2); 3091 current);
2030 this_BooleanSymbol_0=ruleBooleanSymbol(); 3092
2031 3093 }
2032 state._fsp--;
2033
2034
2035 current = this_BooleanSymbol_0;
2036 afterParserOrEnumRuleCall();
2037
2038 3094
2039 } 3095 }
2040 break;
2041 case 2 :
2042 // InternalSolverLanguage.g:696:3: this_IntegerSymbol_1= ruleIntegerSymbol
2043 {
2044 3096
2045 newCompositeNode(grammarAccess.getDataSymbolAccess().getIntegerSymbolParserRuleCall_1()); 3097 // InternalSolverLanguage.g:1129:4: (otherlv_2= ',' ( (lv_children_3_0= ruleComparisonExpression ) ) )+
2046 3098 int cnt12=0;
2047 pushFollow(FOLLOW_2); 3099 loop12:
2048 this_IntegerSymbol_1=ruleIntegerSymbol(); 3100 do {
3101 int alt12=2;
3102 int LA12_0 = input.LA(1);
2049 3103
2050 state._fsp--; 3104 if ( (LA12_0==28) ) {
3105 alt12=1;
3106 }
2051 3107
2052 3108
2053 current = this_IntegerSymbol_1; 3109 switch (alt12) {
2054 afterParserOrEnumRuleCall(); 3110 case 1 :
2055 3111 // InternalSolverLanguage.g:1130:5: otherlv_2= ',' ( (lv_children_3_0= ruleComparisonExpression ) )
3112 {
3113 otherlv_2=(Token)match(input,28,FOLLOW_6); if (state.failed) return current;
3114 if ( state.backtracking==0 ) {
2056 3115
2057 } 3116 newLeafNode(otherlv_2, grammarAccess.getConjunctiveExpressionAccess().getCommaKeyword_1_1_0());
2058 break; 3117
2059 case 3 : 3118 }
2060 // InternalSolverLanguage.g:705:3: this_RealSymbol_2= ruleRealSymbol 3119 // InternalSolverLanguage.g:1134:5: ( (lv_children_3_0= ruleComparisonExpression ) )
2061 { 3120 // InternalSolverLanguage.g:1135:6: (lv_children_3_0= ruleComparisonExpression )
3121 {
3122 // InternalSolverLanguage.g:1135:6: (lv_children_3_0= ruleComparisonExpression )
3123 // InternalSolverLanguage.g:1136:7: lv_children_3_0= ruleComparisonExpression
3124 {
3125 if ( state.backtracking==0 ) {
2062 3126
2063 newCompositeNode(grammarAccess.getDataSymbolAccess().getRealSymbolParserRuleCall_2()); 3127 newCompositeNode(grammarAccess.getConjunctiveExpressionAccess().getChildrenComparisonExpressionParserRuleCall_1_1_1_0());
2064 3128
2065 pushFollow(FOLLOW_2); 3129 }
2066 this_RealSymbol_2=ruleRealSymbol(); 3130 pushFollow(FOLLOW_20);
3131 lv_children_3_0=ruleComparisonExpression();
2067 3132
2068 state._fsp--; 3133 state._fsp--;
3134 if (state.failed) return current;
3135 if ( state.backtracking==0 ) {
3136
3137 if (current==null) {
3138 current = createModelElementForParent(grammarAccess.getConjunctiveExpressionRule());
3139 }
3140 add(
3141 current,
3142 "children",
3143 lv_children_3_0,
3144 "org.eclipse.viatra.solver.language.SolverLanguage.ComparisonExpression");
3145 afterParserOrEnumRuleCall();
3146
3147 }
2069 3148
3149 }
2070 3150
2071 current = this_RealSymbol_2;
2072 afterParserOrEnumRuleCall();
2073
2074 3151
2075 } 3152 }
2076 break;
2077 case 4 :
2078 // InternalSolverLanguage.g:714:3: this_StringSymbol_3= ruleStringSymbol
2079 {
2080 3153
2081 newCompositeNode(grammarAccess.getDataSymbolAccess().getStringSymbolParserRuleCall_3());
2082
2083 pushFollow(FOLLOW_2);
2084 this_StringSymbol_3=ruleStringSymbol();
2085 3154
2086 state._fsp--; 3155 }
3156 break;
2087 3157
3158 default :
3159 if ( cnt12 >= 1 ) break loop12;
3160 if (state.backtracking>0) {state.failed=true; return current;}
3161 EarlyExitException eee =
3162 new EarlyExitException(12, input);
3163 throw eee;
3164 }
3165 cnt12++;
3166 } while (true);
2088 3167
2089 current = this_StringSymbol_3;
2090 afterParserOrEnumRuleCall();
2091
2092 3168
2093 } 3169 }
2094 break; 3170 break;
@@ -2099,8 +3175,13 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2099 } 3175 }
2100 3176
2101 3177
2102 leaveRule(); 3178 }
3179
3180 if ( state.backtracking==0 ) {
3181
3182 leaveRule();
2103 3183
3184 }
2104 } 3185 }
2105 3186
2106 catch (RecognitionException re) { 3187 catch (RecognitionException re) {
@@ -2111,29 +3192,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2111 } 3192 }
2112 return current; 3193 return current;
2113 } 3194 }
2114 // $ANTLR end "ruleDataSymbol" 3195 // $ANTLR end "ruleConjunctiveExpression"
2115 3196
2116 3197
2117 // $ANTLR start "entryRuleBooleanSymbol" 3198 // $ANTLR start "entryRuleComparisonExpression"
2118 // InternalSolverLanguage.g:726:1: entryRuleBooleanSymbol returns [EObject current=null] : iv_ruleBooleanSymbol= ruleBooleanSymbol EOF ; 3199 // InternalSolverLanguage.g:1159:1: entryRuleComparisonExpression returns [EObject current=null] : iv_ruleComparisonExpression= ruleComparisonExpression EOF ;
2119 public final EObject entryRuleBooleanSymbol() throws RecognitionException { 3200 public final EObject entryRuleComparisonExpression() throws RecognitionException {
2120 EObject current = null; 3201 EObject current = null;
2121 3202
2122 EObject iv_ruleBooleanSymbol = null; 3203 EObject iv_ruleComparisonExpression = null;
2123 3204
2124 3205
2125 try { 3206 try {
2126 // InternalSolverLanguage.g:726:54: (iv_ruleBooleanSymbol= ruleBooleanSymbol EOF ) 3207 // InternalSolverLanguage.g:1159:61: (iv_ruleComparisonExpression= ruleComparisonExpression EOF )
2127 // InternalSolverLanguage.g:727:2: iv_ruleBooleanSymbol= ruleBooleanSymbol EOF 3208 // InternalSolverLanguage.g:1160:2: iv_ruleComparisonExpression= ruleComparisonExpression EOF
2128 { 3209 {
2129 newCompositeNode(grammarAccess.getBooleanSymbolRule()); 3210 if ( state.backtracking==0 ) {
3211 newCompositeNode(grammarAccess.getComparisonExpressionRule());
3212 }
2130 pushFollow(FOLLOW_1); 3213 pushFollow(FOLLOW_1);
2131 iv_ruleBooleanSymbol=ruleBooleanSymbol(); 3214 iv_ruleComparisonExpression=ruleComparisonExpression();
2132 3215
2133 state._fsp--; 3216 state._fsp--;
2134 3217 if (state.failed) return current;
2135 current =iv_ruleBooleanSymbol; 3218 if ( state.backtracking==0 ) {
2136 match(input,EOF,FOLLOW_2); 3219 current =iv_ruleComparisonExpression;
3220 }
3221 match(input,EOF,FOLLOW_2); if (state.failed) return current;
2137 3222
2138 } 3223 }
2139 3224
@@ -2147,41 +3232,144 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2147 } 3232 }
2148 return current; 3233 return current;
2149 } 3234 }
2150 // $ANTLR end "entryRuleBooleanSymbol" 3235 // $ANTLR end "entryRuleComparisonExpression"
2151 3236
2152 3237
2153 // $ANTLR start "ruleBooleanSymbol" 3238 // $ANTLR start "ruleComparisonExpression"
2154 // InternalSolverLanguage.g:733:1: ruleBooleanSymbol returns [EObject current=null] : (otherlv_0= 'bool' () ) ; 3239 // InternalSolverLanguage.g:1166:1: ruleComparisonExpression returns [EObject current=null] : (this_AdditiveExpression_0= ruleAdditiveExpression ( () ( (lv_op_2_0= ruleComparisonOperator ) ) ( (lv_right_3_0= ruleAdditiveExpression ) ) )? ) ;
2155 public final EObject ruleBooleanSymbol() throws RecognitionException { 3240 public final EObject ruleComparisonExpression() throws RecognitionException {
2156 EObject current = null; 3241 EObject current = null;
2157 3242
2158 Token otherlv_0=null; 3243 EObject this_AdditiveExpression_0 = null;
3244
3245 Enumerator lv_op_2_0 = null;
3246
3247 EObject lv_right_3_0 = null;
3248
2159 3249
2160 3250
2161 enterRule(); 3251 enterRule();
2162 3252
2163 try { 3253 try {
2164 // InternalSolverLanguage.g:739:2: ( (otherlv_0= 'bool' () ) ) 3254 // InternalSolverLanguage.g:1172:2: ( (this_AdditiveExpression_0= ruleAdditiveExpression ( () ( (lv_op_2_0= ruleComparisonOperator ) ) ( (lv_right_3_0= ruleAdditiveExpression ) ) )? ) )
2165 // InternalSolverLanguage.g:740:2: (otherlv_0= 'bool' () ) 3255 // InternalSolverLanguage.g:1173:2: (this_AdditiveExpression_0= ruleAdditiveExpression ( () ( (lv_op_2_0= ruleComparisonOperator ) ) ( (lv_right_3_0= ruleAdditiveExpression ) ) )? )
2166 { 3256 {
2167 // InternalSolverLanguage.g:740:2: (otherlv_0= 'bool' () ) 3257 // InternalSolverLanguage.g:1173:2: (this_AdditiveExpression_0= ruleAdditiveExpression ( () ( (lv_op_2_0= ruleComparisonOperator ) ) ( (lv_right_3_0= ruleAdditiveExpression ) ) )? )
2168 // InternalSolverLanguage.g:741:3: otherlv_0= 'bool' () 3258 // InternalSolverLanguage.g:1174:3: this_AdditiveExpression_0= ruleAdditiveExpression ( () ( (lv_op_2_0= ruleComparisonOperator ) ) ( (lv_right_3_0= ruleAdditiveExpression ) ) )?
2169 { 3259 {
2170 otherlv_0=(Token)match(input,23,FOLLOW_2); 3260 if ( state.backtracking==0 ) {
2171 3261
2172 newLeafNode(otherlv_0, grammarAccess.getBooleanSymbolAccess().getBoolKeyword_0()); 3262 newCompositeNode(grammarAccess.getComparisonExpressionAccess().getAdditiveExpressionParserRuleCall_0());
2173 3263
2174 // InternalSolverLanguage.g:745:3: () 3264 }
2175 // InternalSolverLanguage.g:746:4: 3265 pushFollow(FOLLOW_21);
2176 { 3266 this_AdditiveExpression_0=ruleAdditiveExpression();
3267
3268 state._fsp--;
3269 if (state.failed) return current;
3270 if ( state.backtracking==0 ) {
2177 3271
2178 current = forceCreateModelElement( 3272 current = this_AdditiveExpression_0;
2179 grammarAccess.getBooleanSymbolAccess().getBooleanSymbolAction_1(), 3273 afterParserOrEnumRuleCall();
2180 current); 3274
2181 3275 }
3276 // InternalSolverLanguage.g:1182:3: ( () ( (lv_op_2_0= ruleComparisonOperator ) ) ( (lv_right_3_0= ruleAdditiveExpression ) ) )?
3277 int alt14=2;
3278 int LA14_0 = input.LA(1);
2182 3279
3280 if ( ((LA14_0>=47 && LA14_0<=49)||(LA14_0>=52 && LA14_0<=55)) ) {
3281 alt14=1;
2183 } 3282 }
3283 switch (alt14) {
3284 case 1 :
3285 // InternalSolverLanguage.g:1183:4: () ( (lv_op_2_0= ruleComparisonOperator ) ) ( (lv_right_3_0= ruleAdditiveExpression ) )
3286 {
3287 // InternalSolverLanguage.g:1183:4: ()
3288 // InternalSolverLanguage.g:1184:5:
3289 {
3290 if ( state.backtracking==0 ) {
3291
3292 current = forceCreateModelElementAndSet(
3293 grammarAccess.getComparisonExpressionAccess().getComparisonLeftAction_1_0(),
3294 current);
3295
3296 }
3297
3298 }
2184 3299
3300 // InternalSolverLanguage.g:1190:4: ( (lv_op_2_0= ruleComparisonOperator ) )
3301 // InternalSolverLanguage.g:1191:5: (lv_op_2_0= ruleComparisonOperator )
3302 {
3303 // InternalSolverLanguage.g:1191:5: (lv_op_2_0= ruleComparisonOperator )
3304 // InternalSolverLanguage.g:1192:6: lv_op_2_0= ruleComparisonOperator
3305 {
3306 if ( state.backtracking==0 ) {
3307
3308 newCompositeNode(grammarAccess.getComparisonExpressionAccess().getOpComparisonOperatorEnumRuleCall_1_1_0());
3309
3310 }
3311 pushFollow(FOLLOW_6);
3312 lv_op_2_0=ruleComparisonOperator();
3313
3314 state._fsp--;
3315 if (state.failed) return current;
3316 if ( state.backtracking==0 ) {
3317
3318 if (current==null) {
3319 current = createModelElementForParent(grammarAccess.getComparisonExpressionRule());
3320 }
3321 set(
3322 current,
3323 "op",
3324 lv_op_2_0,
3325 "org.eclipse.viatra.solver.language.SolverLanguage.ComparisonOperator");
3326 afterParserOrEnumRuleCall();
3327
3328 }
3329
3330 }
3331
3332
3333 }
3334
3335 // InternalSolverLanguage.g:1209:4: ( (lv_right_3_0= ruleAdditiveExpression ) )
3336 // InternalSolverLanguage.g:1210:5: (lv_right_3_0= ruleAdditiveExpression )
3337 {
3338 // InternalSolverLanguage.g:1210:5: (lv_right_3_0= ruleAdditiveExpression )
3339 // InternalSolverLanguage.g:1211:6: lv_right_3_0= ruleAdditiveExpression
3340 {
3341 if ( state.backtracking==0 ) {
3342
3343 newCompositeNode(grammarAccess.getComparisonExpressionAccess().getRightAdditiveExpressionParserRuleCall_1_2_0());
3344
3345 }
3346 pushFollow(FOLLOW_2);
3347 lv_right_3_0=ruleAdditiveExpression();
3348
3349 state._fsp--;
3350 if (state.failed) return current;
3351 if ( state.backtracking==0 ) {
3352
3353 if (current==null) {
3354 current = createModelElementForParent(grammarAccess.getComparisonExpressionRule());
3355 }
3356 set(
3357 current,
3358 "right",
3359 lv_right_3_0,
3360 "org.eclipse.viatra.solver.language.SolverLanguage.AdditiveExpression");
3361 afterParserOrEnumRuleCall();
3362
3363 }
3364
3365 }
3366
3367
3368 }
3369
3370
3371 }
3372 break;
2185 3373
2186 } 3374 }
2187 3375
@@ -2189,8 +3377,13 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2189 } 3377 }
2190 3378
2191 3379
2192 leaveRule(); 3380 }
3381
3382 if ( state.backtracking==0 ) {
2193 3383
3384 leaveRule();
3385
3386 }
2194 } 3387 }
2195 3388
2196 catch (RecognitionException re) { 3389 catch (RecognitionException re) {
@@ -2201,29 +3394,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2201 } 3394 }
2202 return current; 3395 return current;
2203 } 3396 }
2204 // $ANTLR end "ruleBooleanSymbol" 3397 // $ANTLR end "ruleComparisonExpression"
2205 3398
2206 3399
2207 // $ANTLR start "entryRuleIntegerSymbol" 3400 // $ANTLR start "entryRuleAdditiveExpression"
2208 // InternalSolverLanguage.g:756:1: entryRuleIntegerSymbol returns [EObject current=null] : iv_ruleIntegerSymbol= ruleIntegerSymbol EOF ; 3401 // InternalSolverLanguage.g:1233:1: entryRuleAdditiveExpression returns [EObject current=null] : iv_ruleAdditiveExpression= ruleAdditiveExpression EOF ;
2209 public final EObject entryRuleIntegerSymbol() throws RecognitionException { 3402 public final EObject entryRuleAdditiveExpression() throws RecognitionException {
2210 EObject current = null; 3403 EObject current = null;
2211 3404
2212 EObject iv_ruleIntegerSymbol = null; 3405 EObject iv_ruleAdditiveExpression = null;
2213 3406
2214 3407
2215 try { 3408 try {
2216 // InternalSolverLanguage.g:756:54: (iv_ruleIntegerSymbol= ruleIntegerSymbol EOF ) 3409 // InternalSolverLanguage.g:1233:59: (iv_ruleAdditiveExpression= ruleAdditiveExpression EOF )
2217 // InternalSolverLanguage.g:757:2: iv_ruleIntegerSymbol= ruleIntegerSymbol EOF 3410 // InternalSolverLanguage.g:1234:2: iv_ruleAdditiveExpression= ruleAdditiveExpression EOF
2218 { 3411 {
2219 newCompositeNode(grammarAccess.getIntegerSymbolRule()); 3412 if ( state.backtracking==0 ) {
3413 newCompositeNode(grammarAccess.getAdditiveExpressionRule());
3414 }
2220 pushFollow(FOLLOW_1); 3415 pushFollow(FOLLOW_1);
2221 iv_ruleIntegerSymbol=ruleIntegerSymbol(); 3416 iv_ruleAdditiveExpression=ruleAdditiveExpression();
2222 3417
2223 state._fsp--; 3418 state._fsp--;
2224 3419 if (state.failed) return current;
2225 current =iv_ruleIntegerSymbol; 3420 if ( state.backtracking==0 ) {
2226 match(input,EOF,FOLLOW_2); 3421 current =iv_ruleAdditiveExpression;
3422 }
3423 match(input,EOF,FOLLOW_2); if (state.failed) return current;
2227 3424
2228 } 3425 }
2229 3426
@@ -2237,40 +3434,153 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2237 } 3434 }
2238 return current; 3435 return current;
2239 } 3436 }
2240 // $ANTLR end "entryRuleIntegerSymbol" 3437 // $ANTLR end "entryRuleAdditiveExpression"
2241 3438
2242 3439
2243 // $ANTLR start "ruleIntegerSymbol" 3440 // $ANTLR start "ruleAdditiveExpression"
2244 // InternalSolverLanguage.g:763:1: ruleIntegerSymbol returns [EObject current=null] : (otherlv_0= 'int' () ) ; 3441 // InternalSolverLanguage.g:1240:1: ruleAdditiveExpression returns [EObject current=null] : (this_MultiplicativeExpression_0= ruleMultiplicativeExpression ( () ( (lv_op_2_0= ruleAdditiveBinaryOperator ) ) ( (lv_right_3_0= ruleMultiplicativeExpression ) ) )* ) ;
2245 public final EObject ruleIntegerSymbol() throws RecognitionException { 3442 public final EObject ruleAdditiveExpression() throws RecognitionException {
2246 EObject current = null; 3443 EObject current = null;
2247 3444
2248 Token otherlv_0=null; 3445 EObject this_MultiplicativeExpression_0 = null;
3446
3447 Enumerator lv_op_2_0 = null;
3448
3449 EObject lv_right_3_0 = null;
3450
2249 3451
2250 3452
2251 enterRule(); 3453 enterRule();
2252 3454
2253 try { 3455 try {
2254 // InternalSolverLanguage.g:769:2: ( (otherlv_0= 'int' () ) ) 3456 // InternalSolverLanguage.g:1246:2: ( (this_MultiplicativeExpression_0= ruleMultiplicativeExpression ( () ( (lv_op_2_0= ruleAdditiveBinaryOperator ) ) ( (lv_right_3_0= ruleMultiplicativeExpression ) ) )* ) )
2255 // InternalSolverLanguage.g:770:2: (otherlv_0= 'int' () ) 3457 // InternalSolverLanguage.g:1247:2: (this_MultiplicativeExpression_0= ruleMultiplicativeExpression ( () ( (lv_op_2_0= ruleAdditiveBinaryOperator ) ) ( (lv_right_3_0= ruleMultiplicativeExpression ) ) )* )
2256 { 3458 {
2257 // InternalSolverLanguage.g:770:2: (otherlv_0= 'int' () ) 3459 // InternalSolverLanguage.g:1247:2: (this_MultiplicativeExpression_0= ruleMultiplicativeExpression ( () ( (lv_op_2_0= ruleAdditiveBinaryOperator ) ) ( (lv_right_3_0= ruleMultiplicativeExpression ) ) )* )
2258 // InternalSolverLanguage.g:771:3: otherlv_0= 'int' () 3460 // InternalSolverLanguage.g:1248:3: this_MultiplicativeExpression_0= ruleMultiplicativeExpression ( () ( (lv_op_2_0= ruleAdditiveBinaryOperator ) ) ( (lv_right_3_0= ruleMultiplicativeExpression ) ) )*
2259 { 3461 {
2260 otherlv_0=(Token)match(input,24,FOLLOW_2); 3462 if ( state.backtracking==0 ) {
2261 3463
2262 newLeafNode(otherlv_0, grammarAccess.getIntegerSymbolAccess().getIntKeyword_0()); 3464 newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getMultiplicativeExpressionParserRuleCall_0());
2263 3465
2264 // InternalSolverLanguage.g:775:3: () 3466 }
2265 // InternalSolverLanguage.g:776:4: 3467 pushFollow(FOLLOW_22);
2266 { 3468 this_MultiplicativeExpression_0=ruleMultiplicativeExpression();
2267 3469
2268 current = forceCreateModelElement( 3470 state._fsp--;
2269 grammarAccess.getIntegerSymbolAccess().getIntegerSymbolAction_1(), 3471 if (state.failed) return current;
2270 current); 3472 if ( state.backtracking==0 ) {
2271
2272 3473
3474 current = this_MultiplicativeExpression_0;
3475 afterParserOrEnumRuleCall();
3476
2273 } 3477 }
3478 // InternalSolverLanguage.g:1256:3: ( () ( (lv_op_2_0= ruleAdditiveBinaryOperator ) ) ( (lv_right_3_0= ruleMultiplicativeExpression ) ) )*
3479 loop15:
3480 do {
3481 int alt15=2;
3482 int LA15_0 = input.LA(1);
3483
3484 if ( ((LA15_0>=56 && LA15_0<=57)) ) {
3485 alt15=1;
3486 }
3487
3488
3489 switch (alt15) {
3490 case 1 :
3491 // InternalSolverLanguage.g:1257:4: () ( (lv_op_2_0= ruleAdditiveBinaryOperator ) ) ( (lv_right_3_0= ruleMultiplicativeExpression ) )
3492 {
3493 // InternalSolverLanguage.g:1257:4: ()
3494 // InternalSolverLanguage.g:1258:5:
3495 {
3496 if ( state.backtracking==0 ) {
3497
3498 current = forceCreateModelElementAndSet(
3499 grammarAccess.getAdditiveExpressionAccess().getBinaryExpressionLeftAction_1_0(),
3500 current);
3501
3502 }
3503
3504 }
3505
3506 // InternalSolverLanguage.g:1264:4: ( (lv_op_2_0= ruleAdditiveBinaryOperator ) )
3507 // InternalSolverLanguage.g:1265:5: (lv_op_2_0= ruleAdditiveBinaryOperator )
3508 {
3509 // InternalSolverLanguage.g:1265:5: (lv_op_2_0= ruleAdditiveBinaryOperator )
3510 // InternalSolverLanguage.g:1266:6: lv_op_2_0= ruleAdditiveBinaryOperator
3511 {
3512 if ( state.backtracking==0 ) {
3513
3514 newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getOpAdditiveBinaryOperatorEnumRuleCall_1_1_0());
3515
3516 }
3517 pushFollow(FOLLOW_6);
3518 lv_op_2_0=ruleAdditiveBinaryOperator();
3519
3520 state._fsp--;
3521 if (state.failed) return current;
3522 if ( state.backtracking==0 ) {
3523
3524 if (current==null) {
3525 current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
3526 }
3527 set(
3528 current,
3529 "op",
3530 lv_op_2_0,
3531 "org.eclipse.viatra.solver.language.SolverLanguage.AdditiveBinaryOperator");
3532 afterParserOrEnumRuleCall();
3533
3534 }
3535
3536 }
3537
3538
3539 }
3540
3541 // InternalSolverLanguage.g:1283:4: ( (lv_right_3_0= ruleMultiplicativeExpression ) )
3542 // InternalSolverLanguage.g:1284:5: (lv_right_3_0= ruleMultiplicativeExpression )
3543 {
3544 // InternalSolverLanguage.g:1284:5: (lv_right_3_0= ruleMultiplicativeExpression )
3545 // InternalSolverLanguage.g:1285:6: lv_right_3_0= ruleMultiplicativeExpression
3546 {
3547 if ( state.backtracking==0 ) {
3548
3549 newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getRightMultiplicativeExpressionParserRuleCall_1_2_0());
3550
3551 }
3552 pushFollow(FOLLOW_22);
3553 lv_right_3_0=ruleMultiplicativeExpression();
3554
3555 state._fsp--;
3556 if (state.failed) return current;
3557 if ( state.backtracking==0 ) {
3558
3559 if (current==null) {
3560 current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
3561 }
3562 set(
3563 current,
3564 "right",
3565 lv_right_3_0,
3566 "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicativeExpression");
3567 afterParserOrEnumRuleCall();
3568
3569 }
3570
3571 }
3572
3573
3574 }
3575
3576
3577 }
3578 break;
3579
3580 default :
3581 break loop15;
3582 }
3583 } while (true);
2274 3584
2275 3585
2276 } 3586 }
@@ -2278,9 +3588,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2278 3588
2279 } 3589 }
2280 3590
3591 if ( state.backtracking==0 ) {
2281 3592
2282 leaveRule(); 3593 leaveRule();
2283 3594
3595 }
2284 } 3596 }
2285 3597
2286 catch (RecognitionException re) { 3598 catch (RecognitionException re) {
@@ -2291,29 +3603,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2291 } 3603 }
2292 return current; 3604 return current;
2293 } 3605 }
2294 // $ANTLR end "ruleIntegerSymbol" 3606 // $ANTLR end "ruleAdditiveExpression"
2295 3607
2296 3608
2297 // $ANTLR start "entryRuleRealSymbol" 3609 // $ANTLR start "entryRuleMultiplicativeExpression"
2298 // InternalSolverLanguage.g:786:1: entryRuleRealSymbol returns [EObject current=null] : iv_ruleRealSymbol= ruleRealSymbol EOF ; 3610 // InternalSolverLanguage.g:1307:1: entryRuleMultiplicativeExpression returns [EObject current=null] : iv_ruleMultiplicativeExpression= ruleMultiplicativeExpression EOF ;
2299 public final EObject entryRuleRealSymbol() throws RecognitionException { 3611 public final EObject entryRuleMultiplicativeExpression() throws RecognitionException {
2300 EObject current = null; 3612 EObject current = null;
2301 3613
2302 EObject iv_ruleRealSymbol = null; 3614 EObject iv_ruleMultiplicativeExpression = null;
2303 3615
2304 3616
2305 try { 3617 try {
2306 // InternalSolverLanguage.g:786:51: (iv_ruleRealSymbol= ruleRealSymbol EOF ) 3618 // InternalSolverLanguage.g:1307:65: (iv_ruleMultiplicativeExpression= ruleMultiplicativeExpression EOF )
2307 // InternalSolverLanguage.g:787:2: iv_ruleRealSymbol= ruleRealSymbol EOF 3619 // InternalSolverLanguage.g:1308:2: iv_ruleMultiplicativeExpression= ruleMultiplicativeExpression EOF
2308 { 3620 {
2309 newCompositeNode(grammarAccess.getRealSymbolRule()); 3621 if ( state.backtracking==0 ) {
3622 newCompositeNode(grammarAccess.getMultiplicativeExpressionRule());
3623 }
2310 pushFollow(FOLLOW_1); 3624 pushFollow(FOLLOW_1);
2311 iv_ruleRealSymbol=ruleRealSymbol(); 3625 iv_ruleMultiplicativeExpression=ruleMultiplicativeExpression();
2312 3626
2313 state._fsp--; 3627 state._fsp--;
2314 3628 if (state.failed) return current;
2315 current =iv_ruleRealSymbol; 3629 if ( state.backtracking==0 ) {
2316 match(input,EOF,FOLLOW_2); 3630 current =iv_ruleMultiplicativeExpression;
3631 }
3632 match(input,EOF,FOLLOW_2); if (state.failed) return current;
2317 3633
2318 } 3634 }
2319 3635
@@ -2327,40 +3643,153 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2327 } 3643 }
2328 return current; 3644 return current;
2329 } 3645 }
2330 // $ANTLR end "entryRuleRealSymbol" 3646 // $ANTLR end "entryRuleMultiplicativeExpression"
2331 3647
2332 3648
2333 // $ANTLR start "ruleRealSymbol" 3649 // $ANTLR start "ruleMultiplicativeExpression"
2334 // InternalSolverLanguage.g:793:1: ruleRealSymbol returns [EObject current=null] : (otherlv_0= 'real' () ) ; 3650 // InternalSolverLanguage.g:1314:1: ruleMultiplicativeExpression returns [EObject current=null] : (this_ExponentialExpression_0= ruleExponentialExpression ( () ( (lv_op_2_0= ruleMultiplicativeBinaryOperator ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )* ) ;
2335 public final EObject ruleRealSymbol() throws RecognitionException { 3651 public final EObject ruleMultiplicativeExpression() throws RecognitionException {
2336 EObject current = null; 3652 EObject current = null;
2337 3653
2338 Token otherlv_0=null; 3654 EObject this_ExponentialExpression_0 = null;
3655
3656 Enumerator lv_op_2_0 = null;
3657
3658 EObject lv_right_3_0 = null;
3659
2339 3660
2340 3661
2341 enterRule(); 3662 enterRule();
2342 3663
2343 try { 3664 try {
2344 // InternalSolverLanguage.g:799:2: ( (otherlv_0= 'real' () ) ) 3665 // InternalSolverLanguage.g:1320:2: ( (this_ExponentialExpression_0= ruleExponentialExpression ( () ( (lv_op_2_0= ruleMultiplicativeBinaryOperator ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )* ) )
2345 // InternalSolverLanguage.g:800:2: (otherlv_0= 'real' () ) 3666 // InternalSolverLanguage.g:1321:2: (this_ExponentialExpression_0= ruleExponentialExpression ( () ( (lv_op_2_0= ruleMultiplicativeBinaryOperator ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )* )
2346 { 3667 {
2347 // InternalSolverLanguage.g:800:2: (otherlv_0= 'real' () ) 3668 // InternalSolverLanguage.g:1321:2: (this_ExponentialExpression_0= ruleExponentialExpression ( () ( (lv_op_2_0= ruleMultiplicativeBinaryOperator ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )* )
2348 // InternalSolverLanguage.g:801:3: otherlv_0= 'real' () 3669 // InternalSolverLanguage.g:1322:3: this_ExponentialExpression_0= ruleExponentialExpression ( () ( (lv_op_2_0= ruleMultiplicativeBinaryOperator ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )*
2349 { 3670 {
2350 otherlv_0=(Token)match(input,25,FOLLOW_2); 3671 if ( state.backtracking==0 ) {
2351 3672
2352 newLeafNode(otherlv_0, grammarAccess.getRealSymbolAccess().getRealKeyword_0()); 3673 newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getExponentialExpressionParserRuleCall_0());
2353 3674
2354 // InternalSolverLanguage.g:805:3: () 3675 }
2355 // InternalSolverLanguage.g:806:4: 3676 pushFollow(FOLLOW_23);
2356 { 3677 this_ExponentialExpression_0=ruleExponentialExpression();
2357 3678
2358 current = forceCreateModelElement( 3679 state._fsp--;
2359 grammarAccess.getRealSymbolAccess().getRealSymbolAction_1(), 3680 if (state.failed) return current;
2360 current); 3681 if ( state.backtracking==0 ) {
2361
2362 3682
3683 current = this_ExponentialExpression_0;
3684 afterParserOrEnumRuleCall();
3685
2363 } 3686 }
3687 // InternalSolverLanguage.g:1330:3: ( () ( (lv_op_2_0= ruleMultiplicativeBinaryOperator ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )*
3688 loop16:
3689 do {
3690 int alt16=2;
3691 int LA16_0 = input.LA(1);
3692
3693 if ( (LA16_0==35||LA16_0==58) ) {
3694 alt16=1;
3695 }
3696
3697
3698 switch (alt16) {
3699 case 1 :
3700 // InternalSolverLanguage.g:1331:4: () ( (lv_op_2_0= ruleMultiplicativeBinaryOperator ) ) ( (lv_right_3_0= ruleExponentialExpression ) )
3701 {
3702 // InternalSolverLanguage.g:1331:4: ()
3703 // InternalSolverLanguage.g:1332:5:
3704 {
3705 if ( state.backtracking==0 ) {
3706
3707 current = forceCreateModelElementAndSet(
3708 grammarAccess.getMultiplicativeExpressionAccess().getBinaryExpressionLeftAction_1_0(),
3709 current);
3710
3711 }
3712
3713 }
3714
3715 // InternalSolverLanguage.g:1338:4: ( (lv_op_2_0= ruleMultiplicativeBinaryOperator ) )
3716 // InternalSolverLanguage.g:1339:5: (lv_op_2_0= ruleMultiplicativeBinaryOperator )
3717 {
3718 // InternalSolverLanguage.g:1339:5: (lv_op_2_0= ruleMultiplicativeBinaryOperator )
3719 // InternalSolverLanguage.g:1340:6: lv_op_2_0= ruleMultiplicativeBinaryOperator
3720 {
3721 if ( state.backtracking==0 ) {
3722
3723 newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getOpMultiplicativeBinaryOperatorEnumRuleCall_1_1_0());
3724
3725 }
3726 pushFollow(FOLLOW_6);
3727 lv_op_2_0=ruleMultiplicativeBinaryOperator();
3728
3729 state._fsp--;
3730 if (state.failed) return current;
3731 if ( state.backtracking==0 ) {
3732
3733 if (current==null) {
3734 current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule());
3735 }
3736 set(
3737 current,
3738 "op",
3739 lv_op_2_0,
3740 "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicativeBinaryOperator");
3741 afterParserOrEnumRuleCall();
3742
3743 }
3744
3745 }
3746
3747
3748 }
3749
3750 // InternalSolverLanguage.g:1357:4: ( (lv_right_3_0= ruleExponentialExpression ) )
3751 // InternalSolverLanguage.g:1358:5: (lv_right_3_0= ruleExponentialExpression )
3752 {
3753 // InternalSolverLanguage.g:1358:5: (lv_right_3_0= ruleExponentialExpression )
3754 // InternalSolverLanguage.g:1359:6: lv_right_3_0= ruleExponentialExpression
3755 {
3756 if ( state.backtracking==0 ) {
3757
3758 newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getRightExponentialExpressionParserRuleCall_1_2_0());
3759
3760 }
3761 pushFollow(FOLLOW_23);
3762 lv_right_3_0=ruleExponentialExpression();
3763
3764 state._fsp--;
3765 if (state.failed) return current;
3766 if ( state.backtracking==0 ) {
3767
3768 if (current==null) {
3769 current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule());
3770 }
3771 set(
3772 current,
3773 "right",
3774 lv_right_3_0,
3775 "org.eclipse.viatra.solver.language.SolverLanguage.ExponentialExpression");
3776 afterParserOrEnumRuleCall();
3777
3778 }
3779
3780 }
3781
3782
3783 }
3784
3785
3786 }
3787 break;
3788
3789 default :
3790 break loop16;
3791 }
3792 } while (true);
2364 3793
2365 3794
2366 } 3795 }
@@ -2368,9 +3797,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2368 3797
2369 } 3798 }
2370 3799
3800 if ( state.backtracking==0 ) {
2371 3801
2372 leaveRule(); 3802 leaveRule();
2373 3803
3804 }
2374 } 3805 }
2375 3806
2376 catch (RecognitionException re) { 3807 catch (RecognitionException re) {
@@ -2381,29 +3812,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2381 } 3812 }
2382 return current; 3813 return current;
2383 } 3814 }
2384 // $ANTLR end "ruleRealSymbol" 3815 // $ANTLR end "ruleMultiplicativeExpression"
2385 3816
2386 3817
2387 // $ANTLR start "entryRuleStringSymbol" 3818 // $ANTLR start "entryRuleExponentialExpression"
2388 // InternalSolverLanguage.g:816:1: entryRuleStringSymbol returns [EObject current=null] : iv_ruleStringSymbol= ruleStringSymbol EOF ; 3819 // InternalSolverLanguage.g:1381:1: entryRuleExponentialExpression returns [EObject current=null] : iv_ruleExponentialExpression= ruleExponentialExpression EOF ;
2389 public final EObject entryRuleStringSymbol() throws RecognitionException { 3820 public final EObject entryRuleExponentialExpression() throws RecognitionException {
2390 EObject current = null; 3821 EObject current = null;
2391 3822
2392 EObject iv_ruleStringSymbol = null; 3823 EObject iv_ruleExponentialExpression = null;
2393 3824
2394 3825
2395 try { 3826 try {
2396 // InternalSolverLanguage.g:816:53: (iv_ruleStringSymbol= ruleStringSymbol EOF ) 3827 // InternalSolverLanguage.g:1381:62: (iv_ruleExponentialExpression= ruleExponentialExpression EOF )
2397 // InternalSolverLanguage.g:817:2: iv_ruleStringSymbol= ruleStringSymbol EOF 3828 // InternalSolverLanguage.g:1382:2: iv_ruleExponentialExpression= ruleExponentialExpression EOF
2398 { 3829 {
2399 newCompositeNode(grammarAccess.getStringSymbolRule()); 3830 if ( state.backtracking==0 ) {
3831 newCompositeNode(grammarAccess.getExponentialExpressionRule());
3832 }
2400 pushFollow(FOLLOW_1); 3833 pushFollow(FOLLOW_1);
2401 iv_ruleStringSymbol=ruleStringSymbol(); 3834 iv_ruleExponentialExpression=ruleExponentialExpression();
2402 3835
2403 state._fsp--; 3836 state._fsp--;
2404 3837 if (state.failed) return current;
2405 current =iv_ruleStringSymbol; 3838 if ( state.backtracking==0 ) {
2406 match(input,EOF,FOLLOW_2); 3839 current =iv_ruleExponentialExpression;
3840 }
3841 match(input,EOF,FOLLOW_2); if (state.failed) return current;
2407 3842
2408 } 3843 }
2409 3844
@@ -2417,38 +3852,144 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2417 } 3852 }
2418 return current; 3853 return current;
2419 } 3854 }
2420 // $ANTLR end "entryRuleStringSymbol" 3855 // $ANTLR end "entryRuleExponentialExpression"
2421 3856
2422 3857
2423 // $ANTLR start "ruleStringSymbol" 3858 // $ANTLR start "ruleExponentialExpression"
2424 // InternalSolverLanguage.g:823:1: ruleStringSymbol returns [EObject current=null] : (otherlv_0= 'string' () ) ; 3859 // InternalSolverLanguage.g:1388:1: ruleExponentialExpression returns [EObject current=null] : (this_UnaryExpression_0= ruleUnaryExpression ( () ( (lv_op_2_0= ruleExponentialOp ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )? ) ;
2425 public final EObject ruleStringSymbol() throws RecognitionException { 3860 public final EObject ruleExponentialExpression() throws RecognitionException {
2426 EObject current = null; 3861 EObject current = null;
2427 3862
2428 Token otherlv_0=null; 3863 EObject this_UnaryExpression_0 = null;
3864
3865 Enumerator lv_op_2_0 = null;
3866
3867 EObject lv_right_3_0 = null;
3868
2429 3869
2430 3870
2431 enterRule(); 3871 enterRule();
2432 3872
2433 try { 3873 try {
2434 // InternalSolverLanguage.g:829:2: ( (otherlv_0= 'string' () ) ) 3874 // InternalSolverLanguage.g:1394:2: ( (this_UnaryExpression_0= ruleUnaryExpression ( () ( (lv_op_2_0= ruleExponentialOp ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )? ) )
2435 // InternalSolverLanguage.g:830:2: (otherlv_0= 'string' () ) 3875 // InternalSolverLanguage.g:1395:2: (this_UnaryExpression_0= ruleUnaryExpression ( () ( (lv_op_2_0= ruleExponentialOp ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )? )
2436 { 3876 {
2437 // InternalSolverLanguage.g:830:2: (otherlv_0= 'string' () ) 3877 // InternalSolverLanguage.g:1395:2: (this_UnaryExpression_0= ruleUnaryExpression ( () ( (lv_op_2_0= ruleExponentialOp ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )? )
2438 // InternalSolverLanguage.g:831:3: otherlv_0= 'string' () 3878 // InternalSolverLanguage.g:1396:3: this_UnaryExpression_0= ruleUnaryExpression ( () ( (lv_op_2_0= ruleExponentialOp ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )?
2439 { 3879 {
2440 otherlv_0=(Token)match(input,26,FOLLOW_2); 3880 if ( state.backtracking==0 ) {
2441 3881
2442 newLeafNode(otherlv_0, grammarAccess.getStringSymbolAccess().getStringKeyword_0()); 3882 newCompositeNode(grammarAccess.getExponentialExpressionAccess().getUnaryExpressionParserRuleCall_0());
2443 3883
2444 // InternalSolverLanguage.g:835:3: () 3884 }
2445 // InternalSolverLanguage.g:836:4: 3885 pushFollow(FOLLOW_24);
2446 { 3886 this_UnaryExpression_0=ruleUnaryExpression();
3887
3888 state._fsp--;
3889 if (state.failed) return current;
3890 if ( state.backtracking==0 ) {
3891
3892 current = this_UnaryExpression_0;
3893 afterParserOrEnumRuleCall();
3894
3895 }
3896 // InternalSolverLanguage.g:1404:3: ( () ( (lv_op_2_0= ruleExponentialOp ) ) ( (lv_right_3_0= ruleExponentialExpression ) ) )?
3897 int alt17=2;
3898 int LA17_0 = input.LA(1);
3899
3900 if ( (LA17_0==59) ) {
3901 alt17=1;
3902 }
3903 switch (alt17) {
3904 case 1 :
3905 // InternalSolverLanguage.g:1405:4: () ( (lv_op_2_0= ruleExponentialOp ) ) ( (lv_right_3_0= ruleExponentialExpression ) )
3906 {
3907 // InternalSolverLanguage.g:1405:4: ()
3908 // InternalSolverLanguage.g:1406:5:
3909 {
3910 if ( state.backtracking==0 ) {
3911
3912 current = forceCreateModelElementAndSet(
3913 grammarAccess.getExponentialExpressionAccess().getBinaryExpressionLeftAction_1_0(),
3914 current);
3915
3916 }
3917
3918 }
3919
3920 // InternalSolverLanguage.g:1412:4: ( (lv_op_2_0= ruleExponentialOp ) )
3921 // InternalSolverLanguage.g:1413:5: (lv_op_2_0= ruleExponentialOp )
3922 {
3923 // InternalSolverLanguage.g:1413:5: (lv_op_2_0= ruleExponentialOp )
3924 // InternalSolverLanguage.g:1414:6: lv_op_2_0= ruleExponentialOp
3925 {
3926 if ( state.backtracking==0 ) {
3927
3928 newCompositeNode(grammarAccess.getExponentialExpressionAccess().getOpExponentialOpEnumRuleCall_1_1_0());
3929
3930 }
3931 pushFollow(FOLLOW_6);
3932 lv_op_2_0=ruleExponentialOp();
3933
3934 state._fsp--;
3935 if (state.failed) return current;
3936 if ( state.backtracking==0 ) {
3937
3938 if (current==null) {
3939 current = createModelElementForParent(grammarAccess.getExponentialExpressionRule());
3940 }
3941 set(
3942 current,
3943 "op",
3944 lv_op_2_0,
3945 "org.eclipse.viatra.solver.language.SolverLanguage.ExponentialOp");
3946 afterParserOrEnumRuleCall();
3947
3948 }
3949
3950 }
3951
3952
3953 }
3954
3955 // InternalSolverLanguage.g:1431:4: ( (lv_right_3_0= ruleExponentialExpression ) )
3956 // InternalSolverLanguage.g:1432:5: (lv_right_3_0= ruleExponentialExpression )
3957 {
3958 // InternalSolverLanguage.g:1432:5: (lv_right_3_0= ruleExponentialExpression )
3959 // InternalSolverLanguage.g:1433:6: lv_right_3_0= ruleExponentialExpression
3960 {
3961 if ( state.backtracking==0 ) {
3962
3963 newCompositeNode(grammarAccess.getExponentialExpressionAccess().getRightExponentialExpressionParserRuleCall_1_2_0());
3964
3965 }
3966 pushFollow(FOLLOW_2);
3967 lv_right_3_0=ruleExponentialExpression();
3968
3969 state._fsp--;
3970 if (state.failed) return current;
3971 if ( state.backtracking==0 ) {
3972
3973 if (current==null) {
3974 current = createModelElementForParent(grammarAccess.getExponentialExpressionRule());
3975 }
3976 set(
3977 current,
3978 "right",
3979 lv_right_3_0,
3980 "org.eclipse.viatra.solver.language.SolverLanguage.ExponentialExpression");
3981 afterParserOrEnumRuleCall();
3982
3983 }
3984
3985 }
3986
3987
3988 }
2447 3989
2448 current = forceCreateModelElement( 3990
2449 grammarAccess.getStringSymbolAccess().getStringSymbolAction_1(), 3991 }
2450 current); 3992 break;
2451
2452 3993
2453 } 3994 }
2454 3995
@@ -2458,9 +3999,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2458 3999
2459 } 4000 }
2460 4001
4002 if ( state.backtracking==0 ) {
2461 4003
2462 leaveRule(); 4004 leaveRule();
2463 4005
4006 }
2464 } 4007 }
2465 4008
2466 catch (RecognitionException re) { 4009 catch (RecognitionException re) {
@@ -2471,29 +4014,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2471 } 4014 }
2472 return current; 4015 return current;
2473 } 4016 }
2474 // $ANTLR end "ruleStringSymbol" 4017 // $ANTLR end "ruleExponentialExpression"
2475 4018
2476 4019
2477 // $ANTLR start "entryRuleComplexObject" 4020 // $ANTLR start "entryRuleUnaryExpression"
2478 // InternalSolverLanguage.g:846:1: entryRuleComplexObject returns [EObject current=null] : iv_ruleComplexObject= ruleComplexObject EOF ; 4021 // InternalSolverLanguage.g:1455:1: entryRuleUnaryExpression returns [EObject current=null] : iv_ruleUnaryExpression= ruleUnaryExpression EOF ;
2479 public final EObject entryRuleComplexObject() throws RecognitionException { 4022 public final EObject entryRuleUnaryExpression() throws RecognitionException {
2480 EObject current = null; 4023 EObject current = null;
2481 4024
2482 EObject iv_ruleComplexObject = null; 4025 EObject iv_ruleUnaryExpression = null;
2483 4026
2484 4027
2485 try { 4028 try {
2486 // InternalSolverLanguage.g:846:54: (iv_ruleComplexObject= ruleComplexObject EOF ) 4029 // InternalSolverLanguage.g:1455:56: (iv_ruleUnaryExpression= ruleUnaryExpression EOF )
2487 // InternalSolverLanguage.g:847:2: iv_ruleComplexObject= ruleComplexObject EOF 4030 // InternalSolverLanguage.g:1456:2: iv_ruleUnaryExpression= ruleUnaryExpression EOF
2488 { 4031 {
2489 newCompositeNode(grammarAccess.getComplexObjectRule()); 4032 if ( state.backtracking==0 ) {
4033 newCompositeNode(grammarAccess.getUnaryExpressionRule());
4034 }
2490 pushFollow(FOLLOW_1); 4035 pushFollow(FOLLOW_1);
2491 iv_ruleComplexObject=ruleComplexObject(); 4036 iv_ruleUnaryExpression=ruleUnaryExpression();
2492 4037
2493 state._fsp--; 4038 state._fsp--;
2494 4039 if (state.failed) return current;
2495 current =iv_ruleComplexObject; 4040 if ( state.backtracking==0 ) {
2496 match(input,EOF,FOLLOW_2); 4041 current =iv_ruleUnaryExpression;
4042 }
4043 match(input,EOF,FOLLOW_2); if (state.failed) return current;
2497 4044
2498 } 4045 }
2499 4046
@@ -2507,111 +4054,160 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2507 } 4054 }
2508 return current; 4055 return current;
2509 } 4056 }
2510 // $ANTLR end "entryRuleComplexObject" 4057 // $ANTLR end "entryRuleUnaryExpression"
2511 4058
2512 4059
2513 // $ANTLR start "ruleComplexObject" 4060 // $ANTLR start "ruleUnaryExpression"
2514 // InternalSolverLanguage.g:853:1: ruleComplexObject returns [EObject current=null] : (this_Object_0= ruleObject | this_AllInstances_1= ruleAllInstances | this_AllObjects_2= ruleAllObjects ) ; 4061 // InternalSolverLanguage.g:1462:1: ruleUnaryExpression returns [EObject current=null] : (this_AggregationExpression_0= ruleAggregationExpression | ( () ( (lv_op_2_0= ruleUnaryOp ) ) ( (lv_body_3_0= ruleAggregationExpression ) ) ) ) ;
2515 public final EObject ruleComplexObject() throws RecognitionException { 4062 public final EObject ruleUnaryExpression() throws RecognitionException {
2516 EObject current = null; 4063 EObject current = null;
2517 4064
2518 EObject this_Object_0 = null; 4065 EObject this_AggregationExpression_0 = null;
2519 4066
2520 EObject this_AllInstances_1 = null; 4067 Enumerator lv_op_2_0 = null;
2521 4068
2522 EObject this_AllObjects_2 = null; 4069 EObject lv_body_3_0 = null;
2523 4070
2524 4071
2525 4072
2526 enterRule(); 4073 enterRule();
2527 4074
2528 try { 4075 try {
2529 // InternalSolverLanguage.g:859:2: ( (this_Object_0= ruleObject | this_AllInstances_1= ruleAllInstances | this_AllObjects_2= ruleAllObjects ) ) 4076 // InternalSolverLanguage.g:1468:2: ( (this_AggregationExpression_0= ruleAggregationExpression | ( () ( (lv_op_2_0= ruleUnaryOp ) ) ( (lv_body_3_0= ruleAggregationExpression ) ) ) ) )
2530 // InternalSolverLanguage.g:860:2: (this_Object_0= ruleObject | this_AllInstances_1= ruleAllInstances | this_AllObjects_2= ruleAllObjects ) 4077 // InternalSolverLanguage.g:1469:2: (this_AggregationExpression_0= ruleAggregationExpression | ( () ( (lv_op_2_0= ruleUnaryOp ) ) ( (lv_body_3_0= ruleAggregationExpression ) ) ) )
2531 { 4078 {
2532 // InternalSolverLanguage.g:860:2: (this_Object_0= ruleObject | this_AllInstances_1= ruleAllInstances | this_AllObjects_2= ruleAllObjects ) 4079 // InternalSolverLanguage.g:1469:2: (this_AggregationExpression_0= ruleAggregationExpression | ( () ( (lv_op_2_0= ruleUnaryOp ) ) ( (lv_body_3_0= ruleAggregationExpression ) ) ) )
2533 int alt14=3; 4080 int alt18=2;
2534 switch ( input.LA(1) ) { 4081 int LA18_0 = input.LA(1);
2535 case RULE_INT: 4082
2536 case RULE_ID: 4083 if ( ((LA18_0>=RULE_STRING && LA18_0<=RULE_QUOTED_ID)||LA18_0==19||LA18_0==29||LA18_0==33||LA18_0==36||(LA18_0>=39 && LA18_0<=40)||(LA18_0>=64 && LA18_0<=72)) ) {
2537 case RULE_STRING: 4084 alt18=1;
2538 case 11: 4085 }
2539 case 13: 4086 else if ( ((LA18_0>=56 && LA18_0<=57)||(LA18_0>=60 && LA18_0<=63)) ) {
2540 case 14: 4087 alt18=2;
2541 case 27: 4088 }
2542 { 4089 else {
2543 alt14=1; 4090 if (state.backtracking>0) {state.failed=true; return current;}
2544 }
2545 break;
2546 case 20:
2547 {
2548 alt14=2;
2549 }
2550 break;
2551 case 31:
2552 {
2553 alt14=3;
2554 }
2555 break;
2556 default:
2557 NoViableAltException nvae = 4091 NoViableAltException nvae =
2558 new NoViableAltException("", 14, 0, input); 4092 new NoViableAltException("", 18, 0, input);
2559 4093
2560 throw nvae; 4094 throw nvae;
2561 } 4095 }
2562 4096 switch (alt18) {
2563 switch (alt14) {
2564 case 1 : 4097 case 1 :
2565 // InternalSolverLanguage.g:861:3: this_Object_0= ruleObject 4098 // InternalSolverLanguage.g:1470:3: this_AggregationExpression_0= ruleAggregationExpression
2566 { 4099 {
4100 if ( state.backtracking==0 ) {
2567 4101
2568 newCompositeNode(grammarAccess.getComplexObjectAccess().getObjectParserRuleCall_0()); 4102 newCompositeNode(grammarAccess.getUnaryExpressionAccess().getAggregationExpressionParserRuleCall_0());
2569 4103
4104 }
2570 pushFollow(FOLLOW_2); 4105 pushFollow(FOLLOW_2);
2571 this_Object_0=ruleObject(); 4106 this_AggregationExpression_0=ruleAggregationExpression();
2572 4107
2573 state._fsp--; 4108 state._fsp--;
4109 if (state.failed) return current;
4110 if ( state.backtracking==0 ) {
2574 4111
2575 4112 current = this_AggregationExpression_0;
2576 current = this_Object_0; 4113 afterParserOrEnumRuleCall();
2577 afterParserOrEnumRuleCall(); 4114
2578 4115 }
2579 4116
2580 } 4117 }
2581 break; 4118 break;
2582 case 2 : 4119 case 2 :
2583 // InternalSolverLanguage.g:870:3: this_AllInstances_1= ruleAllInstances 4120 // InternalSolverLanguage.g:1479:3: ( () ( (lv_op_2_0= ruleUnaryOp ) ) ( (lv_body_3_0= ruleAggregationExpression ) ) )
4121 {
4122 // InternalSolverLanguage.g:1479:3: ( () ( (lv_op_2_0= ruleUnaryOp ) ) ( (lv_body_3_0= ruleAggregationExpression ) ) )
4123 // InternalSolverLanguage.g:1480:4: () ( (lv_op_2_0= ruleUnaryOp ) ) ( (lv_body_3_0= ruleAggregationExpression ) )
2584 { 4124 {
4125 // InternalSolverLanguage.g:1480:4: ()
4126 // InternalSolverLanguage.g:1481:5:
4127 {
4128 if ( state.backtracking==0 ) {
2585 4129
2586 newCompositeNode(grammarAccess.getComplexObjectAccess().getAllInstancesParserRuleCall_1()); 4130 current = forceCreateModelElement(
2587 4131 grammarAccess.getUnaryExpressionAccess().getUnaryExpressionAction_1_0(),
2588 pushFollow(FOLLOW_2); 4132 current);
2589 this_AllInstances_1=ruleAllInstances(); 4133
4134 }
4135
4136 }
4137
4138 // InternalSolverLanguage.g:1487:4: ( (lv_op_2_0= ruleUnaryOp ) )
4139 // InternalSolverLanguage.g:1488:5: (lv_op_2_0= ruleUnaryOp )
4140 {
4141 // InternalSolverLanguage.g:1488:5: (lv_op_2_0= ruleUnaryOp )
4142 // InternalSolverLanguage.g:1489:6: lv_op_2_0= ruleUnaryOp
4143 {
4144 if ( state.backtracking==0 ) {
4145
4146 newCompositeNode(grammarAccess.getUnaryExpressionAccess().getOpUnaryOpEnumRuleCall_1_1_0());
4147
4148 }
4149 pushFollow(FOLLOW_25);
4150 lv_op_2_0=ruleUnaryOp();
2590 4151
2591 state._fsp--; 4152 state._fsp--;
4153 if (state.failed) return current;
4154 if ( state.backtracking==0 ) {
4155
4156 if (current==null) {
4157 current = createModelElementForParent(grammarAccess.getUnaryExpressionRule());
4158 }
4159 set(
4160 current,
4161 "op",
4162 lv_op_2_0,
4163 "org.eclipse.viatra.solver.language.SolverLanguage.UnaryOp");
4164 afterParserOrEnumRuleCall();
4165
4166 }
2592 4167
4168 }
2593 4169
2594 current = this_AllInstances_1;
2595 afterParserOrEnumRuleCall();
2596
2597 4170
2598 } 4171 }
2599 break; 4172
2600 case 3 : 4173 // InternalSolverLanguage.g:1506:4: ( (lv_body_3_0= ruleAggregationExpression ) )
2601 // InternalSolverLanguage.g:879:3: this_AllObjects_2= ruleAllObjects 4174 // InternalSolverLanguage.g:1507:5: (lv_body_3_0= ruleAggregationExpression )
2602 { 4175 {
4176 // InternalSolverLanguage.g:1507:5: (lv_body_3_0= ruleAggregationExpression )
4177 // InternalSolverLanguage.g:1508:6: lv_body_3_0= ruleAggregationExpression
4178 {
4179 if ( state.backtracking==0 ) {
2603 4180
2604 newCompositeNode(grammarAccess.getComplexObjectAccess().getAllObjectsParserRuleCall_2()); 4181 newCompositeNode(grammarAccess.getUnaryExpressionAccess().getBodyAggregationExpressionParserRuleCall_1_2_0());
2605 4182
4183 }
2606 pushFollow(FOLLOW_2); 4184 pushFollow(FOLLOW_2);
2607 this_AllObjects_2=ruleAllObjects(); 4185 lv_body_3_0=ruleAggregationExpression();
2608 4186
2609 state._fsp--; 4187 state._fsp--;
4188 if (state.failed) return current;
4189 if ( state.backtracking==0 ) {
4190
4191 if (current==null) {
4192 current = createModelElementForParent(grammarAccess.getUnaryExpressionRule());
4193 }
4194 set(
4195 current,
4196 "body",
4197 lv_body_3_0,
4198 "org.eclipse.viatra.solver.language.SolverLanguage.AggregationExpression");
4199 afterParserOrEnumRuleCall();
4200
4201 }
2610 4202
4203 }
4204
4205
4206 }
4207
4208
4209 }
2611 4210
2612 current = this_AllObjects_2;
2613 afterParserOrEnumRuleCall();
2614
2615 4211
2616 } 4212 }
2617 break; 4213 break;
@@ -2621,9 +4217,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2621 4217
2622 } 4218 }
2623 4219
4220 if ( state.backtracking==0 ) {
2624 4221
2625 leaveRule(); 4222 leaveRule();
2626 4223
4224 }
2627 } 4225 }
2628 4226
2629 catch (RecognitionException re) { 4227 catch (RecognitionException re) {
@@ -2634,29 +4232,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2634 } 4232 }
2635 return current; 4233 return current;
2636 } 4234 }
2637 // $ANTLR end "ruleComplexObject" 4235 // $ANTLR end "ruleUnaryExpression"
2638 4236
2639 4237
2640 // $ANTLR start "entryRuleObject" 4238 // $ANTLR start "entryRuleAggregationExpression"
2641 // InternalSolverLanguage.g:891:1: entryRuleObject returns [EObject current=null] : iv_ruleObject= ruleObject EOF ; 4239 // InternalSolverLanguage.g:1530:1: entryRuleAggregationExpression returns [EObject current=null] : iv_ruleAggregationExpression= ruleAggregationExpression EOF ;
2642 public final EObject entryRuleObject() throws RecognitionException { 4240 public final EObject entryRuleAggregationExpression() throws RecognitionException {
2643 EObject current = null; 4241 EObject current = null;
2644 4242
2645 EObject iv_ruleObject = null; 4243 EObject iv_ruleAggregationExpression = null;
2646 4244
2647 4245
2648 try { 4246 try {
2649 // InternalSolverLanguage.g:891:47: (iv_ruleObject= ruleObject EOF ) 4247 // InternalSolverLanguage.g:1530:62: (iv_ruleAggregationExpression= ruleAggregationExpression EOF )
2650 // InternalSolverLanguage.g:892:2: iv_ruleObject= ruleObject EOF 4248 // InternalSolverLanguage.g:1531:2: iv_ruleAggregationExpression= ruleAggregationExpression EOF
2651 { 4249 {
2652 newCompositeNode(grammarAccess.getObjectRule()); 4250 if ( state.backtracking==0 ) {
4251 newCompositeNode(grammarAccess.getAggregationExpressionRule());
4252 }
2653 pushFollow(FOLLOW_1); 4253 pushFollow(FOLLOW_1);
2654 iv_ruleObject=ruleObject(); 4254 iv_ruleAggregationExpression=ruleAggregationExpression();
2655 4255
2656 state._fsp--; 4256 state._fsp--;
2657 4257 if (state.failed) return current;
2658 current =iv_ruleObject; 4258 if ( state.backtracking==0 ) {
2659 match(input,EOF,FOLLOW_2); 4259 current =iv_ruleAggregationExpression;
4260 }
4261 match(input,EOF,FOLLOW_2); if (state.failed) return current;
2660 4262
2661 } 4263 }
2662 4264
@@ -2670,109 +4272,134 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2670 } 4272 }
2671 return current; 4273 return current;
2672 } 4274 }
2673 // $ANTLR end "entryRuleObject" 4275 // $ANTLR end "entryRuleAggregationExpression"
2674 4276
2675 4277
2676 // $ANTLR start "ruleObject" 4278 // $ANTLR start "ruleAggregationExpression"
2677 // InternalSolverLanguage.g:898:1: ruleObject returns [EObject current=null] : (this_NamedObject_0= ruleNamedObject | this_UnnamedObject_1= ruleUnnamedObject | this_DataObject_2= ruleDataObject ) ; 4279 // InternalSolverLanguage.g:1537:1: ruleAggregationExpression returns [EObject current=null] : (this_AtomicExpression_0= ruleAtomicExpression | this_Count_1= ruleCount | this_Aggregation_2= ruleAggregation ) ;
2678 public final EObject ruleObject() throws RecognitionException { 4280 public final EObject ruleAggregationExpression() throws RecognitionException {
2679 EObject current = null; 4281 EObject current = null;
2680 4282
2681 EObject this_NamedObject_0 = null; 4283 EObject this_AtomicExpression_0 = null;
2682 4284
2683 EObject this_UnnamedObject_1 = null; 4285 EObject this_Count_1 = null;
2684 4286
2685 EObject this_DataObject_2 = null; 4287 EObject this_Aggregation_2 = null;
2686 4288
2687 4289
2688 4290
2689 enterRule(); 4291 enterRule();
2690 4292
2691 try { 4293 try {
2692 // InternalSolverLanguage.g:904:2: ( (this_NamedObject_0= ruleNamedObject | this_UnnamedObject_1= ruleUnnamedObject | this_DataObject_2= ruleDataObject ) ) 4294 // InternalSolverLanguage.g:1543:2: ( (this_AtomicExpression_0= ruleAtomicExpression | this_Count_1= ruleCount | this_Aggregation_2= ruleAggregation ) )
2693 // InternalSolverLanguage.g:905:2: (this_NamedObject_0= ruleNamedObject | this_UnnamedObject_1= ruleUnnamedObject | this_DataObject_2= ruleDataObject ) 4295 // InternalSolverLanguage.g:1544:2: (this_AtomicExpression_0= ruleAtomicExpression | this_Count_1= ruleCount | this_Aggregation_2= ruleAggregation )
2694 { 4296 {
2695 // InternalSolverLanguage.g:905:2: (this_NamedObject_0= ruleNamedObject | this_UnnamedObject_1= ruleUnnamedObject | this_DataObject_2= ruleDataObject ) 4297 // InternalSolverLanguage.g:1544:2: (this_AtomicExpression_0= ruleAtomicExpression | this_Count_1= ruleCount | this_Aggregation_2= ruleAggregation )
2696 int alt15=3; 4298 int alt19=3;
2697 switch ( input.LA(1) ) { 4299 switch ( input.LA(1) ) {
2698 case 27: 4300 case RULE_STRING:
4301 case RULE_ID:
4302 case RULE_INT:
4303 case RULE_QUOTED_ID:
4304 case 19:
4305 case 33:
4306 case 36:
4307 case 39:
4308 case 40:
4309 case 70:
4310 case 71:
4311 case 72:
2699 { 4312 {
2700 alt15=1; 4313 alt19=1;
2701 } 4314 }
2702 break; 4315 break;
2703 case RULE_ID: 4316 case 29:
2704 { 4317 {
2705 alt15=2; 4318 alt19=2;
2706 } 4319 }
2707 break; 4320 break;
2708 case RULE_INT: 4321 case 64:
2709 case RULE_STRING: 4322 case 65:
2710 case 11: 4323 case 66:
2711 case 13: 4324 case 67:
2712 case 14: 4325 case 68:
4326 case 69:
2713 { 4327 {
2714 alt15=3; 4328 alt19=3;
2715 } 4329 }
2716 break; 4330 break;
2717 default: 4331 default:
4332 if (state.backtracking>0) {state.failed=true; return current;}
2718 NoViableAltException nvae = 4333 NoViableAltException nvae =
2719 new NoViableAltException("", 15, 0, input); 4334 new NoViableAltException("", 19, 0, input);
2720 4335
2721 throw nvae; 4336 throw nvae;
2722 } 4337 }
2723 4338
2724 switch (alt15) { 4339 switch (alt19) {
2725 case 1 : 4340 case 1 :
2726 // InternalSolverLanguage.g:906:3: this_NamedObject_0= ruleNamedObject 4341 // InternalSolverLanguage.g:1545:3: this_AtomicExpression_0= ruleAtomicExpression
2727 { 4342 {
4343 if ( state.backtracking==0 ) {
2728 4344
2729 newCompositeNode(grammarAccess.getObjectAccess().getNamedObjectParserRuleCall_0()); 4345 newCompositeNode(grammarAccess.getAggregationExpressionAccess().getAtomicExpressionParserRuleCall_0());
2730 4346
4347 }
2731 pushFollow(FOLLOW_2); 4348 pushFollow(FOLLOW_2);
2732 this_NamedObject_0=ruleNamedObject(); 4349 this_AtomicExpression_0=ruleAtomicExpression();
2733 4350
2734 state._fsp--; 4351 state._fsp--;
4352 if (state.failed) return current;
4353 if ( state.backtracking==0 ) {
2735 4354
2736 4355 current = this_AtomicExpression_0;
2737 current = this_NamedObject_0; 4356 afterParserOrEnumRuleCall();
2738 afterParserOrEnumRuleCall(); 4357
2739 4358 }
2740 4359
2741 } 4360 }
2742 break; 4361 break;
2743 case 2 : 4362 case 2 :
2744 // InternalSolverLanguage.g:915:3: this_UnnamedObject_1= ruleUnnamedObject 4363 // InternalSolverLanguage.g:1554:3: this_Count_1= ruleCount
2745 { 4364 {
4365 if ( state.backtracking==0 ) {
2746 4366
2747 newCompositeNode(grammarAccess.getObjectAccess().getUnnamedObjectParserRuleCall_1()); 4367 newCompositeNode(grammarAccess.getAggregationExpressionAccess().getCountParserRuleCall_1());
2748 4368
4369 }
2749 pushFollow(FOLLOW_2); 4370 pushFollow(FOLLOW_2);
2750 this_UnnamedObject_1=ruleUnnamedObject(); 4371 this_Count_1=ruleCount();
2751 4372
2752 state._fsp--; 4373 state._fsp--;
4374 if (state.failed) return current;
4375 if ( state.backtracking==0 ) {
2753 4376
2754 4377 current = this_Count_1;
2755 current = this_UnnamedObject_1; 4378 afterParserOrEnumRuleCall();
2756 afterParserOrEnumRuleCall(); 4379
2757 4380 }
2758 4381
2759 } 4382 }
2760 break; 4383 break;
2761 case 3 : 4384 case 3 :
2762 // InternalSolverLanguage.g:924:3: this_DataObject_2= ruleDataObject 4385 // InternalSolverLanguage.g:1563:3: this_Aggregation_2= ruleAggregation
2763 { 4386 {
4387 if ( state.backtracking==0 ) {
2764 4388
2765 newCompositeNode(grammarAccess.getObjectAccess().getDataObjectParserRuleCall_2()); 4389 newCompositeNode(grammarAccess.getAggregationExpressionAccess().getAggregationParserRuleCall_2());
2766 4390
4391 }
2767 pushFollow(FOLLOW_2); 4392 pushFollow(FOLLOW_2);
2768 this_DataObject_2=ruleDataObject(); 4393 this_Aggregation_2=ruleAggregation();
2769 4394
2770 state._fsp--; 4395 state._fsp--;
4396 if (state.failed) return current;
4397 if ( state.backtracking==0 ) {
2771 4398
2772 4399 current = this_Aggregation_2;
2773 current = this_DataObject_2; 4400 afterParserOrEnumRuleCall();
2774 afterParserOrEnumRuleCall(); 4401
2775 4402 }
2776 4403
2777 } 4404 }
2778 break; 4405 break;
@@ -2782,9 +4409,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2782 4409
2783 } 4410 }
2784 4411
4412 if ( state.backtracking==0 ) {
2785 4413
2786 leaveRule(); 4414 leaveRule();
2787 4415
4416 }
2788 } 4417 }
2789 4418
2790 catch (RecognitionException re) { 4419 catch (RecognitionException re) {
@@ -2795,29 +4424,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2795 } 4424 }
2796 return current; 4425 return current;
2797 } 4426 }
2798 // $ANTLR end "ruleObject" 4427 // $ANTLR end "ruleAggregationExpression"
2799 4428
2800 4429
2801 // $ANTLR start "entryRuleNamedObject" 4430 // $ANTLR start "entryRuleCount"
2802 // InternalSolverLanguage.g:936:1: entryRuleNamedObject returns [EObject current=null] : iv_ruleNamedObject= ruleNamedObject EOF ; 4431 // InternalSolverLanguage.g:1575:1: entryRuleCount returns [EObject current=null] : iv_ruleCount= ruleCount EOF ;
2803 public final EObject entryRuleNamedObject() throws RecognitionException { 4432 public final EObject entryRuleCount() throws RecognitionException {
2804 EObject current = null; 4433 EObject current = null;
2805 4434
2806 EObject iv_ruleNamedObject = null; 4435 EObject iv_ruleCount = null;
2807 4436
2808 4437
2809 try { 4438 try {
2810 // InternalSolverLanguage.g:936:52: (iv_ruleNamedObject= ruleNamedObject EOF ) 4439 // InternalSolverLanguage.g:1575:46: (iv_ruleCount= ruleCount EOF )
2811 // InternalSolverLanguage.g:937:2: iv_ruleNamedObject= ruleNamedObject EOF 4440 // InternalSolverLanguage.g:1576:2: iv_ruleCount= ruleCount EOF
2812 { 4441 {
2813 newCompositeNode(grammarAccess.getNamedObjectRule()); 4442 if ( state.backtracking==0 ) {
4443 newCompositeNode(grammarAccess.getCountRule());
4444 }
2814 pushFollow(FOLLOW_1); 4445 pushFollow(FOLLOW_1);
2815 iv_ruleNamedObject=ruleNamedObject(); 4446 iv_ruleCount=ruleCount();
2816 4447
2817 state._fsp--; 4448 state._fsp--;
2818 4449 if (state.failed) return current;
2819 current =iv_ruleNamedObject; 4450 if ( state.backtracking==0 ) {
2820 match(input,EOF,FOLLOW_2); 4451 current =iv_ruleCount;
4452 }
4453 match(input,EOF,FOLLOW_2); if (state.failed) return current;
2821 4454
2822 } 4455 }
2823 4456
@@ -2831,71 +4464,94 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2831 } 4464 }
2832 return current; 4465 return current;
2833 } 4466 }
2834 // $ANTLR end "entryRuleNamedObject" 4467 // $ANTLR end "entryRuleCount"
2835 4468
2836 4469
2837 // $ANTLR start "ruleNamedObject" 4470 // $ANTLR start "ruleCount"
2838 // InternalSolverLanguage.g:943:1: ruleNamedObject returns [EObject current=null] : (otherlv_0= '\\'' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '\\'' ) ; 4471 // InternalSolverLanguage.g:1582:1: ruleCount returns [EObject current=null] : (otherlv_0= 'count' otherlv_1= '{' ( (lv_body_2_0= ruleExpression ) ) otherlv_3= '}' ) ;
2839 public final EObject ruleNamedObject() throws RecognitionException { 4472 public final EObject ruleCount() throws RecognitionException {
2840 EObject current = null; 4473 EObject current = null;
2841 4474
2842 Token otherlv_0=null; 4475 Token otherlv_0=null;
2843 Token lv_name_1_0=null; 4476 Token otherlv_1=null;
2844 Token otherlv_2=null; 4477 Token otherlv_3=null;
4478 EObject lv_body_2_0 = null;
4479
2845 4480
2846 4481
2847 enterRule(); 4482 enterRule();
2848 4483
2849 try { 4484 try {
2850 // InternalSolverLanguage.g:949:2: ( (otherlv_0= '\\'' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '\\'' ) ) 4485 // InternalSolverLanguage.g:1588:2: ( (otherlv_0= 'count' otherlv_1= '{' ( (lv_body_2_0= ruleExpression ) ) otherlv_3= '}' ) )
2851 // InternalSolverLanguage.g:950:2: (otherlv_0= '\\'' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '\\'' ) 4486 // InternalSolverLanguage.g:1589:2: (otherlv_0= 'count' otherlv_1= '{' ( (lv_body_2_0= ruleExpression ) ) otherlv_3= '}' )
2852 { 4487 {
2853 // InternalSolverLanguage.g:950:2: (otherlv_0= '\\'' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '\\'' ) 4488 // InternalSolverLanguage.g:1589:2: (otherlv_0= 'count' otherlv_1= '{' ( (lv_body_2_0= ruleExpression ) ) otherlv_3= '}' )
2854 // InternalSolverLanguage.g:951:3: otherlv_0= '\\'' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '\\'' 4489 // InternalSolverLanguage.g:1590:3: otherlv_0= 'count' otherlv_1= '{' ( (lv_body_2_0= ruleExpression ) ) otherlv_3= '}'
2855 { 4490 {
2856 otherlv_0=(Token)match(input,27,FOLLOW_12); 4491 otherlv_0=(Token)match(input,29,FOLLOW_26); if (state.failed) return current;
4492 if ( state.backtracking==0 ) {
4493
4494 newLeafNode(otherlv_0, grammarAccess.getCountAccess().getCountKeyword_0());
4495
4496 }
4497 otherlv_1=(Token)match(input,30,FOLLOW_6); if (state.failed) return current;
4498 if ( state.backtracking==0 ) {
2857 4499
2858 newLeafNode(otherlv_0, grammarAccess.getNamedObjectAccess().getApostropheKeyword_0()); 4500 newLeafNode(otherlv_1, grammarAccess.getCountAccess().getLeftCurlyBracketKeyword_1());
2859 4501
2860 // InternalSolverLanguage.g:955:3: ( (lv_name_1_0= RULE_ID ) ) 4502 }
2861 // InternalSolverLanguage.g:956:4: (lv_name_1_0= RULE_ID ) 4503 // InternalSolverLanguage.g:1598:3: ( (lv_body_2_0= ruleExpression ) )
4504 // InternalSolverLanguage.g:1599:4: (lv_body_2_0= ruleExpression )
2862 { 4505 {
2863 // InternalSolverLanguage.g:956:4: (lv_name_1_0= RULE_ID ) 4506 // InternalSolverLanguage.g:1599:4: (lv_body_2_0= ruleExpression )
2864 // InternalSolverLanguage.g:957:5: lv_name_1_0= RULE_ID 4507 // InternalSolverLanguage.g:1600:5: lv_body_2_0= ruleExpression
2865 { 4508 {
2866 lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_13); 4509 if ( state.backtracking==0 ) {
2867 4510
2868 newLeafNode(lv_name_1_0, grammarAccess.getNamedObjectAccess().getNameIDTerminalRuleCall_1_0()); 4511 newCompositeNode(grammarAccess.getCountAccess().getBodyExpressionParserRuleCall_2_0());
2869 4512
4513 }
4514 pushFollow(FOLLOW_27);
4515 lv_body_2_0=ruleExpression();
2870 4516
2871 if (current==null) { 4517 state._fsp--;
2872 current = createModelElement(grammarAccess.getNamedObjectRule()); 4518 if (state.failed) return current;
2873 } 4519 if ( state.backtracking==0 ) {
2874 setWithLastConsumed( 4520
2875 current, 4521 if (current==null) {
2876 "name", 4522 current = createModelElementForParent(grammarAccess.getCountRule());
2877 lv_name_1_0, 4523 }
2878 "org.eclipse.xtext.common.Terminals.ID"); 4524 set(
2879 4525 current,
4526 "body",
4527 lv_body_2_0,
4528 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
4529 afterParserOrEnumRuleCall();
4530
4531 }
2880 4532
2881 } 4533 }
2882 4534
2883 4535
2884 } 4536 }
2885 4537
2886 otherlv_2=(Token)match(input,27,FOLLOW_2); 4538 otherlv_3=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
4539 if ( state.backtracking==0 ) {
2887 4540
2888 newLeafNode(otherlv_2, grammarAccess.getNamedObjectAccess().getApostropheKeyword_2()); 4541 newLeafNode(otherlv_3, grammarAccess.getCountAccess().getRightCurlyBracketKeyword_3());
2889 4542
4543 }
2890 4544
2891 } 4545 }
2892 4546
2893 4547
2894 } 4548 }
2895 4549
4550 if ( state.backtracking==0 ) {
2896 4551
2897 leaveRule(); 4552 leaveRule();
2898 4553
4554 }
2899 } 4555 }
2900 4556
2901 catch (RecognitionException re) { 4557 catch (RecognitionException re) {
@@ -2906,29 +4562,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2906 } 4562 }
2907 return current; 4563 return current;
2908 } 4564 }
2909 // $ANTLR end "ruleNamedObject" 4565 // $ANTLR end "ruleCount"
2910 4566
2911 4567
2912 // $ANTLR start "entryRuleUnnamedObject" 4568 // $ANTLR start "entryRuleAggregation"
2913 // InternalSolverLanguage.g:981:1: entryRuleUnnamedObject returns [EObject current=null] : iv_ruleUnnamedObject= ruleUnnamedObject EOF ; 4569 // InternalSolverLanguage.g:1625:1: entryRuleAggregation returns [EObject current=null] : iv_ruleAggregation= ruleAggregation EOF ;
2914 public final EObject entryRuleUnnamedObject() throws RecognitionException { 4570 public final EObject entryRuleAggregation() throws RecognitionException {
2915 EObject current = null; 4571 EObject current = null;
2916 4572
2917 EObject iv_ruleUnnamedObject = null; 4573 EObject iv_ruleAggregation = null;
2918 4574
2919 4575
2920 try { 4576 try {
2921 // InternalSolverLanguage.g:981:54: (iv_ruleUnnamedObject= ruleUnnamedObject EOF ) 4577 // InternalSolverLanguage.g:1625:52: (iv_ruleAggregation= ruleAggregation EOF )
2922 // InternalSolverLanguage.g:982:2: iv_ruleUnnamedObject= ruleUnnamedObject EOF 4578 // InternalSolverLanguage.g:1626:2: iv_ruleAggregation= ruleAggregation EOF
2923 { 4579 {
2924 newCompositeNode(grammarAccess.getUnnamedObjectRule()); 4580 if ( state.backtracking==0 ) {
4581 newCompositeNode(grammarAccess.getAggregationRule());
4582 }
2925 pushFollow(FOLLOW_1); 4583 pushFollow(FOLLOW_1);
2926 iv_ruleUnnamedObject=ruleUnnamedObject(); 4584 iv_ruleAggregation=ruleAggregation();
2927 4585
2928 state._fsp--; 4586 state._fsp--;
2929 4587 if (state.failed) return current;
2930 current =iv_ruleUnnamedObject; 4588 if ( state.backtracking==0 ) {
2931 match(input,EOF,FOLLOW_2); 4589 current =iv_ruleAggregation;
4590 }
4591 match(input,EOF,FOLLOW_2); if (state.failed) return current;
2932 4592
2933 } 4593 }
2934 4594
@@ -2942,55 +4602,168 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
2942 } 4602 }
2943 return current; 4603 return current;
2944 } 4604 }
2945 // $ANTLR end "entryRuleUnnamedObject" 4605 // $ANTLR end "entryRuleAggregation"
2946 4606
2947 4607
2948 // $ANTLR start "ruleUnnamedObject" 4608 // $ANTLR start "ruleAggregation"
2949 // InternalSolverLanguage.g:988:1: ruleUnnamedObject returns [EObject current=null] : ( (lv_name_0_0= RULE_ID ) ) ; 4609 // InternalSolverLanguage.g:1632:1: ruleAggregation returns [EObject current=null] : ( ( (lv_op_0_0= ruleAggregationOp ) ) otherlv_1= '{' ( (lv_body_2_0= ruleExpression ) ) otherlv_3= '|' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= '}' ) ;
2950 public final EObject ruleUnnamedObject() throws RecognitionException { 4610 public final EObject ruleAggregation() throws RecognitionException {
2951 EObject current = null; 4611 EObject current = null;
2952 4612
2953 Token lv_name_0_0=null; 4613 Token otherlv_1=null;
4614 Token otherlv_3=null;
4615 Token otherlv_5=null;
4616 Enumerator lv_op_0_0 = null;
4617
4618 EObject lv_body_2_0 = null;
4619
4620 EObject lv_condition_4_0 = null;
4621
2954 4622
2955 4623
2956 enterRule(); 4624 enterRule();
2957 4625
2958 try { 4626 try {
2959 // InternalSolverLanguage.g:994:2: ( ( (lv_name_0_0= RULE_ID ) ) ) 4627 // InternalSolverLanguage.g:1638:2: ( ( ( (lv_op_0_0= ruleAggregationOp ) ) otherlv_1= '{' ( (lv_body_2_0= ruleExpression ) ) otherlv_3= '|' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= '}' ) )
2960 // InternalSolverLanguage.g:995:2: ( (lv_name_0_0= RULE_ID ) ) 4628 // InternalSolverLanguage.g:1639:2: ( ( (lv_op_0_0= ruleAggregationOp ) ) otherlv_1= '{' ( (lv_body_2_0= ruleExpression ) ) otherlv_3= '|' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= '}' )
4629 {
4630 // InternalSolverLanguage.g:1639:2: ( ( (lv_op_0_0= ruleAggregationOp ) ) otherlv_1= '{' ( (lv_body_2_0= ruleExpression ) ) otherlv_3= '|' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= '}' )
4631 // InternalSolverLanguage.g:1640:3: ( (lv_op_0_0= ruleAggregationOp ) ) otherlv_1= '{' ( (lv_body_2_0= ruleExpression ) ) otherlv_3= '|' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= '}'
4632 {
4633 // InternalSolverLanguage.g:1640:3: ( (lv_op_0_0= ruleAggregationOp ) )
4634 // InternalSolverLanguage.g:1641:4: (lv_op_0_0= ruleAggregationOp )
4635 {
4636 // InternalSolverLanguage.g:1641:4: (lv_op_0_0= ruleAggregationOp )
4637 // InternalSolverLanguage.g:1642:5: lv_op_0_0= ruleAggregationOp
2961 { 4638 {
2962 // InternalSolverLanguage.g:995:2: ( (lv_name_0_0= RULE_ID ) ) 4639 if ( state.backtracking==0 ) {
2963 // InternalSolverLanguage.g:996:3: (lv_name_0_0= RULE_ID ) 4640
4641 newCompositeNode(grammarAccess.getAggregationAccess().getOpAggregationOpEnumRuleCall_0_0());
4642
4643 }
4644 pushFollow(FOLLOW_26);
4645 lv_op_0_0=ruleAggregationOp();
4646
4647 state._fsp--;
4648 if (state.failed) return current;
4649 if ( state.backtracking==0 ) {
4650
4651 if (current==null) {
4652 current = createModelElementForParent(grammarAccess.getAggregationRule());
4653 }
4654 set(
4655 current,
4656 "op",
4657 lv_op_0_0,
4658 "org.eclipse.viatra.solver.language.SolverLanguage.AggregationOp");
4659 afterParserOrEnumRuleCall();
4660
4661 }
4662
4663 }
4664
4665
4666 }
4667
4668 otherlv_1=(Token)match(input,30,FOLLOW_6); if (state.failed) return current;
4669 if ( state.backtracking==0 ) {
4670
4671 newLeafNode(otherlv_1, grammarAccess.getAggregationAccess().getLeftCurlyBracketKeyword_1());
4672
4673 }
4674 // InternalSolverLanguage.g:1663:3: ( (lv_body_2_0= ruleExpression ) )
4675 // InternalSolverLanguage.g:1664:4: (lv_body_2_0= ruleExpression )
2964 { 4676 {
2965 // InternalSolverLanguage.g:996:3: (lv_name_0_0= RULE_ID ) 4677 // InternalSolverLanguage.g:1664:4: (lv_body_2_0= ruleExpression )
2966 // InternalSolverLanguage.g:997:4: lv_name_0_0= RULE_ID 4678 // InternalSolverLanguage.g:1665:5: lv_body_2_0= ruleExpression
2967 { 4679 {
2968 lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_2); 4680 if ( state.backtracking==0 ) {
4681
4682 newCompositeNode(grammarAccess.getAggregationAccess().getBodyExpressionParserRuleCall_2_0());
4683
4684 }
4685 pushFollow(FOLLOW_28);
4686 lv_body_2_0=ruleExpression();
4687
4688 state._fsp--;
4689 if (state.failed) return current;
4690 if ( state.backtracking==0 ) {
4691
4692 if (current==null) {
4693 current = createModelElementForParent(grammarAccess.getAggregationRule());
4694 }
4695 set(
4696 current,
4697 "body",
4698 lv_body_2_0,
4699 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
4700 afterParserOrEnumRuleCall();
4701
4702 }
2969 4703
2970 newLeafNode(lv_name_0_0, grammarAccess.getUnnamedObjectAccess().getNameIDTerminalRuleCall_0()); 4704 }
2971
2972 4705
2973 if (current==null) {
2974 current = createModelElement(grammarAccess.getUnnamedObjectRule());
2975 }
2976 setWithLastConsumed(
2977 current,
2978 "name",
2979 lv_name_0_0,
2980 "org.eclipse.xtext.common.Terminals.ID");
2981
2982 4706
2983 } 4707 }
2984 4708
4709 otherlv_3=(Token)match(input,32,FOLLOW_6); if (state.failed) return current;
4710 if ( state.backtracking==0 ) {
2985 4711
4712 newLeafNode(otherlv_3, grammarAccess.getAggregationAccess().getVerticalLineKeyword_3());
4713
2986 } 4714 }
4715 // InternalSolverLanguage.g:1686:3: ( (lv_condition_4_0= ruleExpression ) )
4716 // InternalSolverLanguage.g:1687:4: (lv_condition_4_0= ruleExpression )
4717 {
4718 // InternalSolverLanguage.g:1687:4: (lv_condition_4_0= ruleExpression )
4719 // InternalSolverLanguage.g:1688:5: lv_condition_4_0= ruleExpression
4720 {
4721 if ( state.backtracking==0 ) {
2987 4722
4723 newCompositeNode(grammarAccess.getAggregationAccess().getConditionExpressionParserRuleCall_4_0());
4724
4725 }
4726 pushFollow(FOLLOW_27);
4727 lv_condition_4_0=ruleExpression();
4728
4729 state._fsp--;
4730 if (state.failed) return current;
4731 if ( state.backtracking==0 ) {
4732
4733 if (current==null) {
4734 current = createModelElementForParent(grammarAccess.getAggregationRule());
4735 }
4736 set(
4737 current,
4738 "condition",
4739 lv_condition_4_0,
4740 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
4741 afterParserOrEnumRuleCall();
4742
4743 }
2988 4744
2989 } 4745 }
2990 4746
2991 4747
2992 leaveRule(); 4748 }
4749
4750 otherlv_5=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
4751 if ( state.backtracking==0 ) {
4752
4753 newLeafNode(otherlv_5, grammarAccess.getAggregationAccess().getRightCurlyBracketKeyword_5());
4754
4755 }
2993 4756
4757 }
4758
4759
4760 }
4761
4762 if ( state.backtracking==0 ) {
4763
4764 leaveRule();
4765
4766 }
2994 } 4767 }
2995 4768
2996 catch (RecognitionException re) { 4769 catch (RecognitionException re) {
@@ -3001,29 +4774,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3001 } 4774 }
3002 return current; 4775 return current;
3003 } 4776 }
3004 // $ANTLR end "ruleUnnamedObject" 4777 // $ANTLR end "ruleAggregation"
3005 4778
3006 4779
3007 // $ANTLR start "entryRuleDataObject" 4780 // $ANTLR start "entryRuleAtomicExpression"
3008 // InternalSolverLanguage.g:1016:1: entryRuleDataObject returns [EObject current=null] : iv_ruleDataObject= ruleDataObject EOF ; 4781 // InternalSolverLanguage.g:1713:1: entryRuleAtomicExpression returns [EObject current=null] : iv_ruleAtomicExpression= ruleAtomicExpression EOF ;
3009 public final EObject entryRuleDataObject() throws RecognitionException { 4782 public final EObject entryRuleAtomicExpression() throws RecognitionException {
3010 EObject current = null; 4783 EObject current = null;
3011 4784
3012 EObject iv_ruleDataObject = null; 4785 EObject iv_ruleAtomicExpression = null;
3013 4786
3014 4787
3015 try { 4788 try {
3016 // InternalSolverLanguage.g:1016:51: (iv_ruleDataObject= ruleDataObject EOF ) 4789 // InternalSolverLanguage.g:1713:57: (iv_ruleAtomicExpression= ruleAtomicExpression EOF )
3017 // InternalSolverLanguage.g:1017:2: iv_ruleDataObject= ruleDataObject EOF 4790 // InternalSolverLanguage.g:1714:2: iv_ruleAtomicExpression= ruleAtomicExpression EOF
3018 { 4791 {
3019 newCompositeNode(grammarAccess.getDataObjectRule()); 4792 if ( state.backtracking==0 ) {
4793 newCompositeNode(grammarAccess.getAtomicExpressionRule());
4794 }
3020 pushFollow(FOLLOW_1); 4795 pushFollow(FOLLOW_1);
3021 iv_ruleDataObject=ruleDataObject(); 4796 iv_ruleAtomicExpression=ruleAtomicExpression();
3022 4797
3023 state._fsp--; 4798 state._fsp--;
3024 4799 if (state.failed) return current;
3025 current =iv_ruleDataObject; 4800 if ( state.backtracking==0 ) {
3026 match(input,EOF,FOLLOW_2); 4801 current =iv_ruleAtomicExpression;
4802 }
4803 match(input,EOF,FOLLOW_2); if (state.failed) return current;
3027 4804
3028 } 4805 }
3029 4806
@@ -3037,167 +4814,248 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3037 } 4814 }
3038 return current; 4815 return current;
3039 } 4816 }
3040 // $ANTLR end "entryRuleDataObject" 4817 // $ANTLR end "entryRuleAtomicExpression"
3041 4818
3042 4819
3043 // $ANTLR start "ruleDataObject" 4820 // $ANTLR start "ruleAtomicExpression"
3044 // InternalSolverLanguage.g:1023:1: ruleDataObject returns [EObject current=null] : (this_BooleanObject_0= ruleBooleanObject | this_IntObject_1= ruleIntObject | this_RealObject_2= ruleRealObject | this_StringObject_3= ruleStringObject ) ; 4821 // InternalSolverLanguage.g:1720:1: ruleAtomicExpression returns [EObject current=null] : ( (this_Reference_0= ruleReference ( () ( ( '(' )=> (lv_argumentList_2_0= ruleArgumentList ) ) )? ) | this_Interval_3= ruleInterval | this_Literal_4= ruleLiteral | (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' ) ) ;
3045 public final EObject ruleDataObject() throws RecognitionException { 4822 public final EObject ruleAtomicExpression() throws RecognitionException {
3046 EObject current = null; 4823 EObject current = null;
3047 4824
3048 EObject this_BooleanObject_0 = null; 4825 Token otherlv_5=null;
4826 Token otherlv_7=null;
4827 EObject this_Reference_0 = null;
4828
4829 EObject lv_argumentList_2_0 = null;
3049 4830
3050 EObject this_IntObject_1 = null; 4831 EObject this_Interval_3 = null;
3051 4832
3052 EObject this_RealObject_2 = null; 4833 EObject this_Literal_4 = null;
3053 4834
3054 EObject this_StringObject_3 = null; 4835 EObject this_Expression_6 = null;
3055 4836
3056 4837
3057 4838
3058 enterRule(); 4839 enterRule();
3059 4840
3060 try { 4841 try {
3061 // InternalSolverLanguage.g:1029:2: ( (this_BooleanObject_0= ruleBooleanObject | this_IntObject_1= ruleIntObject | this_RealObject_2= ruleRealObject | this_StringObject_3= ruleStringObject ) ) 4842 // InternalSolverLanguage.g:1726:2: ( ( (this_Reference_0= ruleReference ( () ( ( '(' )=> (lv_argumentList_2_0= ruleArgumentList ) ) )? ) | this_Interval_3= ruleInterval | this_Literal_4= ruleLiteral | (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' ) ) )
3062 // InternalSolverLanguage.g:1030:2: (this_BooleanObject_0= ruleBooleanObject | this_IntObject_1= ruleIntObject | this_RealObject_2= ruleRealObject | this_StringObject_3= ruleStringObject ) 4843 // InternalSolverLanguage.g:1727:2: ( (this_Reference_0= ruleReference ( () ( ( '(' )=> (lv_argumentList_2_0= ruleArgumentList ) ) )? ) | this_Interval_3= ruleInterval | this_Literal_4= ruleLiteral | (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' ) )
3063 { 4844 {
3064 // InternalSolverLanguage.g:1030:2: (this_BooleanObject_0= ruleBooleanObject | this_IntObject_1= ruleIntObject | this_RealObject_2= ruleRealObject | this_StringObject_3= ruleStringObject ) 4845 // InternalSolverLanguage.g:1727:2: ( (this_Reference_0= ruleReference ( () ( ( '(' )=> (lv_argumentList_2_0= ruleArgumentList ) ) )? ) | this_Interval_3= ruleInterval | this_Literal_4= ruleLiteral | (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' ) )
3065 int alt16=4; 4846 int alt21=4;
3066 switch ( input.LA(1) ) { 4847 switch ( input.LA(1) ) {
3067 case 13: 4848 case RULE_ID:
3068 case 14: 4849 case RULE_QUOTED_ID:
3069 { 4850 {
3070 alt16=1; 4851 alt21=1;
3071 } 4852 }
3072 break; 4853 break;
3073 case 11: 4854 case 36:
3074 { 4855 {
3075 int LA16_2 = input.LA(2); 4856 alt21=2;
3076
3077 if ( (LA16_2==RULE_INT) ) {
3078 int LA16_3 = input.LA(3);
3079
3080 if ( (LA16_3==12) ) {
3081 alt16=3;
3082 }
3083 else if ( (LA16_3==EOF||(LA16_3>=18 && LA16_3<=19)) ) {
3084 alt16=2;
3085 }
3086 else {
3087 NoViableAltException nvae =
3088 new NoViableAltException("", 16, 3, input);
3089
3090 throw nvae;
3091 }
3092 }
3093 else {
3094 NoViableAltException nvae =
3095 new NoViableAltException("", 16, 2, input);
3096
3097 throw nvae;
3098 }
3099 } 4857 }
3100 break; 4858 break;
4859 case RULE_STRING:
3101 case RULE_INT: 4860 case RULE_INT:
4861 case 19:
4862 case 39:
4863 case 40:
4864 case 70:
4865 case 71:
4866 case 72:
3102 { 4867 {
3103 int LA16_3 = input.LA(2); 4868 alt21=3;
3104
3105 if ( (LA16_3==12) ) {
3106 alt16=3;
3107 }
3108 else if ( (LA16_3==EOF||(LA16_3>=18 && LA16_3<=19)) ) {
3109 alt16=2;
3110 }
3111 else {
3112 NoViableAltException nvae =
3113 new NoViableAltException("", 16, 3, input);
3114
3115 throw nvae;
3116 }
3117 } 4869 }
3118 break; 4870 break;
3119 case RULE_STRING: 4871 case 33:
3120 { 4872 {
3121 alt16=4; 4873 alt21=4;
3122 } 4874 }
3123 break; 4875 break;
3124 default: 4876 default:
4877 if (state.backtracking>0) {state.failed=true; return current;}
3125 NoViableAltException nvae = 4878 NoViableAltException nvae =
3126 new NoViableAltException("", 16, 0, input); 4879 new NoViableAltException("", 21, 0, input);
3127 4880
3128 throw nvae; 4881 throw nvae;
3129 } 4882 }
3130 4883
3131 switch (alt16) { 4884 switch (alt21) {
3132 case 1 : 4885 case 1 :
3133 // InternalSolverLanguage.g:1031:3: this_BooleanObject_0= ruleBooleanObject 4886 // InternalSolverLanguage.g:1728:3: (this_Reference_0= ruleReference ( () ( ( '(' )=> (lv_argumentList_2_0= ruleArgumentList ) ) )? )
4887 {
4888 // InternalSolverLanguage.g:1728:3: (this_Reference_0= ruleReference ( () ( ( '(' )=> (lv_argumentList_2_0= ruleArgumentList ) ) )? )
4889 // InternalSolverLanguage.g:1729:4: this_Reference_0= ruleReference ( () ( ( '(' )=> (lv_argumentList_2_0= ruleArgumentList ) ) )?
3134 { 4890 {
4891 if ( state.backtracking==0 ) {
3135 4892
3136 newCompositeNode(grammarAccess.getDataObjectAccess().getBooleanObjectParserRuleCall_0()); 4893 newCompositeNode(grammarAccess.getAtomicExpressionAccess().getReferenceParserRuleCall_0_0());
3137 4894
3138 pushFollow(FOLLOW_2); 4895 }
3139 this_BooleanObject_0=ruleBooleanObject(); 4896 pushFollow(FOLLOW_29);
4897 this_Reference_0=ruleReference();
3140 4898
3141 state._fsp--; 4899 state._fsp--;
4900 if (state.failed) return current;
4901 if ( state.backtracking==0 ) {
4902
4903 current = this_Reference_0;
4904 afterParserOrEnumRuleCall();
4905
4906 }
4907 // InternalSolverLanguage.g:1737:4: ( () ( ( '(' )=> (lv_argumentList_2_0= ruleArgumentList ) ) )?
4908 int alt20=2;
4909 int LA20_0 = input.LA(1);
4910
4911 if ( (LA20_0==33) ) {
4912 alt20=1;
4913 }
4914 switch (alt20) {
4915 case 1 :
4916 // InternalSolverLanguage.g:1738:5: () ( ( '(' )=> (lv_argumentList_2_0= ruleArgumentList ) )
4917 {
4918 // InternalSolverLanguage.g:1738:5: ()
4919 // InternalSolverLanguage.g:1739:6:
4920 {
4921 if ( state.backtracking==0 ) {
4922
4923 current = forceCreateModelElementAndSet(
4924 grammarAccess.getAtomicExpressionAccess().getCallFunctorAction_0_1_0(),
4925 current);
4926
4927 }
4928
4929 }
4930
4931 // InternalSolverLanguage.g:1745:5: ( ( '(' )=> (lv_argumentList_2_0= ruleArgumentList ) )
4932 // InternalSolverLanguage.g:1746:6: ( '(' )=> (lv_argumentList_2_0= ruleArgumentList )
4933 {
4934 // InternalSolverLanguage.g:1747:6: (lv_argumentList_2_0= ruleArgumentList )
4935 // InternalSolverLanguage.g:1748:7: lv_argumentList_2_0= ruleArgumentList
4936 {
4937 if ( state.backtracking==0 ) {
4938
4939 newCompositeNode(grammarAccess.getAtomicExpressionAccess().getArgumentListArgumentListParserRuleCall_0_1_1_0());
4940
4941 }
4942 pushFollow(FOLLOW_2);
4943 lv_argumentList_2_0=ruleArgumentList();
4944
4945 state._fsp--;
4946 if (state.failed) return current;
4947 if ( state.backtracking==0 ) {
4948
4949 if (current==null) {
4950 current = createModelElementForParent(grammarAccess.getAtomicExpressionRule());
4951 }
4952 set(
4953 current,
4954 "argumentList",
4955 lv_argumentList_2_0,
4956 "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList");
4957 afterParserOrEnumRuleCall();
4958
4959 }
4960
4961 }
4962
4963
4964 }
4965
4966
4967 }
4968 break;
3142 4969
4970 }
4971
4972
4973 }
3143 4974
3144 current = this_BooleanObject_0;
3145 afterParserOrEnumRuleCall();
3146
3147 4975
3148 } 4976 }
3149 break; 4977 break;
3150 case 2 : 4978 case 2 :
3151 // InternalSolverLanguage.g:1040:3: this_IntObject_1= ruleIntObject 4979 // InternalSolverLanguage.g:1768:3: this_Interval_3= ruleInterval
3152 { 4980 {
4981 if ( state.backtracking==0 ) {
3153 4982
3154 newCompositeNode(grammarAccess.getDataObjectAccess().getIntObjectParserRuleCall_1()); 4983 newCompositeNode(grammarAccess.getAtomicExpressionAccess().getIntervalParserRuleCall_1());
3155 4984
4985 }
3156 pushFollow(FOLLOW_2); 4986 pushFollow(FOLLOW_2);
3157 this_IntObject_1=ruleIntObject(); 4987 this_Interval_3=ruleInterval();
3158 4988
3159 state._fsp--; 4989 state._fsp--;
4990 if (state.failed) return current;
4991 if ( state.backtracking==0 ) {
3160 4992
3161 4993 current = this_Interval_3;
3162 current = this_IntObject_1; 4994 afterParserOrEnumRuleCall();
3163 afterParserOrEnumRuleCall(); 4995
3164 4996 }
3165 4997
3166 } 4998 }
3167 break; 4999 break;
3168 case 3 : 5000 case 3 :
3169 // InternalSolverLanguage.g:1049:3: this_RealObject_2= ruleRealObject 5001 // InternalSolverLanguage.g:1777:3: this_Literal_4= ruleLiteral
3170 { 5002 {
5003 if ( state.backtracking==0 ) {
3171 5004
3172 newCompositeNode(grammarAccess.getDataObjectAccess().getRealObjectParserRuleCall_2()); 5005 newCompositeNode(grammarAccess.getAtomicExpressionAccess().getLiteralParserRuleCall_2());
3173 5006
5007 }
3174 pushFollow(FOLLOW_2); 5008 pushFollow(FOLLOW_2);
3175 this_RealObject_2=ruleRealObject(); 5009 this_Literal_4=ruleLiteral();
3176 5010
3177 state._fsp--; 5011 state._fsp--;
5012 if (state.failed) return current;
5013 if ( state.backtracking==0 ) {
3178 5014
3179 5015 current = this_Literal_4;
3180 current = this_RealObject_2; 5016 afterParserOrEnumRuleCall();
3181 afterParserOrEnumRuleCall(); 5017
3182 5018 }
3183 5019
3184 } 5020 }
3185 break; 5021 break;
3186 case 4 : 5022 case 4 :
3187 // InternalSolverLanguage.g:1058:3: this_StringObject_3= ruleStringObject 5023 // InternalSolverLanguage.g:1786:3: (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' )
3188 { 5024 {
5025 // InternalSolverLanguage.g:1786:3: (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' )
5026 // InternalSolverLanguage.g:1787:4: otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')'
5027 {
5028 otherlv_5=(Token)match(input,33,FOLLOW_6); if (state.failed) return current;
5029 if ( state.backtracking==0 ) {
3189 5030
3190 newCompositeNode(grammarAccess.getDataObjectAccess().getStringObjectParserRuleCall_3()); 5031 newLeafNode(otherlv_5, grammarAccess.getAtomicExpressionAccess().getLeftParenthesisKeyword_3_0());
3191 5032
3192 pushFollow(FOLLOW_2); 5033 }
3193 this_StringObject_3=ruleStringObject(); 5034 if ( state.backtracking==0 ) {
5035
5036 newCompositeNode(grammarAccess.getAtomicExpressionAccess().getExpressionParserRuleCall_3_1());
5037
5038 }
5039 pushFollow(FOLLOW_30);
5040 this_Expression_6=ruleExpression();
3194 5041
3195 state._fsp--; 5042 state._fsp--;
5043 if (state.failed) return current;
5044 if ( state.backtracking==0 ) {
3196 5045
5046 current = this_Expression_6;
5047 afterParserOrEnumRuleCall();
5048
5049 }
5050 otherlv_7=(Token)match(input,34,FOLLOW_2); if (state.failed) return current;
5051 if ( state.backtracking==0 ) {
5052
5053 newLeafNode(otherlv_7, grammarAccess.getAtomicExpressionAccess().getRightParenthesisKeyword_3_2());
5054
5055 }
5056
5057 }
3197 5058
3198 current = this_StringObject_3;
3199 afterParserOrEnumRuleCall();
3200
3201 5059
3202 } 5060 }
3203 break; 5061 break;
@@ -3207,9 +5065,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3207 5065
3208 } 5066 }
3209 5067
5068 if ( state.backtracking==0 ) {
3210 5069
3211 leaveRule(); 5070 leaveRule();
3212 5071
5072 }
3213 } 5073 }
3214 5074
3215 catch (RecognitionException re) { 5075 catch (RecognitionException re) {
@@ -3220,29 +5080,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3220 } 5080 }
3221 return current; 5081 return current;
3222 } 5082 }
3223 // $ANTLR end "ruleDataObject" 5083 // $ANTLR end "ruleAtomicExpression"
3224 5084
3225 5085
3226 // $ANTLR start "entryRuleBooleanObject" 5086 // $ANTLR start "entryRuleCall"
3227 // InternalSolverLanguage.g:1070:1: entryRuleBooleanObject returns [EObject current=null] : iv_ruleBooleanObject= ruleBooleanObject EOF ; 5087 // InternalSolverLanguage.g:1808:1: entryRuleCall returns [EObject current=null] : iv_ruleCall= ruleCall EOF ;
3228 public final EObject entryRuleBooleanObject() throws RecognitionException { 5088 public final EObject entryRuleCall() throws RecognitionException {
3229 EObject current = null; 5089 EObject current = null;
3230 5090
3231 EObject iv_ruleBooleanObject = null; 5091 EObject iv_ruleCall = null;
3232 5092
3233 5093
3234 try { 5094 try {
3235 // InternalSolverLanguage.g:1070:54: (iv_ruleBooleanObject= ruleBooleanObject EOF ) 5095 // InternalSolverLanguage.g:1808:45: (iv_ruleCall= ruleCall EOF )
3236 // InternalSolverLanguage.g:1071:2: iv_ruleBooleanObject= ruleBooleanObject EOF 5096 // InternalSolverLanguage.g:1809:2: iv_ruleCall= ruleCall EOF
3237 { 5097 {
3238 newCompositeNode(grammarAccess.getBooleanObjectRule()); 5098 if ( state.backtracking==0 ) {
5099 newCompositeNode(grammarAccess.getCallRule());
5100 }
3239 pushFollow(FOLLOW_1); 5101 pushFollow(FOLLOW_1);
3240 iv_ruleBooleanObject=ruleBooleanObject(); 5102 iv_ruleCall=ruleCall();
3241 5103
3242 state._fsp--; 5104 state._fsp--;
3243 5105 if (state.failed) return current;
3244 current =iv_ruleBooleanObject; 5106 if ( state.backtracking==0 ) {
3245 match(input,EOF,FOLLOW_2); 5107 current =iv_ruleCall;
5108 }
5109 match(input,EOF,FOLLOW_2); if (state.failed) return current;
3246 5110
3247 } 5111 }
3248 5112
@@ -3256,49 +5120,184 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3256 } 5120 }
3257 return current; 5121 return current;
3258 } 5122 }
3259 // $ANTLR end "entryRuleBooleanObject" 5123 // $ANTLR end "entryRuleCall"
3260 5124
3261 5125
3262 // $ANTLR start "ruleBooleanObject" 5126 // $ANTLR start "ruleCall"
3263 // InternalSolverLanguage.g:1077:1: ruleBooleanObject returns [EObject current=null] : ( (lv_value_0_0= ruleBooleanValue ) ) ; 5127 // InternalSolverLanguage.g:1815:1: ruleCall returns [EObject current=null] : ( ( (lv_functor_0_0= ruleReference ) ) ( ( (lv_transitiveClosure_1_0= RULE_STAR ) ) | ( (lv_reflexiveTransitiveClosure_2_0= RULE_PLUS ) ) )? ( (lv_argumentList_3_0= ruleArgumentList ) ) ) ;
3264 public final EObject ruleBooleanObject() throws RecognitionException { 5128 public final EObject ruleCall() throws RecognitionException {
3265 EObject current = null; 5129 EObject current = null;
3266 5130
3267 EObject lv_value_0_0 = null; 5131 Token lv_transitiveClosure_1_0=null;
5132 Token lv_reflexiveTransitiveClosure_2_0=null;
5133 EObject lv_functor_0_0 = null;
5134
5135 EObject lv_argumentList_3_0 = null;
3268 5136
3269 5137
3270 5138
3271 enterRule(); 5139 enterRule();
3272 5140
3273 try { 5141 try {
3274 // InternalSolverLanguage.g:1083:2: ( ( (lv_value_0_0= ruleBooleanValue ) ) ) 5142 // InternalSolverLanguage.g:1821:2: ( ( ( (lv_functor_0_0= ruleReference ) ) ( ( (lv_transitiveClosure_1_0= RULE_STAR ) ) | ( (lv_reflexiveTransitiveClosure_2_0= RULE_PLUS ) ) )? ( (lv_argumentList_3_0= ruleArgumentList ) ) ) )
3275 // InternalSolverLanguage.g:1084:2: ( (lv_value_0_0= ruleBooleanValue ) ) 5143 // InternalSolverLanguage.g:1822:2: ( ( (lv_functor_0_0= ruleReference ) ) ( ( (lv_transitiveClosure_1_0= RULE_STAR ) ) | ( (lv_reflexiveTransitiveClosure_2_0= RULE_PLUS ) ) )? ( (lv_argumentList_3_0= ruleArgumentList ) ) )
3276 { 5144 {
3277 // InternalSolverLanguage.g:1084:2: ( (lv_value_0_0= ruleBooleanValue ) ) 5145 // InternalSolverLanguage.g:1822:2: ( ( (lv_functor_0_0= ruleReference ) ) ( ( (lv_transitiveClosure_1_0= RULE_STAR ) ) | ( (lv_reflexiveTransitiveClosure_2_0= RULE_PLUS ) ) )? ( (lv_argumentList_3_0= ruleArgumentList ) ) )
3278 // InternalSolverLanguage.g:1085:3: (lv_value_0_0= ruleBooleanValue ) 5146 // InternalSolverLanguage.g:1823:3: ( (lv_functor_0_0= ruleReference ) ) ( ( (lv_transitiveClosure_1_0= RULE_STAR ) ) | ( (lv_reflexiveTransitiveClosure_2_0= RULE_PLUS ) ) )? ( (lv_argumentList_3_0= ruleArgumentList ) )
3279 { 5147 {
3280 // InternalSolverLanguage.g:1085:3: (lv_value_0_0= ruleBooleanValue ) 5148 // InternalSolverLanguage.g:1823:3: ( (lv_functor_0_0= ruleReference ) )
3281 // InternalSolverLanguage.g:1086:4: lv_value_0_0= ruleBooleanValue 5149 // InternalSolverLanguage.g:1824:4: (lv_functor_0_0= ruleReference )
3282 { 5150 {
5151 // InternalSolverLanguage.g:1824:4: (lv_functor_0_0= ruleReference )
5152 // InternalSolverLanguage.g:1825:5: lv_functor_0_0= ruleReference
5153 {
5154 if ( state.backtracking==0 ) {
5155
5156 newCompositeNode(grammarAccess.getCallAccess().getFunctorReferenceParserRuleCall_0_0());
5157
5158 }
5159 pushFollow(FOLLOW_31);
5160 lv_functor_0_0=ruleReference();
5161
5162 state._fsp--;
5163 if (state.failed) return current;
5164 if ( state.backtracking==0 ) {
5165
5166 if (current==null) {
5167 current = createModelElementForParent(grammarAccess.getCallRule());
5168 }
5169 set(
5170 current,
5171 "functor",
5172 lv_functor_0_0,
5173 "org.eclipse.viatra.solver.language.SolverLanguage.Reference");
5174 afterParserOrEnumRuleCall();
5175
5176 }
5177
5178 }
5179
5180
5181 }
3283 5182
3284 newCompositeNode(grammarAccess.getBooleanObjectAccess().getValueBooleanValueParserRuleCall_0()); 5183 // InternalSolverLanguage.g:1842:3: ( ( (lv_transitiveClosure_1_0= RULE_STAR ) ) | ( (lv_reflexiveTransitiveClosure_2_0= RULE_PLUS ) ) )?
3285 5184 int alt22=3;
5185 int LA22_0 = input.LA(1);
5186
5187 if ( (LA22_0==RULE_STAR) ) {
5188 alt22=1;
5189 }
5190 else if ( (LA22_0==RULE_PLUS) ) {
5191 alt22=2;
5192 }
5193 switch (alt22) {
5194 case 1 :
5195 // InternalSolverLanguage.g:1843:4: ( (lv_transitiveClosure_1_0= RULE_STAR ) )
5196 {
5197 // InternalSolverLanguage.g:1843:4: ( (lv_transitiveClosure_1_0= RULE_STAR ) )
5198 // InternalSolverLanguage.g:1844:5: (lv_transitiveClosure_1_0= RULE_STAR )
5199 {
5200 // InternalSolverLanguage.g:1844:5: (lv_transitiveClosure_1_0= RULE_STAR )
5201 // InternalSolverLanguage.g:1845:6: lv_transitiveClosure_1_0= RULE_STAR
5202 {
5203 lv_transitiveClosure_1_0=(Token)match(input,RULE_STAR,FOLLOW_10); if (state.failed) return current;
5204 if ( state.backtracking==0 ) {
5205
5206 newLeafNode(lv_transitiveClosure_1_0, grammarAccess.getCallAccess().getTransitiveClosureSTARTerminalRuleCall_1_0_0());
5207
5208 }
5209 if ( state.backtracking==0 ) {
5210
5211 if (current==null) {
5212 current = createModelElement(grammarAccess.getCallRule());
5213 }
5214 setWithLastConsumed(
5215 current,
5216 "transitiveClosure",
5217 true,
5218 "org.eclipse.viatra.solver.language.SolverLanguage.STAR");
5219
5220 }
5221
5222 }
5223
5224
5225 }
5226
5227
5228 }
5229 break;
5230 case 2 :
5231 // InternalSolverLanguage.g:1862:4: ( (lv_reflexiveTransitiveClosure_2_0= RULE_PLUS ) )
5232 {
5233 // InternalSolverLanguage.g:1862:4: ( (lv_reflexiveTransitiveClosure_2_0= RULE_PLUS ) )
5234 // InternalSolverLanguage.g:1863:5: (lv_reflexiveTransitiveClosure_2_0= RULE_PLUS )
5235 {
5236 // InternalSolverLanguage.g:1863:5: (lv_reflexiveTransitiveClosure_2_0= RULE_PLUS )
5237 // InternalSolverLanguage.g:1864:6: lv_reflexiveTransitiveClosure_2_0= RULE_PLUS
5238 {
5239 lv_reflexiveTransitiveClosure_2_0=(Token)match(input,RULE_PLUS,FOLLOW_10); if (state.failed) return current;
5240 if ( state.backtracking==0 ) {
5241
5242 newLeafNode(lv_reflexiveTransitiveClosure_2_0, grammarAccess.getCallAccess().getReflexiveTransitiveClosurePLUSTerminalRuleCall_1_1_0());
5243
5244 }
5245 if ( state.backtracking==0 ) {
5246
5247 if (current==null) {
5248 current = createModelElement(grammarAccess.getCallRule());
5249 }
5250 setWithLastConsumed(
5251 current,
5252 "reflexiveTransitiveClosure",
5253 true,
5254 "org.eclipse.viatra.solver.language.SolverLanguage.PLUS");
5255
5256 }
5257
5258 }
5259
5260
5261 }
5262
5263
5264 }
5265 break;
5266
5267 }
5268
5269 // InternalSolverLanguage.g:1881:3: ( (lv_argumentList_3_0= ruleArgumentList ) )
5270 // InternalSolverLanguage.g:1882:4: (lv_argumentList_3_0= ruleArgumentList )
5271 {
5272 // InternalSolverLanguage.g:1882:4: (lv_argumentList_3_0= ruleArgumentList )
5273 // InternalSolverLanguage.g:1883:5: lv_argumentList_3_0= ruleArgumentList
5274 {
5275 if ( state.backtracking==0 ) {
5276
5277 newCompositeNode(grammarAccess.getCallAccess().getArgumentListArgumentListParserRuleCall_2_0());
5278
5279 }
3286 pushFollow(FOLLOW_2); 5280 pushFollow(FOLLOW_2);
3287 lv_value_0_0=ruleBooleanValue(); 5281 lv_argumentList_3_0=ruleArgumentList();
3288 5282
3289 state._fsp--; 5283 state._fsp--;
5284 if (state.failed) return current;
5285 if ( state.backtracking==0 ) {
5286
5287 if (current==null) {
5288 current = createModelElementForParent(grammarAccess.getCallRule());
5289 }
5290 set(
5291 current,
5292 "argumentList",
5293 lv_argumentList_3_0,
5294 "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList");
5295 afterParserOrEnumRuleCall();
5296
5297 }
3290 5298
5299 }
3291 5300
3292 if (current==null) {
3293 current = createModelElementForParent(grammarAccess.getBooleanObjectRule());
3294 }
3295 set(
3296 current,
3297 "value",
3298 lv_value_0_0,
3299 "org.eclipse.viatra.solver.language.SolverLanguage.BooleanValue");
3300 afterParserOrEnumRuleCall();
3301
3302 5301
3303 } 5302 }
3304 5303
@@ -3308,9 +5307,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3308 5307
3309 } 5308 }
3310 5309
5310 if ( state.backtracking==0 ) {
3311 5311
3312 leaveRule(); 5312 leaveRule();
3313 5313
5314 }
3314 } 5315 }
3315 5316
3316 catch (RecognitionException re) { 5317 catch (RecognitionException re) {
@@ -3321,29 +5322,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3321 } 5322 }
3322 return current; 5323 return current;
3323 } 5324 }
3324 // $ANTLR end "ruleBooleanObject" 5325 // $ANTLR end "ruleCall"
3325 5326
3326 5327
3327 // $ANTLR start "entryRuleIntObject" 5328 // $ANTLR start "entryRuleArgumentList"
3328 // InternalSolverLanguage.g:1106:1: entryRuleIntObject returns [EObject current=null] : iv_ruleIntObject= ruleIntObject EOF ; 5329 // InternalSolverLanguage.g:1904:1: entryRuleArgumentList returns [EObject current=null] : iv_ruleArgumentList= ruleArgumentList EOF ;
3329 public final EObject entryRuleIntObject() throws RecognitionException { 5330 public final EObject entryRuleArgumentList() throws RecognitionException {
3330 EObject current = null; 5331 EObject current = null;
3331 5332
3332 EObject iv_ruleIntObject = null; 5333 EObject iv_ruleArgumentList = null;
3333 5334
3334 5335
3335 try { 5336 try {
3336 // InternalSolverLanguage.g:1106:50: (iv_ruleIntObject= ruleIntObject EOF ) 5337 // InternalSolverLanguage.g:1904:53: (iv_ruleArgumentList= ruleArgumentList EOF )
3337 // InternalSolverLanguage.g:1107:2: iv_ruleIntObject= ruleIntObject EOF 5338 // InternalSolverLanguage.g:1905:2: iv_ruleArgumentList= ruleArgumentList EOF
3338 { 5339 {
3339 newCompositeNode(grammarAccess.getIntObjectRule()); 5340 if ( state.backtracking==0 ) {
5341 newCompositeNode(grammarAccess.getArgumentListRule());
5342 }
3340 pushFollow(FOLLOW_1); 5343 pushFollow(FOLLOW_1);
3341 iv_ruleIntObject=ruleIntObject(); 5344 iv_ruleArgumentList=ruleArgumentList();
3342 5345
3343 state._fsp--; 5346 state._fsp--;
3344 5347 if (state.failed) return current;
3345 current =iv_ruleIntObject; 5348 if ( state.backtracking==0 ) {
3346 match(input,EOF,FOLLOW_2); 5349 current =iv_ruleArgumentList;
5350 }
5351 match(input,EOF,FOLLOW_2); if (state.failed) return current;
3347 5352
3348 } 5353 }
3349 5354
@@ -3357,61 +5362,185 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3357 } 5362 }
3358 return current; 5363 return current;
3359 } 5364 }
3360 // $ANTLR end "entryRuleIntObject" 5365 // $ANTLR end "entryRuleArgumentList"
3361 5366
3362 5367
3363 // $ANTLR start "ruleIntObject" 5368 // $ANTLR start "ruleArgumentList"
3364 // InternalSolverLanguage.g:1113:1: ruleIntObject returns [EObject current=null] : ( (lv_value_0_0= ruleINTLiteral ) ) ; 5369 // InternalSolverLanguage.g:1911:1: ruleArgumentList returns [EObject current=null] : ( () otherlv_1= '(' ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )? otherlv_5= ')' ) ;
3365 public final EObject ruleIntObject() throws RecognitionException { 5370 public final EObject ruleArgumentList() throws RecognitionException {
3366 EObject current = null; 5371 EObject current = null;
3367 5372
3368 AntlrDatatypeRuleToken lv_value_0_0 = null; 5373 Token otherlv_1=null;
5374 Token otherlv_3=null;
5375 Token otherlv_5=null;
5376 EObject lv_arguments_2_0 = null;
5377
5378 EObject lv_arguments_4_0 = null;
3369 5379
3370 5380
3371 5381
3372 enterRule(); 5382 enterRule();
3373 5383
3374 try { 5384 try {
3375 // InternalSolverLanguage.g:1119:2: ( ( (lv_value_0_0= ruleINTLiteral ) ) ) 5385 // InternalSolverLanguage.g:1917:2: ( ( () otherlv_1= '(' ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )? otherlv_5= ')' ) )
3376 // InternalSolverLanguage.g:1120:2: ( (lv_value_0_0= ruleINTLiteral ) ) 5386 // InternalSolverLanguage.g:1918:2: ( () otherlv_1= '(' ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )? otherlv_5= ')' )
3377 { 5387 {
3378 // InternalSolverLanguage.g:1120:2: ( (lv_value_0_0= ruleINTLiteral ) ) 5388 // InternalSolverLanguage.g:1918:2: ( () otherlv_1= '(' ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )? otherlv_5= ')' )
3379 // InternalSolverLanguage.g:1121:3: (lv_value_0_0= ruleINTLiteral ) 5389 // InternalSolverLanguage.g:1919:3: () otherlv_1= '(' ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )? otherlv_5= ')'
3380 { 5390 {
3381 // InternalSolverLanguage.g:1121:3: (lv_value_0_0= ruleINTLiteral ) 5391 // InternalSolverLanguage.g:1919:3: ()
3382 // InternalSolverLanguage.g:1122:4: lv_value_0_0= ruleINTLiteral 5392 // InternalSolverLanguage.g:1920:4:
3383 { 5393 {
5394 if ( state.backtracking==0 ) {
3384 5395
3385 newCompositeNode(grammarAccess.getIntObjectAccess().getValueINTLiteralParserRuleCall_0()); 5396 current = forceCreateModelElement(
3386 5397 grammarAccess.getArgumentListAccess().getArgumentListAction_0(),
3387 pushFollow(FOLLOW_2); 5398 current);
3388 lv_value_0_0=ruleINTLiteral(); 5399
5400 }
3389 5401
3390 state._fsp--; 5402 }
5403
5404 otherlv_1=(Token)match(input,33,FOLLOW_32); if (state.failed) return current;
5405 if ( state.backtracking==0 ) {
5406
5407 newLeafNode(otherlv_1, grammarAccess.getArgumentListAccess().getLeftParenthesisKeyword_1());
5408
5409 }
5410 // InternalSolverLanguage.g:1930:3: ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )?
5411 int alt24=2;
5412 int LA24_0 = input.LA(1);
5413
5414 if ( ((LA24_0>=RULE_STRING && LA24_0<=RULE_QUOTED_ID)||LA24_0==19||LA24_0==29||LA24_0==33||(LA24_0>=35 && LA24_0<=36)||(LA24_0>=39 && LA24_0<=40)||(LA24_0>=56 && LA24_0<=57)||(LA24_0>=60 && LA24_0<=72)) ) {
5415 alt24=1;
5416 }
5417 switch (alt24) {
5418 case 1 :
5419 // InternalSolverLanguage.g:1931:4: ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )*
5420 {
5421 // InternalSolverLanguage.g:1931:4: ( (lv_arguments_2_0= ruleArgument ) )
5422 // InternalSolverLanguage.g:1932:5: (lv_arguments_2_0= ruleArgument )
5423 {
5424 // InternalSolverLanguage.g:1932:5: (lv_arguments_2_0= ruleArgument )
5425 // InternalSolverLanguage.g:1933:6: lv_arguments_2_0= ruleArgument
5426 {
5427 if ( state.backtracking==0 ) {
5428
5429 newCompositeNode(grammarAccess.getArgumentListAccess().getArgumentsArgumentParserRuleCall_2_0_0());
5430
5431 }
5432 pushFollow(FOLLOW_33);
5433 lv_arguments_2_0=ruleArgument();
5434
5435 state._fsp--;
5436 if (state.failed) return current;
5437 if ( state.backtracking==0 ) {
5438
5439 if (current==null) {
5440 current = createModelElementForParent(grammarAccess.getArgumentListRule());
5441 }
5442 add(
5443 current,
5444 "arguments",
5445 lv_arguments_2_0,
5446 "org.eclipse.viatra.solver.language.SolverLanguage.Argument");
5447 afterParserOrEnumRuleCall();
5448
5449 }
5450
5451 }
5452
5453
5454 }
5455
5456 // InternalSolverLanguage.g:1950:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )*
5457 loop23:
5458 do {
5459 int alt23=2;
5460 int LA23_0 = input.LA(1);
5461
5462 if ( (LA23_0==28) ) {
5463 alt23=1;
5464 }
5465
5466
5467 switch (alt23) {
5468 case 1 :
5469 // InternalSolverLanguage.g:1951:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) )
5470 {
5471 otherlv_3=(Token)match(input,28,FOLLOW_34); if (state.failed) return current;
5472 if ( state.backtracking==0 ) {
5473
5474 newLeafNode(otherlv_3, grammarAccess.getArgumentListAccess().getCommaKeyword_2_1_0());
5475
5476 }
5477 // InternalSolverLanguage.g:1955:5: ( (lv_arguments_4_0= ruleArgument ) )
5478 // InternalSolverLanguage.g:1956:6: (lv_arguments_4_0= ruleArgument )
5479 {
5480 // InternalSolverLanguage.g:1956:6: (lv_arguments_4_0= ruleArgument )
5481 // InternalSolverLanguage.g:1957:7: lv_arguments_4_0= ruleArgument
5482 {
5483 if ( state.backtracking==0 ) {
5484
5485 newCompositeNode(grammarAccess.getArgumentListAccess().getArgumentsArgumentParserRuleCall_2_1_1_0());
5486
5487 }
5488 pushFollow(FOLLOW_33);
5489 lv_arguments_4_0=ruleArgument();
5490
5491 state._fsp--;
5492 if (state.failed) return current;
5493 if ( state.backtracking==0 ) {
5494
5495 if (current==null) {
5496 current = createModelElementForParent(grammarAccess.getArgumentListRule());
5497 }
5498 add(
5499 current,
5500 "arguments",
5501 lv_arguments_4_0,
5502 "org.eclipse.viatra.solver.language.SolverLanguage.Argument");
5503 afterParserOrEnumRuleCall();
5504
5505 }
5506
5507 }
5508
5509
5510 }
5511
5512
5513 }
5514 break;
5515
5516 default :
5517 break loop23;
5518 }
5519 } while (true);
3391 5520
3392 5521
3393 if (current==null) { 5522 }
3394 current = createModelElementForParent(grammarAccess.getIntObjectRule()); 5523 break;
3395 }
3396 set(
3397 current,
3398 "value",
3399 lv_value_0_0,
3400 "org.eclipse.viatra.solver.language.SolverLanguage.INTLiteral");
3401 afterParserOrEnumRuleCall();
3402
3403 5524
3404 } 5525 }
3405 5526
5527 otherlv_5=(Token)match(input,34,FOLLOW_2); if (state.failed) return current;
5528 if ( state.backtracking==0 ) {
5529
5530 newLeafNode(otherlv_5, grammarAccess.getArgumentListAccess().getRightParenthesisKeyword_3());
5531
5532 }
3406 5533
3407 } 5534 }
3408 5535
3409 5536
3410 } 5537 }
3411 5538
5539 if ( state.backtracking==0 ) {
3412 5540
3413 leaveRule(); 5541 leaveRule();
3414 5542
5543 }
3415 } 5544 }
3416 5545
3417 catch (RecognitionException re) { 5546 catch (RecognitionException re) {
@@ -3422,29 +5551,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3422 } 5551 }
3423 return current; 5552 return current;
3424 } 5553 }
3425 // $ANTLR end "ruleIntObject" 5554 // $ANTLR end "ruleArgumentList"
3426 5555
3427 5556
3428 // $ANTLR start "entryRuleRealObject" 5557 // $ANTLR start "entryRuleArgument"
3429 // InternalSolverLanguage.g:1142:1: entryRuleRealObject returns [EObject current=null] : iv_ruleRealObject= ruleRealObject EOF ; 5558 // InternalSolverLanguage.g:1984:1: entryRuleArgument returns [EObject current=null] : iv_ruleArgument= ruleArgument EOF ;
3430 public final EObject entryRuleRealObject() throws RecognitionException { 5559 public final EObject entryRuleArgument() throws RecognitionException {
3431 EObject current = null; 5560 EObject current = null;
3432 5561
3433 EObject iv_ruleRealObject = null; 5562 EObject iv_ruleArgument = null;
3434 5563
3435 5564
3436 try { 5565 try {
3437 // InternalSolverLanguage.g:1142:51: (iv_ruleRealObject= ruleRealObject EOF ) 5566 // InternalSolverLanguage.g:1984:49: (iv_ruleArgument= ruleArgument EOF )
3438 // InternalSolverLanguage.g:1143:2: iv_ruleRealObject= ruleRealObject EOF 5567 // InternalSolverLanguage.g:1985:2: iv_ruleArgument= ruleArgument EOF
3439 { 5568 {
3440 newCompositeNode(grammarAccess.getRealObjectRule()); 5569 if ( state.backtracking==0 ) {
5570 newCompositeNode(grammarAccess.getArgumentRule());
5571 }
3441 pushFollow(FOLLOW_1); 5572 pushFollow(FOLLOW_1);
3442 iv_ruleRealObject=ruleRealObject(); 5573 iv_ruleArgument=ruleArgument();
3443 5574
3444 state._fsp--; 5575 state._fsp--;
3445 5576 if (state.failed) return current;
3446 current =iv_ruleRealObject; 5577 if ( state.backtracking==0 ) {
3447 match(input,EOF,FOLLOW_2); 5578 current =iv_ruleArgument;
5579 }
5580 match(input,EOF,FOLLOW_2); if (state.failed) return current;
3448 5581
3449 } 5582 }
3450 5583
@@ -3458,61 +5591,133 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3458 } 5591 }
3459 return current; 5592 return current;
3460 } 5593 }
3461 // $ANTLR end "entryRuleRealObject" 5594 // $ANTLR end "entryRuleArgument"
3462 5595
3463 5596
3464 // $ANTLR start "ruleRealObject" 5597 // $ANTLR start "ruleArgument"
3465 // InternalSolverLanguage.g:1149:1: ruleRealObject returns [EObject current=null] : ( (lv_value_0_0= ruleREALLiteral ) ) ; 5598 // InternalSolverLanguage.g:1991:1: ruleArgument returns [EObject current=null] : (this_ExpressionArgument_0= ruleExpressionArgument | this_StarArgument_1= ruleStarArgument | this_TypedArgument_2= ruleTypedArgument | this_TypedStarArgument_3= ruleTypedStarArgument ) ;
3466 public final EObject ruleRealObject() throws RecognitionException { 5599 public final EObject ruleArgument() throws RecognitionException {
3467 EObject current = null; 5600 EObject current = null;
3468 5601
3469 AntlrDatatypeRuleToken lv_value_0_0 = null; 5602 EObject this_ExpressionArgument_0 = null;
5603
5604 EObject this_StarArgument_1 = null;
5605
5606 EObject this_TypedArgument_2 = null;
5607
5608 EObject this_TypedStarArgument_3 = null;
3470 5609
3471 5610
3472 5611
3473 enterRule(); 5612 enterRule();
3474 5613
3475 try { 5614 try {
3476 // InternalSolverLanguage.g:1155:2: ( ( (lv_value_0_0= ruleREALLiteral ) ) ) 5615 // InternalSolverLanguage.g:1997:2: ( (this_ExpressionArgument_0= ruleExpressionArgument | this_StarArgument_1= ruleStarArgument | this_TypedArgument_2= ruleTypedArgument | this_TypedStarArgument_3= ruleTypedStarArgument ) )
3477 // InternalSolverLanguage.g:1156:2: ( (lv_value_0_0= ruleREALLiteral ) ) 5616 // InternalSolverLanguage.g:1998:2: (this_ExpressionArgument_0= ruleExpressionArgument | this_StarArgument_1= ruleStarArgument | this_TypedArgument_2= ruleTypedArgument | this_TypedStarArgument_3= ruleTypedStarArgument )
3478 {
3479 // InternalSolverLanguage.g:1156:2: ( (lv_value_0_0= ruleREALLiteral ) )
3480 // InternalSolverLanguage.g:1157:3: (lv_value_0_0= ruleREALLiteral )
3481 {
3482 // InternalSolverLanguage.g:1157:3: (lv_value_0_0= ruleREALLiteral )
3483 // InternalSolverLanguage.g:1158:4: lv_value_0_0= ruleREALLiteral
3484 { 5617 {
5618 // InternalSolverLanguage.g:1998:2: (this_ExpressionArgument_0= ruleExpressionArgument | this_StarArgument_1= ruleStarArgument | this_TypedArgument_2= ruleTypedArgument | this_TypedStarArgument_3= ruleTypedStarArgument )
5619 int alt25=4;
5620 alt25 = dfa25.predict(input);
5621 switch (alt25) {
5622 case 1 :
5623 // InternalSolverLanguage.g:1999:3: this_ExpressionArgument_0= ruleExpressionArgument
5624 {
5625 if ( state.backtracking==0 ) {
3485 5626
3486 newCompositeNode(grammarAccess.getRealObjectAccess().getValueREALLiteralParserRuleCall_0()); 5627 newCompositeNode(grammarAccess.getArgumentAccess().getExpressionArgumentParserRuleCall_0());
3487 5628
3488 pushFollow(FOLLOW_2); 5629 }
3489 lv_value_0_0=ruleREALLiteral(); 5630 pushFollow(FOLLOW_2);
5631 this_ExpressionArgument_0=ruleExpressionArgument();
3490 5632
3491 state._fsp--; 5633 state._fsp--;
5634 if (state.failed) return current;
5635 if ( state.backtracking==0 ) {
3492 5636
5637 current = this_ExpressionArgument_0;
5638 afterParserOrEnumRuleCall();
5639
5640 }
3493 5641
3494 if (current==null) { 5642 }
3495 current = createModelElementForParent(grammarAccess.getRealObjectRule()); 5643 break;
3496 } 5644 case 2 :
3497 set( 5645 // InternalSolverLanguage.g:2008:3: this_StarArgument_1= ruleStarArgument
3498 current, 5646 {
3499 "value", 5647 if ( state.backtracking==0 ) {
3500 lv_value_0_0,
3501 "org.eclipse.viatra.solver.language.SolverLanguage.REALLiteral");
3502 afterParserOrEnumRuleCall();
3503
3504 5648
3505 } 5649 newCompositeNode(grammarAccess.getArgumentAccess().getStarArgumentParserRuleCall_1());
5650
5651 }
5652 pushFollow(FOLLOW_2);
5653 this_StarArgument_1=ruleStarArgument();
3506 5654
5655 state._fsp--;
5656 if (state.failed) return current;
5657 if ( state.backtracking==0 ) {
5658
5659 current = this_StarArgument_1;
5660 afterParserOrEnumRuleCall();
5661
5662 }
5663
5664 }
5665 break;
5666 case 3 :
5667 // InternalSolverLanguage.g:2017:3: this_TypedArgument_2= ruleTypedArgument
5668 {
5669 if ( state.backtracking==0 ) {
5670
5671 newCompositeNode(grammarAccess.getArgumentAccess().getTypedArgumentParserRuleCall_2());
5672
5673 }
5674 pushFollow(FOLLOW_2);
5675 this_TypedArgument_2=ruleTypedArgument();
5676
5677 state._fsp--;
5678 if (state.failed) return current;
5679 if ( state.backtracking==0 ) {
5680
5681 current = this_TypedArgument_2;
5682 afterParserOrEnumRuleCall();
5683
5684 }
5685
5686 }
5687 break;
5688 case 4 :
5689 // InternalSolverLanguage.g:2026:3: this_TypedStarArgument_3= ruleTypedStarArgument
5690 {
5691 if ( state.backtracking==0 ) {
5692
5693 newCompositeNode(grammarAccess.getArgumentAccess().getTypedStarArgumentParserRuleCall_3());
5694
5695 }
5696 pushFollow(FOLLOW_2);
5697 this_TypedStarArgument_3=ruleTypedStarArgument();
5698
5699 state._fsp--;
5700 if (state.failed) return current;
5701 if ( state.backtracking==0 ) {
5702
5703 current = this_TypedStarArgument_3;
5704 afterParserOrEnumRuleCall();
5705
5706 }
5707
5708 }
5709 break;
3507 5710
3508 } 5711 }
3509 5712
3510 5713
3511 } 5714 }
3512 5715
5716 if ( state.backtracking==0 ) {
3513 5717
3514 leaveRule(); 5718 leaveRule();
3515 5719
5720 }
3516 } 5721 }
3517 5722
3518 catch (RecognitionException re) { 5723 catch (RecognitionException re) {
@@ -3523,29 +5728,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3523 } 5728 }
3524 return current; 5729 return current;
3525 } 5730 }
3526 // $ANTLR end "ruleRealObject" 5731 // $ANTLR end "ruleArgument"
3527 5732
3528 5733
3529 // $ANTLR start "entryRuleStringObject" 5734 // $ANTLR start "entryRuleExpressionArgument"
3530 // InternalSolverLanguage.g:1178:1: entryRuleStringObject returns [EObject current=null] : iv_ruleStringObject= ruleStringObject EOF ; 5735 // InternalSolverLanguage.g:2038:1: entryRuleExpressionArgument returns [EObject current=null] : iv_ruleExpressionArgument= ruleExpressionArgument EOF ;
3531 public final EObject entryRuleStringObject() throws RecognitionException { 5736 public final EObject entryRuleExpressionArgument() throws RecognitionException {
3532 EObject current = null; 5737 EObject current = null;
3533 5738
3534 EObject iv_ruleStringObject = null; 5739 EObject iv_ruleExpressionArgument = null;
3535 5740
3536 5741
3537 try { 5742 try {
3538 // InternalSolverLanguage.g:1178:53: (iv_ruleStringObject= ruleStringObject EOF ) 5743 // InternalSolverLanguage.g:2038:59: (iv_ruleExpressionArgument= ruleExpressionArgument EOF )
3539 // InternalSolverLanguage.g:1179:2: iv_ruleStringObject= ruleStringObject EOF 5744 // InternalSolverLanguage.g:2039:2: iv_ruleExpressionArgument= ruleExpressionArgument EOF
3540 { 5745 {
3541 newCompositeNode(grammarAccess.getStringObjectRule()); 5746 if ( state.backtracking==0 ) {
5747 newCompositeNode(grammarAccess.getExpressionArgumentRule());
5748 }
3542 pushFollow(FOLLOW_1); 5749 pushFollow(FOLLOW_1);
3543 iv_ruleStringObject=ruleStringObject(); 5750 iv_ruleExpressionArgument=ruleExpressionArgument();
3544 5751
3545 state._fsp--; 5752 state._fsp--;
3546 5753 if (state.failed) return current;
3547 current =iv_ruleStringObject; 5754 if ( state.backtracking==0 ) {
3548 match(input,EOF,FOLLOW_2); 5755 current =iv_ruleExpressionArgument;
5756 }
5757 match(input,EOF,FOLLOW_2); if (state.failed) return current;
3549 5758
3550 } 5759 }
3551 5760
@@ -3559,43 +5768,53 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3559 } 5768 }
3560 return current; 5769 return current;
3561 } 5770 }
3562 // $ANTLR end "entryRuleStringObject" 5771 // $ANTLR end "entryRuleExpressionArgument"
3563 5772
3564 5773
3565 // $ANTLR start "ruleStringObject" 5774 // $ANTLR start "ruleExpressionArgument"
3566 // InternalSolverLanguage.g:1185:1: ruleStringObject returns [EObject current=null] : ( (lv_value_0_0= RULE_STRING ) ) ; 5775 // InternalSolverLanguage.g:2045:1: ruleExpressionArgument returns [EObject current=null] : ( (lv_body_0_0= ruleComparisonExpression ) ) ;
3567 public final EObject ruleStringObject() throws RecognitionException { 5776 public final EObject ruleExpressionArgument() throws RecognitionException {
3568 EObject current = null; 5777 EObject current = null;
3569 5778
3570 Token lv_value_0_0=null; 5779 EObject lv_body_0_0 = null;
5780
3571 5781
3572 5782
3573 enterRule(); 5783 enterRule();
3574 5784
3575 try { 5785 try {
3576 // InternalSolverLanguage.g:1191:2: ( ( (lv_value_0_0= RULE_STRING ) ) ) 5786 // InternalSolverLanguage.g:2051:2: ( ( (lv_body_0_0= ruleComparisonExpression ) ) )
3577 // InternalSolverLanguage.g:1192:2: ( (lv_value_0_0= RULE_STRING ) ) 5787 // InternalSolverLanguage.g:2052:2: ( (lv_body_0_0= ruleComparisonExpression ) )
3578 { 5788 {
3579 // InternalSolverLanguage.g:1192:2: ( (lv_value_0_0= RULE_STRING ) ) 5789 // InternalSolverLanguage.g:2052:2: ( (lv_body_0_0= ruleComparisonExpression ) )
3580 // InternalSolverLanguage.g:1193:3: (lv_value_0_0= RULE_STRING ) 5790 // InternalSolverLanguage.g:2053:3: (lv_body_0_0= ruleComparisonExpression )
3581 { 5791 {
3582 // InternalSolverLanguage.g:1193:3: (lv_value_0_0= RULE_STRING ) 5792 // InternalSolverLanguage.g:2053:3: (lv_body_0_0= ruleComparisonExpression )
3583 // InternalSolverLanguage.g:1194:4: lv_value_0_0= RULE_STRING 5793 // InternalSolverLanguage.g:2054:4: lv_body_0_0= ruleComparisonExpression
3584 { 5794 {
3585 lv_value_0_0=(Token)match(input,RULE_STRING,FOLLOW_2); 5795 if ( state.backtracking==0 ) {
5796
5797 newCompositeNode(grammarAccess.getExpressionArgumentAccess().getBodyComparisonExpressionParserRuleCall_0());
5798
5799 }
5800 pushFollow(FOLLOW_2);
5801 lv_body_0_0=ruleComparisonExpression();
3586 5802
3587 newLeafNode(lv_value_0_0, grammarAccess.getStringObjectAccess().getValueSTRINGTerminalRuleCall_0()); 5803 state._fsp--;
3588 5804 if (state.failed) return current;
5805 if ( state.backtracking==0 ) {
3589 5806
3590 if (current==null) { 5807 if (current==null) {
3591 current = createModelElement(grammarAccess.getStringObjectRule()); 5808 current = createModelElementForParent(grammarAccess.getExpressionArgumentRule());
3592 } 5809 }
3593 setWithLastConsumed( 5810 set(
3594 current, 5811 current,
3595 "value", 5812 "body",
3596 lv_value_0_0, 5813 lv_body_0_0,
3597 "org.eclipse.viatra.solver.language.SolverLanguage.STRING"); 5814 "org.eclipse.viatra.solver.language.SolverLanguage.ComparisonExpression");
3598 5815 afterParserOrEnumRuleCall();
5816
5817 }
3599 5818
3600 } 5819 }
3601 5820
@@ -3605,9 +5824,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3605 5824
3606 } 5825 }
3607 5826
5827 if ( state.backtracking==0 ) {
3608 5828
3609 leaveRule(); 5829 leaveRule();
3610 5830
5831 }
3611 } 5832 }
3612 5833
3613 catch (RecognitionException re) { 5834 catch (RecognitionException re) {
@@ -3618,29 +5839,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3618 } 5839 }
3619 return current; 5840 return current;
3620 } 5841 }
3621 // $ANTLR end "ruleStringObject" 5842 // $ANTLR end "ruleExpressionArgument"
3622 5843
3623 5844
3624 // $ANTLR start "entryRulePredicate" 5845 // $ANTLR start "entryRuleStarArgument"
3625 // InternalSolverLanguage.g:1213:1: entryRulePredicate returns [EObject current=null] : iv_rulePredicate= rulePredicate EOF ; 5846 // InternalSolverLanguage.g:2074:1: entryRuleStarArgument returns [EObject current=null] : iv_ruleStarArgument= ruleStarArgument EOF ;
3626 public final EObject entryRulePredicate() throws RecognitionException { 5847 public final EObject entryRuleStarArgument() throws RecognitionException {
3627 EObject current = null; 5848 EObject current = null;
3628 5849
3629 EObject iv_rulePredicate = null; 5850 EObject iv_ruleStarArgument = null;
3630 5851
3631 5852
3632 try { 5853 try {
3633 // InternalSolverLanguage.g:1213:50: (iv_rulePredicate= rulePredicate EOF ) 5854 // InternalSolverLanguage.g:2074:53: (iv_ruleStarArgument= ruleStarArgument EOF )
3634 // InternalSolverLanguage.g:1214:2: iv_rulePredicate= rulePredicate EOF 5855 // InternalSolverLanguage.g:2075:2: iv_ruleStarArgument= ruleStarArgument EOF
3635 { 5856 {
3636 newCompositeNode(grammarAccess.getPredicateRule()); 5857 if ( state.backtracking==0 ) {
5858 newCompositeNode(grammarAccess.getStarArgumentRule());
5859 }
3637 pushFollow(FOLLOW_1); 5860 pushFollow(FOLLOW_1);
3638 iv_rulePredicate=rulePredicate(); 5861 iv_ruleStarArgument=ruleStarArgument();
3639 5862
3640 state._fsp--; 5863 state._fsp--;
3641 5864 if (state.failed) return current;
3642 current =iv_rulePredicate; 5865 if ( state.backtracking==0 ) {
3643 match(input,EOF,FOLLOW_2); 5866 current =iv_ruleStarArgument;
5867 }
5868 match(input,EOF,FOLLOW_2); if (state.failed) return current;
3644 5869
3645 } 5870 }
3646 5871
@@ -3654,388 +5879,431 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
3654 } 5879 }
3655 return current; 5880 return current;
3656 } 5881 }
3657 // $ANTLR end "entryRulePredicate" 5882 // $ANTLR end "entryRuleStarArgument"
3658 5883
3659 5884
3660 // $ANTLR start "rulePredicate" 5885 // $ANTLR start "ruleStarArgument"
3661 // InternalSolverLanguage.g:1220:1: rulePredicate returns [EObject current=null] : ( ( (lv_isError_0_0= 'error' ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')' )? otherlv_7= ':-' (otherlv_8= 'false' | ( ( (lv_bodies_9_0= rulePatternBody ) ) (otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) )* ) ) otherlv_12= '.' ) ; 5886 // InternalSolverLanguage.g:2081:1: ruleStarArgument returns [EObject current=null] : ( () otherlv_1= '*' ) ;
3662 public final EObject rulePredicate() throws RecognitionException { 5887 public final EObject ruleStarArgument() throws RecognitionException {
3663 EObject current = null; 5888 EObject current = null;
3664 5889
3665 Token lv_isError_0_0=null; 5890 Token otherlv_1=null;
3666 Token otherlv_2=null;
3667 Token otherlv_4=null;
3668 Token otherlv_6=null;
3669 Token otherlv_7=null;
3670 Token otherlv_8=null;
3671 Token otherlv_10=null;
3672 Token otherlv_12=null;
3673 EObject lv_symbol_1_0 = null;
3674 5891
3675 EObject lv_parameters_3_0 = null;
3676 5892
3677 EObject lv_parameters_5_0 = null; 5893 enterRule();
3678 5894
3679 EObject lv_bodies_9_0 = null; 5895 try {
5896 // InternalSolverLanguage.g:2087:2: ( ( () otherlv_1= '*' ) )
5897 // InternalSolverLanguage.g:2088:2: ( () otherlv_1= '*' )
5898 {
5899 // InternalSolverLanguage.g:2088:2: ( () otherlv_1= '*' )
5900 // InternalSolverLanguage.g:2089:3: () otherlv_1= '*'
5901 {
5902 // InternalSolverLanguage.g:2089:3: ()
5903 // InternalSolverLanguage.g:2090:4:
5904 {
5905 if ( state.backtracking==0 ) {
3680 5906
3681 EObject lv_bodies_11_0 = null; 5907 current = forceCreateModelElement(
5908 grammarAccess.getStarArgumentAccess().getStarArgumentAction_0(),
5909 current);
5910
5911 }
3682 5912
5913 }
3683 5914
5915 otherlv_1=(Token)match(input,35,FOLLOW_2); if (state.failed) return current;
5916 if ( state.backtracking==0 ) {
5917
5918 newLeafNode(otherlv_1, grammarAccess.getStarArgumentAccess().getAsteriskKeyword_1());
5919
5920 }
5921
5922 }
5923
5924
5925 }
5926
5927 if ( state.backtracking==0 ) {
5928
5929 leaveRule();
5930
5931 }
5932 }
5933
5934 catch (RecognitionException re) {
5935 recover(input,re);
5936 appendSkippedTokens();
5937 }
5938 finally {
5939 }
5940 return current;
5941 }
5942 // $ANTLR end "ruleStarArgument"
5943
5944
5945 // $ANTLR start "entryRuleTypedArgument"
5946 // InternalSolverLanguage.g:2104:1: entryRuleTypedArgument returns [EObject current=null] : iv_ruleTypedArgument= ruleTypedArgument EOF ;
5947 public final EObject entryRuleTypedArgument() throws RecognitionException {
5948 EObject current = null;
5949
5950 EObject iv_ruleTypedArgument = null;
3684 5951
3685 enterRule();
3686 5952
3687 try { 5953 try {
3688 // InternalSolverLanguage.g:1226:2: ( ( ( (lv_isError_0_0= 'error' ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')' )? otherlv_7= ':-' (otherlv_8= 'false' | ( ( (lv_bodies_9_0= rulePatternBody ) ) (otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) )* ) ) otherlv_12= '.' ) ) 5954 // InternalSolverLanguage.g:2104:54: (iv_ruleTypedArgument= ruleTypedArgument EOF )
3689 // InternalSolverLanguage.g:1227:2: ( ( (lv_isError_0_0= 'error' ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')' )? otherlv_7= ':-' (otherlv_8= 'false' | ( ( (lv_bodies_9_0= rulePatternBody ) ) (otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) )* ) ) otherlv_12= '.' ) 5955 // InternalSolverLanguage.g:2105:2: iv_ruleTypedArgument= ruleTypedArgument EOF
3690 { 5956 {
3691 // InternalSolverLanguage.g:1227:2: ( ( (lv_isError_0_0= 'error' ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')' )? otherlv_7= ':-' (otherlv_8= 'false' | ( ( (lv_bodies_9_0= rulePatternBody ) ) (otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) )* ) ) otherlv_12= '.' ) 5957 if ( state.backtracking==0 ) {
3692 // InternalSolverLanguage.g:1228:3: ( (lv_isError_0_0= 'error' ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')' )? otherlv_7= ':-' (otherlv_8= 'false' | ( ( (lv_bodies_9_0= rulePatternBody ) ) (otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) )* ) ) otherlv_12= '.' 5958 newCompositeNode(grammarAccess.getTypedArgumentRule());
3693 { 5959 }
3694 // InternalSolverLanguage.g:1228:3: ( (lv_isError_0_0= 'error' ) )? 5960 pushFollow(FOLLOW_1);
3695 int alt17=2; 5961 iv_ruleTypedArgument=ruleTypedArgument();
3696 int LA17_0 = input.LA(1);
3697 5962
3698 if ( (LA17_0==16) ) { 5963 state._fsp--;
3699 alt17=1; 5964 if (state.failed) return current;
5965 if ( state.backtracking==0 ) {
5966 current =iv_ruleTypedArgument;
3700 } 5967 }
3701 switch (alt17) { 5968 match(input,EOF,FOLLOW_2); if (state.failed) return current;
3702 case 1 :
3703 // InternalSolverLanguage.g:1229:4: (lv_isError_0_0= 'error' )
3704 {
3705 // InternalSolverLanguage.g:1229:4: (lv_isError_0_0= 'error' )
3706 // InternalSolverLanguage.g:1230:5: lv_isError_0_0= 'error'
3707 {
3708 lv_isError_0_0=(Token)match(input,16,FOLLOW_12);
3709 5969
3710 newLeafNode(lv_isError_0_0, grammarAccess.getPredicateAccess().getIsErrorErrorKeyword_0_0()); 5970 }
3711
3712 5971
3713 if (current==null) { 5972 }
3714 current = createModelElement(grammarAccess.getPredicateRule());
3715 }
3716 setWithLastConsumed(current, "isError", true, "error");
3717
3718 5973
3719 } 5974 catch (RecognitionException re) {
5975 recover(input,re);
5976 appendSkippedTokens();
5977 }
5978 finally {
5979 }
5980 return current;
5981 }
5982 // $ANTLR end "entryRuleTypedArgument"
3720 5983
3721 5984
3722 } 5985 // $ANTLR start "ruleTypedArgument"
3723 break; 5986 // InternalSolverLanguage.g:2111:1: ruleTypedArgument returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ruleQualifiedName ) ) ) ;
5987 public final EObject ruleTypedArgument() throws RecognitionException {
5988 EObject current = null;
3724 5989
3725 }
3726 5990
3727 // InternalSolverLanguage.g:1242:3: ( (lv_symbol_1_0= ruleModelSymbol ) ) 5991 enterRule();
3728 // InternalSolverLanguage.g:1243:4: (lv_symbol_1_0= ruleModelSymbol ) 5992
5993 try {
5994 // InternalSolverLanguage.g:2117:2: ( ( ( ( ruleQualifiedName ) ) ( ( ruleQualifiedName ) ) ) )
5995 // InternalSolverLanguage.g:2118:2: ( ( ( ruleQualifiedName ) ) ( ( ruleQualifiedName ) ) )
5996 {
5997 // InternalSolverLanguage.g:2118:2: ( ( ( ruleQualifiedName ) ) ( ( ruleQualifiedName ) ) )
5998 // InternalSolverLanguage.g:2119:3: ( ( ruleQualifiedName ) ) ( ( ruleQualifiedName ) )
3729 { 5999 {
3730 // InternalSolverLanguage.g:1243:4: (lv_symbol_1_0= ruleModelSymbol ) 6000 // InternalSolverLanguage.g:2119:3: ( ( ruleQualifiedName ) )
3731 // InternalSolverLanguage.g:1244:5: lv_symbol_1_0= ruleModelSymbol 6001 // InternalSolverLanguage.g:2120:4: ( ruleQualifiedName )
3732 { 6002 {
6003 // InternalSolverLanguage.g:2120:4: ( ruleQualifiedName )
6004 // InternalSolverLanguage.g:2121:5: ruleQualifiedName
6005 {
6006 if ( state.backtracking==0 ) {
3733 6007
3734 newCompositeNode(grammarAccess.getPredicateAccess().getSymbolModelSymbolParserRuleCall_1_0()); 6008 if (current==null) {
3735 6009 current = createModelElement(grammarAccess.getTypedArgumentRule());
3736 pushFollow(FOLLOW_14); 6010 }
3737 lv_symbol_1_0=ruleModelSymbol(); 6011
6012 }
6013 if ( state.backtracking==0 ) {
3738 6014
3739 state._fsp--; 6015 newCompositeNode(grammarAccess.getTypedArgumentAccess().getTypeNamedElementCrossReference_0_0());
6016
6017 }
6018 pushFollow(FOLLOW_35);
6019 ruleQualifiedName();
3740 6020
6021 state._fsp--;
6022 if (state.failed) return current;
6023 if ( state.backtracking==0 ) {
3741 6024
3742 if (current==null) { 6025 afterParserOrEnumRuleCall();
3743 current = createModelElementForParent(grammarAccess.getPredicateRule()); 6026
3744 } 6027 }
3745 set(
3746 current,
3747 "symbol",
3748 lv_symbol_1_0,
3749 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
3750 afterParserOrEnumRuleCall();
3751
3752 6028
3753 } 6029 }
3754 6030
3755 6031
3756 } 6032 }
3757 6033
3758 // InternalSolverLanguage.g:1261:3: (otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')' )? 6034 // InternalSolverLanguage.g:2135:3: ( ( ruleQualifiedName ) )
3759 int alt20=2; 6035 // InternalSolverLanguage.g:2136:4: ( ruleQualifiedName )
3760 int LA20_0 = input.LA(1); 6036 {
6037 // InternalSolverLanguage.g:2136:4: ( ruleQualifiedName )
6038 // InternalSolverLanguage.g:2137:5: ruleQualifiedName
6039 {
6040 if ( state.backtracking==0 ) {
3761 6041
3762 if ( (LA20_0==17) ) { 6042 if (current==null) {
3763 alt20=1; 6043 current = createModelElement(grammarAccess.getTypedArgumentRule());
6044 }
6045
3764 } 6046 }
3765 switch (alt20) { 6047 if ( state.backtracking==0 ) {
3766 case 1 :
3767 // InternalSolverLanguage.g:1262:4: otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')'
3768 {
3769 otherlv_2=(Token)match(input,17,FOLLOW_15);
3770
3771 newLeafNode(otherlv_2, grammarAccess.getPredicateAccess().getLeftParenthesisKeyword_2_0());
3772
3773 // InternalSolverLanguage.g:1266:4: ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )?
3774 int alt19=2;
3775 int LA19_0 = input.LA(1);
3776 6048
3777 if ( (LA19_0==RULE_ID) ) { 6049 newCompositeNode(grammarAccess.getTypedArgumentAccess().getVariableNamedElementCrossReference_1_0());
3778 alt19=1; 6050
3779 } 6051 }
3780 switch (alt19) { 6052 pushFollow(FOLLOW_2);
3781 case 1 : 6053 ruleQualifiedName();
3782 // InternalSolverLanguage.g:1267:5: ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )*
3783 {
3784 // InternalSolverLanguage.g:1267:5: ( (lv_parameters_3_0= ruleParameter ) )
3785 // InternalSolverLanguage.g:1268:6: (lv_parameters_3_0= ruleParameter )
3786 {
3787 // InternalSolverLanguage.g:1268:6: (lv_parameters_3_0= ruleParameter )
3788 // InternalSolverLanguage.g:1269:7: lv_parameters_3_0= ruleParameter
3789 {
3790 6054
3791 newCompositeNode(grammarAccess.getPredicateAccess().getParametersParameterParserRuleCall_2_1_0_0()); 6055 state._fsp--;
3792 6056 if (state.failed) return current;
3793 pushFollow(FOLLOW_8); 6057 if ( state.backtracking==0 ) {
3794 lv_parameters_3_0=ruleParameter();
3795 6058
3796 state._fsp--; 6059 afterParserOrEnumRuleCall();
6060
6061 }
3797 6062
6063 }
3798 6064
3799 if (current==null) {
3800 current = createModelElementForParent(grammarAccess.getPredicateRule());
3801 }
3802 add(
3803 current,
3804 "parameters",
3805 lv_parameters_3_0,
3806 "org.eclipse.viatra.solver.language.SolverLanguage.Parameter");
3807 afterParserOrEnumRuleCall();
3808
3809 6065
3810 } 6066 }
3811 6067
3812 6068
3813 } 6069 }
3814 6070
3815 // InternalSolverLanguage.g:1286:5: (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )*
3816 loop18:
3817 do {
3818 int alt18=2;
3819 int LA18_0 = input.LA(1);
3820 6071
3821 if ( (LA18_0==18) ) { 6072 }
3822 alt18=1;
3823 }
3824 6073
6074 if ( state.backtracking==0 ) {
3825 6075
3826 switch (alt18) { 6076 leaveRule();
3827 case 1 :
3828 // InternalSolverLanguage.g:1287:6: otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) )
3829 {
3830 otherlv_4=(Token)match(input,18,FOLLOW_12);
3831 6077
3832 newLeafNode(otherlv_4, grammarAccess.getPredicateAccess().getCommaKeyword_2_1_1_0()); 6078 }
3833 6079 }
3834 // InternalSolverLanguage.g:1291:6: ( (lv_parameters_5_0= ruleParameter ) )
3835 // InternalSolverLanguage.g:1292:7: (lv_parameters_5_0= ruleParameter )
3836 {
3837 // InternalSolverLanguage.g:1292:7: (lv_parameters_5_0= ruleParameter )
3838 // InternalSolverLanguage.g:1293:8: lv_parameters_5_0= ruleParameter
3839 {
3840 6080
3841 newCompositeNode(grammarAccess.getPredicateAccess().getParametersParameterParserRuleCall_2_1_1_1_0()); 6081 catch (RecognitionException re) {
3842 6082 recover(input,re);
3843 pushFollow(FOLLOW_8); 6083 appendSkippedTokens();
3844 lv_parameters_5_0=ruleParameter(); 6084 }
6085 finally {
6086 }
6087 return current;
6088 }
6089 // $ANTLR end "ruleTypedArgument"
3845 6090
3846 state._fsp--;
3847 6091
6092 // $ANTLR start "entryRuleTypedStarArgument"
6093 // InternalSolverLanguage.g:2155:1: entryRuleTypedStarArgument returns [EObject current=null] : iv_ruleTypedStarArgument= ruleTypedStarArgument EOF ;
6094 public final EObject entryRuleTypedStarArgument() throws RecognitionException {
6095 EObject current = null;
3848 6096
3849 if (current==null) { 6097 EObject iv_ruleTypedStarArgument = null;
3850 current = createModelElementForParent(grammarAccess.getPredicateRule());
3851 }
3852 add(
3853 current,
3854 "parameters",
3855 lv_parameters_5_0,
3856 "org.eclipse.viatra.solver.language.SolverLanguage.Parameter");
3857 afterParserOrEnumRuleCall();
3858
3859 6098
3860 }
3861 6099
6100 try {
6101 // InternalSolverLanguage.g:2155:58: (iv_ruleTypedStarArgument= ruleTypedStarArgument EOF )
6102 // InternalSolverLanguage.g:2156:2: iv_ruleTypedStarArgument= ruleTypedStarArgument EOF
6103 {
6104 if ( state.backtracking==0 ) {
6105 newCompositeNode(grammarAccess.getTypedStarArgumentRule());
6106 }
6107 pushFollow(FOLLOW_1);
6108 iv_ruleTypedStarArgument=ruleTypedStarArgument();
3862 6109
3863 } 6110 state._fsp--;
6111 if (state.failed) return current;
6112 if ( state.backtracking==0 ) {
6113 current =iv_ruleTypedStarArgument;
6114 }
6115 match(input,EOF,FOLLOW_2); if (state.failed) return current;
3864 6116
6117 }
3865 6118
3866 } 6119 }
3867 break;
3868 6120
3869 default : 6121 catch (RecognitionException re) {
3870 break loop18; 6122 recover(input,re);
3871 } 6123 appendSkippedTokens();
3872 } while (true); 6124 }
6125 finally {
6126 }
6127 return current;
6128 }
6129 // $ANTLR end "entryRuleTypedStarArgument"
3873 6130
3874 6131
3875 } 6132 // $ANTLR start "ruleTypedStarArgument"
3876 break; 6133 // InternalSolverLanguage.g:2162:1: ruleTypedStarArgument returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) otherlv_1= '*' ) ;
6134 public final EObject ruleTypedStarArgument() throws RecognitionException {
6135 EObject current = null;
3877 6136
3878 } 6137 Token otherlv_1=null;
3879 6138
3880 otherlv_6=(Token)match(input,19,FOLLOW_16);
3881 6139
3882 newLeafNode(otherlv_6, grammarAccess.getPredicateAccess().getRightParenthesisKeyword_2_2()); 6140 enterRule();
3883
3884 6141
3885 } 6142 try {
3886 break; 6143 // InternalSolverLanguage.g:2168:2: ( ( ( ( ruleQualifiedName ) ) otherlv_1= '*' ) )
6144 // InternalSolverLanguage.g:2169:2: ( ( ( ruleQualifiedName ) ) otherlv_1= '*' )
6145 {
6146 // InternalSolverLanguage.g:2169:2: ( ( ( ruleQualifiedName ) ) otherlv_1= '*' )
6147 // InternalSolverLanguage.g:2170:3: ( ( ruleQualifiedName ) ) otherlv_1= '*'
6148 {
6149 // InternalSolverLanguage.g:2170:3: ( ( ruleQualifiedName ) )
6150 // InternalSolverLanguage.g:2171:4: ( ruleQualifiedName )
6151 {
6152 // InternalSolverLanguage.g:2171:4: ( ruleQualifiedName )
6153 // InternalSolverLanguage.g:2172:5: ruleQualifiedName
6154 {
6155 if ( state.backtracking==0 ) {
3887 6156
6157 if (current==null) {
6158 current = createModelElement(grammarAccess.getTypedStarArgumentRule());
6159 }
6160
3888 } 6161 }
6162 if ( state.backtracking==0 ) {
3889 6163
3890 otherlv_7=(Token)match(input,28,FOLLOW_17); 6164 newCompositeNode(grammarAccess.getTypedStarArgumentAccess().getTypeNamedElementCrossReference_0_0());
6165
6166 }
6167 pushFollow(FOLLOW_36);
6168 ruleQualifiedName();
3891 6169
3892 newLeafNode(otherlv_7, grammarAccess.getPredicateAccess().getColonHyphenMinusKeyword_3()); 6170 state._fsp--;
3893 6171 if (state.failed) return current;
3894 // InternalSolverLanguage.g:1321:3: (otherlv_8= 'false' | ( ( (lv_bodies_9_0= rulePatternBody ) ) (otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) )* ) ) 6172 if ( state.backtracking==0 ) {
3895 int alt22=2;
3896 int LA22_0 = input.LA(1);
3897 6173
3898 if ( (LA22_0==14) ) { 6174 afterParserOrEnumRuleCall();
3899 alt22=1; 6175
3900 } 6176 }
3901 else if ( (LA22_0==EOF||LA22_0==RULE_ID||(LA22_0>=11 && LA22_0<=13)||(LA22_0>=29 && LA22_0<=31)) ) {
3902 alt22=2;
3903 }
3904 else {
3905 NoViableAltException nvae =
3906 new NoViableAltException("", 22, 0, input);
3907 6177
3908 throw nvae;
3909 } 6178 }
3910 switch (alt22) {
3911 case 1 :
3912 // InternalSolverLanguage.g:1322:4: otherlv_8= 'false'
3913 {
3914 otherlv_8=(Token)match(input,14,FOLLOW_5);
3915 6179
3916 newLeafNode(otherlv_8, grammarAccess.getPredicateAccess().getFalseKeyword_4_0());
3917
3918 6180
3919 } 6181 }
3920 break;
3921 case 2 :
3922 // InternalSolverLanguage.g:1327:4: ( ( (lv_bodies_9_0= rulePatternBody ) ) (otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) )* )
3923 {
3924 // InternalSolverLanguage.g:1327:4: ( ( (lv_bodies_9_0= rulePatternBody ) ) (otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) )* )
3925 // InternalSolverLanguage.g:1328:5: ( (lv_bodies_9_0= rulePatternBody ) ) (otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) )*
3926 {
3927 // InternalSolverLanguage.g:1328:5: ( (lv_bodies_9_0= rulePatternBody ) )
3928 // InternalSolverLanguage.g:1329:6: (lv_bodies_9_0= rulePatternBody )
3929 {
3930 // InternalSolverLanguage.g:1329:6: (lv_bodies_9_0= rulePatternBody )
3931 // InternalSolverLanguage.g:1330:7: lv_bodies_9_0= rulePatternBody
3932 {
3933 6182
3934 newCompositeNode(grammarAccess.getPredicateAccess().getBodiesPatternBodyParserRuleCall_4_1_0_0()); 6183 otherlv_1=(Token)match(input,35,FOLLOW_2); if (state.failed) return current;
3935 6184 if ( state.backtracking==0 ) {
3936 pushFollow(FOLLOW_18);
3937 lv_bodies_9_0=rulePatternBody();
3938 6185
3939 state._fsp--; 6186 newLeafNode(otherlv_1, grammarAccess.getTypedStarArgumentAccess().getAsteriskKeyword_1());
6187
6188 }
3940 6189
6190 }
3941 6191
3942 if (current==null) {
3943 current = createModelElementForParent(grammarAccess.getPredicateRule());
3944 }
3945 add(
3946 current,
3947 "bodies",
3948 lv_bodies_9_0,
3949 "org.eclipse.viatra.solver.language.SolverLanguage.PatternBody");
3950 afterParserOrEnumRuleCall();
3951
3952 6192
3953 } 6193 }
3954 6194
6195 if ( state.backtracking==0 ) {
3955 6196
3956 } 6197 leaveRule();
3957 6198
3958 // InternalSolverLanguage.g:1347:5: (otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) )* 6199 }
3959 loop21: 6200 }
3960 do {
3961 int alt21=2;
3962 int LA21_0 = input.LA(1);
3963 6201
3964 if ( (LA21_0==29) ) { 6202 catch (RecognitionException re) {
3965 alt21=1; 6203 recover(input,re);
3966 } 6204 appendSkippedTokens();
6205 }
6206 finally {
6207 }
6208 return current;
6209 }
6210 // $ANTLR end "ruleTypedStarArgument"
3967 6211
3968 6212
3969 switch (alt21) { 6213 // $ANTLR start "entryRuleReference"
3970 case 1 : 6214 // InternalSolverLanguage.g:2194:1: entryRuleReference returns [EObject current=null] : iv_ruleReference= ruleReference EOF ;
3971 // InternalSolverLanguage.g:1348:6: otherlv_10= '|' ( (lv_bodies_11_0= rulePatternBody ) ) 6215 public final EObject entryRuleReference() throws RecognitionException {
3972 { 6216 EObject current = null;
3973 otherlv_10=(Token)match(input,29,FOLLOW_19);
3974 6217
3975 newLeafNode(otherlv_10, grammarAccess.getPredicateAccess().getVerticalLineKeyword_4_1_1_0()); 6218 EObject iv_ruleReference = null;
3976
3977 // InternalSolverLanguage.g:1352:6: ( (lv_bodies_11_0= rulePatternBody ) )
3978 // InternalSolverLanguage.g:1353:7: (lv_bodies_11_0= rulePatternBody )
3979 {
3980 // InternalSolverLanguage.g:1353:7: (lv_bodies_11_0= rulePatternBody )
3981 // InternalSolverLanguage.g:1354:8: lv_bodies_11_0= rulePatternBody
3982 {
3983 6219
3984 newCompositeNode(grammarAccess.getPredicateAccess().getBodiesPatternBodyParserRuleCall_4_1_1_1_0());
3985
3986 pushFollow(FOLLOW_18);
3987 lv_bodies_11_0=rulePatternBody();
3988 6220
3989 state._fsp--; 6221 try {
6222 // InternalSolverLanguage.g:2194:50: (iv_ruleReference= ruleReference EOF )
6223 // InternalSolverLanguage.g:2195:2: iv_ruleReference= ruleReference EOF
6224 {
6225 if ( state.backtracking==0 ) {
6226 newCompositeNode(grammarAccess.getReferenceRule());
6227 }
6228 pushFollow(FOLLOW_1);
6229 iv_ruleReference=ruleReference();
3990 6230
6231 state._fsp--;
6232 if (state.failed) return current;
6233 if ( state.backtracking==0 ) {
6234 current =iv_ruleReference;
6235 }
6236 match(input,EOF,FOLLOW_2); if (state.failed) return current;
3991 6237
3992 if (current==null) { 6238 }
3993 current = createModelElementForParent(grammarAccess.getPredicateRule());
3994 }
3995 add(
3996 current,
3997 "bodies",
3998 lv_bodies_11_0,
3999 "org.eclipse.viatra.solver.language.SolverLanguage.PatternBody");
4000 afterParserOrEnumRuleCall();
4001
4002 6239
4003 } 6240 }
4004 6241
6242 catch (RecognitionException re) {
6243 recover(input,re);
6244 appendSkippedTokens();
6245 }
6246 finally {
6247 }
6248 return current;
6249 }
6250 // $ANTLR end "entryRuleReference"
4005 6251
4006 }
4007 6252
6253 // $ANTLR start "ruleReference"
6254 // InternalSolverLanguage.g:2201:1: ruleReference returns [EObject current=null] : ( ( ruleQualifiedName ) ) ;
6255 public final EObject ruleReference() throws RecognitionException {
6256 EObject current = null;
4008 6257
4009 }
4010 break;
4011 6258
4012 default : 6259 enterRule();
4013 break loop21;
4014 }
4015 } while (true);
4016 6260
6261 try {
6262 // InternalSolverLanguage.g:2207:2: ( ( ( ruleQualifiedName ) ) )
6263 // InternalSolverLanguage.g:2208:2: ( ( ruleQualifiedName ) )
6264 {
6265 // InternalSolverLanguage.g:2208:2: ( ( ruleQualifiedName ) )
6266 // InternalSolverLanguage.g:2209:3: ( ruleQualifiedName )
6267 {
6268 // InternalSolverLanguage.g:2209:3: ( ruleQualifiedName )
6269 // InternalSolverLanguage.g:2210:4: ruleQualifiedName
6270 {
6271 if ( state.backtracking==0 ) {
4017 6272
4018 } 6273 if (current==null) {
6274 current = createModelElement(grammarAccess.getReferenceRule());
6275 }
6276
6277 }
6278 if ( state.backtracking==0 ) {
4019 6279
6280 newCompositeNode(grammarAccess.getReferenceAccess().getReferredNamedElementCrossReference_0());
6281
6282 }
6283 pushFollow(FOLLOW_2);
6284 ruleQualifiedName();
4020 6285
4021 } 6286 state._fsp--;
4022 break; 6287 if (state.failed) return current;
6288 if ( state.backtracking==0 ) {
4023 6289
6290 afterParserOrEnumRuleCall();
6291
4024 } 6292 }
4025 6293
4026 otherlv_12=(Token)match(input,12,FOLLOW_2); 6294 }
4027 6295
4028 newLeafNode(otherlv_12, grammarAccess.getPredicateAccess().getFullStopKeyword_5());
4029
4030 6296
4031 } 6297 }
4032 6298
4033 6299
4034 } 6300 }
4035 6301
6302 if ( state.backtracking==0 ) {
4036 6303
4037 leaveRule(); 6304 leaveRule();
4038 6305
6306 }
4039 } 6307 }
4040 6308
4041 catch (RecognitionException re) { 6309 catch (RecognitionException re) {
@@ -4046,29 +6314,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
4046 } 6314 }
4047 return current; 6315 return current;
4048 } 6316 }
4049 // $ANTLR end "rulePredicate" 6317 // $ANTLR end "ruleReference"
4050 6318
4051 6319
4052 // $ANTLR start "entryRuleParameter" 6320 // $ANTLR start "entryRuleInterval"
4053 // InternalSolverLanguage.g:1382:1: entryRuleParameter returns [EObject current=null] : iv_ruleParameter= ruleParameter EOF ; 6321 // InternalSolverLanguage.g:2227:1: entryRuleInterval returns [EObject current=null] : iv_ruleInterval= ruleInterval EOF ;
4054 public final EObject entryRuleParameter() throws RecognitionException { 6322 public final EObject entryRuleInterval() throws RecognitionException {
4055 EObject current = null; 6323 EObject current = null;
4056 6324
4057 EObject iv_ruleParameter = null; 6325 EObject iv_ruleInterval = null;
4058 6326
4059 6327
4060 try { 6328 try {
4061 // InternalSolverLanguage.g:1382:50: (iv_ruleParameter= ruleParameter EOF ) 6329 // InternalSolverLanguage.g:2227:49: (iv_ruleInterval= ruleInterval EOF )
4062 // InternalSolverLanguage.g:1383:2: iv_ruleParameter= ruleParameter EOF 6330 // InternalSolverLanguage.g:2228:2: iv_ruleInterval= ruleInterval EOF
4063 { 6331 {
4064 newCompositeNode(grammarAccess.getParameterRule()); 6332 if ( state.backtracking==0 ) {
6333 newCompositeNode(grammarAccess.getIntervalRule());
6334 }
4065 pushFollow(FOLLOW_1); 6335 pushFollow(FOLLOW_1);
4066 iv_ruleParameter=ruleParameter(); 6336 iv_ruleInterval=ruleInterval();
4067 6337
4068 state._fsp--; 6338 state._fsp--;
4069 6339 if (state.failed) return current;
4070 current =iv_ruleParameter; 6340 if ( state.backtracking==0 ) {
4071 match(input,EOF,FOLLOW_2); 6341 current =iv_ruleInterval;
6342 }
6343 match(input,EOF,FOLLOW_2); if (state.failed) return current;
4072 6344
4073 } 6345 }
4074 6346
@@ -4082,122 +6354,131 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
4082 } 6354 }
4083 return current; 6355 return current;
4084 } 6356 }
4085 // $ANTLR end "entryRuleParameter" 6357 // $ANTLR end "entryRuleInterval"
4086 6358
4087 6359
4088 // $ANTLR start "ruleParameter" 6360 // $ANTLR start "ruleInterval"
4089 // InternalSolverLanguage.g:1389:1: ruleParameter returns [EObject current=null] : ( ( (lv_variable_0_0= ruleVariable ) ) (otherlv_1= ':' ( (lv_type_2_0= ruleSymbol ) ) )? ) ; 6361 // InternalSolverLanguage.g:2234:1: ruleInterval returns [EObject current=null] : (otherlv_0= '[' ( (lv_lowerBound_1_0= ruleExpression ) ) otherlv_2= '..' ( (lv_upperBound_3_0= ruleExpression ) ) otherlv_4= ']' ) ;
4090 public final EObject ruleParameter() throws RecognitionException { 6362 public final EObject ruleInterval() throws RecognitionException {
4091 EObject current = null; 6363 EObject current = null;
4092 6364
4093 Token otherlv_1=null; 6365 Token otherlv_0=null;
4094 EObject lv_variable_0_0 = null; 6366 Token otherlv_2=null;
6367 Token otherlv_4=null;
6368 EObject lv_lowerBound_1_0 = null;
4095 6369
4096 EObject lv_type_2_0 = null; 6370 EObject lv_upperBound_3_0 = null;
4097 6371
4098 6372
4099 6373
4100 enterRule(); 6374 enterRule();
4101 6375
4102 try { 6376 try {
4103 // InternalSolverLanguage.g:1395:2: ( ( ( (lv_variable_0_0= ruleVariable ) ) (otherlv_1= ':' ( (lv_type_2_0= ruleSymbol ) ) )? ) ) 6377 // InternalSolverLanguage.g:2240:2: ( (otherlv_0= '[' ( (lv_lowerBound_1_0= ruleExpression ) ) otherlv_2= '..' ( (lv_upperBound_3_0= ruleExpression ) ) otherlv_4= ']' ) )
4104 // InternalSolverLanguage.g:1396:2: ( ( (lv_variable_0_0= ruleVariable ) ) (otherlv_1= ':' ( (lv_type_2_0= ruleSymbol ) ) )? ) 6378 // InternalSolverLanguage.g:2241:2: (otherlv_0= '[' ( (lv_lowerBound_1_0= ruleExpression ) ) otherlv_2= '..' ( (lv_upperBound_3_0= ruleExpression ) ) otherlv_4= ']' )
4105 { 6379 {
4106 // InternalSolverLanguage.g:1396:2: ( ( (lv_variable_0_0= ruleVariable ) ) (otherlv_1= ':' ( (lv_type_2_0= ruleSymbol ) ) )? ) 6380 // InternalSolverLanguage.g:2241:2: (otherlv_0= '[' ( (lv_lowerBound_1_0= ruleExpression ) ) otherlv_2= '..' ( (lv_upperBound_3_0= ruleExpression ) ) otherlv_4= ']' )
4107 // InternalSolverLanguage.g:1397:3: ( (lv_variable_0_0= ruleVariable ) ) (otherlv_1= ':' ( (lv_type_2_0= ruleSymbol ) ) )? 6381 // InternalSolverLanguage.g:2242:3: otherlv_0= '[' ( (lv_lowerBound_1_0= ruleExpression ) ) otherlv_2= '..' ( (lv_upperBound_3_0= ruleExpression ) ) otherlv_4= ']'
4108 { 6382 {
4109 // InternalSolverLanguage.g:1397:3: ( (lv_variable_0_0= ruleVariable ) ) 6383 otherlv_0=(Token)match(input,36,FOLLOW_6); if (state.failed) return current;
4110 // InternalSolverLanguage.g:1398:4: (lv_variable_0_0= ruleVariable ) 6384 if ( state.backtracking==0 ) {
6385
6386 newLeafNode(otherlv_0, grammarAccess.getIntervalAccess().getLeftSquareBracketKeyword_0());
6387
6388 }
6389 // InternalSolverLanguage.g:2246:3: ( (lv_lowerBound_1_0= ruleExpression ) )
6390 // InternalSolverLanguage.g:2247:4: (lv_lowerBound_1_0= ruleExpression )
4111 { 6391 {
4112 // InternalSolverLanguage.g:1398:4: (lv_variable_0_0= ruleVariable ) 6392 // InternalSolverLanguage.g:2247:4: (lv_lowerBound_1_0= ruleExpression )
4113 // InternalSolverLanguage.g:1399:5: lv_variable_0_0= ruleVariable 6393 // InternalSolverLanguage.g:2248:5: lv_lowerBound_1_0= ruleExpression
4114 { 6394 {
6395 if ( state.backtracking==0 ) {
4115 6396
4116 newCompositeNode(grammarAccess.getParameterAccess().getVariableVariableParserRuleCall_0_0()); 6397 newCompositeNode(grammarAccess.getIntervalAccess().getLowerBoundExpressionParserRuleCall_1_0());
4117 6398
4118 pushFollow(FOLLOW_20); 6399 }
4119 lv_variable_0_0=ruleVariable(); 6400 pushFollow(FOLLOW_37);
6401 lv_lowerBound_1_0=ruleExpression();
4120 6402
4121 state._fsp--; 6403 state._fsp--;
6404 if (state.failed) return current;
6405 if ( state.backtracking==0 ) {
4122 6406
4123 6407 if (current==null) {
4124 if (current==null) { 6408 current = createModelElementForParent(grammarAccess.getIntervalRule());
4125 current = createModelElementForParent(grammarAccess.getParameterRule()); 6409 }
4126 } 6410 set(
4127 set( 6411 current,
4128 current, 6412 "lowerBound",
4129 "variable", 6413 lv_lowerBound_1_0,
4130 lv_variable_0_0, 6414 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
4131 "org.eclipse.viatra.solver.language.SolverLanguage.Variable"); 6415 afterParserOrEnumRuleCall();
4132 afterParserOrEnumRuleCall(); 6416
4133
4134
4135 } 6417 }
4136 6418
4137
4138 } 6419 }
4139 6420
4140 // InternalSolverLanguage.g:1416:3: (otherlv_1= ':' ( (lv_type_2_0= ruleSymbol ) ) )?
4141 int alt23=2;
4142 int LA23_0 = input.LA(1);
4143 6421
4144 if ( (LA23_0==20) ) {
4145 alt23=1;
4146 } 6422 }
4147 switch (alt23) {
4148 case 1 :
4149 // InternalSolverLanguage.g:1417:4: otherlv_1= ':' ( (lv_type_2_0= ruleSymbol ) )
4150 {
4151 otherlv_1=(Token)match(input,20,FOLLOW_21);
4152 6423
4153 newLeafNode(otherlv_1, grammarAccess.getParameterAccess().getColonKeyword_1_0()); 6424 otherlv_2=(Token)match(input,37,FOLLOW_6); if (state.failed) return current;
4154 6425 if ( state.backtracking==0 ) {
4155 // InternalSolverLanguage.g:1421:4: ( (lv_type_2_0= ruleSymbol ) )
4156 // InternalSolverLanguage.g:1422:5: (lv_type_2_0= ruleSymbol )
4157 {
4158 // InternalSolverLanguage.g:1422:5: (lv_type_2_0= ruleSymbol )
4159 // InternalSolverLanguage.g:1423:6: lv_type_2_0= ruleSymbol
4160 {
4161
4162 newCompositeNode(grammarAccess.getParameterAccess().getTypeSymbolParserRuleCall_1_1_0());
4163
4164 pushFollow(FOLLOW_2);
4165 lv_type_2_0=ruleSymbol();
4166 6426
4167 state._fsp--; 6427 newLeafNode(otherlv_2, grammarAccess.getIntervalAccess().getFullStopFullStopKeyword_2());
6428
6429 }
6430 // InternalSolverLanguage.g:2269:3: ( (lv_upperBound_3_0= ruleExpression ) )
6431 // InternalSolverLanguage.g:2270:4: (lv_upperBound_3_0= ruleExpression )
6432 {
6433 // InternalSolverLanguage.g:2270:4: (lv_upperBound_3_0= ruleExpression )
6434 // InternalSolverLanguage.g:2271:5: lv_upperBound_3_0= ruleExpression
6435 {
6436 if ( state.backtracking==0 ) {
4168 6437
6438 newCompositeNode(grammarAccess.getIntervalAccess().getUpperBoundExpressionParserRuleCall_3_0());
6439
6440 }
6441 pushFollow(FOLLOW_38);
6442 lv_upperBound_3_0=ruleExpression();
4169 6443
4170 if (current==null) { 6444 state._fsp--;
4171 current = createModelElementForParent(grammarAccess.getParameterRule()); 6445 if (state.failed) return current;
4172 } 6446 if ( state.backtracking==0 ) {
4173 set(
4174 current,
4175 "type",
4176 lv_type_2_0,
4177 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol");
4178 afterParserOrEnumRuleCall();
4179
4180 6447
4181 } 6448 if (current==null) {
6449 current = createModelElementForParent(grammarAccess.getIntervalRule());
6450 }
6451 set(
6452 current,
6453 "upperBound",
6454 lv_upperBound_3_0,
6455 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
6456 afterParserOrEnumRuleCall();
6457
6458 }
4182 6459
6460 }
4183 6461
4184 }
4185 6462
6463 }
4186 6464
4187 } 6465 otherlv_4=(Token)match(input,38,FOLLOW_2); if (state.failed) return current;
4188 break; 6466 if ( state.backtracking==0 ) {
4189 6467
6468 newLeafNode(otherlv_4, grammarAccess.getIntervalAccess().getRightSquareBracketKeyword_4());
6469
4190 } 6470 }
4191 6471
4192
4193 } 6472 }
4194 6473
4195 6474
4196 } 6475 }
4197 6476
6477 if ( state.backtracking==0 ) {
4198 6478
4199 leaveRule(); 6479 leaveRule();
4200 6480
6481 }
4201 } 6482 }
4202 6483
4203 catch (RecognitionException re) { 6484 catch (RecognitionException re) {
@@ -4208,29 +6489,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
4208 } 6489 }
4209 return current; 6490 return current;
4210 } 6491 }
4211 // $ANTLR end "ruleParameter" 6492 // $ANTLR end "ruleInterval"
4212 6493
4213 6494
4214 // $ANTLR start "entryRulePatternBody" 6495 // $ANTLR start "entryRuleLiteral"
4215 // InternalSolverLanguage.g:1445:1: entryRulePatternBody returns [EObject current=null] : iv_rulePatternBody= rulePatternBody EOF ; 6496 // InternalSolverLanguage.g:2296:1: entryRuleLiteral returns [EObject current=null] : iv_ruleLiteral= ruleLiteral EOF ;
4216 public final EObject entryRulePatternBody() throws RecognitionException { 6497 public final EObject entryRuleLiteral() throws RecognitionException {
4217 EObject current = null; 6498 EObject current = null;
4218 6499
4219 EObject iv_rulePatternBody = null; 6500 EObject iv_ruleLiteral = null;
4220 6501
4221 6502
4222 try { 6503 try {
4223 // InternalSolverLanguage.g:1445:52: (iv_rulePatternBody= rulePatternBody EOF ) 6504 // InternalSolverLanguage.g:2296:48: (iv_ruleLiteral= ruleLiteral EOF )
4224 // InternalSolverLanguage.g:1446:2: iv_rulePatternBody= rulePatternBody EOF 6505 // InternalSolverLanguage.g:2297:2: iv_ruleLiteral= ruleLiteral EOF
4225 { 6506 {
4226 newCompositeNode(grammarAccess.getPatternBodyRule()); 6507 if ( state.backtracking==0 ) {
6508 newCompositeNode(grammarAccess.getLiteralRule());
6509 }
4227 pushFollow(FOLLOW_1); 6510 pushFollow(FOLLOW_1);
4228 iv_rulePatternBody=rulePatternBody(); 6511 iv_ruleLiteral=ruleLiteral();
4229 6512
4230 state._fsp--; 6513 state._fsp--;
4231 6514 if (state.failed) return current;
4232 current =iv_rulePatternBody; 6515 if ( state.backtracking==0 ) {
4233 match(input,EOF,FOLLOW_2); 6516 current =iv_ruleLiteral;
6517 }
6518 match(input,EOF,FOLLOW_2); if (state.failed) return current;
4234 6519
4235 } 6520 }
4236 6521
@@ -4244,133 +6529,193 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
4244 } 6529 }
4245 return current; 6530 return current;
4246 } 6531 }
4247 // $ANTLR end "entryRulePatternBody" 6532 // $ANTLR end "entryRuleLiteral"
4248 6533
4249 6534
4250 // $ANTLR start "rulePatternBody" 6535 // $ANTLR start "ruleLiteral"
4251 // InternalSolverLanguage.g:1452:1: rulePatternBody returns [EObject current=null] : ( () (otherlv_1= 'true' | ( (lv_constraints_2_0= ruleConstraint ) )* ) ) ; 6536 // InternalSolverLanguage.g:2303:1: ruleLiteral returns [EObject current=null] : (this_LogicLiteral_0= ruleLogicLiteral | this_NumericLiteral_1= ruleNumericLiteral | this_InfinityLiteral_2= ruleInfinityLiteral | this_EmptyIntervalLiteral_3= ruleEmptyIntervalLiteral | this_StringLiteral_4= ruleStringLiteral ) ;
4252 public final EObject rulePatternBody() throws RecognitionException { 6537 public final EObject ruleLiteral() throws RecognitionException {
4253 EObject current = null; 6538 EObject current = null;
4254 6539
4255 Token otherlv_1=null; 6540 EObject this_LogicLiteral_0 = null;
4256 EObject lv_constraints_2_0 = null;
4257 6541
6542 EObject this_NumericLiteral_1 = null;
4258 6543
6544 EObject this_InfinityLiteral_2 = null;
4259 6545
4260 enterRule(); 6546 EObject this_EmptyIntervalLiteral_3 = null;
4261 6547
4262 try { 6548 EObject this_StringLiteral_4 = null;
4263 // InternalSolverLanguage.g:1458:2: ( ( () (otherlv_1= 'true' | ( (lv_constraints_2_0= ruleConstraint ) )* ) ) )
4264 // InternalSolverLanguage.g:1459:2: ( () (otherlv_1= 'true' | ( (lv_constraints_2_0= ruleConstraint ) )* ) )
4265 {
4266 // InternalSolverLanguage.g:1459:2: ( () (otherlv_1= 'true' | ( (lv_constraints_2_0= ruleConstraint ) )* ) )
4267 // InternalSolverLanguage.g:1460:3: () (otherlv_1= 'true' | ( (lv_constraints_2_0= ruleConstraint ) )* )
4268 {
4269 // InternalSolverLanguage.g:1460:3: ()
4270 // InternalSolverLanguage.g:1461:4:
4271 {
4272 6549
4273 current = forceCreateModelElement(
4274 grammarAccess.getPatternBodyAccess().getPatternBodyAction_0(),
4275 current);
4276
4277 6550
4278 }
4279 6551
4280 // InternalSolverLanguage.g:1467:3: (otherlv_1= 'true' | ( (lv_constraints_2_0= ruleConstraint ) )* ) 6552 enterRule();
4281 int alt25=2;
4282 int LA25_0 = input.LA(1);
4283 6553
4284 if ( (LA25_0==13) ) { 6554 try {
4285 alt25=1; 6555 // InternalSolverLanguage.g:2309:2: ( (this_LogicLiteral_0= ruleLogicLiteral | this_NumericLiteral_1= ruleNumericLiteral | this_InfinityLiteral_2= ruleInfinityLiteral | this_EmptyIntervalLiteral_3= ruleEmptyIntervalLiteral | this_StringLiteral_4= ruleStringLiteral ) )
4286 } 6556 // InternalSolverLanguage.g:2310:2: (this_LogicLiteral_0= ruleLogicLiteral | this_NumericLiteral_1= ruleNumericLiteral | this_InfinityLiteral_2= ruleInfinityLiteral | this_EmptyIntervalLiteral_3= ruleEmptyIntervalLiteral | this_StringLiteral_4= ruleStringLiteral )
4287 else if ( (LA25_0==EOF||LA25_0==RULE_ID||(LA25_0>=11 && LA25_0<=12)||(LA25_0>=29 && LA25_0<=31)) ) { 6557 {
4288 alt25=2; 6558 // InternalSolverLanguage.g:2310:2: (this_LogicLiteral_0= ruleLogicLiteral | this_NumericLiteral_1= ruleNumericLiteral | this_InfinityLiteral_2= ruleInfinityLiteral | this_EmptyIntervalLiteral_3= ruleEmptyIntervalLiteral | this_StringLiteral_4= ruleStringLiteral )
4289 } 6559 int alt26=5;
4290 else { 6560 switch ( input.LA(1) ) {
6561 case 19:
6562 case 70:
6563 case 71:
6564 case 72:
6565 {
6566 alt26=1;
6567 }
6568 break;
6569 case RULE_INT:
6570 {
6571 alt26=2;
6572 }
6573 break;
6574 case 39:
6575 {
6576 alt26=3;
6577 }
6578 break;
6579 case 40:
6580 {
6581 alt26=4;
6582 }
6583 break;
6584 case RULE_STRING:
6585 {
6586 alt26=5;
6587 }
6588 break;
6589 default:
6590 if (state.backtracking>0) {state.failed=true; return current;}
4291 NoViableAltException nvae = 6591 NoViableAltException nvae =
4292 new NoViableAltException("", 25, 0, input); 6592 new NoViableAltException("", 26, 0, input);
4293 6593
4294 throw nvae; 6594 throw nvae;
4295 } 6595 }
4296 switch (alt25) { 6596
6597 switch (alt26) {
4297 case 1 : 6598 case 1 :
4298 // InternalSolverLanguage.g:1468:4: otherlv_1= 'true' 6599 // InternalSolverLanguage.g:2311:3: this_LogicLiteral_0= ruleLogicLiteral
4299 { 6600 {
4300 otherlv_1=(Token)match(input,13,FOLLOW_2); 6601 if ( state.backtracking==0 ) {
4301 6602
4302 newLeafNode(otherlv_1, grammarAccess.getPatternBodyAccess().getTrueKeyword_1_0()); 6603 newCompositeNode(grammarAccess.getLiteralAccess().getLogicLiteralParserRuleCall_0());
4303 6604
6605 }
6606 pushFollow(FOLLOW_2);
6607 this_LogicLiteral_0=ruleLogicLiteral();
6608
6609 state._fsp--;
6610 if (state.failed) return current;
6611 if ( state.backtracking==0 ) {
6612
6613 current = this_LogicLiteral_0;
6614 afterParserOrEnumRuleCall();
6615
6616 }
4304 6617
4305 } 6618 }
4306 break; 6619 break;
4307 case 2 : 6620 case 2 :
4308 // InternalSolverLanguage.g:1473:4: ( (lv_constraints_2_0= ruleConstraint ) )* 6621 // InternalSolverLanguage.g:2320:3: this_NumericLiteral_1= ruleNumericLiteral
4309 { 6622 {
4310 // InternalSolverLanguage.g:1473:4: ( (lv_constraints_2_0= ruleConstraint ) )* 6623 if ( state.backtracking==0 ) {
4311 loop24:
4312 do {
4313 int alt24=2;
4314 int LA24_0 = input.LA(1);
4315
4316 if ( (LA24_0==RULE_ID||LA24_0==11||(LA24_0>=30 && LA24_0<=31)) ) {
4317 alt24=1;
4318 }
4319 6624
6625 newCompositeNode(grammarAccess.getLiteralAccess().getNumericLiteralParserRuleCall_1());
6626
6627 }
6628 pushFollow(FOLLOW_2);
6629 this_NumericLiteral_1=ruleNumericLiteral();
4320 6630
4321 switch (alt24) { 6631 state._fsp--;
4322 case 1 : 6632 if (state.failed) return current;
4323 // InternalSolverLanguage.g:1474:5: (lv_constraints_2_0= ruleConstraint ) 6633 if ( state.backtracking==0 ) {
4324 {
4325 // InternalSolverLanguage.g:1474:5: (lv_constraints_2_0= ruleConstraint )
4326 // InternalSolverLanguage.g:1475:6: lv_constraints_2_0= ruleConstraint
4327 {
4328 6634
4329 newCompositeNode(grammarAccess.getPatternBodyAccess().getConstraintsConstraintParserRuleCall_1_1_0()); 6635 current = this_NumericLiteral_1;
4330 6636 afterParserOrEnumRuleCall();
4331 pushFollow(FOLLOW_22); 6637
4332 lv_constraints_2_0=ruleConstraint(); 6638 }
4333 6639
4334 state._fsp--; 6640 }
6641 break;
6642 case 3 :
6643 // InternalSolverLanguage.g:2329:3: this_InfinityLiteral_2= ruleInfinityLiteral
6644 {
6645 if ( state.backtracking==0 ) {
4335 6646
6647 newCompositeNode(grammarAccess.getLiteralAccess().getInfinityLiteralParserRuleCall_2());
6648
6649 }
6650 pushFollow(FOLLOW_2);
6651 this_InfinityLiteral_2=ruleInfinityLiteral();
4336 6652
4337 if (current==null) { 6653 state._fsp--;
4338 current = createModelElementForParent(grammarAccess.getPatternBodyRule()); 6654 if (state.failed) return current;
4339 } 6655 if ( state.backtracking==0 ) {
4340 add(
4341 current,
4342 "constraints",
4343 lv_constraints_2_0,
4344 "org.eclipse.viatra.solver.language.SolverLanguage.Constraint");
4345 afterParserOrEnumRuleCall();
4346
4347 6656
4348 } 6657 current = this_InfinityLiteral_2;
6658 afterParserOrEnumRuleCall();
6659
6660 }
4349 6661
6662 }
6663 break;
6664 case 4 :
6665 // InternalSolverLanguage.g:2338:3: this_EmptyIntervalLiteral_3= ruleEmptyIntervalLiteral
6666 {
6667 if ( state.backtracking==0 ) {
4350 6668
4351 } 6669 newCompositeNode(grammarAccess.getLiteralAccess().getEmptyIntervalLiteralParserRuleCall_3());
4352 break; 6670
6671 }
6672 pushFollow(FOLLOW_2);
6673 this_EmptyIntervalLiteral_3=ruleEmptyIntervalLiteral();
4353 6674
4354 default : 6675 state._fsp--;
4355 break loop24; 6676 if (state.failed) return current;
4356 } 6677 if ( state.backtracking==0 ) {
4357 } while (true);
4358 6678
6679 current = this_EmptyIntervalLiteral_3;
6680 afterParserOrEnumRuleCall();
6681
6682 }
4359 6683
4360 } 6684 }
4361 break; 6685 break;
6686 case 5 :
6687 // InternalSolverLanguage.g:2347:3: this_StringLiteral_4= ruleStringLiteral
6688 {
6689 if ( state.backtracking==0 ) {
4362 6690
4363 } 6691 newCompositeNode(grammarAccess.getLiteralAccess().getStringLiteralParserRuleCall_4());
6692
6693 }
6694 pushFollow(FOLLOW_2);
6695 this_StringLiteral_4=ruleStringLiteral();
6696
6697 state._fsp--;
6698 if (state.failed) return current;
6699 if ( state.backtracking==0 ) {
4364 6700
6701 current = this_StringLiteral_4;
6702 afterParserOrEnumRuleCall();
6703
6704 }
6705
6706 }
6707 break;
4365 6708
4366 } 6709 }
4367 6710
4368 6711
4369 } 6712 }
4370 6713
6714 if ( state.backtracking==0 ) {
4371 6715
4372 leaveRule(); 6716 leaveRule();
4373 6717
6718 }
4374 } 6719 }
4375 6720
4376 catch (RecognitionException re) { 6721 catch (RecognitionException re) {
@@ -4381,29 +6726,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
4381 } 6726 }
4382 return current; 6727 return current;
4383 } 6728 }
4384 // $ANTLR end "rulePatternBody" 6729 // $ANTLR end "ruleLiteral"
4385 6730
4386 6731
4387 // $ANTLR start "entryRulePolarity" 6732 // $ANTLR start "entryRuleLogicLiteral"
4388 // InternalSolverLanguage.g:1497:1: entryRulePolarity returns [EObject current=null] : iv_rulePolarity= rulePolarity EOF ; 6733 // InternalSolverLanguage.g:2359:1: entryRuleLogicLiteral returns [EObject current=null] : iv_ruleLogicLiteral= ruleLogicLiteral EOF ;
4389 public final EObject entryRulePolarity() throws RecognitionException { 6734 public final EObject entryRuleLogicLiteral() throws RecognitionException {
4390 EObject current = null; 6735 EObject current = null;
4391 6736
4392 EObject iv_rulePolarity = null; 6737 EObject iv_ruleLogicLiteral = null;
4393 6738
4394 6739
4395 try { 6740 try {
4396 // InternalSolverLanguage.g:1497:49: (iv_rulePolarity= rulePolarity EOF ) 6741 // InternalSolverLanguage.g:2359:53: (iv_ruleLogicLiteral= ruleLogicLiteral EOF )
4397 // InternalSolverLanguage.g:1498:2: iv_rulePolarity= rulePolarity EOF 6742 // InternalSolverLanguage.g:2360:2: iv_ruleLogicLiteral= ruleLogicLiteral EOF
4398 { 6743 {
4399 newCompositeNode(grammarAccess.getPolarityRule()); 6744 if ( state.backtracking==0 ) {
6745 newCompositeNode(grammarAccess.getLogicLiteralRule());
6746 }
4400 pushFollow(FOLLOW_1); 6747 pushFollow(FOLLOW_1);
4401 iv_rulePolarity=rulePolarity(); 6748 iv_ruleLogicLiteral=ruleLogicLiteral();
4402 6749
4403 state._fsp--; 6750 state._fsp--;
4404 6751 if (state.failed) return current;
4405 current =iv_rulePolarity; 6752 if ( state.backtracking==0 ) {
4406 match(input,EOF,FOLLOW_2); 6753 current =iv_ruleLogicLiteral;
6754 }
6755 match(input,EOF,FOLLOW_2); if (state.failed) return current;
4407 6756
4408 } 6757 }
4409 6758
@@ -4417,104 +6766,178 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
4417 } 6766 }
4418 return current; 6767 return current;
4419 } 6768 }
4420 // $ANTLR end "entryRulePolarity" 6769 // $ANTLR end "entryRuleLogicLiteral"
4421 6770
4422 6771
4423 // $ANTLR start "rulePolarity" 6772 // $ANTLR start "ruleLogicLiteral"
4424 // InternalSolverLanguage.g:1504:1: rulePolarity returns [EObject current=null] : ( ( () otherlv_1= '+' ) | ( () otherlv_3= '-' ) ) ; 6773 // InternalSolverLanguage.g:2366:1: ruleLogicLiteral returns [EObject current=null] : ( (lv_value_0_0= ruleLogicValue ) ) ;
4425 public final EObject rulePolarity() throws RecognitionException { 6774 public final EObject ruleLogicLiteral() throws RecognitionException {
4426 EObject current = null; 6775 EObject current = null;
4427 6776
4428 Token otherlv_1=null; 6777 Enumerator lv_value_0_0 = null;
4429 Token otherlv_3=null; 6778
4430 6779
4431 6780
4432 enterRule(); 6781 enterRule();
4433 6782
4434 try { 6783 try {
4435 // InternalSolverLanguage.g:1510:2: ( ( ( () otherlv_1= '+' ) | ( () otherlv_3= '-' ) ) ) 6784 // InternalSolverLanguage.g:2372:2: ( ( (lv_value_0_0= ruleLogicValue ) ) )
4436 // InternalSolverLanguage.g:1511:2: ( ( () otherlv_1= '+' ) | ( () otherlv_3= '-' ) ) 6785 // InternalSolverLanguage.g:2373:2: ( (lv_value_0_0= ruleLogicValue ) )
6786 {
6787 // InternalSolverLanguage.g:2373:2: ( (lv_value_0_0= ruleLogicValue ) )
6788 // InternalSolverLanguage.g:2374:3: (lv_value_0_0= ruleLogicValue )
6789 {
6790 // InternalSolverLanguage.g:2374:3: (lv_value_0_0= ruleLogicValue )
6791 // InternalSolverLanguage.g:2375:4: lv_value_0_0= ruleLogicValue
4437 { 6792 {
4438 // InternalSolverLanguage.g:1511:2: ( ( () otherlv_1= '+' ) | ( () otherlv_3= '-' ) ) 6793 if ( state.backtracking==0 ) {
4439 int alt26=2;
4440 int LA26_0 = input.LA(1);
4441 6794
4442 if ( (LA26_0==30) ) { 6795 newCompositeNode(grammarAccess.getLogicLiteralAccess().getValueLogicValueEnumRuleCall_0());
4443 alt26=1; 6796
4444 } 6797 }
4445 else if ( (LA26_0==11) ) { 6798 pushFollow(FOLLOW_2);
4446 alt26=2; 6799 lv_value_0_0=ruleLogicValue();
6800
6801 state._fsp--;
6802 if (state.failed) return current;
6803 if ( state.backtracking==0 ) {
6804
6805 if (current==null) {
6806 current = createModelElementForParent(grammarAccess.getLogicLiteralRule());
6807 }
6808 set(
6809 current,
6810 "value",
6811 lv_value_0_0,
6812 "org.eclipse.viatra.solver.language.SolverLanguage.LogicValue");
6813 afterParserOrEnumRuleCall();
6814
4447 } 6815 }
4448 else {
4449 NoViableAltException nvae =
4450 new NoViableAltException("", 26, 0, input);
4451 6816
4452 throw nvae;
4453 } 6817 }
4454 switch (alt26) {
4455 case 1 :
4456 // InternalSolverLanguage.g:1512:3: ( () otherlv_1= '+' )
4457 {
4458 // InternalSolverLanguage.g:1512:3: ( () otherlv_1= '+' )
4459 // InternalSolverLanguage.g:1513:4: () otherlv_1= '+'
4460 {
4461 // InternalSolverLanguage.g:1513:4: ()
4462 // InternalSolverLanguage.g:1514:5:
4463 {
4464 6818
4465 current = forceCreateModelElement(
4466 grammarAccess.getPolarityAccess().getPositiveAction_0_0(),
4467 current);
4468
4469 6819
4470 } 6820 }
4471 6821
4472 otherlv_1=(Token)match(input,30,FOLLOW_2);
4473 6822
4474 newLeafNode(otherlv_1, grammarAccess.getPolarityAccess().getPlusSignKeyword_0_1()); 6823 }
4475
4476 6824
4477 } 6825 if ( state.backtracking==0 ) {
4478 6826
6827 leaveRule();
4479 6828
4480 } 6829 }
4481 break; 6830 }
4482 case 2 :
4483 // InternalSolverLanguage.g:1526:3: ( () otherlv_3= '-' )
4484 {
4485 // InternalSolverLanguage.g:1526:3: ( () otherlv_3= '-' )
4486 // InternalSolverLanguage.g:1527:4: () otherlv_3= '-'
4487 {
4488 // InternalSolverLanguage.g:1527:4: ()
4489 // InternalSolverLanguage.g:1528:5:
4490 {
4491 6831
4492 current = forceCreateModelElement( 6832 catch (RecognitionException re) {
4493 grammarAccess.getPolarityAccess().getNegativeAction_1_0(), 6833 recover(input,re);
4494 current); 6834 appendSkippedTokens();
4495 6835 }
6836 finally {
6837 }
6838 return current;
6839 }
6840 // $ANTLR end "ruleLogicLiteral"
4496 6841
4497 }
4498 6842
4499 otherlv_3=(Token)match(input,11,FOLLOW_2); 6843 // $ANTLR start "entryRuleNumericLiteral"
6844 // InternalSolverLanguage.g:2395:1: entryRuleNumericLiteral returns [EObject current=null] : iv_ruleNumericLiteral= ruleNumericLiteral EOF ;
6845 public final EObject entryRuleNumericLiteral() throws RecognitionException {
6846 EObject current = null;
4500 6847
4501 newLeafNode(otherlv_3, grammarAccess.getPolarityAccess().getHyphenMinusKeyword_1_1()); 6848 EObject iv_ruleNumericLiteral = null;
4502
4503 6849
4504 }
4505 6850
6851 try {
6852 // InternalSolverLanguage.g:2395:55: (iv_ruleNumericLiteral= ruleNumericLiteral EOF )
6853 // InternalSolverLanguage.g:2396:2: iv_ruleNumericLiteral= ruleNumericLiteral EOF
6854 {
6855 if ( state.backtracking==0 ) {
6856 newCompositeNode(grammarAccess.getNumericLiteralRule());
6857 }
6858 pushFollow(FOLLOW_1);
6859 iv_ruleNumericLiteral=ruleNumericLiteral();
4506 6860
4507 } 6861 state._fsp--;
4508 break; 6862 if (state.failed) return current;
6863 if ( state.backtracking==0 ) {
6864 current =iv_ruleNumericLiteral;
6865 }
6866 match(input,EOF,FOLLOW_2); if (state.failed) return current;
4509 6867
4510 } 6868 }
4511 6869
6870 }
4512 6871
6872 catch (RecognitionException re) {
6873 recover(input,re);
6874 appendSkippedTokens();
6875 }
6876 finally {
6877 }
6878 return current;
6879 }
6880 // $ANTLR end "entryRuleNumericLiteral"
6881
6882
6883 // $ANTLR start "ruleNumericLiteral"
6884 // InternalSolverLanguage.g:2402:1: ruleNumericLiteral returns [EObject current=null] : ( (lv_value_0_0= ruleReal ) ) ;
6885 public final EObject ruleNumericLiteral() throws RecognitionException {
6886 EObject current = null;
6887
6888 AntlrDatatypeRuleToken lv_value_0_0 = null;
6889
6890
6891
6892 enterRule();
6893
6894 try {
6895 // InternalSolverLanguage.g:2408:2: ( ( (lv_value_0_0= ruleReal ) ) )
6896 // InternalSolverLanguage.g:2409:2: ( (lv_value_0_0= ruleReal ) )
6897 {
6898 // InternalSolverLanguage.g:2409:2: ( (lv_value_0_0= ruleReal ) )
6899 // InternalSolverLanguage.g:2410:3: (lv_value_0_0= ruleReal )
6900 {
6901 // InternalSolverLanguage.g:2410:3: (lv_value_0_0= ruleReal )
6902 // InternalSolverLanguage.g:2411:4: lv_value_0_0= ruleReal
6903 {
6904 if ( state.backtracking==0 ) {
6905
6906 newCompositeNode(grammarAccess.getNumericLiteralAccess().getValueRealParserRuleCall_0());
6907
6908 }
6909 pushFollow(FOLLOW_2);
6910 lv_value_0_0=ruleReal();
6911
6912 state._fsp--;
6913 if (state.failed) return current;
6914 if ( state.backtracking==0 ) {
6915
6916 if (current==null) {
6917 current = createModelElementForParent(grammarAccess.getNumericLiteralRule());
6918 }
6919 set(
6920 current,
6921 "value",
6922 lv_value_0_0,
6923 "org.eclipse.viatra.solver.language.SolverLanguage.Real");
6924 afterParserOrEnumRuleCall();
6925
4513 } 6926 }
4514 6927
6928 }
6929
6930
6931 }
6932
6933
6934 }
4515 6935
4516 leaveRule(); 6936 if ( state.backtracking==0 ) {
4517 6937
6938 leaveRule();
6939
6940 }
4518 } 6941 }
4519 6942
4520 catch (RecognitionException re) { 6943 catch (RecognitionException re) {
@@ -4525,32 +6948,96 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
4525 } 6948 }
4526 return current; 6949 return current;
4527 } 6950 }
4528 // $ANTLR end "rulePolarity" 6951 // $ANTLR end "ruleNumericLiteral"
4529 6952
4530 6953
4531 // $ANTLR start "entryRuleConstraint" 6954 // $ANTLR start "entryRuleInfinityLiteral"
4532 // InternalSolverLanguage.g:1543:1: entryRuleConstraint returns [EObject current=null] : iv_ruleConstraint= ruleConstraint EOF ; 6955 // InternalSolverLanguage.g:2431:1: entryRuleInfinityLiteral returns [EObject current=null] : iv_ruleInfinityLiteral= ruleInfinityLiteral EOF ;
4533 public final EObject entryRuleConstraint() throws RecognitionException { 6956 public final EObject entryRuleInfinityLiteral() throws RecognitionException {
4534 EObject current = null; 6957 EObject current = null;
4535 6958
4536 EObject iv_ruleConstraint = null; 6959 EObject iv_ruleInfinityLiteral = null;
4537 6960
4538 6961
4539 try { 6962 try {
4540 // InternalSolverLanguage.g:1543:51: (iv_ruleConstraint= ruleConstraint EOF ) 6963 // InternalSolverLanguage.g:2431:56: (iv_ruleInfinityLiteral= ruleInfinityLiteral EOF )
4541 // InternalSolverLanguage.g:1544:2: iv_ruleConstraint= ruleConstraint EOF 6964 // InternalSolverLanguage.g:2432:2: iv_ruleInfinityLiteral= ruleInfinityLiteral EOF
4542 { 6965 {
4543 newCompositeNode(grammarAccess.getConstraintRule()); 6966 if ( state.backtracking==0 ) {
6967 newCompositeNode(grammarAccess.getInfinityLiteralRule());
6968 }
4544 pushFollow(FOLLOW_1); 6969 pushFollow(FOLLOW_1);
4545 iv_ruleConstraint=ruleConstraint(); 6970 iv_ruleInfinityLiteral=ruleInfinityLiteral();
4546 6971
4547 state._fsp--; 6972 state._fsp--;
6973 if (state.failed) return current;
6974 if ( state.backtracking==0 ) {
6975 current =iv_ruleInfinityLiteral;
6976 }
6977 match(input,EOF,FOLLOW_2); if (state.failed) return current;
6978
6979 }
6980
6981 }
6982
6983 catch (RecognitionException re) {
6984 recover(input,re);
6985 appendSkippedTokens();
6986 }
6987 finally {
6988 }
6989 return current;
6990 }
6991 // $ANTLR end "entryRuleInfinityLiteral"
6992
6993
6994 // $ANTLR start "ruleInfinityLiteral"
6995 // InternalSolverLanguage.g:2438:1: ruleInfinityLiteral returns [EObject current=null] : ( () otherlv_1= 'inf' ) ;
6996 public final EObject ruleInfinityLiteral() throws RecognitionException {
6997 EObject current = null;
6998
6999 Token otherlv_1=null;
7000
7001
7002 enterRule();
7003
7004 try {
7005 // InternalSolverLanguage.g:2444:2: ( ( () otherlv_1= 'inf' ) )
7006 // InternalSolverLanguage.g:2445:2: ( () otherlv_1= 'inf' )
7007 {
7008 // InternalSolverLanguage.g:2445:2: ( () otherlv_1= 'inf' )
7009 // InternalSolverLanguage.g:2446:3: () otherlv_1= 'inf'
7010 {
7011 // InternalSolverLanguage.g:2446:3: ()
7012 // InternalSolverLanguage.g:2447:4:
7013 {
7014 if ( state.backtracking==0 ) {
7015
7016 current = forceCreateModelElement(
7017 grammarAccess.getInfinityLiteralAccess().getInfinityLiteralAction_0(),
7018 current);
7019
7020 }
7021
7022 }
7023
7024 otherlv_1=(Token)match(input,39,FOLLOW_2); if (state.failed) return current;
7025 if ( state.backtracking==0 ) {
4548 7026
4549 current =iv_ruleConstraint; 7027 newLeafNode(otherlv_1, grammarAccess.getInfinityLiteralAccess().getInfKeyword_1());
4550 match(input,EOF,FOLLOW_2); 7028
7029 }
4551 7030
4552 } 7031 }
4553 7032
7033
7034 }
7035
7036 if ( state.backtracking==0 ) {
7037
7038 leaveRule();
7039
7040 }
4554 } 7041 }
4555 7042
4556 catch (RecognitionException re) { 7043 catch (RecognitionException re) {
@@ -4561,420 +7048,452 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
4561 } 7048 }
4562 return current; 7049 return current;
4563 } 7050 }
4564 // $ANTLR end "entryRuleConstraint" 7051 // $ANTLR end "ruleInfinityLiteral"
4565 7052
4566 7053
4567 // $ANTLR start "ruleConstraint" 7054 // $ANTLR start "entryRuleEmptyIntervalLiteral"
4568 // InternalSolverLanguage.g:1550:1: ruleConstraint returns [EObject current=null] : ( ( ( (lv_polarity_0_0= rulePolarity ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( (lv_params_3_0= ruleLiteral ) )? (otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) ) )* otherlv_6= ')' )? ) | ( ( (lv_closureType_7_0= ruleClosureType ) ) otherlv_8= '(' ( (lv_params_9_0= ruleLiteral ) )? (otherlv_10= ',' ( (lv_params_11_0= ruleLiteral ) ) )* otherlv_12= ')' ) ) ; 7055 // InternalSolverLanguage.g:2461:1: entryRuleEmptyIntervalLiteral returns [EObject current=null] : iv_ruleEmptyIntervalLiteral= ruleEmptyIntervalLiteral EOF ;
4569 public final EObject ruleConstraint() throws RecognitionException { 7056 public final EObject entryRuleEmptyIntervalLiteral() throws RecognitionException {
4570 EObject current = null; 7057 EObject current = null;
4571 7058
4572 Token otherlv_2=null; 7059 EObject iv_ruleEmptyIntervalLiteral = null;
4573 Token otherlv_4=null;
4574 Token otherlv_6=null;
4575 Token otherlv_8=null;
4576 Token otherlv_10=null;
4577 Token otherlv_12=null;
4578 EObject lv_polarity_0_0 = null;
4579 7060
4580 EObject lv_symbol_1_0 = null;
4581 7061
4582 EObject lv_params_3_0 = null; 7062 try {
7063 // InternalSolverLanguage.g:2461:61: (iv_ruleEmptyIntervalLiteral= ruleEmptyIntervalLiteral EOF )
7064 // InternalSolverLanguage.g:2462:2: iv_ruleEmptyIntervalLiteral= ruleEmptyIntervalLiteral EOF
7065 {
7066 if ( state.backtracking==0 ) {
7067 newCompositeNode(grammarAccess.getEmptyIntervalLiteralRule());
7068 }
7069 pushFollow(FOLLOW_1);
7070 iv_ruleEmptyIntervalLiteral=ruleEmptyIntervalLiteral();
4583 7071
4584 EObject lv_params_5_0 = null; 7072 state._fsp--;
7073 if (state.failed) return current;
7074 if ( state.backtracking==0 ) {
7075 current =iv_ruleEmptyIntervalLiteral;
7076 }
7077 match(input,EOF,FOLLOW_2); if (state.failed) return current;
4585 7078
4586 EObject lv_closureType_7_0 = null; 7079 }
7080
7081 }
7082
7083 catch (RecognitionException re) {
7084 recover(input,re);
7085 appendSkippedTokens();
7086 }
7087 finally {
7088 }
7089 return current;
7090 }
7091 // $ANTLR end "entryRuleEmptyIntervalLiteral"
4587 7092
4588 EObject lv_params_9_0 = null;
4589 7093
4590 EObject lv_params_11_0 = null; 7094 // $ANTLR start "ruleEmptyIntervalLiteral"
7095 // InternalSolverLanguage.g:2468:1: ruleEmptyIntervalLiteral returns [EObject current=null] : ( () otherlv_1= 'empty' ) ;
7096 public final EObject ruleEmptyIntervalLiteral() throws RecognitionException {
7097 EObject current = null;
4591 7098
7099 Token otherlv_1=null;
4592 7100
4593 7101
4594 enterRule(); 7102 enterRule();
4595 7103
4596 try { 7104 try {
4597 // InternalSolverLanguage.g:1556:2: ( ( ( ( (lv_polarity_0_0= rulePolarity ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( (lv_params_3_0= ruleLiteral ) )? (otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) ) )* otherlv_6= ')' )? ) | ( ( (lv_closureType_7_0= ruleClosureType ) ) otherlv_8= '(' ( (lv_params_9_0= ruleLiteral ) )? (otherlv_10= ',' ( (lv_params_11_0= ruleLiteral ) ) )* otherlv_12= ')' ) ) ) 7105 // InternalSolverLanguage.g:2474:2: ( ( () otherlv_1= 'empty' ) )
4598 // InternalSolverLanguage.g:1557:2: ( ( ( (lv_polarity_0_0= rulePolarity ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( (lv_params_3_0= ruleLiteral ) )? (otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) ) )* otherlv_6= ')' )? ) | ( ( (lv_closureType_7_0= ruleClosureType ) ) otherlv_8= '(' ( (lv_params_9_0= ruleLiteral ) )? (otherlv_10= ',' ( (lv_params_11_0= ruleLiteral ) ) )* otherlv_12= ')' ) ) 7106 // InternalSolverLanguage.g:2475:2: ( () otherlv_1= 'empty' )
4599 { 7107 {
4600 // InternalSolverLanguage.g:1557:2: ( ( ( (lv_polarity_0_0= rulePolarity ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( (lv_params_3_0= ruleLiteral ) )? (otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) ) )* otherlv_6= ')' )? ) | ( ( (lv_closureType_7_0= ruleClosureType ) ) otherlv_8= '(' ( (lv_params_9_0= ruleLiteral ) )? (otherlv_10= ',' ( (lv_params_11_0= ruleLiteral ) ) )* otherlv_12= ')' ) ) 7108 // InternalSolverLanguage.g:2475:2: ( () otherlv_1= 'empty' )
4601 int alt33=2; 7109 // InternalSolverLanguage.g:2476:3: () otherlv_1= 'empty'
4602 switch ( input.LA(1) ) { 7110 {
4603 case 30: 7111 // InternalSolverLanguage.g:2476:3: ()
4604 { 7112 // InternalSolverLanguage.g:2477:4:
4605 int LA33_1 = input.LA(2); 7113 {
7114 if ( state.backtracking==0 ) {
4606 7115
4607 if ( (LA33_1==17) ) { 7116 current = forceCreateModelElement(
4608 alt33=2; 7117 grammarAccess.getEmptyIntervalLiteralAccess().getEmptyIntervalLiteralAction_0(),
4609 } 7118 current);
4610 else if ( (LA33_1==RULE_ID) ) { 7119
4611 alt33=1; 7120 }
4612 }
4613 else {
4614 NoViableAltException nvae =
4615 new NoViableAltException("", 33, 1, input);
4616 7121
4617 throw nvae; 7122 }
4618 }
4619 }
4620 break;
4621 case RULE_ID:
4622 case 11:
4623 {
4624 alt33=1;
4625 }
4626 break;
4627 case 31:
4628 {
4629 alt33=2;
4630 }
4631 break;
4632 default:
4633 NoViableAltException nvae =
4634 new NoViableAltException("", 33, 0, input);
4635 7123
4636 throw nvae; 7124 otherlv_1=(Token)match(input,40,FOLLOW_2); if (state.failed) return current;
7125 if ( state.backtracking==0 ) {
7126
7127 newLeafNode(otherlv_1, grammarAccess.getEmptyIntervalLiteralAccess().getEmptyKeyword_1());
7128
4637 } 7129 }
4638 7130
4639 switch (alt33) { 7131 }
4640 case 1 :
4641 // InternalSolverLanguage.g:1558:3: ( ( (lv_polarity_0_0= rulePolarity ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( (lv_params_3_0= ruleLiteral ) )? (otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) ) )* otherlv_6= ')' )? )
4642 {
4643 // InternalSolverLanguage.g:1558:3: ( ( (lv_polarity_0_0= rulePolarity ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( (lv_params_3_0= ruleLiteral ) )? (otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) ) )* otherlv_6= ')' )? )
4644 // InternalSolverLanguage.g:1559:4: ( (lv_polarity_0_0= rulePolarity ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) (otherlv_2= '(' ( (lv_params_3_0= ruleLiteral ) )? (otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) ) )* otherlv_6= ')' )?
4645 {
4646 // InternalSolverLanguage.g:1559:4: ( (lv_polarity_0_0= rulePolarity ) )?
4647 int alt27=2;
4648 int LA27_0 = input.LA(1);
4649 7132
4650 if ( (LA27_0==11||LA27_0==30) ) {
4651 alt27=1;
4652 }
4653 switch (alt27) {
4654 case 1 :
4655 // InternalSolverLanguage.g:1560:5: (lv_polarity_0_0= rulePolarity )
4656 {
4657 // InternalSolverLanguage.g:1560:5: (lv_polarity_0_0= rulePolarity )
4658 // InternalSolverLanguage.g:1561:6: lv_polarity_0_0= rulePolarity
4659 {
4660 7133
4661 newCompositeNode(grammarAccess.getConstraintAccess().getPolarityPolarityParserRuleCall_0_0_0()); 7134 }
4662
4663 pushFollow(FOLLOW_12);
4664 lv_polarity_0_0=rulePolarity();
4665 7135
4666 state._fsp--; 7136 if ( state.backtracking==0 ) {
4667 7137
7138 leaveRule();
4668 7139
4669 if (current==null) { 7140 }
4670 current = createModelElementForParent(grammarAccess.getConstraintRule()); 7141 }
4671 }
4672 set(
4673 current,
4674 "polarity",
4675 lv_polarity_0_0,
4676 "org.eclipse.viatra.solver.language.SolverLanguage.Polarity");
4677 afterParserOrEnumRuleCall();
4678
4679 7142
4680 } 7143 catch (RecognitionException re) {
7144 recover(input,re);
7145 appendSkippedTokens();
7146 }
7147 finally {
7148 }
7149 return current;
7150 }
7151 // $ANTLR end "ruleEmptyIntervalLiteral"
4681 7152
4682 7153
4683 } 7154 // $ANTLR start "entryRuleStringLiteral"
4684 break; 7155 // InternalSolverLanguage.g:2491:1: entryRuleStringLiteral returns [EObject current=null] : iv_ruleStringLiteral= ruleStringLiteral EOF ;
7156 public final EObject entryRuleStringLiteral() throws RecognitionException {
7157 EObject current = null;
4685 7158
4686 } 7159 EObject iv_ruleStringLiteral = null;
4687 7160
4688 // InternalSolverLanguage.g:1578:4: ( (lv_symbol_1_0= ruleModelSymbol ) )
4689 // InternalSolverLanguage.g:1579:5: (lv_symbol_1_0= ruleModelSymbol )
4690 {
4691 // InternalSolverLanguage.g:1579:5: (lv_symbol_1_0= ruleModelSymbol )
4692 // InternalSolverLanguage.g:1580:6: lv_symbol_1_0= ruleModelSymbol
4693 {
4694 7161
4695 newCompositeNode(grammarAccess.getConstraintAccess().getSymbolModelSymbolParserRuleCall_0_1_0()); 7162 try {
4696 7163 // InternalSolverLanguage.g:2491:54: (iv_ruleStringLiteral= ruleStringLiteral EOF )
4697 pushFollow(FOLLOW_23); 7164 // InternalSolverLanguage.g:2492:2: iv_ruleStringLiteral= ruleStringLiteral EOF
4698 lv_symbol_1_0=ruleModelSymbol(); 7165 {
7166 if ( state.backtracking==0 ) {
7167 newCompositeNode(grammarAccess.getStringLiteralRule());
7168 }
7169 pushFollow(FOLLOW_1);
7170 iv_ruleStringLiteral=ruleStringLiteral();
4699 7171
4700 state._fsp--; 7172 state._fsp--;
7173 if (state.failed) return current;
7174 if ( state.backtracking==0 ) {
7175 current =iv_ruleStringLiteral;
7176 }
7177 match(input,EOF,FOLLOW_2); if (state.failed) return current;
4701 7178
7179 }
4702 7180
4703 if (current==null) { 7181 }
4704 current = createModelElementForParent(grammarAccess.getConstraintRule());
4705 }
4706 set(
4707 current,
4708 "symbol",
4709 lv_symbol_1_0,
4710 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
4711 afterParserOrEnumRuleCall();
4712
4713 7182
4714 } 7183 catch (RecognitionException re) {
7184 recover(input,re);
7185 appendSkippedTokens();
7186 }
7187 finally {
7188 }
7189 return current;
7190 }
7191 // $ANTLR end "entryRuleStringLiteral"
4715 7192
4716 7193
4717 } 7194 // $ANTLR start "ruleStringLiteral"
7195 // InternalSolverLanguage.g:2498:1: ruleStringLiteral returns [EObject current=null] : ( (lv_value_0_0= RULE_STRING ) ) ;
7196 public final EObject ruleStringLiteral() throws RecognitionException {
7197 EObject current = null;
4718 7198
4719 // InternalSolverLanguage.g:1597:4: (otherlv_2= '(' ( (lv_params_3_0= ruleLiteral ) )? (otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) ) )* otherlv_6= ')' )? 7199 Token lv_value_0_0=null;
4720 int alt30=2;
4721 int LA30_0 = input.LA(1);
4722 7200
4723 if ( (LA30_0==17) ) {
4724 alt30=1;
4725 }
4726 switch (alt30) {
4727 case 1 :
4728 // InternalSolverLanguage.g:1598:5: otherlv_2= '(' ( (lv_params_3_0= ruleLiteral ) )? (otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) ) )* otherlv_6= ')'
4729 {
4730 otherlv_2=(Token)match(input,17,FOLLOW_24);
4731 7201
4732 newLeafNode(otherlv_2, grammarAccess.getConstraintAccess().getLeftParenthesisKeyword_0_2_0()); 7202 enterRule();
4733
4734 // InternalSolverLanguage.g:1602:5: ( (lv_params_3_0= ruleLiteral ) )?
4735 int alt28=2;
4736 int LA28_0 = input.LA(1);
4737 7203
4738 if ( ((LA28_0>=RULE_INT && LA28_0<=RULE_STRING)||LA28_0==11||(LA28_0>=13 && LA28_0<=14)||LA28_0==27) ) { 7204 try {
4739 alt28=1; 7205 // InternalSolverLanguage.g:2504:2: ( ( (lv_value_0_0= RULE_STRING ) ) )
4740 } 7206 // InternalSolverLanguage.g:2505:2: ( (lv_value_0_0= RULE_STRING ) )
4741 switch (alt28) { 7207 {
4742 case 1 : 7208 // InternalSolverLanguage.g:2505:2: ( (lv_value_0_0= RULE_STRING ) )
4743 // InternalSolverLanguage.g:1603:6: (lv_params_3_0= ruleLiteral ) 7209 // InternalSolverLanguage.g:2506:3: (lv_value_0_0= RULE_STRING )
4744 { 7210 {
4745 // InternalSolverLanguage.g:1603:6: (lv_params_3_0= ruleLiteral ) 7211 // InternalSolverLanguage.g:2506:3: (lv_value_0_0= RULE_STRING )
4746 // InternalSolverLanguage.g:1604:7: lv_params_3_0= ruleLiteral 7212 // InternalSolverLanguage.g:2507:4: lv_value_0_0= RULE_STRING
4747 { 7213 {
7214 lv_value_0_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
7215 if ( state.backtracking==0 ) {
4748 7216
4749 newCompositeNode(grammarAccess.getConstraintAccess().getParamsLiteralParserRuleCall_0_2_1_0()); 7217 newLeafNode(lv_value_0_0, grammarAccess.getStringLiteralAccess().getValueSTRINGTerminalRuleCall_0());
4750 7218
4751 pushFollow(FOLLOW_8); 7219 }
4752 lv_params_3_0=ruleLiteral(); 7220 if ( state.backtracking==0 ) {
4753 7221
4754 state._fsp--; 7222 if (current==null) {
7223 current = createModelElement(grammarAccess.getStringLiteralRule());
7224 }
7225 setWithLastConsumed(
7226 current,
7227 "value",
7228 lv_value_0_0,
7229 "org.eclipse.viatra.solver.language.SolverLanguage.STRING");
7230
7231 }
4755 7232
7233 }
4756 7234
4757 if (current==null) {
4758 current = createModelElementForParent(grammarAccess.getConstraintRule());
4759 }
4760 add(
4761 current,
4762 "params",
4763 lv_params_3_0,
4764 "org.eclipse.viatra.solver.language.SolverLanguage.Literal");
4765 afterParserOrEnumRuleCall();
4766
4767 7235
4768 } 7236 }
4769 7237
4770 7238
4771 } 7239 }
4772 break;
4773 7240
4774 } 7241 if ( state.backtracking==0 ) {
7242
7243 leaveRule();
4775 7244
4776 // InternalSolverLanguage.g:1621:5: (otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) ) )* 7245 }
4777 loop29: 7246 }
4778 do { 7247
4779 int alt29=2; 7248 catch (RecognitionException re) {
4780 int LA29_0 = input.LA(1); 7249 recover(input,re);
7250 appendSkippedTokens();
7251 }
7252 finally {
7253 }
7254 return current;
7255 }
7256 // $ANTLR end "ruleStringLiteral"
4781 7257
4782 if ( (LA29_0==18) ) {
4783 alt29=1;
4784 }
4785 7258
7259 // $ANTLR start "entryRuleClassDefinition"
7260 // InternalSolverLanguage.g:2526:1: entryRuleClassDefinition returns [EObject current=null] : iv_ruleClassDefinition= ruleClassDefinition EOF ;
7261 public final EObject entryRuleClassDefinition() throws RecognitionException {
7262 EObject current = null;
4786 7263
4787 switch (alt29) { 7264 EObject iv_ruleClassDefinition = null;
4788 case 1 :
4789 // InternalSolverLanguage.g:1622:6: otherlv_4= ',' ( (lv_params_5_0= ruleLiteral ) )
4790 {
4791 otherlv_4=(Token)match(input,18,FOLLOW_25);
4792 7265
4793 newLeafNode(otherlv_4, grammarAccess.getConstraintAccess().getCommaKeyword_0_2_2_0());
4794
4795 // InternalSolverLanguage.g:1626:6: ( (lv_params_5_0= ruleLiteral ) )
4796 // InternalSolverLanguage.g:1627:7: (lv_params_5_0= ruleLiteral )
4797 {
4798 // InternalSolverLanguage.g:1627:7: (lv_params_5_0= ruleLiteral )
4799 // InternalSolverLanguage.g:1628:8: lv_params_5_0= ruleLiteral
4800 {
4801 7266
4802 newCompositeNode(grammarAccess.getConstraintAccess().getParamsLiteralParserRuleCall_0_2_2_1_0()); 7267 try {
4803 7268 // InternalSolverLanguage.g:2526:56: (iv_ruleClassDefinition= ruleClassDefinition EOF )
4804 pushFollow(FOLLOW_8); 7269 // InternalSolverLanguage.g:2527:2: iv_ruleClassDefinition= ruleClassDefinition EOF
4805 lv_params_5_0=ruleLiteral(); 7270 {
7271 if ( state.backtracking==0 ) {
7272 newCompositeNode(grammarAccess.getClassDefinitionRule());
7273 }
7274 pushFollow(FOLLOW_1);
7275 iv_ruleClassDefinition=ruleClassDefinition();
4806 7276
4807 state._fsp--; 7277 state._fsp--;
7278 if (state.failed) return current;
7279 if ( state.backtracking==0 ) {
7280 current =iv_ruleClassDefinition;
7281 }
7282 match(input,EOF,FOLLOW_2); if (state.failed) return current;
4808 7283
7284 }
4809 7285
4810 if (current==null) { 7286 }
4811 current = createModelElementForParent(grammarAccess.getConstraintRule());
4812 }
4813 add(
4814 current,
4815 "params",
4816 lv_params_5_0,
4817 "org.eclipse.viatra.solver.language.SolverLanguage.Literal");
4818 afterParserOrEnumRuleCall();
4819
4820 7287
4821 } 7288 catch (RecognitionException re) {
7289 recover(input,re);
7290 appendSkippedTokens();
7291 }
7292 finally {
7293 }
7294 return current;
7295 }
7296 // $ANTLR end "entryRuleClassDefinition"
4822 7297
4823 7298
4824 } 7299 // $ANTLR start "ruleClassDefinition"
7300 // InternalSolverLanguage.g:2533:1: ruleClassDefinition returns [EObject current=null] : ( ( (lv_abstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'extends' ( ( ruleQualifiedName ) ) (otherlv_5= ',' ( ( ruleQualifiedName ) ) )* )? otherlv_7= '{' ( (lv_members_8_0= ruleMemberDefinition ) )* otherlv_9= '}' ) ;
7301 public final EObject ruleClassDefinition() throws RecognitionException {
7302 EObject current = null;
4825 7303
7304 Token lv_abstract_0_0=null;
7305 Token otherlv_1=null;
7306 Token lv_name_2_0=null;
7307 Token otherlv_3=null;
7308 Token otherlv_5=null;
7309 Token otherlv_7=null;
7310 Token otherlv_9=null;
7311 EObject lv_members_8_0 = null;
4826 7312
4827 }
4828 break;
4829 7313
4830 default :
4831 break loop29;
4832 }
4833 } while (true);
4834 7314
4835 otherlv_6=(Token)match(input,19,FOLLOW_2); 7315 enterRule();
4836 7316
4837 newLeafNode(otherlv_6, grammarAccess.getConstraintAccess().getRightParenthesisKeyword_0_2_3()); 7317 try {
4838 7318 // InternalSolverLanguage.g:2539:2: ( ( ( (lv_abstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'extends' ( ( ruleQualifiedName ) ) (otherlv_5= ',' ( ( ruleQualifiedName ) ) )* )? otherlv_7= '{' ( (lv_members_8_0= ruleMemberDefinition ) )* otherlv_9= '}' ) )
7319 // InternalSolverLanguage.g:2540:2: ( ( (lv_abstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'extends' ( ( ruleQualifiedName ) ) (otherlv_5= ',' ( ( ruleQualifiedName ) ) )* )? otherlv_7= '{' ( (lv_members_8_0= ruleMemberDefinition ) )* otherlv_9= '}' )
7320 {
7321 // InternalSolverLanguage.g:2540:2: ( ( (lv_abstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'extends' ( ( ruleQualifiedName ) ) (otherlv_5= ',' ( ( ruleQualifiedName ) ) )* )? otherlv_7= '{' ( (lv_members_8_0= ruleMemberDefinition ) )* otherlv_9= '}' )
7322 // InternalSolverLanguage.g:2541:3: ( (lv_abstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'extends' ( ( ruleQualifiedName ) ) (otherlv_5= ',' ( ( ruleQualifiedName ) ) )* )? otherlv_7= '{' ( (lv_members_8_0= ruleMemberDefinition ) )* otherlv_9= '}'
7323 {
7324 // InternalSolverLanguage.g:2541:3: ( (lv_abstract_0_0= 'abstract' ) )?
7325 int alt27=2;
7326 int LA27_0 = input.LA(1);
4839 7327
4840 } 7328 if ( (LA27_0==41) ) {
4841 break; 7329 alt27=1;
7330 }
7331 switch (alt27) {
7332 case 1 :
7333 // InternalSolverLanguage.g:2542:4: (lv_abstract_0_0= 'abstract' )
7334 {
7335 // InternalSolverLanguage.g:2542:4: (lv_abstract_0_0= 'abstract' )
7336 // InternalSolverLanguage.g:2543:5: lv_abstract_0_0= 'abstract'
7337 {
7338 lv_abstract_0_0=(Token)match(input,41,FOLLOW_39); if (state.failed) return current;
7339 if ( state.backtracking==0 ) {
4842 7340
7341 newLeafNode(lv_abstract_0_0, grammarAccess.getClassDefinitionAccess().getAbstractAbstractKeyword_0_0());
7342
4843 } 7343 }
7344 if ( state.backtracking==0 ) {
4844 7345
7346 if (current==null) {
7347 current = createModelElement(grammarAccess.getClassDefinitionRule());
7348 }
7349 setWithLastConsumed(current, "abstract", true, "abstract");
7350
7351 }
4845 7352
4846 } 7353 }
4847 7354
4848 7355
4849 } 7356 }
4850 break; 7357 break;
4851 case 2 :
4852 // InternalSolverLanguage.g:1653:3: ( ( (lv_closureType_7_0= ruleClosureType ) ) otherlv_8= '(' ( (lv_params_9_0= ruleLiteral ) )? (otherlv_10= ',' ( (lv_params_11_0= ruleLiteral ) ) )* otherlv_12= ')' )
4853 {
4854 // InternalSolverLanguage.g:1653:3: ( ( (lv_closureType_7_0= ruleClosureType ) ) otherlv_8= '(' ( (lv_params_9_0= ruleLiteral ) )? (otherlv_10= ',' ( (lv_params_11_0= ruleLiteral ) ) )* otherlv_12= ')' )
4855 // InternalSolverLanguage.g:1654:4: ( (lv_closureType_7_0= ruleClosureType ) ) otherlv_8= '(' ( (lv_params_9_0= ruleLiteral ) )? (otherlv_10= ',' ( (lv_params_11_0= ruleLiteral ) ) )* otherlv_12= ')'
4856 {
4857 // InternalSolverLanguage.g:1654:4: ( (lv_closureType_7_0= ruleClosureType ) )
4858 // InternalSolverLanguage.g:1655:5: (lv_closureType_7_0= ruleClosureType )
4859 {
4860 // InternalSolverLanguage.g:1655:5: (lv_closureType_7_0= ruleClosureType )
4861 // InternalSolverLanguage.g:1656:6: lv_closureType_7_0= ruleClosureType
4862 {
4863 7358
4864 newCompositeNode(grammarAccess.getConstraintAccess().getClosureTypeClosureTypeParserRuleCall_1_0_0()); 7359 }
4865
4866 pushFollow(FOLLOW_26);
4867 lv_closureType_7_0=ruleClosureType();
4868 7360
4869 state._fsp--; 7361 otherlv_1=(Token)match(input,42,FOLLOW_40); if (state.failed) return current;
7362 if ( state.backtracking==0 ) {
4870 7363
7364 newLeafNode(otherlv_1, grammarAccess.getClassDefinitionAccess().getClassKeyword_1());
7365
7366 }
7367 // InternalSolverLanguage.g:2559:3: ( (lv_name_2_0= RULE_ID ) )
7368 // InternalSolverLanguage.g:2560:4: (lv_name_2_0= RULE_ID )
7369 {
7370 // InternalSolverLanguage.g:2560:4: (lv_name_2_0= RULE_ID )
7371 // InternalSolverLanguage.g:2561:5: lv_name_2_0= RULE_ID
7372 {
7373 lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_41); if (state.failed) return current;
7374 if ( state.backtracking==0 ) {
4871 7375
4872 if (current==null) { 7376 newLeafNode(lv_name_2_0, grammarAccess.getClassDefinitionAccess().getNameIDTerminalRuleCall_2_0());
4873 current = createModelElementForParent(grammarAccess.getConstraintRule()); 7377
4874 } 7378 }
4875 set( 7379 if ( state.backtracking==0 ) {
4876 current,
4877 "closureType",
4878 lv_closureType_7_0,
4879 "org.eclipse.viatra.solver.language.SolverLanguage.ClosureType");
4880 afterParserOrEnumRuleCall();
4881
4882 7380
4883 } 7381 if (current==null) {
7382 current = createModelElement(grammarAccess.getClassDefinitionRule());
7383 }
7384 setWithLastConsumed(
7385 current,
7386 "name",
7387 lv_name_2_0,
7388 "org.eclipse.xtext.common.Terminals.ID");
7389
7390 }
4884 7391
7392 }
4885 7393
4886 }
4887 7394
4888 otherlv_8=(Token)match(input,17,FOLLOW_24); 7395 }
4889 7396
4890 newLeafNode(otherlv_8, grammarAccess.getConstraintAccess().getLeftParenthesisKeyword_1_1()); 7397 // InternalSolverLanguage.g:2577:3: (otherlv_3= 'extends' ( ( ruleQualifiedName ) ) (otherlv_5= ',' ( ( ruleQualifiedName ) ) )* )?
4891 7398 int alt29=2;
4892 // InternalSolverLanguage.g:1677:4: ( (lv_params_9_0= ruleLiteral ) )? 7399 int LA29_0 = input.LA(1);
4893 int alt31=2;
4894 int LA31_0 = input.LA(1);
4895 7400
4896 if ( ((LA31_0>=RULE_INT && LA31_0<=RULE_STRING)||LA31_0==11||(LA31_0>=13 && LA31_0<=14)||LA31_0==27) ) { 7401 if ( (LA29_0==43) ) {
4897 alt31=1; 7402 alt29=1;
4898 } 7403 }
4899 switch (alt31) { 7404 switch (alt29) {
4900 case 1 : 7405 case 1 :
4901 // InternalSolverLanguage.g:1678:5: (lv_params_9_0= ruleLiteral ) 7406 // InternalSolverLanguage.g:2578:4: otherlv_3= 'extends' ( ( ruleQualifiedName ) ) (otherlv_5= ',' ( ( ruleQualifiedName ) ) )*
4902 { 7407 {
4903 // InternalSolverLanguage.g:1678:5: (lv_params_9_0= ruleLiteral ) 7408 otherlv_3=(Token)match(input,43,FOLLOW_35); if (state.failed) return current;
4904 // InternalSolverLanguage.g:1679:6: lv_params_9_0= ruleLiteral 7409 if ( state.backtracking==0 ) {
4905 {
4906 7410
4907 newCompositeNode(grammarAccess.getConstraintAccess().getParamsLiteralParserRuleCall_1_2_0()); 7411 newLeafNode(otherlv_3, grammarAccess.getClassDefinitionAccess().getExtendsKeyword_3_0());
4908 7412
4909 pushFollow(FOLLOW_8); 7413 }
4910 lv_params_9_0=ruleLiteral(); 7414 // InternalSolverLanguage.g:2582:4: ( ( ruleQualifiedName ) )
7415 // InternalSolverLanguage.g:2583:5: ( ruleQualifiedName )
7416 {
7417 // InternalSolverLanguage.g:2583:5: ( ruleQualifiedName )
7418 // InternalSolverLanguage.g:2584:6: ruleQualifiedName
7419 {
7420 if ( state.backtracking==0 ) {
4911 7421
4912 state._fsp--; 7422 if (current==null) {
7423 current = createModelElement(grammarAccess.getClassDefinitionRule());
7424 }
7425
7426 }
7427 if ( state.backtracking==0 ) {
4913 7428
7429 newCompositeNode(grammarAccess.getClassDefinitionAccess().getSuperclassesNamedElementCrossReference_3_1_0());
7430
7431 }
7432 pushFollow(FOLLOW_42);
7433 ruleQualifiedName();
4914 7434
4915 if (current==null) { 7435 state._fsp--;
4916 current = createModelElementForParent(grammarAccess.getConstraintRule()); 7436 if (state.failed) return current;
4917 } 7437 if ( state.backtracking==0 ) {
4918 add(
4919 current,
4920 "params",
4921 lv_params_9_0,
4922 "org.eclipse.viatra.solver.language.SolverLanguage.Literal");
4923 afterParserOrEnumRuleCall();
4924
4925 7438
4926 } 7439 afterParserOrEnumRuleCall();
7440
7441 }
4927 7442
7443 }
4928 7444
4929 }
4930 break;
4931 7445
4932 } 7446 }
4933 7447
4934 // InternalSolverLanguage.g:1696:4: (otherlv_10= ',' ( (lv_params_11_0= ruleLiteral ) ) )* 7448 // InternalSolverLanguage.g:2598:4: (otherlv_5= ',' ( ( ruleQualifiedName ) ) )*
4935 loop32: 7449 loop28:
4936 do { 7450 do {
4937 int alt32=2; 7451 int alt28=2;
4938 int LA32_0 = input.LA(1); 7452 int LA28_0 = input.LA(1);
4939 7453
4940 if ( (LA32_0==18) ) { 7454 if ( (LA28_0==28) ) {
4941 alt32=1; 7455 alt28=1;
4942 } 7456 }
4943 7457
4944 7458
4945 switch (alt32) { 7459 switch (alt28) {
4946 case 1 : 7460 case 1 :
4947 // InternalSolverLanguage.g:1697:5: otherlv_10= ',' ( (lv_params_11_0= ruleLiteral ) ) 7461 // InternalSolverLanguage.g:2599:5: otherlv_5= ',' ( ( ruleQualifiedName ) )
4948 { 7462 {
4949 otherlv_10=(Token)match(input,18,FOLLOW_25); 7463 otherlv_5=(Token)match(input,28,FOLLOW_35); if (state.failed) return current;
7464 if ( state.backtracking==0 ) {
4950 7465
4951 newLeafNode(otherlv_10, grammarAccess.getConstraintAccess().getCommaKeyword_1_3_0()); 7466 newLeafNode(otherlv_5, grammarAccess.getClassDefinitionAccess().getCommaKeyword_3_2_0());
4952 7467
4953 // InternalSolverLanguage.g:1701:5: ( (lv_params_11_0= ruleLiteral ) ) 7468 }
4954 // InternalSolverLanguage.g:1702:6: (lv_params_11_0= ruleLiteral ) 7469 // InternalSolverLanguage.g:2603:5: ( ( ruleQualifiedName ) )
7470 // InternalSolverLanguage.g:2604:6: ( ruleQualifiedName )
4955 { 7471 {
4956 // InternalSolverLanguage.g:1702:6: (lv_params_11_0= ruleLiteral ) 7472 // InternalSolverLanguage.g:2604:6: ( ruleQualifiedName )
4957 // InternalSolverLanguage.g:1703:7: lv_params_11_0= ruleLiteral 7473 // InternalSolverLanguage.g:2605:7: ruleQualifiedName
4958 { 7474 {
7475 if ( state.backtracking==0 ) {
4959 7476
4960 newCompositeNode(grammarAccess.getConstraintAccess().getParamsLiteralParserRuleCall_1_3_1_0()); 7477 if (current==null) {
4961 7478 current = createModelElement(grammarAccess.getClassDefinitionRule());
4962 pushFollow(FOLLOW_8); 7479 }
4963 lv_params_11_0=ruleLiteral(); 7480
7481 }
7482 if ( state.backtracking==0 ) {
4964 7483
4965 state._fsp--; 7484 newCompositeNode(grammarAccess.getClassDefinitionAccess().getSuperclassesNamedElementCrossReference_3_2_1_0());
7485
7486 }
7487 pushFollow(FOLLOW_42);
7488 ruleQualifiedName();
4966 7489
7490 state._fsp--;
7491 if (state.failed) return current;
7492 if ( state.backtracking==0 ) {
4967 7493
4968 if (current==null) { 7494 afterParserOrEnumRuleCall();
4969 current = createModelElementForParent(grammarAccess.getConstraintRule()); 7495
4970 } 7496 }
4971 add(
4972 current,
4973 "params",
4974 lv_params_11_0,
4975 "org.eclipse.viatra.solver.language.SolverLanguage.Literal");
4976 afterParserOrEnumRuleCall();
4977
4978 7497
4979 } 7498 }
4980 7499
@@ -4986,29 +7505,92 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
4986 break; 7505 break;
4987 7506
4988 default : 7507 default :
4989 break loop32; 7508 break loop28;
4990 } 7509 }
4991 } while (true); 7510 } while (true);
4992 7511
4993 otherlv_12=(Token)match(input,19,FOLLOW_2);
4994
4995 newLeafNode(otherlv_12, grammarAccess.getConstraintAccess().getRightParenthesisKeyword_1_4());
4996
4997 7512
4998 } 7513 }
7514 break;
4999 7515
7516 }
7517
7518 otherlv_7=(Token)match(input,30,FOLLOW_43); if (state.failed) return current;
7519 if ( state.backtracking==0 ) {
7520
7521 newLeafNode(otherlv_7, grammarAccess.getClassDefinitionAccess().getLeftCurlyBracketKeyword_4());
7522
7523 }
7524 // InternalSolverLanguage.g:2625:3: ( (lv_members_8_0= ruleMemberDefinition ) )*
7525 loop30:
7526 do {
7527 int alt30=2;
7528 int LA30_0 = input.LA(1);
7529
7530 if ( (LA30_0==RULE_ID||LA30_0==RULE_QUOTED_ID||LA30_0==44) ) {
7531 alt30=1;
7532 }
7533
7534
7535 switch (alt30) {
7536 case 1 :
7537 // InternalSolverLanguage.g:2626:4: (lv_members_8_0= ruleMemberDefinition )
7538 {
7539 // InternalSolverLanguage.g:2626:4: (lv_members_8_0= ruleMemberDefinition )
7540 // InternalSolverLanguage.g:2627:5: lv_members_8_0= ruleMemberDefinition
7541 {
7542 if ( state.backtracking==0 ) {
7543
7544 newCompositeNode(grammarAccess.getClassDefinitionAccess().getMembersMemberDefinitionParserRuleCall_5_0());
7545
7546 }
7547 pushFollow(FOLLOW_43);
7548 lv_members_8_0=ruleMemberDefinition();
7549
7550 state._fsp--;
7551 if (state.failed) return current;
7552 if ( state.backtracking==0 ) {
7553
7554 if (current==null) {
7555 current = createModelElementForParent(grammarAccess.getClassDefinitionRule());
7556 }
7557 add(
7558 current,
7559 "members",
7560 lv_members_8_0,
7561 "org.eclipse.viatra.solver.language.SolverLanguage.MemberDefinition");
7562 afterParserOrEnumRuleCall();
7563
7564 }
7565
7566 }
5000 7567
5001 } 7568
5002 break; 7569 }
7570 break;
7571
7572 default :
7573 break loop30;
7574 }
7575 } while (true);
7576
7577 otherlv_9=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
7578 if ( state.backtracking==0 ) {
7579
7580 newLeafNode(otherlv_9, grammarAccess.getClassDefinitionAccess().getRightCurlyBracketKeyword_6());
7581
7582 }
5003 7583
5004 } 7584 }
5005 7585
5006 7586
5007 } 7587 }
5008 7588
7589 if ( state.backtracking==0 ) {
5009 7590
5010 leaveRule(); 7591 leaveRule();
5011 7592
7593 }
5012 } 7594 }
5013 7595
5014 catch (RecognitionException re) { 7596 catch (RecognitionException re) {
@@ -5019,29 +7601,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5019 } 7601 }
5020 return current; 7602 return current;
5021 } 7603 }
5022 // $ANTLR end "ruleConstraint" 7604 // $ANTLR end "ruleClassDefinition"
5023 7605
5024 7606
5025 // $ANTLR start "entryRuleClosureType" 7607 // $ANTLR start "entryRuleMemberDefinition"
5026 // InternalSolverLanguage.g:1730:1: entryRuleClosureType returns [EObject current=null] : iv_ruleClosureType= ruleClosureType EOF ; 7608 // InternalSolverLanguage.g:2652:1: entryRuleMemberDefinition returns [EObject current=null] : iv_ruleMemberDefinition= ruleMemberDefinition EOF ;
5027 public final EObject entryRuleClosureType() throws RecognitionException { 7609 public final EObject entryRuleMemberDefinition() throws RecognitionException {
5028 EObject current = null; 7610 EObject current = null;
5029 7611
5030 EObject iv_ruleClosureType = null; 7612 EObject iv_ruleMemberDefinition = null;
5031 7613
5032 7614
5033 try { 7615 try {
5034 // InternalSolverLanguage.g:1730:52: (iv_ruleClosureType= ruleClosureType EOF ) 7616 // InternalSolverLanguage.g:2652:57: (iv_ruleMemberDefinition= ruleMemberDefinition EOF )
5035 // InternalSolverLanguage.g:1731:2: iv_ruleClosureType= ruleClosureType EOF 7617 // InternalSolverLanguage.g:2653:2: iv_ruleMemberDefinition= ruleMemberDefinition EOF
5036 { 7618 {
5037 newCompositeNode(grammarAccess.getClosureTypeRule()); 7619 if ( state.backtracking==0 ) {
7620 newCompositeNode(grammarAccess.getMemberDefinitionRule());
7621 }
5038 pushFollow(FOLLOW_1); 7622 pushFollow(FOLLOW_1);
5039 iv_ruleClosureType=ruleClosureType(); 7623 iv_ruleMemberDefinition=ruleMemberDefinition();
5040 7624
5041 state._fsp--; 7625 state._fsp--;
5042 7626 if (state.failed) return current;
5043 current =iv_ruleClosureType; 7627 if ( state.backtracking==0 ) {
5044 match(input,EOF,FOLLOW_2); 7628 current =iv_ruleMemberDefinition;
7629 }
7630 match(input,EOF,FOLLOW_2); if (state.failed) return current;
5045 7631
5046 } 7632 }
5047 7633
@@ -5055,89 +7641,226 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5055 } 7641 }
5056 return current; 7642 return current;
5057 } 7643 }
5058 // $ANTLR end "entryRuleClosureType" 7644 // $ANTLR end "entryRuleMemberDefinition"
5059 7645
5060 7646
5061 // $ANTLR start "ruleClosureType" 7647 // $ANTLR start "ruleMemberDefinition"
5062 // InternalSolverLanguage.g:1737:1: ruleClosureType returns [EObject current=null] : ( ( () otherlv_1= '*' ) | ( () otherlv_3= '+' ) ) ; 7648 // InternalSolverLanguage.g:2659:1: ruleMemberDefinition returns [EObject current=null] : ( ( (lv_containment_0_0= 'contains' ) )? ( ( ruleQualifiedName ) ) ( (lv_multiplicity_2_0= ruleMultiplicity ) )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= 'opposite' ( ( ruleQualifiedName ) ) )? (otherlv_6= ';' )? ) ;
5063 public final EObject ruleClosureType() throws RecognitionException { 7649 public final EObject ruleMemberDefinition() throws RecognitionException {
5064 EObject current = null; 7650 EObject current = null;
5065 7651
5066 Token otherlv_1=null; 7652 Token lv_containment_0_0=null;
5067 Token otherlv_3=null; 7653 Token lv_name_3_0=null;
7654 Token otherlv_4=null;
7655 Token otherlv_6=null;
7656 EObject lv_multiplicity_2_0 = null;
7657
5068 7658
5069 7659
5070 enterRule(); 7660 enterRule();
5071 7661
5072 try { 7662 try {
5073 // InternalSolverLanguage.g:1743:2: ( ( ( () otherlv_1= '*' ) | ( () otherlv_3= '+' ) ) ) 7663 // InternalSolverLanguage.g:2665:2: ( ( ( (lv_containment_0_0= 'contains' ) )? ( ( ruleQualifiedName ) ) ( (lv_multiplicity_2_0= ruleMultiplicity ) )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= 'opposite' ( ( ruleQualifiedName ) ) )? (otherlv_6= ';' )? ) )
5074 // InternalSolverLanguage.g:1744:2: ( ( () otherlv_1= '*' ) | ( () otherlv_3= '+' ) ) 7664 // InternalSolverLanguage.g:2666:2: ( ( (lv_containment_0_0= 'contains' ) )? ( ( ruleQualifiedName ) ) ( (lv_multiplicity_2_0= ruleMultiplicity ) )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= 'opposite' ( ( ruleQualifiedName ) ) )? (otherlv_6= ';' )? )
5075 { 7665 {
5076 // InternalSolverLanguage.g:1744:2: ( ( () otherlv_1= '*' ) | ( () otherlv_3= '+' ) ) 7666 // InternalSolverLanguage.g:2666:2: ( ( (lv_containment_0_0= 'contains' ) )? ( ( ruleQualifiedName ) ) ( (lv_multiplicity_2_0= ruleMultiplicity ) )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= 'opposite' ( ( ruleQualifiedName ) ) )? (otherlv_6= ';' )? )
5077 int alt34=2; 7667 // InternalSolverLanguage.g:2667:3: ( (lv_containment_0_0= 'contains' ) )? ( ( ruleQualifiedName ) ) ( (lv_multiplicity_2_0= ruleMultiplicity ) )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= 'opposite' ( ( ruleQualifiedName ) ) )? (otherlv_6= ';' )?
5078 int LA34_0 = input.LA(1); 7668 {
7669 // InternalSolverLanguage.g:2667:3: ( (lv_containment_0_0= 'contains' ) )?
7670 int alt31=2;
7671 int LA31_0 = input.LA(1);
7672
7673 if ( (LA31_0==44) ) {
7674 alt31=1;
7675 }
7676 switch (alt31) {
7677 case 1 :
7678 // InternalSolverLanguage.g:2668:4: (lv_containment_0_0= 'contains' )
7679 {
7680 // InternalSolverLanguage.g:2668:4: (lv_containment_0_0= 'contains' )
7681 // InternalSolverLanguage.g:2669:5: lv_containment_0_0= 'contains'
7682 {
7683 lv_containment_0_0=(Token)match(input,44,FOLLOW_35); if (state.failed) return current;
7684 if ( state.backtracking==0 ) {
7685
7686 newLeafNode(lv_containment_0_0, grammarAccess.getMemberDefinitionAccess().getContainmentContainsKeyword_0_0());
7687
7688 }
7689 if ( state.backtracking==0 ) {
7690
7691 if (current==null) {
7692 current = createModelElement(grammarAccess.getMemberDefinitionRule());
7693 }
7694 setWithLastConsumed(current, "containment", true, "contains");
7695
7696 }
7697
7698 }
7699
7700
7701 }
7702 break;
5079 7703
5080 if ( (LA34_0==31) ) {
5081 alt34=1;
5082 } 7704 }
5083 else if ( (LA34_0==30) ) { 7705
5084 alt34=2; 7706 // InternalSolverLanguage.g:2681:3: ( ( ruleQualifiedName ) )
7707 // InternalSolverLanguage.g:2682:4: ( ruleQualifiedName )
7708 {
7709 // InternalSolverLanguage.g:2682:4: ( ruleQualifiedName )
7710 // InternalSolverLanguage.g:2683:5: ruleQualifiedName
7711 {
7712 if ( state.backtracking==0 ) {
7713
7714 if (current==null) {
7715 current = createModelElement(grammarAccess.getMemberDefinitionRule());
7716 }
7717
5085 } 7718 }
5086 else { 7719 if ( state.backtracking==0 ) {
5087 NoViableAltException nvae =
5088 new NoViableAltException("", 34, 0, input);
5089 7720
5090 throw nvae; 7721 newCompositeNode(grammarAccess.getMemberDefinitionAccess().getTypeNamedElementCrossReference_1_0());
7722
5091 } 7723 }
5092 switch (alt34) { 7724 pushFollow(FOLLOW_44);
7725 ruleQualifiedName();
7726
7727 state._fsp--;
7728 if (state.failed) return current;
7729 if ( state.backtracking==0 ) {
7730
7731 afterParserOrEnumRuleCall();
7732
7733 }
7734
7735 }
7736
7737
7738 }
7739
7740 // InternalSolverLanguage.g:2697:3: ( (lv_multiplicity_2_0= ruleMultiplicity ) )?
7741 int alt32=2;
7742 int LA32_0 = input.LA(1);
7743
7744 if ( (LA32_0==36) ) {
7745 alt32=1;
7746 }
7747 switch (alt32) {
5093 case 1 : 7748 case 1 :
5094 // InternalSolverLanguage.g:1745:3: ( () otherlv_1= '*' ) 7749 // InternalSolverLanguage.g:2698:4: (lv_multiplicity_2_0= ruleMultiplicity )
5095 {
5096 // InternalSolverLanguage.g:1745:3: ( () otherlv_1= '*' )
5097 // InternalSolverLanguage.g:1746:4: () otherlv_1= '*'
5098 { 7750 {
5099 // InternalSolverLanguage.g:1746:4: () 7751 // InternalSolverLanguage.g:2698:4: (lv_multiplicity_2_0= ruleMultiplicity )
5100 // InternalSolverLanguage.g:1747:5: 7752 // InternalSolverLanguage.g:2699:5: lv_multiplicity_2_0= ruleMultiplicity
5101 { 7753 {
7754 if ( state.backtracking==0 ) {
5102 7755
5103 current = forceCreateModelElement( 7756 newCompositeNode(grammarAccess.getMemberDefinitionAccess().getMultiplicityMultiplicityParserRuleCall_2_0());
5104 grammarAccess.getClosureTypeAccess().getReflexiveClosureAction_0_0(), 7757
5105 current);
5106
5107
5108 } 7758 }
7759 pushFollow(FOLLOW_40);
7760 lv_multiplicity_2_0=ruleMultiplicity();
5109 7761
5110 otherlv_1=(Token)match(input,31,FOLLOW_2); 7762 state._fsp--;
5111 7763 if (state.failed) return current;
5112 newLeafNode(otherlv_1, grammarAccess.getClosureTypeAccess().getAsteriskKeyword_0_1()); 7764 if ( state.backtracking==0 ) {
5113 7765
7766 if (current==null) {
7767 current = createModelElementForParent(grammarAccess.getMemberDefinitionRule());
7768 }
7769 set(
7770 current,
7771 "multiplicity",
7772 lv_multiplicity_2_0,
7773 "org.eclipse.viatra.solver.language.SolverLanguage.Multiplicity");
7774 afterParserOrEnumRuleCall();
7775
7776 }
5114 7777
5115 } 7778 }
5116 7779
5117 7780
5118 } 7781 }
5119 break; 7782 break;
5120 case 2 : 7783
5121 // InternalSolverLanguage.g:1759:3: ( () otherlv_3= '+' ) 7784 }
7785
7786 // InternalSolverLanguage.g:2716:3: ( (lv_name_3_0= RULE_ID ) )
7787 // InternalSolverLanguage.g:2717:4: (lv_name_3_0= RULE_ID )
7788 {
7789 // InternalSolverLanguage.g:2717:4: (lv_name_3_0= RULE_ID )
7790 // InternalSolverLanguage.g:2718:5: lv_name_3_0= RULE_ID
7791 {
7792 lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_45); if (state.failed) return current;
7793 if ( state.backtracking==0 ) {
7794
7795 newLeafNode(lv_name_3_0, grammarAccess.getMemberDefinitionAccess().getNameIDTerminalRuleCall_3_0());
7796
7797 }
7798 if ( state.backtracking==0 ) {
7799
7800 if (current==null) {
7801 current = createModelElement(grammarAccess.getMemberDefinitionRule());
7802 }
7803 setWithLastConsumed(
7804 current,
7805 "name",
7806 lv_name_3_0,
7807 "org.eclipse.xtext.common.Terminals.ID");
7808
7809 }
7810
7811 }
7812
7813
7814 }
7815
7816 // InternalSolverLanguage.g:2734:3: (otherlv_4= 'opposite' ( ( ruleQualifiedName ) ) )?
7817 int alt33=2;
7818 int LA33_0 = input.LA(1);
7819
7820 if ( (LA33_0==45) ) {
7821 alt33=1;
7822 }
7823 switch (alt33) {
7824 case 1 :
7825 // InternalSolverLanguage.g:2735:4: otherlv_4= 'opposite' ( ( ruleQualifiedName ) )
5122 { 7826 {
5123 // InternalSolverLanguage.g:1759:3: ( () otherlv_3= '+' ) 7827 otherlv_4=(Token)match(input,45,FOLLOW_35); if (state.failed) return current;
5124 // InternalSolverLanguage.g:1760:4: () otherlv_3= '+' 7828 if ( state.backtracking==0 ) {
7829
7830 newLeafNode(otherlv_4, grammarAccess.getMemberDefinitionAccess().getOppositeKeyword_4_0());
7831
7832 }
7833 // InternalSolverLanguage.g:2739:4: ( ( ruleQualifiedName ) )
7834 // InternalSolverLanguage.g:2740:5: ( ruleQualifiedName )
5125 { 7835 {
5126 // InternalSolverLanguage.g:1760:4: () 7836 // InternalSolverLanguage.g:2740:5: ( ruleQualifiedName )
5127 // InternalSolverLanguage.g:1761:5: 7837 // InternalSolverLanguage.g:2741:6: ruleQualifiedName
5128 { 7838 {
7839 if ( state.backtracking==0 ) {
5129 7840
5130 current = forceCreateModelElement( 7841 if (current==null) {
5131 grammarAccess.getClosureTypeAccess().getIrreflexiveClosureAction_1_0(), 7842 current = createModelElement(grammarAccess.getMemberDefinitionRule());
5132 current); 7843 }
5133 7844
7845 }
7846 if ( state.backtracking==0 ) {
5134 7847
7848 newCompositeNode(grammarAccess.getMemberDefinitionAccess().getOppositeNamedElementCrossReference_4_1_0());
7849
5135 } 7850 }
7851 pushFollow(FOLLOW_18);
7852 ruleQualifiedName();
5136 7853
5137 otherlv_3=(Token)match(input,30,FOLLOW_2); 7854 state._fsp--;
7855 if (state.failed) return current;
7856 if ( state.backtracking==0 ) {
7857
7858 afterParserOrEnumRuleCall();
7859
7860 }
7861
7862 }
5138 7863
5139 newLeafNode(otherlv_3, grammarAccess.getClosureTypeAccess().getPlusSignKeyword_1_1());
5140
5141 7864
5142 } 7865 }
5143 7866
@@ -5147,12 +7870,40 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5147 7870
5148 } 7871 }
5149 7872
7873 // InternalSolverLanguage.g:2756:3: (otherlv_6= ';' )?
7874 int alt34=2;
7875 int LA34_0 = input.LA(1);
5150 7876
7877 if ( (LA34_0==26) ) {
7878 alt34=1;
5151 } 7879 }
7880 switch (alt34) {
7881 case 1 :
7882 // InternalSolverLanguage.g:2757:4: otherlv_6= ';'
7883 {
7884 otherlv_6=(Token)match(input,26,FOLLOW_2); if (state.failed) return current;
7885 if ( state.backtracking==0 ) {
5152 7886
7887 newLeafNode(otherlv_6, grammarAccess.getMemberDefinitionAccess().getSemicolonKeyword_5());
7888
7889 }
5153 7890
5154 leaveRule(); 7891 }
7892 break;
5155 7893
7894 }
7895
7896
7897 }
7898
7899
7900 }
7901
7902 if ( state.backtracking==0 ) {
7903
7904 leaveRule();
7905
7906 }
5156 } 7907 }
5157 7908
5158 catch (RecognitionException re) { 7909 catch (RecognitionException re) {
@@ -5163,29 +7914,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5163 } 7914 }
5164 return current; 7915 return current;
5165 } 7916 }
5166 // $ANTLR end "ruleClosureType" 7917 // $ANTLR end "ruleMemberDefinition"
5167 7918
5168 7919
5169 // $ANTLR start "entryRuleLiteral" 7920 // $ANTLR start "entryRuleMultiplicity"
5170 // InternalSolverLanguage.g:1776:1: entryRuleLiteral returns [EObject current=null] : iv_ruleLiteral= ruleLiteral EOF ; 7921 // InternalSolverLanguage.g:2766:1: entryRuleMultiplicity returns [EObject current=null] : iv_ruleMultiplicity= ruleMultiplicity EOF ;
5171 public final EObject entryRuleLiteral() throws RecognitionException { 7922 public final EObject entryRuleMultiplicity() throws RecognitionException {
5172 EObject current = null; 7923 EObject current = null;
5173 7924
5174 EObject iv_ruleLiteral = null; 7925 EObject iv_ruleMultiplicity = null;
5175 7926
5176 7927
5177 try { 7928 try {
5178 // InternalSolverLanguage.g:1776:48: (iv_ruleLiteral= ruleLiteral EOF ) 7929 // InternalSolverLanguage.g:2766:53: (iv_ruleMultiplicity= ruleMultiplicity EOF )
5179 // InternalSolverLanguage.g:1777:2: iv_ruleLiteral= ruleLiteral EOF 7930 // InternalSolverLanguage.g:2767:2: iv_ruleMultiplicity= ruleMultiplicity EOF
5180 { 7931 {
5181 newCompositeNode(grammarAccess.getLiteralRule()); 7932 if ( state.backtracking==0 ) {
7933 newCompositeNode(grammarAccess.getMultiplicityRule());
7934 }
5182 pushFollow(FOLLOW_1); 7935 pushFollow(FOLLOW_1);
5183 iv_ruleLiteral=ruleLiteral(); 7936 iv_ruleMultiplicity=ruleMultiplicity();
5184 7937
5185 state._fsp--; 7938 state._fsp--;
5186 7939 if (state.failed) return current;
5187 current =iv_ruleLiteral; 7940 if ( state.backtracking==0 ) {
5188 match(input,EOF,FOLLOW_2); 7941 current =iv_ruleMultiplicity;
7942 }
7943 match(input,EOF,FOLLOW_2); if (state.failed) return current;
5189 7944
5190 } 7945 }
5191 7946
@@ -5199,109 +7954,143 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5199 } 7954 }
5200 return current; 7955 return current;
5201 } 7956 }
5202 // $ANTLR end "entryRuleLiteral" 7957 // $ANTLR end "entryRuleMultiplicity"
5203 7958
5204 7959
5205 // $ANTLR start "ruleLiteral" 7960 // $ANTLR start "ruleMultiplicity"
5206 // InternalSolverLanguage.g:1783:1: ruleLiteral returns [EObject current=null] : (this_Variable_0= ruleVariable | this_DataObject_1= ruleDataObject | this_NamedObject_2= ruleNamedObject ) ; 7961 // InternalSolverLanguage.g:2773:1: ruleMultiplicity returns [EObject current=null] : (this_ManyMultiplicity_0= ruleManyMultiplicity | this_ExactMultiplicity_1= ruleExactMultiplicity | this_BoundedMultiplicity_2= ruleBoundedMultiplicity ) ;
5207 public final EObject ruleLiteral() throws RecognitionException { 7962 public final EObject ruleMultiplicity() throws RecognitionException {
5208 EObject current = null; 7963 EObject current = null;
5209 7964
5210 EObject this_Variable_0 = null; 7965 EObject this_ManyMultiplicity_0 = null;
5211 7966
5212 EObject this_DataObject_1 = null; 7967 EObject this_ExactMultiplicity_1 = null;
5213 7968
5214 EObject this_NamedObject_2 = null; 7969 EObject this_BoundedMultiplicity_2 = null;
5215 7970
5216 7971
5217 7972
5218 enterRule(); 7973 enterRule();
5219 7974
5220 try { 7975 try {
5221 // InternalSolverLanguage.g:1789:2: ( (this_Variable_0= ruleVariable | this_DataObject_1= ruleDataObject | this_NamedObject_2= ruleNamedObject ) ) 7976 // InternalSolverLanguage.g:2779:2: ( (this_ManyMultiplicity_0= ruleManyMultiplicity | this_ExactMultiplicity_1= ruleExactMultiplicity | this_BoundedMultiplicity_2= ruleBoundedMultiplicity ) )
5222 // InternalSolverLanguage.g:1790:2: (this_Variable_0= ruleVariable | this_DataObject_1= ruleDataObject | this_NamedObject_2= ruleNamedObject ) 7977 // InternalSolverLanguage.g:2780:2: (this_ManyMultiplicity_0= ruleManyMultiplicity | this_ExactMultiplicity_1= ruleExactMultiplicity | this_BoundedMultiplicity_2= ruleBoundedMultiplicity )
5223 { 7978 {
5224 // InternalSolverLanguage.g:1790:2: (this_Variable_0= ruleVariable | this_DataObject_1= ruleDataObject | this_NamedObject_2= ruleNamedObject ) 7979 // InternalSolverLanguage.g:2780:2: (this_ManyMultiplicity_0= ruleManyMultiplicity | this_ExactMultiplicity_1= ruleExactMultiplicity | this_BoundedMultiplicity_2= ruleBoundedMultiplicity )
5225 int alt35=3; 7980 int alt35=3;
5226 switch ( input.LA(1) ) { 7981 int LA35_0 = input.LA(1);
5227 case RULE_ID: 7982
5228 { 7983 if ( (LA35_0==36) ) {
5229 alt35=1; 7984 switch ( input.LA(2) ) {
5230 } 7985 case RULE_INT:
5231 break; 7986 {
5232 case RULE_INT: 7987 int LA35_2 = input.LA(3);
5233 case RULE_STRING: 7988
5234 case 11: 7989 if ( (LA35_2==38) ) {
5235 case 13: 7990 alt35=2;
5236 case 14: 7991 }
5237 { 7992 else if ( (LA35_2==37) ) {
5238 alt35=2; 7993 alt35=3;
5239 } 7994 }
5240 break; 7995 else {
5241 case 27: 7996 if (state.backtracking>0) {state.failed=true; return current;}
5242 { 7997 NoViableAltException nvae =
5243 alt35=3; 7998 new NoViableAltException("", 35, 2, input);
7999
8000 throw nvae;
8001 }
8002 }
8003 break;
8004 case 35:
8005 {
8006 alt35=2;
8007 }
8008 break;
8009 case 38:
8010 {
8011 alt35=1;
8012 }
8013 break;
8014 default:
8015 if (state.backtracking>0) {state.failed=true; return current;}
8016 NoViableAltException nvae =
8017 new NoViableAltException("", 35, 1, input);
8018
8019 throw nvae;
5244 } 8020 }
5245 break; 8021
5246 default: 8022 }
8023 else {
8024 if (state.backtracking>0) {state.failed=true; return current;}
5247 NoViableAltException nvae = 8025 NoViableAltException nvae =
5248 new NoViableAltException("", 35, 0, input); 8026 new NoViableAltException("", 35, 0, input);
5249 8027
5250 throw nvae; 8028 throw nvae;
5251 } 8029 }
5252
5253 switch (alt35) { 8030 switch (alt35) {
5254 case 1 : 8031 case 1 :
5255 // InternalSolverLanguage.g:1791:3: this_Variable_0= ruleVariable 8032 // InternalSolverLanguage.g:2781:3: this_ManyMultiplicity_0= ruleManyMultiplicity
5256 { 8033 {
8034 if ( state.backtracking==0 ) {
5257 8035
5258 newCompositeNode(grammarAccess.getLiteralAccess().getVariableParserRuleCall_0()); 8036 newCompositeNode(grammarAccess.getMultiplicityAccess().getManyMultiplicityParserRuleCall_0());
5259 8037
8038 }
5260 pushFollow(FOLLOW_2); 8039 pushFollow(FOLLOW_2);
5261 this_Variable_0=ruleVariable(); 8040 this_ManyMultiplicity_0=ruleManyMultiplicity();
5262 8041
5263 state._fsp--; 8042 state._fsp--;
8043 if (state.failed) return current;
8044 if ( state.backtracking==0 ) {
5264 8045
5265 8046 current = this_ManyMultiplicity_0;
5266 current = this_Variable_0; 8047 afterParserOrEnumRuleCall();
5267 afterParserOrEnumRuleCall(); 8048
5268 8049 }
5269 8050
5270 } 8051 }
5271 break; 8052 break;
5272 case 2 : 8053 case 2 :
5273 // InternalSolverLanguage.g:1800:3: this_DataObject_1= ruleDataObject 8054 // InternalSolverLanguage.g:2790:3: this_ExactMultiplicity_1= ruleExactMultiplicity
5274 { 8055 {
8056 if ( state.backtracking==0 ) {
5275 8057
5276 newCompositeNode(grammarAccess.getLiteralAccess().getDataObjectParserRuleCall_1()); 8058 newCompositeNode(grammarAccess.getMultiplicityAccess().getExactMultiplicityParserRuleCall_1());
5277 8059
8060 }
5278 pushFollow(FOLLOW_2); 8061 pushFollow(FOLLOW_2);
5279 this_DataObject_1=ruleDataObject(); 8062 this_ExactMultiplicity_1=ruleExactMultiplicity();
5280 8063
5281 state._fsp--; 8064 state._fsp--;
8065 if (state.failed) return current;
8066 if ( state.backtracking==0 ) {
5282 8067
5283 8068 current = this_ExactMultiplicity_1;
5284 current = this_DataObject_1; 8069 afterParserOrEnumRuleCall();
5285 afterParserOrEnumRuleCall(); 8070
5286 8071 }
5287 8072
5288 } 8073 }
5289 break; 8074 break;
5290 case 3 : 8075 case 3 :
5291 // InternalSolverLanguage.g:1809:3: this_NamedObject_2= ruleNamedObject 8076 // InternalSolverLanguage.g:2799:3: this_BoundedMultiplicity_2= ruleBoundedMultiplicity
5292 { 8077 {
8078 if ( state.backtracking==0 ) {
5293 8079
5294 newCompositeNode(grammarAccess.getLiteralAccess().getNamedObjectParserRuleCall_2()); 8080 newCompositeNode(grammarAccess.getMultiplicityAccess().getBoundedMultiplicityParserRuleCall_2());
5295 8081
8082 }
5296 pushFollow(FOLLOW_2); 8083 pushFollow(FOLLOW_2);
5297 this_NamedObject_2=ruleNamedObject(); 8084 this_BoundedMultiplicity_2=ruleBoundedMultiplicity();
5298 8085
5299 state._fsp--; 8086 state._fsp--;
8087 if (state.failed) return current;
8088 if ( state.backtracking==0 ) {
5300 8089
5301 8090 current = this_BoundedMultiplicity_2;
5302 current = this_NamedObject_2; 8091 afterParserOrEnumRuleCall();
5303 afterParserOrEnumRuleCall(); 8092
5304 8093 }
5305 8094
5306 } 8095 }
5307 break; 8096 break;
@@ -5311,9 +8100,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5311 8100
5312 } 8101 }
5313 8102
8103 if ( state.backtracking==0 ) {
5314 8104
5315 leaveRule(); 8105 leaveRule();
5316 8106
8107 }
5317 } 8108 }
5318 8109
5319 catch (RecognitionException re) { 8110 catch (RecognitionException re) {
@@ -5324,29 +8115,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5324 } 8115 }
5325 return current; 8116 return current;
5326 } 8117 }
5327 // $ANTLR end "ruleLiteral" 8118 // $ANTLR end "ruleMultiplicity"
5328 8119
5329 8120
5330 // $ANTLR start "entryRuleVariable" 8121 // $ANTLR start "entryRuleManyMultiplicity"
5331 // InternalSolverLanguage.g:1821:1: entryRuleVariable returns [EObject current=null] : iv_ruleVariable= ruleVariable EOF ; 8122 // InternalSolverLanguage.g:2811:1: entryRuleManyMultiplicity returns [EObject current=null] : iv_ruleManyMultiplicity= ruleManyMultiplicity EOF ;
5332 public final EObject entryRuleVariable() throws RecognitionException { 8123 public final EObject entryRuleManyMultiplicity() throws RecognitionException {
5333 EObject current = null; 8124 EObject current = null;
5334 8125
5335 EObject iv_ruleVariable = null; 8126 EObject iv_ruleManyMultiplicity = null;
5336 8127
5337 8128
5338 try { 8129 try {
5339 // InternalSolverLanguage.g:1821:49: (iv_ruleVariable= ruleVariable EOF ) 8130 // InternalSolverLanguage.g:2811:57: (iv_ruleManyMultiplicity= ruleManyMultiplicity EOF )
5340 // InternalSolverLanguage.g:1822:2: iv_ruleVariable= ruleVariable EOF 8131 // InternalSolverLanguage.g:2812:2: iv_ruleManyMultiplicity= ruleManyMultiplicity EOF
5341 { 8132 {
5342 newCompositeNode(grammarAccess.getVariableRule()); 8133 if ( state.backtracking==0 ) {
8134 newCompositeNode(grammarAccess.getManyMultiplicityRule());
8135 }
5343 pushFollow(FOLLOW_1); 8136 pushFollow(FOLLOW_1);
5344 iv_ruleVariable=ruleVariable(); 8137 iv_ruleManyMultiplicity=ruleManyMultiplicity();
5345 8138
5346 state._fsp--; 8139 state._fsp--;
5347 8140 if (state.failed) return current;
5348 current =iv_ruleVariable; 8141 if ( state.backtracking==0 ) {
5349 match(input,EOF,FOLLOW_2); 8142 current =iv_ruleManyMultiplicity;
8143 }
8144 match(input,EOF,FOLLOW_2); if (state.failed) return current;
5350 8145
5351 } 8146 }
5352 8147
@@ -5360,55 +8155,63 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5360 } 8155 }
5361 return current; 8156 return current;
5362 } 8157 }
5363 // $ANTLR end "entryRuleVariable" 8158 // $ANTLR end "entryRuleManyMultiplicity"
5364 8159
5365 8160
5366 // $ANTLR start "ruleVariable" 8161 // $ANTLR start "ruleManyMultiplicity"
5367 // InternalSolverLanguage.g:1828:1: ruleVariable returns [EObject current=null] : ( (lv_name_0_0= RULE_ID ) ) ; 8162 // InternalSolverLanguage.g:2818:1: ruleManyMultiplicity returns [EObject current=null] : ( () otherlv_1= '[' otherlv_2= ']' ) ;
5368 public final EObject ruleVariable() throws RecognitionException { 8163 public final EObject ruleManyMultiplicity() throws RecognitionException {
5369 EObject current = null; 8164 EObject current = null;
5370 8165
5371 Token lv_name_0_0=null; 8166 Token otherlv_1=null;
8167 Token otherlv_2=null;
5372 8168
5373 8169
5374 enterRule(); 8170 enterRule();
5375 8171
5376 try { 8172 try {
5377 // InternalSolverLanguage.g:1834:2: ( ( (lv_name_0_0= RULE_ID ) ) ) 8173 // InternalSolverLanguage.g:2824:2: ( ( () otherlv_1= '[' otherlv_2= ']' ) )
5378 // InternalSolverLanguage.g:1835:2: ( (lv_name_0_0= RULE_ID ) ) 8174 // InternalSolverLanguage.g:2825:2: ( () otherlv_1= '[' otherlv_2= ']' )
5379 { 8175 {
5380 // InternalSolverLanguage.g:1835:2: ( (lv_name_0_0= RULE_ID ) ) 8176 // InternalSolverLanguage.g:2825:2: ( () otherlv_1= '[' otherlv_2= ']' )
5381 // InternalSolverLanguage.g:1836:3: (lv_name_0_0= RULE_ID ) 8177 // InternalSolverLanguage.g:2826:3: () otherlv_1= '[' otherlv_2= ']'
5382 { 8178 {
5383 // InternalSolverLanguage.g:1836:3: (lv_name_0_0= RULE_ID ) 8179 // InternalSolverLanguage.g:2826:3: ()
5384 // InternalSolverLanguage.g:1837:4: lv_name_0_0= RULE_ID 8180 // InternalSolverLanguage.g:2827:4:
5385 { 8181 {
5386 lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_2); 8182 if ( state.backtracking==0 ) {
5387 8183
5388 newLeafNode(lv_name_0_0, grammarAccess.getVariableAccess().getNameIDTerminalRuleCall_0()); 8184 current = forceCreateModelElement(
5389 8185 grammarAccess.getManyMultiplicityAccess().getManyMultiplicityAction_0(),
8186 current);
8187
8188 }
8189
8190 }
5390 8191
5391 if (current==null) { 8192 otherlv_1=(Token)match(input,36,FOLLOW_38); if (state.failed) return current;
5392 current = createModelElement(grammarAccess.getVariableRule()); 8193 if ( state.backtracking==0 ) {
5393 }
5394 setWithLastConsumed(
5395 current,
5396 "name",
5397 lv_name_0_0,
5398 "org.eclipse.xtext.common.Terminals.ID");
5399
5400 8194
8195 newLeafNode(otherlv_1, grammarAccess.getManyMultiplicityAccess().getLeftSquareBracketKeyword_1());
8196
5401 } 8197 }
8198 otherlv_2=(Token)match(input,38,FOLLOW_2); if (state.failed) return current;
8199 if ( state.backtracking==0 ) {
5402 8200
8201 newLeafNode(otherlv_2, grammarAccess.getManyMultiplicityAccess().getRightSquareBracketKeyword_2());
8202
8203 }
5403 8204
5404 } 8205 }
5405 8206
5406 8207
5407 } 8208 }
5408 8209
8210 if ( state.backtracking==0 ) {
5409 8211
5410 leaveRule(); 8212 leaveRule();
5411 8213
8214 }
5412 } 8215 }
5413 8216
5414 catch (RecognitionException re) { 8217 catch (RecognitionException re) {
@@ -5419,29 +8222,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5419 } 8222 }
5420 return current; 8223 return current;
5421 } 8224 }
5422 // $ANTLR end "ruleVariable" 8225 // $ANTLR end "ruleManyMultiplicity"
5423 8226
5424 8227
5425 // $ANTLR start "entryRuleAllInstances" 8228 // $ANTLR start "entryRuleExactMultiplicity"
5426 // InternalSolverLanguage.g:1856:1: entryRuleAllInstances returns [EObject current=null] : iv_ruleAllInstances= ruleAllInstances EOF ; 8229 // InternalSolverLanguage.g:2845:1: entryRuleExactMultiplicity returns [EObject current=null] : iv_ruleExactMultiplicity= ruleExactMultiplicity EOF ;
5427 public final EObject entryRuleAllInstances() throws RecognitionException { 8230 public final EObject entryRuleExactMultiplicity() throws RecognitionException {
5428 EObject current = null; 8231 EObject current = null;
5429 8232
5430 EObject iv_ruleAllInstances = null; 8233 EObject iv_ruleExactMultiplicity = null;
5431 8234
5432 8235
5433 try { 8236 try {
5434 // InternalSolverLanguage.g:1856:53: (iv_ruleAllInstances= ruleAllInstances EOF ) 8237 // InternalSolverLanguage.g:2845:58: (iv_ruleExactMultiplicity= ruleExactMultiplicity EOF )
5435 // InternalSolverLanguage.g:1857:2: iv_ruleAllInstances= ruleAllInstances EOF 8238 // InternalSolverLanguage.g:2846:2: iv_ruleExactMultiplicity= ruleExactMultiplicity EOF
5436 { 8239 {
5437 newCompositeNode(grammarAccess.getAllInstancesRule()); 8240 if ( state.backtracking==0 ) {
8241 newCompositeNode(grammarAccess.getExactMultiplicityRule());
8242 }
5438 pushFollow(FOLLOW_1); 8243 pushFollow(FOLLOW_1);
5439 iv_ruleAllInstances=ruleAllInstances(); 8244 iv_ruleExactMultiplicity=ruleExactMultiplicity();
5440 8245
5441 state._fsp--; 8246 state._fsp--;
5442 8247 if (state.failed) return current;
5443 current =iv_ruleAllInstances; 8248 if ( state.backtracking==0 ) {
5444 match(input,EOF,FOLLOW_2); 8249 current =iv_ruleExactMultiplicity;
8250 }
8251 match(input,EOF,FOLLOW_2); if (state.failed) return current;
5445 8252
5446 } 8253 }
5447 8254
@@ -5455,72 +8262,87 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5455 } 8262 }
5456 return current; 8263 return current;
5457 } 8264 }
5458 // $ANTLR end "entryRuleAllInstances" 8265 // $ANTLR end "entryRuleExactMultiplicity"
5459 8266
5460 8267
5461 // $ANTLR start "ruleAllInstances" 8268 // $ANTLR start "ruleExactMultiplicity"
5462 // InternalSolverLanguage.g:1863:1: ruleAllInstances returns [EObject current=null] : (otherlv_0= ':' ( (lv_symbol_1_0= ruleSymbol ) ) ) ; 8269 // InternalSolverLanguage.g:2852:1: ruleExactMultiplicity returns [EObject current=null] : (otherlv_0= '[' ( (lv_multiplicity_1_0= ruleUpperMultiplicty ) ) otherlv_2= ']' ) ;
5463 public final EObject ruleAllInstances() throws RecognitionException { 8270 public final EObject ruleExactMultiplicity() throws RecognitionException {
5464 EObject current = null; 8271 EObject current = null;
5465 8272
5466 Token otherlv_0=null; 8273 Token otherlv_0=null;
5467 EObject lv_symbol_1_0 = null; 8274 Token otherlv_2=null;
8275 AntlrDatatypeRuleToken lv_multiplicity_1_0 = null;
5468 8276
5469 8277
5470 8278
5471 enterRule(); 8279 enterRule();
5472 8280
5473 try { 8281 try {
5474 // InternalSolverLanguage.g:1869:2: ( (otherlv_0= ':' ( (lv_symbol_1_0= ruleSymbol ) ) ) ) 8282 // InternalSolverLanguage.g:2858:2: ( (otherlv_0= '[' ( (lv_multiplicity_1_0= ruleUpperMultiplicty ) ) otherlv_2= ']' ) )
5475 // InternalSolverLanguage.g:1870:2: (otherlv_0= ':' ( (lv_symbol_1_0= ruleSymbol ) ) ) 8283 // InternalSolverLanguage.g:2859:2: (otherlv_0= '[' ( (lv_multiplicity_1_0= ruleUpperMultiplicty ) ) otherlv_2= ']' )
5476 { 8284 {
5477 // InternalSolverLanguage.g:1870:2: (otherlv_0= ':' ( (lv_symbol_1_0= ruleSymbol ) ) ) 8285 // InternalSolverLanguage.g:2859:2: (otherlv_0= '[' ( (lv_multiplicity_1_0= ruleUpperMultiplicty ) ) otherlv_2= ']' )
5478 // InternalSolverLanguage.g:1871:3: otherlv_0= ':' ( (lv_symbol_1_0= ruleSymbol ) ) 8286 // InternalSolverLanguage.g:2860:3: otherlv_0= '[' ( (lv_multiplicity_1_0= ruleUpperMultiplicty ) ) otherlv_2= ']'
5479 { 8287 {
5480 otherlv_0=(Token)match(input,20,FOLLOW_21); 8288 otherlv_0=(Token)match(input,36,FOLLOW_46); if (state.failed) return current;
8289 if ( state.backtracking==0 ) {
5481 8290
5482 newLeafNode(otherlv_0, grammarAccess.getAllInstancesAccess().getColonKeyword_0()); 8291 newLeafNode(otherlv_0, grammarAccess.getExactMultiplicityAccess().getLeftSquareBracketKeyword_0());
5483 8292
5484 // InternalSolverLanguage.g:1875:3: ( (lv_symbol_1_0= ruleSymbol ) ) 8293 }
5485 // InternalSolverLanguage.g:1876:4: (lv_symbol_1_0= ruleSymbol ) 8294 // InternalSolverLanguage.g:2864:3: ( (lv_multiplicity_1_0= ruleUpperMultiplicty ) )
8295 // InternalSolverLanguage.g:2865:4: (lv_multiplicity_1_0= ruleUpperMultiplicty )
5486 { 8296 {
5487 // InternalSolverLanguage.g:1876:4: (lv_symbol_1_0= ruleSymbol ) 8297 // InternalSolverLanguage.g:2865:4: (lv_multiplicity_1_0= ruleUpperMultiplicty )
5488 // InternalSolverLanguage.g:1877:5: lv_symbol_1_0= ruleSymbol 8298 // InternalSolverLanguage.g:2866:5: lv_multiplicity_1_0= ruleUpperMultiplicty
5489 { 8299 {
8300 if ( state.backtracking==0 ) {
5490 8301
5491 newCompositeNode(grammarAccess.getAllInstancesAccess().getSymbolSymbolParserRuleCall_1_0()); 8302 newCompositeNode(grammarAccess.getExactMultiplicityAccess().getMultiplicityUpperMultiplictyParserRuleCall_1_0());
5492 8303
5493 pushFollow(FOLLOW_2); 8304 }
5494 lv_symbol_1_0=ruleSymbol(); 8305 pushFollow(FOLLOW_38);
8306 lv_multiplicity_1_0=ruleUpperMultiplicty();
5495 8307
5496 state._fsp--; 8308 state._fsp--;
8309 if (state.failed) return current;
8310 if ( state.backtracking==0 ) {
5497 8311
5498 8312 if (current==null) {
5499 if (current==null) { 8313 current = createModelElementForParent(grammarAccess.getExactMultiplicityRule());
5500 current = createModelElementForParent(grammarAccess.getAllInstancesRule()); 8314 }
5501 } 8315 set(
5502 set( 8316 current,
5503 current, 8317 "multiplicity",
5504 "symbol", 8318 lv_multiplicity_1_0,
5505 lv_symbol_1_0, 8319 "org.eclipse.viatra.solver.language.SolverLanguage.UpperMultiplicty");
5506 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol"); 8320 afterParserOrEnumRuleCall();
5507 afterParserOrEnumRuleCall(); 8321
5508 8322 }
5509 8323
5510 } 8324 }
5511 8325
5512 8326
5513 } 8327 }
5514 8328
8329 otherlv_2=(Token)match(input,38,FOLLOW_2); if (state.failed) return current;
8330 if ( state.backtracking==0 ) {
8331
8332 newLeafNode(otherlv_2, grammarAccess.getExactMultiplicityAccess().getRightSquareBracketKeyword_2());
8333
8334 }
5515 8335
5516 } 8336 }
5517 8337
5518 8338
5519 } 8339 }
5520 8340
8341 if ( state.backtracking==0 ) {
5521 8342
5522 leaveRule(); 8343 leaveRule();
5523 8344
8345 }
5524 } 8346 }
5525 8347
5526 catch (RecognitionException re) { 8348 catch (RecognitionException re) {
@@ -5531,29 +8353,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5531 } 8353 }
5532 return current; 8354 return current;
5533 } 8355 }
5534 // $ANTLR end "ruleAllInstances" 8356 // $ANTLR end "ruleExactMultiplicity"
5535 8357
5536 8358
5537 // $ANTLR start "entryRuleAllObjects" 8359 // $ANTLR start "entryRuleBoundedMultiplicity"
5538 // InternalSolverLanguage.g:1898:1: entryRuleAllObjects returns [EObject current=null] : iv_ruleAllObjects= ruleAllObjects EOF ; 8360 // InternalSolverLanguage.g:2891:1: entryRuleBoundedMultiplicity returns [EObject current=null] : iv_ruleBoundedMultiplicity= ruleBoundedMultiplicity EOF ;
5539 public final EObject entryRuleAllObjects() throws RecognitionException { 8361 public final EObject entryRuleBoundedMultiplicity() throws RecognitionException {
5540 EObject current = null; 8362 EObject current = null;
5541 8363
5542 EObject iv_ruleAllObjects = null; 8364 EObject iv_ruleBoundedMultiplicity = null;
5543 8365
5544 8366
5545 try { 8367 try {
5546 // InternalSolverLanguage.g:1898:51: (iv_ruleAllObjects= ruleAllObjects EOF ) 8368 // InternalSolverLanguage.g:2891:60: (iv_ruleBoundedMultiplicity= ruleBoundedMultiplicity EOF )
5547 // InternalSolverLanguage.g:1899:2: iv_ruleAllObjects= ruleAllObjects EOF 8369 // InternalSolverLanguage.g:2892:2: iv_ruleBoundedMultiplicity= ruleBoundedMultiplicity EOF
5548 { 8370 {
5549 newCompositeNode(grammarAccess.getAllObjectsRule()); 8371 if ( state.backtracking==0 ) {
8372 newCompositeNode(grammarAccess.getBoundedMultiplicityRule());
8373 }
5550 pushFollow(FOLLOW_1); 8374 pushFollow(FOLLOW_1);
5551 iv_ruleAllObjects=ruleAllObjects(); 8375 iv_ruleBoundedMultiplicity=ruleBoundedMultiplicity();
5552 8376
5553 state._fsp--; 8377 state._fsp--;
5554 8378 if (state.failed) return current;
5555 current =iv_ruleAllObjects; 8379 if ( state.backtracking==0 ) {
5556 match(input,EOF,FOLLOW_2); 8380 current =iv_ruleBoundedMultiplicity;
8381 }
8382 match(input,EOF,FOLLOW_2); if (state.failed) return current;
5557 8383
5558 } 8384 }
5559 8385
@@ -5567,50 +8393,125 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5567 } 8393 }
5568 return current; 8394 return current;
5569 } 8395 }
5570 // $ANTLR end "entryRuleAllObjects" 8396 // $ANTLR end "entryRuleBoundedMultiplicity"
5571 8397
5572 8398
5573 // $ANTLR start "ruleAllObjects" 8399 // $ANTLR start "ruleBoundedMultiplicity"
5574 // InternalSolverLanguage.g:1905:1: ruleAllObjects returns [EObject current=null] : ( () otherlv_1= '*' ) ; 8400 // InternalSolverLanguage.g:2898:1: ruleBoundedMultiplicity returns [EObject current=null] : (otherlv_0= '[' ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_upperBound_3_0= ruleUpperMultiplicty ) ) otherlv_4= ']' ) ;
5575 public final EObject ruleAllObjects() throws RecognitionException { 8401 public final EObject ruleBoundedMultiplicity() throws RecognitionException {
5576 EObject current = null; 8402 EObject current = null;
5577 8403
5578 Token otherlv_1=null; 8404 Token otherlv_0=null;
8405 Token lv_lowerBound_1_0=null;
8406 Token otherlv_2=null;
8407 Token otherlv_4=null;
8408 AntlrDatatypeRuleToken lv_upperBound_3_0 = null;
8409
5579 8410
5580 8411
5581 enterRule(); 8412 enterRule();
5582 8413
5583 try { 8414 try {
5584 // InternalSolverLanguage.g:1911:2: ( ( () otherlv_1= '*' ) ) 8415 // InternalSolverLanguage.g:2904:2: ( (otherlv_0= '[' ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_upperBound_3_0= ruleUpperMultiplicty ) ) otherlv_4= ']' ) )
5585 // InternalSolverLanguage.g:1912:2: ( () otherlv_1= '*' ) 8416 // InternalSolverLanguage.g:2905:2: (otherlv_0= '[' ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_upperBound_3_0= ruleUpperMultiplicty ) ) otherlv_4= ']' )
5586 { 8417 {
5587 // InternalSolverLanguage.g:1912:2: ( () otherlv_1= '*' ) 8418 // InternalSolverLanguage.g:2905:2: (otherlv_0= '[' ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_upperBound_3_0= ruleUpperMultiplicty ) ) otherlv_4= ']' )
5588 // InternalSolverLanguage.g:1913:3: () otherlv_1= '*' 8419 // InternalSolverLanguage.g:2906:3: otherlv_0= '[' ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_upperBound_3_0= ruleUpperMultiplicty ) ) otherlv_4= ']'
5589 { 8420 {
5590 // InternalSolverLanguage.g:1913:3: () 8421 otherlv_0=(Token)match(input,36,FOLLOW_47); if (state.failed) return current;
5591 // InternalSolverLanguage.g:1914:4: 8422 if ( state.backtracking==0 ) {
8423
8424 newLeafNode(otherlv_0, grammarAccess.getBoundedMultiplicityAccess().getLeftSquareBracketKeyword_0());
8425
8426 }
8427 // InternalSolverLanguage.g:2910:3: ( (lv_lowerBound_1_0= RULE_INT ) )
8428 // InternalSolverLanguage.g:2911:4: (lv_lowerBound_1_0= RULE_INT )
5592 { 8429 {
8430 // InternalSolverLanguage.g:2911:4: (lv_lowerBound_1_0= RULE_INT )
8431 // InternalSolverLanguage.g:2912:5: lv_lowerBound_1_0= RULE_INT
8432 {
8433 lv_lowerBound_1_0=(Token)match(input,RULE_INT,FOLLOW_37); if (state.failed) return current;
8434 if ( state.backtracking==0 ) {
5593 8435
5594 current = forceCreateModelElement( 8436 newLeafNode(lv_lowerBound_1_0, grammarAccess.getBoundedMultiplicityAccess().getLowerBoundINTTerminalRuleCall_1_0());
5595 grammarAccess.getAllObjectsAccess().getAllObjectsAction_0(), 8437
5596 current); 8438 }
5597 8439 if ( state.backtracking==0 ) {
5598 8440
8441 if (current==null) {
8442 current = createModelElement(grammarAccess.getBoundedMultiplicityRule());
8443 }
8444 setWithLastConsumed(
8445 current,
8446 "lowerBound",
8447 lv_lowerBound_1_0,
8448 "org.eclipse.xtext.common.Terminals.INT");
8449
5599 } 8450 }
5600 8451
5601 otherlv_1=(Token)match(input,31,FOLLOW_2); 8452 }
5602 8453
5603 newLeafNode(otherlv_1, grammarAccess.getAllObjectsAccess().getAsteriskKeyword_1());
5604
5605 8454
5606 } 8455 }
5607 8456
8457 otherlv_2=(Token)match(input,37,FOLLOW_46); if (state.failed) return current;
8458 if ( state.backtracking==0 ) {
5608 8459
8460 newLeafNode(otherlv_2, grammarAccess.getBoundedMultiplicityAccess().getFullStopFullStopKeyword_2());
8461
5609 } 8462 }
8463 // InternalSolverLanguage.g:2932:3: ( (lv_upperBound_3_0= ruleUpperMultiplicty ) )
8464 // InternalSolverLanguage.g:2933:4: (lv_upperBound_3_0= ruleUpperMultiplicty )
8465 {
8466 // InternalSolverLanguage.g:2933:4: (lv_upperBound_3_0= ruleUpperMultiplicty )
8467 // InternalSolverLanguage.g:2934:5: lv_upperBound_3_0= ruleUpperMultiplicty
8468 {
8469 if ( state.backtracking==0 ) {
8470
8471 newCompositeNode(grammarAccess.getBoundedMultiplicityAccess().getUpperBoundUpperMultiplictyParserRuleCall_3_0());
8472
8473 }
8474 pushFollow(FOLLOW_38);
8475 lv_upperBound_3_0=ruleUpperMultiplicty();
5610 8476
8477 state._fsp--;
8478 if (state.failed) return current;
8479 if ( state.backtracking==0 ) {
8480
8481 if (current==null) {
8482 current = createModelElementForParent(grammarAccess.getBoundedMultiplicityRule());
8483 }
8484 set(
8485 current,
8486 "upperBound",
8487 lv_upperBound_3_0,
8488 "org.eclipse.viatra.solver.language.SolverLanguage.UpperMultiplicty");
8489 afterParserOrEnumRuleCall();
8490
8491 }
5611 8492
5612 leaveRule(); 8493 }
5613 8494
8495
8496 }
8497
8498 otherlv_4=(Token)match(input,38,FOLLOW_2); if (state.failed) return current;
8499 if ( state.backtracking==0 ) {
8500
8501 newLeafNode(otherlv_4, grammarAccess.getBoundedMultiplicityAccess().getRightSquareBracketKeyword_4());
8502
8503 }
8504
8505 }
8506
8507
8508 }
8509
8510 if ( state.backtracking==0 ) {
8511
8512 leaveRule();
8513
8514 }
5614 } 8515 }
5615 8516
5616 catch (RecognitionException re) { 8517 catch (RecognitionException re) {
@@ -5621,32 +8522,149 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5621 } 8522 }
5622 return current; 8523 return current;
5623 } 8524 }
5624 // $ANTLR end "ruleAllObjects" 8525 // $ANTLR end "ruleBoundedMultiplicity"
5625 8526
5626 8527
5627 // $ANTLR start "entryRuleDefaultInterpretation" 8528 // $ANTLR start "entryRuleScopeDefinition"
5628 // InternalSolverLanguage.g:1928:1: entryRuleDefaultInterpretation returns [EObject current=null] : iv_ruleDefaultInterpretation= ruleDefaultInterpretation EOF ; 8529 // InternalSolverLanguage.g:2959:1: entryRuleScopeDefinition returns [EObject current=null] : iv_ruleScopeDefinition= ruleScopeDefinition EOF ;
5629 public final EObject entryRuleDefaultInterpretation() throws RecognitionException { 8530 public final EObject entryRuleScopeDefinition() throws RecognitionException {
5630 EObject current = null; 8531 EObject current = null;
5631 8532
5632 EObject iv_ruleDefaultInterpretation = null; 8533 EObject iv_ruleScopeDefinition = null;
5633 8534
5634 8535
5635 try { 8536 try {
5636 // InternalSolverLanguage.g:1928:62: (iv_ruleDefaultInterpretation= ruleDefaultInterpretation EOF ) 8537 // InternalSolverLanguage.g:2959:56: (iv_ruleScopeDefinition= ruleScopeDefinition EOF )
5637 // InternalSolverLanguage.g:1929:2: iv_ruleDefaultInterpretation= ruleDefaultInterpretation EOF 8538 // InternalSolverLanguage.g:2960:2: iv_ruleScopeDefinition= ruleScopeDefinition EOF
5638 { 8539 {
5639 newCompositeNode(grammarAccess.getDefaultInterpretationRule()); 8540 if ( state.backtracking==0 ) {
8541 newCompositeNode(grammarAccess.getScopeDefinitionRule());
8542 }
5640 pushFollow(FOLLOW_1); 8543 pushFollow(FOLLOW_1);
5641 iv_ruleDefaultInterpretation=ruleDefaultInterpretation(); 8544 iv_ruleScopeDefinition=ruleScopeDefinition();
5642 8545
5643 state._fsp--; 8546 state._fsp--;
8547 if (state.failed) return current;
8548 if ( state.backtracking==0 ) {
8549 current =iv_ruleScopeDefinition;
8550 }
8551 match(input,EOF,FOLLOW_2); if (state.failed) return current;
8552
8553 }
8554
8555 }
8556
8557 catch (RecognitionException re) {
8558 recover(input,re);
8559 appendSkippedTokens();
8560 }
8561 finally {
8562 }
8563 return current;
8564 }
8565 // $ANTLR end "entryRuleScopeDefinition"
8566
8567
8568 // $ANTLR start "ruleScopeDefinition"
8569 // InternalSolverLanguage.g:2966:1: ruleScopeDefinition returns [EObject current=null] : (this_ExactScopeDefinition_0= ruleExactScopeDefinition | this_BoundedScopeDefinition_1= ruleBoundedScopeDefinition | this_LowerBoundedScopeDefinition_2= ruleLowerBoundedScopeDefinition ) ;
8570 public final EObject ruleScopeDefinition() throws RecognitionException {
8571 EObject current = null;
8572
8573 EObject this_ExactScopeDefinition_0 = null;
8574
8575 EObject this_BoundedScopeDefinition_1 = null;
8576
8577 EObject this_LowerBoundedScopeDefinition_2 = null;
8578
8579
8580
8581 enterRule();
8582
8583 try {
8584 // InternalSolverLanguage.g:2972:2: ( (this_ExactScopeDefinition_0= ruleExactScopeDefinition | this_BoundedScopeDefinition_1= ruleBoundedScopeDefinition | this_LowerBoundedScopeDefinition_2= ruleLowerBoundedScopeDefinition ) )
8585 // InternalSolverLanguage.g:2973:2: (this_ExactScopeDefinition_0= ruleExactScopeDefinition | this_BoundedScopeDefinition_1= ruleBoundedScopeDefinition | this_LowerBoundedScopeDefinition_2= ruleLowerBoundedScopeDefinition )
8586 {
8587 // InternalSolverLanguage.g:2973:2: (this_ExactScopeDefinition_0= ruleExactScopeDefinition | this_BoundedScopeDefinition_1= ruleBoundedScopeDefinition | this_LowerBoundedScopeDefinition_2= ruleLowerBoundedScopeDefinition )
8588 int alt36=3;
8589 alt36 = dfa36.predict(input);
8590 switch (alt36) {
8591 case 1 :
8592 // InternalSolverLanguage.g:2974:3: this_ExactScopeDefinition_0= ruleExactScopeDefinition
8593 {
8594 if ( state.backtracking==0 ) {
8595
8596 newCompositeNode(grammarAccess.getScopeDefinitionAccess().getExactScopeDefinitionParserRuleCall_0());
8597
8598 }
8599 pushFollow(FOLLOW_2);
8600 this_ExactScopeDefinition_0=ruleExactScopeDefinition();
8601
8602 state._fsp--;
8603 if (state.failed) return current;
8604 if ( state.backtracking==0 ) {
5644 8605
5645 current =iv_ruleDefaultInterpretation; 8606 current = this_ExactScopeDefinition_0;
5646 match(input,EOF,FOLLOW_2); 8607 afterParserOrEnumRuleCall();
8608
8609 }
8610
8611 }
8612 break;
8613 case 2 :
8614 // InternalSolverLanguage.g:2983:3: this_BoundedScopeDefinition_1= ruleBoundedScopeDefinition
8615 {
8616 if ( state.backtracking==0 ) {
8617
8618 newCompositeNode(grammarAccess.getScopeDefinitionAccess().getBoundedScopeDefinitionParserRuleCall_1());
8619
8620 }
8621 pushFollow(FOLLOW_2);
8622 this_BoundedScopeDefinition_1=ruleBoundedScopeDefinition();
8623
8624 state._fsp--;
8625 if (state.failed) return current;
8626 if ( state.backtracking==0 ) {
8627
8628 current = this_BoundedScopeDefinition_1;
8629 afterParserOrEnumRuleCall();
8630
8631 }
8632
8633 }
8634 break;
8635 case 3 :
8636 // InternalSolverLanguage.g:2992:3: this_LowerBoundedScopeDefinition_2= ruleLowerBoundedScopeDefinition
8637 {
8638 if ( state.backtracking==0 ) {
8639
8640 newCompositeNode(grammarAccess.getScopeDefinitionAccess().getLowerBoundedScopeDefinitionParserRuleCall_2());
8641
8642 }
8643 pushFollow(FOLLOW_2);
8644 this_LowerBoundedScopeDefinition_2=ruleLowerBoundedScopeDefinition();
8645
8646 state._fsp--;
8647 if (state.failed) return current;
8648 if ( state.backtracking==0 ) {
8649
8650 current = this_LowerBoundedScopeDefinition_2;
8651 afterParserOrEnumRuleCall();
8652
8653 }
8654
8655 }
8656 break;
5647 8657
5648 } 8658 }
5649 8659
8660
8661 }
8662
8663 if ( state.backtracking==0 ) {
8664
8665 leaveRule();
8666
8667 }
5650 } 8668 }
5651 8669
5652 catch (RecognitionException re) { 8670 catch (RecognitionException re) {
@@ -5657,63 +8675,138 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5657 } 8675 }
5658 return current; 8676 return current;
5659 } 8677 }
5660 // $ANTLR end "entryRuleDefaultInterpretation" 8678 // $ANTLR end "ruleScopeDefinition"
5661 8679
5662 8680
5663 // $ANTLR start "ruleDefaultInterpretation" 8681 // $ANTLR start "entryRuleExactScopeDefinition"
5664 // InternalSolverLanguage.g:1935:1: ruleDefaultInterpretation returns [EObject current=null] : (otherlv_0= 'default' ( (lv_interpretation_1_0= ruleBasicInterpretation ) ) ) ; 8682 // InternalSolverLanguage.g:3004:1: entryRuleExactScopeDefinition returns [EObject current=null] : iv_ruleExactScopeDefinition= ruleExactScopeDefinition EOF ;
5665 public final EObject ruleDefaultInterpretation() throws RecognitionException { 8683 public final EObject entryRuleExactScopeDefinition() throws RecognitionException {
5666 EObject current = null; 8684 EObject current = null;
5667 8685
5668 Token otherlv_0=null; 8686 EObject iv_ruleExactScopeDefinition = null;
5669 EObject lv_interpretation_1_0 = null; 8687
8688
8689 try {
8690 // InternalSolverLanguage.g:3004:61: (iv_ruleExactScopeDefinition= ruleExactScopeDefinition EOF )
8691 // InternalSolverLanguage.g:3005:2: iv_ruleExactScopeDefinition= ruleExactScopeDefinition EOF
8692 {
8693 if ( state.backtracking==0 ) {
8694 newCompositeNode(grammarAccess.getExactScopeDefinitionRule());
8695 }
8696 pushFollow(FOLLOW_1);
8697 iv_ruleExactScopeDefinition=ruleExactScopeDefinition();
8698
8699 state._fsp--;
8700 if (state.failed) return current;
8701 if ( state.backtracking==0 ) {
8702 current =iv_ruleExactScopeDefinition;
8703 }
8704 match(input,EOF,FOLLOW_2); if (state.failed) return current;
8705
8706 }
5670 8707
8708 }
8709
8710 catch (RecognitionException re) {
8711 recover(input,re);
8712 appendSkippedTokens();
8713 }
8714 finally {
8715 }
8716 return current;
8717 }
8718 // $ANTLR end "entryRuleExactScopeDefinition"
8719
8720
8721 // $ANTLR start "ruleExactScopeDefinition"
8722 // InternalSolverLanguage.g:3011:1: ruleExactScopeDefinition returns [EObject current=null] : (otherlv_0= 'scope' ( ( ruleQualifiedName ) ) otherlv_2= '==' ( (lv_exactScope_3_0= RULE_INT ) ) ) ;
8723 public final EObject ruleExactScopeDefinition() throws RecognitionException {
8724 EObject current = null;
8725
8726 Token otherlv_0=null;
8727 Token otherlv_2=null;
8728 Token lv_exactScope_3_0=null;
5671 8729
5672 8730
5673 enterRule(); 8731 enterRule();
5674 8732
5675 try { 8733 try {
5676 // InternalSolverLanguage.g:1941:2: ( (otherlv_0= 'default' ( (lv_interpretation_1_0= ruleBasicInterpretation ) ) ) ) 8734 // InternalSolverLanguage.g:3017:2: ( (otherlv_0= 'scope' ( ( ruleQualifiedName ) ) otherlv_2= '==' ( (lv_exactScope_3_0= RULE_INT ) ) ) )
5677 // InternalSolverLanguage.g:1942:2: (otherlv_0= 'default' ( (lv_interpretation_1_0= ruleBasicInterpretation ) ) ) 8735 // InternalSolverLanguage.g:3018:2: (otherlv_0= 'scope' ( ( ruleQualifiedName ) ) otherlv_2= '==' ( (lv_exactScope_3_0= RULE_INT ) ) )
5678 { 8736 {
5679 // InternalSolverLanguage.g:1942:2: (otherlv_0= 'default' ( (lv_interpretation_1_0= ruleBasicInterpretation ) ) ) 8737 // InternalSolverLanguage.g:3018:2: (otherlv_0= 'scope' ( ( ruleQualifiedName ) ) otherlv_2= '==' ( (lv_exactScope_3_0= RULE_INT ) ) )
5680 // InternalSolverLanguage.g:1943:3: otherlv_0= 'default' ( (lv_interpretation_1_0= ruleBasicInterpretation ) ) 8738 // InternalSolverLanguage.g:3019:3: otherlv_0= 'scope' ( ( ruleQualifiedName ) ) otherlv_2= '==' ( (lv_exactScope_3_0= RULE_INT ) )
5681 { 8739 {
5682 otherlv_0=(Token)match(input,32,FOLLOW_21); 8740 otherlv_0=(Token)match(input,46,FOLLOW_35); if (state.failed) return current;
8741 if ( state.backtracking==0 ) {
5683 8742
5684 newLeafNode(otherlv_0, grammarAccess.getDefaultInterpretationAccess().getDefaultKeyword_0()); 8743 newLeafNode(otherlv_0, grammarAccess.getExactScopeDefinitionAccess().getScopeKeyword_0());
5685 8744
5686 // InternalSolverLanguage.g:1947:3: ( (lv_interpretation_1_0= ruleBasicInterpretation ) ) 8745 }
5687 // InternalSolverLanguage.g:1948:4: (lv_interpretation_1_0= ruleBasicInterpretation ) 8746 // InternalSolverLanguage.g:3023:3: ( ( ruleQualifiedName ) )
8747 // InternalSolverLanguage.g:3024:4: ( ruleQualifiedName )
5688 { 8748 {
5689 // InternalSolverLanguage.g:1948:4: (lv_interpretation_1_0= ruleBasicInterpretation ) 8749 // InternalSolverLanguage.g:3024:4: ( ruleQualifiedName )
5690 // InternalSolverLanguage.g:1949:5: lv_interpretation_1_0= ruleBasicInterpretation 8750 // InternalSolverLanguage.g:3025:5: ruleQualifiedName
5691 { 8751 {
8752 if ( state.backtracking==0 ) {
5692 8753
5693 newCompositeNode(grammarAccess.getDefaultInterpretationAccess().getInterpretationBasicInterpretationParserRuleCall_1_0()); 8754 if (current==null) {
5694 8755 current = createModelElement(grammarAccess.getExactScopeDefinitionRule());
5695 pushFollow(FOLLOW_2); 8756 }
5696 lv_interpretation_1_0=ruleBasicInterpretation(); 8757
8758 }
8759 if ( state.backtracking==0 ) {
8760
8761 newCompositeNode(grammarAccess.getExactScopeDefinitionAccess().getTypeNamedElementCrossReference_1_0());
8762
8763 }
8764 pushFollow(FOLLOW_48);
8765 ruleQualifiedName();
5697 8766
5698 state._fsp--; 8767 state._fsp--;
8768 if (state.failed) return current;
8769 if ( state.backtracking==0 ) {
5699 8770
8771 afterParserOrEnumRuleCall();
8772
8773 }
8774
8775 }
5700 8776
5701 if (current==null) {
5702 current = createModelElementForParent(grammarAccess.getDefaultInterpretationRule());
5703 }
5704 set(
5705 current,
5706 "interpretation",
5707 lv_interpretation_1_0,
5708 "org.eclipse.viatra.solver.language.SolverLanguage.BasicInterpretation");
5709 afterParserOrEnumRuleCall();
5710
5711 8777
5712 } 8778 }
5713 8779
8780 otherlv_2=(Token)match(input,47,FOLLOW_47); if (state.failed) return current;
8781 if ( state.backtracking==0 ) {
5714 8782
8783 newLeafNode(otherlv_2, grammarAccess.getExactScopeDefinitionAccess().getEqualsSignEqualsSignKeyword_2());
8784
5715 } 8785 }
8786 // InternalSolverLanguage.g:3043:3: ( (lv_exactScope_3_0= RULE_INT ) )
8787 // InternalSolverLanguage.g:3044:4: (lv_exactScope_3_0= RULE_INT )
8788 {
8789 // InternalSolverLanguage.g:3044:4: (lv_exactScope_3_0= RULE_INT )
8790 // InternalSolverLanguage.g:3045:5: lv_exactScope_3_0= RULE_INT
8791 {
8792 lv_exactScope_3_0=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
8793 if ( state.backtracking==0 ) {
5716 8794
8795 newLeafNode(lv_exactScope_3_0, grammarAccess.getExactScopeDefinitionAccess().getExactScopeINTTerminalRuleCall_3_0());
8796
8797 }
8798 if ( state.backtracking==0 ) {
8799
8800 if (current==null) {
8801 current = createModelElement(grammarAccess.getExactScopeDefinitionRule());
8802 }
8803 setWithLastConsumed(
8804 current,
8805 "exactScope",
8806 lv_exactScope_3_0,
8807 "org.eclipse.xtext.common.Terminals.INT");
8808
8809 }
5717 8810
5718 } 8811 }
5719 8812
@@ -5721,8 +8814,16 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5721 } 8814 }
5722 8815
5723 8816
5724 leaveRule(); 8817 }
8818
8819
8820 }
5725 8821
8822 if ( state.backtracking==0 ) {
8823
8824 leaveRule();
8825
8826 }
5726 } 8827 }
5727 8828
5728 catch (RecognitionException re) { 8829 catch (RecognitionException re) {
@@ -5733,29 +8834,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5733 } 8834 }
5734 return current; 8835 return current;
5735 } 8836 }
5736 // $ANTLR end "ruleDefaultInterpretation" 8837 // $ANTLR end "ruleExactScopeDefinition"
5737 8838
5738 8839
5739 // $ANTLR start "entryRuleCDInterpretation" 8840 // $ANTLR start "entryRuleBoundedScopeDefinition"
5740 // InternalSolverLanguage.g:1970:1: entryRuleCDInterpretation returns [EObject current=null] : iv_ruleCDInterpretation= ruleCDInterpretation EOF ; 8841 // InternalSolverLanguage.g:3065:1: entryRuleBoundedScopeDefinition returns [EObject current=null] : iv_ruleBoundedScopeDefinition= ruleBoundedScopeDefinition EOF ;
5741 public final EObject entryRuleCDInterpretation() throws RecognitionException { 8842 public final EObject entryRuleBoundedScopeDefinition() throws RecognitionException {
5742 EObject current = null; 8843 EObject current = null;
5743 8844
5744 EObject iv_ruleCDInterpretation = null; 8845 EObject iv_ruleBoundedScopeDefinition = null;
5745 8846
5746 8847
5747 try { 8848 try {
5748 // InternalSolverLanguage.g:1970:57: (iv_ruleCDInterpretation= ruleCDInterpretation EOF ) 8849 // InternalSolverLanguage.g:3065:63: (iv_ruleBoundedScopeDefinition= ruleBoundedScopeDefinition EOF )
5749 // InternalSolverLanguage.g:1971:2: iv_ruleCDInterpretation= ruleCDInterpretation EOF 8850 // InternalSolverLanguage.g:3066:2: iv_ruleBoundedScopeDefinition= ruleBoundedScopeDefinition EOF
5750 { 8851 {
5751 newCompositeNode(grammarAccess.getCDInterpretationRule()); 8852 if ( state.backtracking==0 ) {
8853 newCompositeNode(grammarAccess.getBoundedScopeDefinitionRule());
8854 }
5752 pushFollow(FOLLOW_1); 8855 pushFollow(FOLLOW_1);
5753 iv_ruleCDInterpretation=ruleCDInterpretation(); 8856 iv_ruleBoundedScopeDefinition=ruleBoundedScopeDefinition();
5754 8857
5755 state._fsp--; 8858 state._fsp--;
5756 8859 if (state.failed) return current;
5757 current =iv_ruleCDInterpretation; 8860 if ( state.backtracking==0 ) {
5758 match(input,EOF,FOLLOW_2); 8861 current =iv_ruleBoundedScopeDefinition;
8862 }
8863 match(input,EOF,FOLLOW_2); if (state.failed) return current;
5759 8864
5760 } 8865 }
5761 8866
@@ -5769,119 +8874,363 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5769 } 8874 }
5770 return current; 8875 return current;
5771 } 8876 }
5772 // $ANTLR end "entryRuleCDInterpretation" 8877 // $ANTLR end "entryRuleBoundedScopeDefinition"
5773 8878
5774 8879
5775 // $ANTLR start "ruleCDInterpretation" 8880 // $ANTLR start "ruleBoundedScopeDefinition"
5776 // InternalSolverLanguage.g:1977:1: ruleCDInterpretation returns [EObject current=null] : (this_ClassInterpretation_0= ruleClassInterpretation | this_EnumInterpretation_1= ruleEnumInterpretation | this_GlobalRelationInterpretation_2= ruleGlobalRelationInterpretation ) ; 8881 // InternalSolverLanguage.g:3072:1: ruleBoundedScopeDefinition returns [EObject current=null] : (otherlv_0= 'scope' ( ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' )? ( ( ruleQualifiedName ) ) otherlv_4= '<=' ( (lv_upperBound_5_0= RULE_INT ) ) ) | ( ( (lv_upperBound_6_0= RULE_INT ) ) otherlv_7= '>=' ( ( ruleQualifiedName ) ) (otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) ) )? ) ) otherlv_11= '.' ) ;
5777 public final EObject ruleCDInterpretation() throws RecognitionException { 8882 public final EObject ruleBoundedScopeDefinition() throws RecognitionException {
5778 EObject current = null; 8883 EObject current = null;
5779 8884
5780 EObject this_ClassInterpretation_0 = null; 8885 Token otherlv_0=null;
5781 8886 Token lv_lowerBound_1_0=null;
5782 EObject this_EnumInterpretation_1 = null; 8887 Token otherlv_2=null;
5783 8888 Token otherlv_4=null;
5784 EObject this_GlobalRelationInterpretation_2 = null; 8889 Token lv_upperBound_5_0=null;
5785 8890 Token lv_upperBound_6_0=null;
8891 Token otherlv_7=null;
8892 Token otherlv_9=null;
8893 Token lv_lowerBound_10_0=null;
8894 Token otherlv_11=null;
5786 8895
5787 8896
5788 enterRule(); 8897 enterRule();
5789 8898
5790 try { 8899 try {
5791 // InternalSolverLanguage.g:1983:2: ( (this_ClassInterpretation_0= ruleClassInterpretation | this_EnumInterpretation_1= ruleEnumInterpretation | this_GlobalRelationInterpretation_2= ruleGlobalRelationInterpretation ) ) 8900 // InternalSolverLanguage.g:3078:2: ( (otherlv_0= 'scope' ( ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' )? ( ( ruleQualifiedName ) ) otherlv_4= '<=' ( (lv_upperBound_5_0= RULE_INT ) ) ) | ( ( (lv_upperBound_6_0= RULE_INT ) ) otherlv_7= '>=' ( ( ruleQualifiedName ) ) (otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) ) )? ) ) otherlv_11= '.' ) )
5792 // InternalSolverLanguage.g:1984:2: (this_ClassInterpretation_0= ruleClassInterpretation | this_EnumInterpretation_1= ruleEnumInterpretation | this_GlobalRelationInterpretation_2= ruleGlobalRelationInterpretation ) 8901 // InternalSolverLanguage.g:3079:2: (otherlv_0= 'scope' ( ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' )? ( ( ruleQualifiedName ) ) otherlv_4= '<=' ( (lv_upperBound_5_0= RULE_INT ) ) ) | ( ( (lv_upperBound_6_0= RULE_INT ) ) otherlv_7= '>=' ( ( ruleQualifiedName ) ) (otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) ) )? ) ) otherlv_11= '.' )
5793 { 8902 {
5794 // InternalSolverLanguage.g:1984:2: (this_ClassInterpretation_0= ruleClassInterpretation | this_EnumInterpretation_1= ruleEnumInterpretation | this_GlobalRelationInterpretation_2= ruleGlobalRelationInterpretation ) 8903 // InternalSolverLanguage.g:3079:2: (otherlv_0= 'scope' ( ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' )? ( ( ruleQualifiedName ) ) otherlv_4= '<=' ( (lv_upperBound_5_0= RULE_INT ) ) ) | ( ( (lv_upperBound_6_0= RULE_INT ) ) otherlv_7= '>=' ( ( ruleQualifiedName ) ) (otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) ) )? ) ) otherlv_11= '.' )
5795 int alt36=3; 8904 // InternalSolverLanguage.g:3080:3: otherlv_0= 'scope' ( ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' )? ( ( ruleQualifiedName ) ) otherlv_4= '<=' ( (lv_upperBound_5_0= RULE_INT ) ) ) | ( ( (lv_upperBound_6_0= RULE_INT ) ) otherlv_7= '>=' ( ( ruleQualifiedName ) ) (otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) ) )? ) ) otherlv_11= '.'
5796 switch ( input.LA(1) ) { 8905 {
5797 case 33: 8906 otherlv_0=(Token)match(input,46,FOLLOW_49); if (state.failed) return current;
5798 case 34: 8907 if ( state.backtracking==0 ) {
5799 { 8908
5800 alt36=1; 8909 newLeafNode(otherlv_0, grammarAccess.getBoundedScopeDefinitionAccess().getScopeKeyword_0());
8910
8911 }
8912 // InternalSolverLanguage.g:3084:3: ( ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' )? ( ( ruleQualifiedName ) ) otherlv_4= '<=' ( (lv_upperBound_5_0= RULE_INT ) ) ) | ( ( (lv_upperBound_6_0= RULE_INT ) ) otherlv_7= '>=' ( ( ruleQualifiedName ) ) (otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) ) )? ) )
8913 int alt39=2;
8914 int LA39_0 = input.LA(1);
8915
8916 if ( (LA39_0==RULE_INT) ) {
8917 int LA39_1 = input.LA(2);
8918
8919 if ( (LA39_1==49) ) {
8920 alt39=2;
5801 } 8921 }
5802 break; 8922 else if ( (LA39_1==48) ) {
5803 case 38: 8923 alt39=1;
5804 {
5805 alt36=2;
5806 } 8924 }
5807 break; 8925 else {
5808 case 39: 8926 if (state.backtracking>0) {state.failed=true; return current;}
5809 case 40: 8927 NoViableAltException nvae =
5810 { 8928 new NoViableAltException("", 39, 1, input);
5811 alt36=3; 8929
8930 throw nvae;
5812 } 8931 }
5813 break; 8932 }
5814 default: 8933 else if ( (LA39_0==RULE_ID||LA39_0==RULE_QUOTED_ID) ) {
8934 alt39=1;
8935 }
8936 else {
8937 if (state.backtracking>0) {state.failed=true; return current;}
5815 NoViableAltException nvae = 8938 NoViableAltException nvae =
5816 new NoViableAltException("", 36, 0, input); 8939 new NoViableAltException("", 39, 0, input);
5817 8940
5818 throw nvae; 8941 throw nvae;
5819 } 8942 }
5820 8943 switch (alt39) {
5821 switch (alt36) {
5822 case 1 : 8944 case 1 :
5823 // InternalSolverLanguage.g:1985:3: this_ClassInterpretation_0= ruleClassInterpretation 8945 // InternalSolverLanguage.g:3085:4: ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' )? ( ( ruleQualifiedName ) ) otherlv_4= '<=' ( (lv_upperBound_5_0= RULE_INT ) ) )
8946 {
8947 // InternalSolverLanguage.g:3085:4: ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' )? ( ( ruleQualifiedName ) ) otherlv_4= '<=' ( (lv_upperBound_5_0= RULE_INT ) ) )
8948 // InternalSolverLanguage.g:3086:5: ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' )? ( ( ruleQualifiedName ) ) otherlv_4= '<=' ( (lv_upperBound_5_0= RULE_INT ) )
5824 { 8949 {
8950 // InternalSolverLanguage.g:3086:5: ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' )?
8951 int alt37=2;
8952 int LA37_0 = input.LA(1);
5825 8953
5826 newCompositeNode(grammarAccess.getCDInterpretationAccess().getClassInterpretationParserRuleCall_0()); 8954 if ( (LA37_0==RULE_INT) ) {
5827 8955 alt37=1;
5828 pushFollow(FOLLOW_2); 8956 }
5829 this_ClassInterpretation_0=ruleClassInterpretation(); 8957 switch (alt37) {
8958 case 1 :
8959 // InternalSolverLanguage.g:3087:6: ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<='
8960 {
8961 // InternalSolverLanguage.g:3087:6: ( (lv_lowerBound_1_0= RULE_INT ) )
8962 // InternalSolverLanguage.g:3088:7: (lv_lowerBound_1_0= RULE_INT )
8963 {
8964 // InternalSolverLanguage.g:3088:7: (lv_lowerBound_1_0= RULE_INT )
8965 // InternalSolverLanguage.g:3089:8: lv_lowerBound_1_0= RULE_INT
8966 {
8967 lv_lowerBound_1_0=(Token)match(input,RULE_INT,FOLLOW_50); if (state.failed) return current;
8968 if ( state.backtracking==0 ) {
8969
8970 newLeafNode(lv_lowerBound_1_0, grammarAccess.getBoundedScopeDefinitionAccess().getLowerBoundINTTerminalRuleCall_1_0_0_0_0());
8971
8972 }
8973 if ( state.backtracking==0 ) {
8974
8975 if (current==null) {
8976 current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
8977 }
8978 setWithLastConsumed(
8979 current,
8980 "lowerBound",
8981 lv_lowerBound_1_0,
8982 "org.eclipse.xtext.common.Terminals.INT");
8983
8984 }
8985
8986 }
8987
8988
8989 }
8990
8991 otherlv_2=(Token)match(input,48,FOLLOW_35); if (state.failed) return current;
8992 if ( state.backtracking==0 ) {
8993
8994 newLeafNode(otherlv_2, grammarAccess.getBoundedScopeDefinitionAccess().getLessThanSignEqualsSignKeyword_1_0_0_1());
8995
8996 }
8997
8998 }
8999 break;
9000
9001 }
9002
9003 // InternalSolverLanguage.g:3110:5: ( ( ruleQualifiedName ) )
9004 // InternalSolverLanguage.g:3111:6: ( ruleQualifiedName )
9005 {
9006 // InternalSolverLanguage.g:3111:6: ( ruleQualifiedName )
9007 // InternalSolverLanguage.g:3112:7: ruleQualifiedName
9008 {
9009 if ( state.backtracking==0 ) {
9010
9011 if (current==null) {
9012 current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
9013 }
9014
9015 }
9016 if ( state.backtracking==0 ) {
9017
9018 newCompositeNode(grammarAccess.getBoundedScopeDefinitionAccess().getTypeNamedElementCrossReference_1_0_1_0());
9019
9020 }
9021 pushFollow(FOLLOW_50);
9022 ruleQualifiedName();
5830 9023
5831 state._fsp--; 9024 state._fsp--;
9025 if (state.failed) return current;
9026 if ( state.backtracking==0 ) {
9027
9028 afterParserOrEnumRuleCall();
9029
9030 }
9031
9032 }
9033
9034
9035 }
9036
9037 otherlv_4=(Token)match(input,48,FOLLOW_47); if (state.failed) return current;
9038 if ( state.backtracking==0 ) {
9039
9040 newLeafNode(otherlv_4, grammarAccess.getBoundedScopeDefinitionAccess().getLessThanSignEqualsSignKeyword_1_0_2());
9041
9042 }
9043 // InternalSolverLanguage.g:3130:5: ( (lv_upperBound_5_0= RULE_INT ) )
9044 // InternalSolverLanguage.g:3131:6: (lv_upperBound_5_0= RULE_INT )
9045 {
9046 // InternalSolverLanguage.g:3131:6: (lv_upperBound_5_0= RULE_INT )
9047 // InternalSolverLanguage.g:3132:7: lv_upperBound_5_0= RULE_INT
9048 {
9049 lv_upperBound_5_0=(Token)match(input,RULE_INT,FOLLOW_12); if (state.failed) return current;
9050 if ( state.backtracking==0 ) {
5832 9051
9052 newLeafNode(lv_upperBound_5_0, grammarAccess.getBoundedScopeDefinitionAccess().getUpperBoundINTTerminalRuleCall_1_0_3_0());
9053
9054 }
9055 if ( state.backtracking==0 ) {
9056
9057 if (current==null) {
9058 current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
9059 }
9060 setWithLastConsumed(
9061 current,
9062 "upperBound",
9063 lv_upperBound_5_0,
9064 "org.eclipse.xtext.common.Terminals.INT");
9065
9066 }
9067
9068 }
9069
9070
9071 }
9072
9073
9074 }
5833 9075
5834 current = this_ClassInterpretation_0;
5835 afterParserOrEnumRuleCall();
5836
5837 9076
5838 } 9077 }
5839 break; 9078 break;
5840 case 2 : 9079 case 2 :
5841 // InternalSolverLanguage.g:1994:3: this_EnumInterpretation_1= ruleEnumInterpretation 9080 // InternalSolverLanguage.g:3150:4: ( ( (lv_upperBound_6_0= RULE_INT ) ) otherlv_7= '>=' ( ( ruleQualifiedName ) ) (otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) ) )? )
9081 {
9082 // InternalSolverLanguage.g:3150:4: ( ( (lv_upperBound_6_0= RULE_INT ) ) otherlv_7= '>=' ( ( ruleQualifiedName ) ) (otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) ) )? )
9083 // InternalSolverLanguage.g:3151:5: ( (lv_upperBound_6_0= RULE_INT ) ) otherlv_7= '>=' ( ( ruleQualifiedName ) ) (otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) ) )?
9084 {
9085 // InternalSolverLanguage.g:3151:5: ( (lv_upperBound_6_0= RULE_INT ) )
9086 // InternalSolverLanguage.g:3152:6: (lv_upperBound_6_0= RULE_INT )
5842 { 9087 {
9088 // InternalSolverLanguage.g:3152:6: (lv_upperBound_6_0= RULE_INT )
9089 // InternalSolverLanguage.g:3153:7: lv_upperBound_6_0= RULE_INT
9090 {
9091 lv_upperBound_6_0=(Token)match(input,RULE_INT,FOLLOW_51); if (state.failed) return current;
9092 if ( state.backtracking==0 ) {
5843 9093
5844 newCompositeNode(grammarAccess.getCDInterpretationAccess().getEnumInterpretationParserRuleCall_1()); 9094 newLeafNode(lv_upperBound_6_0, grammarAccess.getBoundedScopeDefinitionAccess().getUpperBoundINTTerminalRuleCall_1_1_0_0());
5845 9095
5846 pushFollow(FOLLOW_2); 9096 }
5847 this_EnumInterpretation_1=ruleEnumInterpretation(); 9097 if ( state.backtracking==0 ) {
9098
9099 if (current==null) {
9100 current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
9101 }
9102 setWithLastConsumed(
9103 current,
9104 "upperBound",
9105 lv_upperBound_6_0,
9106 "org.eclipse.xtext.common.Terminals.INT");
9107
9108 }
9109
9110 }
5848 9111
5849 state._fsp--;
5850 9112
9113 }
5851 9114
5852 current = this_EnumInterpretation_1; 9115 otherlv_7=(Token)match(input,49,FOLLOW_35); if (state.failed) return current;
5853 afterParserOrEnumRuleCall(); 9116 if ( state.backtracking==0 ) {
5854
5855 9117
9118 newLeafNode(otherlv_7, grammarAccess.getBoundedScopeDefinitionAccess().getGreaterThanSignEqualsSignKeyword_1_1_1());
9119
5856 } 9120 }
5857 break; 9121 // InternalSolverLanguage.g:3173:5: ( ( ruleQualifiedName ) )
5858 case 3 : 9122 // InternalSolverLanguage.g:3174:6: ( ruleQualifiedName )
5859 // InternalSolverLanguage.g:2003:3: this_GlobalRelationInterpretation_2= ruleGlobalRelationInterpretation 9123 {
9124 // InternalSolverLanguage.g:3174:6: ( ruleQualifiedName )
9125 // InternalSolverLanguage.g:3175:7: ruleQualifiedName
5860 { 9126 {
9127 if ( state.backtracking==0 ) {
5861 9128
5862 newCompositeNode(grammarAccess.getCDInterpretationAccess().getGlobalRelationInterpretationParserRuleCall_2()); 9129 if (current==null) {
5863 9130 current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
5864 pushFollow(FOLLOW_2); 9131 }
5865 this_GlobalRelationInterpretation_2=ruleGlobalRelationInterpretation(); 9132
9133 }
9134 if ( state.backtracking==0 ) {
9135
9136 newCompositeNode(grammarAccess.getBoundedScopeDefinitionAccess().getTypeNamedElementCrossReference_1_1_2_0());
9137
9138 }
9139 pushFollow(FOLLOW_52);
9140 ruleQualifiedName();
5866 9141
5867 state._fsp--; 9142 state._fsp--;
9143 if (state.failed) return current;
9144 if ( state.backtracking==0 ) {
9145
9146 afterParserOrEnumRuleCall();
9147
9148 }
9149
9150 }
9151
9152
9153 }
9154
9155 // InternalSolverLanguage.g:3189:5: (otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) ) )?
9156 int alt38=2;
9157 int LA38_0 = input.LA(1);
9158
9159 if ( (LA38_0==49) ) {
9160 alt38=1;
9161 }
9162 switch (alt38) {
9163 case 1 :
9164 // InternalSolverLanguage.g:3190:6: otherlv_9= '>=' ( (lv_lowerBound_10_0= RULE_INT ) )
9165 {
9166 otherlv_9=(Token)match(input,49,FOLLOW_47); if (state.failed) return current;
9167 if ( state.backtracking==0 ) {
9168
9169 newLeafNode(otherlv_9, grammarAccess.getBoundedScopeDefinitionAccess().getGreaterThanSignEqualsSignKeyword_1_1_3_0());
9170
9171 }
9172 // InternalSolverLanguage.g:3194:6: ( (lv_lowerBound_10_0= RULE_INT ) )
9173 // InternalSolverLanguage.g:3195:7: (lv_lowerBound_10_0= RULE_INT )
9174 {
9175 // InternalSolverLanguage.g:3195:7: (lv_lowerBound_10_0= RULE_INT )
9176 // InternalSolverLanguage.g:3196:8: lv_lowerBound_10_0= RULE_INT
9177 {
9178 lv_lowerBound_10_0=(Token)match(input,RULE_INT,FOLLOW_12); if (state.failed) return current;
9179 if ( state.backtracking==0 ) {
9180
9181 newLeafNode(lv_lowerBound_10_0, grammarAccess.getBoundedScopeDefinitionAccess().getLowerBoundINTTerminalRuleCall_1_1_3_1_0());
9182
9183 }
9184 if ( state.backtracking==0 ) {
9185
9186 if (current==null) {
9187 current = createModelElement(grammarAccess.getBoundedScopeDefinitionRule());
9188 }
9189 setWithLastConsumed(
9190 current,
9191 "lowerBound",
9192 lv_lowerBound_10_0,
9193 "org.eclipse.xtext.common.Terminals.INT");
9194
9195 }
9196
9197 }
9198
9199
9200 }
9201
5868 9202
9203 }
9204 break;
9205
9206 }
9207
9208
9209 }
5869 9210
5870 current = this_GlobalRelationInterpretation_2;
5871 afterParserOrEnumRuleCall();
5872
5873 9211
5874 } 9212 }
5875 break; 9213 break;
5876 9214
5877 } 9215 }
5878 9216
9217 otherlv_11=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
9218 if ( state.backtracking==0 ) {
5879 9219
9220 newLeafNode(otherlv_11, grammarAccess.getBoundedScopeDefinitionAccess().getFullStopKeyword_2());
9221
5880 } 9222 }
5881 9223
9224 }
9225
9226
9227 }
5882 9228
5883 leaveRule(); 9229 if ( state.backtracking==0 ) {
5884 9230
9231 leaveRule();
9232
9233 }
5885 } 9234 }
5886 9235
5887 catch (RecognitionException re) { 9236 catch (RecognitionException re) {
@@ -5892,29 +9241,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5892 } 9241 }
5893 return current; 9242 return current;
5894 } 9243 }
5895 // $ANTLR end "ruleCDInterpretation" 9244 // $ANTLR end "ruleBoundedScopeDefinition"
5896 9245
5897 9246
5898 // $ANTLR start "entryRuleClassInterpretation" 9247 // $ANTLR start "entryRuleLowerBoundedScopeDefinition"
5899 // InternalSolverLanguage.g:2015:1: entryRuleClassInterpretation returns [EObject current=null] : iv_ruleClassInterpretation= ruleClassInterpretation EOF ; 9248 // InternalSolverLanguage.g:3223:1: entryRuleLowerBoundedScopeDefinition returns [EObject current=null] : iv_ruleLowerBoundedScopeDefinition= ruleLowerBoundedScopeDefinition EOF ;
5900 public final EObject entryRuleClassInterpretation() throws RecognitionException { 9249 public final EObject entryRuleLowerBoundedScopeDefinition() throws RecognitionException {
5901 EObject current = null; 9250 EObject current = null;
5902 9251
5903 EObject iv_ruleClassInterpretation = null; 9252 EObject iv_ruleLowerBoundedScopeDefinition = null;
5904 9253
5905 9254
5906 try { 9255 try {
5907 // InternalSolverLanguage.g:2015:60: (iv_ruleClassInterpretation= ruleClassInterpretation EOF ) 9256 // InternalSolverLanguage.g:3223:68: (iv_ruleLowerBoundedScopeDefinition= ruleLowerBoundedScopeDefinition EOF )
5908 // InternalSolverLanguage.g:2016:2: iv_ruleClassInterpretation= ruleClassInterpretation EOF 9257 // InternalSolverLanguage.g:3224:2: iv_ruleLowerBoundedScopeDefinition= ruleLowerBoundedScopeDefinition EOF
5909 { 9258 {
5910 newCompositeNode(grammarAccess.getClassInterpretationRule()); 9259 if ( state.backtracking==0 ) {
9260 newCompositeNode(grammarAccess.getLowerBoundedScopeDefinitionRule());
9261 }
5911 pushFollow(FOLLOW_1); 9262 pushFollow(FOLLOW_1);
5912 iv_ruleClassInterpretation=ruleClassInterpretation(); 9263 iv_ruleLowerBoundedScopeDefinition=ruleLowerBoundedScopeDefinition();
5913 9264
5914 state._fsp--; 9265 state._fsp--;
5915 9266 if (state.failed) return current;
5916 current =iv_ruleClassInterpretation; 9267 if ( state.backtracking==0 ) {
5917 match(input,EOF,FOLLOW_2); 9268 current =iv_ruleLowerBoundedScopeDefinition;
9269 }
9270 match(input,EOF,FOLLOW_2); if (state.failed) return current;
5918 9271
5919 } 9272 }
5920 9273
@@ -5928,245 +9281,239 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
5928 } 9281 }
5929 return current; 9282 return current;
5930 } 9283 }
5931 // $ANTLR end "entryRuleClassInterpretation" 9284 // $ANTLR end "entryRuleLowerBoundedScopeDefinition"
5932 9285
5933 9286
5934 // $ANTLR start "ruleClassInterpretation" 9287 // $ANTLR start "ruleLowerBoundedScopeDefinition"
5935 // InternalSolverLanguage.g:2022:1: ruleClassInterpretation returns [EObject current=null] : ( ( (lv_abstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_symbol_2_0= ruleModelSymbol ) ) (otherlv_3= 'extends' ( (lv_supertypes_4_0= ruleModelSymbol ) )+ )? otherlv_5= '{' ( (lv_fielt_6_0= ruleFieldRelationInterpretation ) )* otherlv_7= '}' ) ; 9288 // InternalSolverLanguage.g:3230:1: ruleLowerBoundedScopeDefinition returns [EObject current=null] : (otherlv_0= 'scope' ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' ( ( ruleQualifiedName ) ) ) | ( ( ( ruleQualifiedName ) ) otherlv_5= '>=' ( (lv_lowerBound_6_0= RULE_INT ) ) ) ) otherlv_7= '.' ) ;
5936 public final EObject ruleClassInterpretation() throws RecognitionException { 9289 public final EObject ruleLowerBoundedScopeDefinition() throws RecognitionException {
5937 EObject current = null; 9290 EObject current = null;
5938 9291
5939 Token lv_abstract_0_0=null; 9292 Token otherlv_0=null;
5940 Token otherlv_1=null; 9293 Token lv_lowerBound_1_0=null;
5941 Token otherlv_3=null; 9294 Token otherlv_2=null;
5942 Token otherlv_5=null; 9295 Token otherlv_5=null;
9296 Token lv_lowerBound_6_0=null;
5943 Token otherlv_7=null; 9297 Token otherlv_7=null;
5944 EObject lv_symbol_2_0 = null;
5945
5946 EObject lv_supertypes_4_0 = null;
5947
5948 EObject lv_fielt_6_0 = null;
5949
5950 9298
5951 9299
5952 enterRule(); 9300 enterRule();
5953 9301
5954 try { 9302 try {
5955 // InternalSolverLanguage.g:2028:2: ( ( ( (lv_abstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_symbol_2_0= ruleModelSymbol ) ) (otherlv_3= 'extends' ( (lv_supertypes_4_0= ruleModelSymbol ) )+ )? otherlv_5= '{' ( (lv_fielt_6_0= ruleFieldRelationInterpretation ) )* otherlv_7= '}' ) ) 9303 // InternalSolverLanguage.g:3236:2: ( (otherlv_0= 'scope' ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' ( ( ruleQualifiedName ) ) ) | ( ( ( ruleQualifiedName ) ) otherlv_5= '>=' ( (lv_lowerBound_6_0= RULE_INT ) ) ) ) otherlv_7= '.' ) )
5956 // InternalSolverLanguage.g:2029:2: ( ( (lv_abstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_symbol_2_0= ruleModelSymbol ) ) (otherlv_3= 'extends' ( (lv_supertypes_4_0= ruleModelSymbol ) )+ )? otherlv_5= '{' ( (lv_fielt_6_0= ruleFieldRelationInterpretation ) )* otherlv_7= '}' ) 9304 // InternalSolverLanguage.g:3237:2: (otherlv_0= 'scope' ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' ( ( ruleQualifiedName ) ) ) | ( ( ( ruleQualifiedName ) ) otherlv_5= '>=' ( (lv_lowerBound_6_0= RULE_INT ) ) ) ) otherlv_7= '.' )
5957 { 9305 {
5958 // InternalSolverLanguage.g:2029:2: ( ( (lv_abstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_symbol_2_0= ruleModelSymbol ) ) (otherlv_3= 'extends' ( (lv_supertypes_4_0= ruleModelSymbol ) )+ )? otherlv_5= '{' ( (lv_fielt_6_0= ruleFieldRelationInterpretation ) )* otherlv_7= '}' ) 9306 // InternalSolverLanguage.g:3237:2: (otherlv_0= 'scope' ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' ( ( ruleQualifiedName ) ) ) | ( ( ( ruleQualifiedName ) ) otherlv_5= '>=' ( (lv_lowerBound_6_0= RULE_INT ) ) ) ) otherlv_7= '.' )
5959 // InternalSolverLanguage.g:2030:3: ( (lv_abstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_symbol_2_0= ruleModelSymbol ) ) (otherlv_3= 'extends' ( (lv_supertypes_4_0= ruleModelSymbol ) )+ )? otherlv_5= '{' ( (lv_fielt_6_0= ruleFieldRelationInterpretation ) )* otherlv_7= '}' 9307 // InternalSolverLanguage.g:3238:3: otherlv_0= 'scope' ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' ( ( ruleQualifiedName ) ) ) | ( ( ( ruleQualifiedName ) ) otherlv_5= '>=' ( (lv_lowerBound_6_0= RULE_INT ) ) ) ) otherlv_7= '.'
5960 { 9308 {
5961 // InternalSolverLanguage.g:2030:3: ( (lv_abstract_0_0= 'abstract' ) )? 9309 otherlv_0=(Token)match(input,46,FOLLOW_49); if (state.failed) return current;
5962 int alt37=2; 9310 if ( state.backtracking==0 ) {
5963 int LA37_0 = input.LA(1); 9311
9312 newLeafNode(otherlv_0, grammarAccess.getLowerBoundedScopeDefinitionAccess().getScopeKeyword_0());
9313
9314 }
9315 // InternalSolverLanguage.g:3242:3: ( ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' ( ( ruleQualifiedName ) ) ) | ( ( ( ruleQualifiedName ) ) otherlv_5= '>=' ( (lv_lowerBound_6_0= RULE_INT ) ) ) )
9316 int alt40=2;
9317 int LA40_0 = input.LA(1);
5964 9318
5965 if ( (LA37_0==33) ) { 9319 if ( (LA40_0==RULE_INT) ) {
5966 alt37=1; 9320 alt40=1;
5967 } 9321 }
5968 switch (alt37) { 9322 else if ( (LA40_0==RULE_ID||LA40_0==RULE_QUOTED_ID) ) {
9323 alt40=2;
9324 }
9325 else {
9326 if (state.backtracking>0) {state.failed=true; return current;}
9327 NoViableAltException nvae =
9328 new NoViableAltException("", 40, 0, input);
9329
9330 throw nvae;
9331 }
9332 switch (alt40) {
5969 case 1 : 9333 case 1 :
5970 // InternalSolverLanguage.g:2031:4: (lv_abstract_0_0= 'abstract' ) 9334 // InternalSolverLanguage.g:3243:4: ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' ( ( ruleQualifiedName ) ) )
5971 { 9335 {
5972 // InternalSolverLanguage.g:2031:4: (lv_abstract_0_0= 'abstract' ) 9336 // InternalSolverLanguage.g:3243:4: ( ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' ( ( ruleQualifiedName ) ) )
5973 // InternalSolverLanguage.g:2032:5: lv_abstract_0_0= 'abstract' 9337 // InternalSolverLanguage.g:3244:5: ( (lv_lowerBound_1_0= RULE_INT ) ) otherlv_2= '<=' ( ( ruleQualifiedName ) )
5974 { 9338 {
5975 lv_abstract_0_0=(Token)match(input,33,FOLLOW_27); 9339 // InternalSolverLanguage.g:3244:5: ( (lv_lowerBound_1_0= RULE_INT ) )
5976 9340 // InternalSolverLanguage.g:3245:6: (lv_lowerBound_1_0= RULE_INT )
5977 newLeafNode(lv_abstract_0_0, grammarAccess.getClassInterpretationAccess().getAbstractAbstractKeyword_0_0()); 9341 {
5978 9342 // InternalSolverLanguage.g:3245:6: (lv_lowerBound_1_0= RULE_INT )
5979 9343 // InternalSolverLanguage.g:3246:7: lv_lowerBound_1_0= RULE_INT
5980 if (current==null) { 9344 {
5981 current = createModelElement(grammarAccess.getClassInterpretationRule()); 9345 lv_lowerBound_1_0=(Token)match(input,RULE_INT,FOLLOW_50); if (state.failed) return current;
5982 } 9346 if ( state.backtracking==0 ) {
5983 setWithLastConsumed(current, "abstract", true, "abstract");
5984
5985 9347
9348 newLeafNode(lv_lowerBound_1_0, grammarAccess.getLowerBoundedScopeDefinitionAccess().getLowerBoundINTTerminalRuleCall_1_0_0_0());
9349
5986 } 9350 }
5987 9351 if ( state.backtracking==0 ) {
5988 9352
9353 if (current==null) {
9354 current = createModelElement(grammarAccess.getLowerBoundedScopeDefinitionRule());
9355 }
9356 setWithLastConsumed(
9357 current,
9358 "lowerBound",
9359 lv_lowerBound_1_0,
9360 "org.eclipse.xtext.common.Terminals.INT");
9361
5989 } 9362 }
5990 break;
5991
5992 }
5993
5994 otherlv_1=(Token)match(input,34,FOLLOW_12);
5995
5996 newLeafNode(otherlv_1, grammarAccess.getClassInterpretationAccess().getClassKeyword_1());
5997
5998 // InternalSolverLanguage.g:2048:3: ( (lv_symbol_2_0= ruleModelSymbol ) )
5999 // InternalSolverLanguage.g:2049:4: (lv_symbol_2_0= ruleModelSymbol )
6000 {
6001 // InternalSolverLanguage.g:2049:4: (lv_symbol_2_0= ruleModelSymbol )
6002 // InternalSolverLanguage.g:2050:5: lv_symbol_2_0= ruleModelSymbol
6003 {
6004 9363
6005 newCompositeNode(grammarAccess.getClassInterpretationAccess().getSymbolModelSymbolParserRuleCall_2_0()); 9364 }
6006
6007 pushFollow(FOLLOW_28);
6008 lv_symbol_2_0=ruleModelSymbol();
6009
6010 state._fsp--;
6011
6012
6013 if (current==null) {
6014 current = createModelElementForParent(grammarAccess.getClassInterpretationRule());
6015 }
6016 set(
6017 current,
6018 "symbol",
6019 lv_symbol_2_0,
6020 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
6021 afterParserOrEnumRuleCall();
6022
6023
6024 }
6025 9365
6026 9366
6027 } 9367 }
6028 9368
6029 // InternalSolverLanguage.g:2067:3: (otherlv_3= 'extends' ( (lv_supertypes_4_0= ruleModelSymbol ) )+ )? 9369 otherlv_2=(Token)match(input,48,FOLLOW_35); if (state.failed) return current;
6030 int alt39=2; 9370 if ( state.backtracking==0 ) {
6031 int LA39_0 = input.LA(1);
6032 9371
6033 if ( (LA39_0==35) ) { 9372 newLeafNode(otherlv_2, grammarAccess.getLowerBoundedScopeDefinitionAccess().getLessThanSignEqualsSignKeyword_1_0_1());
6034 alt39=1; 9373
6035 } 9374 }
6036 switch (alt39) { 9375 // InternalSolverLanguage.g:3266:5: ( ( ruleQualifiedName ) )
6037 case 1 : 9376 // InternalSolverLanguage.g:3267:6: ( ruleQualifiedName )
6038 // InternalSolverLanguage.g:2068:4: otherlv_3= 'extends' ( (lv_supertypes_4_0= ruleModelSymbol ) )+
6039 { 9377 {
6040 otherlv_3=(Token)match(input,35,FOLLOW_12); 9378 // InternalSolverLanguage.g:3267:6: ( ruleQualifiedName )
9379 // InternalSolverLanguage.g:3268:7: ruleQualifiedName
9380 {
9381 if ( state.backtracking==0 ) {
6041 9382
6042 newLeafNode(otherlv_3, grammarAccess.getClassInterpretationAccess().getExtendsKeyword_3_0()); 9383 if (current==null) {
6043 9384 current = createModelElement(grammarAccess.getLowerBoundedScopeDefinitionRule());
6044 // InternalSolverLanguage.g:2072:4: ( (lv_supertypes_4_0= ruleModelSymbol ) )+ 9385 }
6045 int cnt38=0; 9386
6046 loop38: 9387 }
6047 do { 9388 if ( state.backtracking==0 ) {
6048 int alt38=2;
6049 int LA38_0 = input.LA(1);
6050 9389
6051 if ( (LA38_0==RULE_ID) ) { 9390 newCompositeNode(grammarAccess.getLowerBoundedScopeDefinitionAccess().getTypeNamedElementCrossReference_1_0_2_0());
6052 alt38=1; 9391
6053 } 9392 }
9393 pushFollow(FOLLOW_12);
9394 ruleQualifiedName();
6054 9395
9396 state._fsp--;
9397 if (state.failed) return current;
9398 if ( state.backtracking==0 ) {
6055 9399
6056 switch (alt38) { 9400 afterParserOrEnumRuleCall();
6057 case 1 : 9401
6058 // InternalSolverLanguage.g:2073:5: (lv_supertypes_4_0= ruleModelSymbol ) 9402 }
6059 {
6060 // InternalSolverLanguage.g:2073:5: (lv_supertypes_4_0= ruleModelSymbol )
6061 // InternalSolverLanguage.g:2074:6: lv_supertypes_4_0= ruleModelSymbol
6062 {
6063 9403
6064 newCompositeNode(grammarAccess.getClassInterpretationAccess().getSupertypesModelSymbolParserRuleCall_3_1_0()); 9404 }
6065
6066 pushFollow(FOLLOW_29);
6067 lv_supertypes_4_0=ruleModelSymbol();
6068 9405
6069 state._fsp--;
6070 9406
9407 }
6071 9408
6072 if (current==null) {
6073 current = createModelElementForParent(grammarAccess.getClassInterpretationRule());
6074 }
6075 add(
6076 current,
6077 "supertypes",
6078 lv_supertypes_4_0,
6079 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
6080 afterParserOrEnumRuleCall();
6081
6082 9409
6083 } 9410 }
6084 9411
6085 9412
6086 } 9413 }
6087 break; 9414 break;
9415 case 2 :
9416 // InternalSolverLanguage.g:3284:4: ( ( ( ruleQualifiedName ) ) otherlv_5= '>=' ( (lv_lowerBound_6_0= RULE_INT ) ) )
9417 {
9418 // InternalSolverLanguage.g:3284:4: ( ( ( ruleQualifiedName ) ) otherlv_5= '>=' ( (lv_lowerBound_6_0= RULE_INT ) ) )
9419 // InternalSolverLanguage.g:3285:5: ( ( ruleQualifiedName ) ) otherlv_5= '>=' ( (lv_lowerBound_6_0= RULE_INT ) )
9420 {
9421 // InternalSolverLanguage.g:3285:5: ( ( ruleQualifiedName ) )
9422 // InternalSolverLanguage.g:3286:6: ( ruleQualifiedName )
9423 {
9424 // InternalSolverLanguage.g:3286:6: ( ruleQualifiedName )
9425 // InternalSolverLanguage.g:3287:7: ruleQualifiedName
9426 {
9427 if ( state.backtracking==0 ) {
6088 9428
6089 default : 9429 if (current==null) {
6090 if ( cnt38 >= 1 ) break loop38; 9430 current = createModelElement(grammarAccess.getLowerBoundedScopeDefinitionRule());
6091 EarlyExitException eee = 9431 }
6092 new EarlyExitException(38, input); 9432
6093 throw eee; 9433 }
6094 } 9434 if ( state.backtracking==0 ) {
6095 cnt38++;
6096 } while (true);
6097 9435
9436 newCompositeNode(grammarAccess.getLowerBoundedScopeDefinitionAccess().getTypeNamedElementCrossReference_1_1_0_0());
9437
9438 }
9439 pushFollow(FOLLOW_51);
9440 ruleQualifiedName();
6098 9441
9442 state._fsp--;
9443 if (state.failed) return current;
9444 if ( state.backtracking==0 ) {
9445
9446 afterParserOrEnumRuleCall();
9447
6099 } 9448 }
6100 break;
6101 9449
6102 } 9450 }
6103 9451
6104 otherlv_5=(Token)match(input,36,FOLLOW_30);
6105 9452
6106 newLeafNode(otherlv_5, grammarAccess.getClassInterpretationAccess().getLeftCurlyBracketKeyword_4()); 9453 }
6107
6108 // InternalSolverLanguage.g:2096:3: ( (lv_fielt_6_0= ruleFieldRelationInterpretation ) )*
6109 loop40:
6110 do {
6111 int alt40=2;
6112 int LA40_0 = input.LA(1);
6113 9454
6114 if ( (LA40_0==RULE_ID||LA40_0==39) ) { 9455 otherlv_5=(Token)match(input,49,FOLLOW_47); if (state.failed) return current;
6115 alt40=1; 9456 if ( state.backtracking==0 ) {
6116 }
6117 9457
9458 newLeafNode(otherlv_5, grammarAccess.getLowerBoundedScopeDefinitionAccess().getGreaterThanSignEqualsSignKeyword_1_1_1());
9459
9460 }
9461 // InternalSolverLanguage.g:3305:5: ( (lv_lowerBound_6_0= RULE_INT ) )
9462 // InternalSolverLanguage.g:3306:6: (lv_lowerBound_6_0= RULE_INT )
9463 {
9464 // InternalSolverLanguage.g:3306:6: (lv_lowerBound_6_0= RULE_INT )
9465 // InternalSolverLanguage.g:3307:7: lv_lowerBound_6_0= RULE_INT
9466 {
9467 lv_lowerBound_6_0=(Token)match(input,RULE_INT,FOLLOW_12); if (state.failed) return current;
9468 if ( state.backtracking==0 ) {
6118 9469
6119 switch (alt40) { 9470 newLeafNode(lv_lowerBound_6_0, grammarAccess.getLowerBoundedScopeDefinitionAccess().getLowerBoundINTTerminalRuleCall_1_1_2_0());
6120 case 1 : 9471
6121 // InternalSolverLanguage.g:2097:4: (lv_fielt_6_0= ruleFieldRelationInterpretation ) 9472 }
6122 { 9473 if ( state.backtracking==0 ) {
6123 // InternalSolverLanguage.g:2097:4: (lv_fielt_6_0= ruleFieldRelationInterpretation ) 9474
6124 // InternalSolverLanguage.g:2098:5: lv_fielt_6_0= ruleFieldRelationInterpretation 9475 if (current==null) {
6125 { 9476 current = createModelElement(grammarAccess.getLowerBoundedScopeDefinitionRule());
9477 }
9478 setWithLastConsumed(
9479 current,
9480 "lowerBound",
9481 lv_lowerBound_6_0,
9482 "org.eclipse.xtext.common.Terminals.INT");
9483
9484 }
6126 9485
6127 newCompositeNode(grammarAccess.getClassInterpretationAccess().getFieltFieldRelationInterpretationParserRuleCall_5_0()); 9486 }
6128
6129 pushFollow(FOLLOW_30);
6130 lv_fielt_6_0=ruleFieldRelationInterpretation();
6131 9487
6132 state._fsp--;
6133 9488
9489 }
6134 9490
6135 if (current==null) {
6136 current = createModelElementForParent(grammarAccess.getClassInterpretationRule());
6137 }
6138 add(
6139 current,
6140 "fielt",
6141 lv_fielt_6_0,
6142 "org.eclipse.viatra.solver.language.SolverLanguage.FieldRelationInterpretation");
6143 afterParserOrEnumRuleCall();
6144
6145 9491
6146 } 9492 }
6147 9493
6148 9494
6149 } 9495 }
6150 break; 9496 break;
6151 9497
6152 default : 9498 }
6153 break loop40;
6154 }
6155 } while (true);
6156 9499
6157 otherlv_7=(Token)match(input,37,FOLLOW_2); 9500 otherlv_7=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
9501 if ( state.backtracking==0 ) {
6158 9502
6159 newLeafNode(otherlv_7, grammarAccess.getClassInterpretationAccess().getRightCurlyBracketKeyword_6()); 9503 newLeafNode(otherlv_7, grammarAccess.getLowerBoundedScopeDefinitionAccess().getFullStopKeyword_2());
6160 9504
9505 }
6161 9506
6162 } 9507 }
6163 9508
6164 9509
6165 } 9510 }
6166 9511
9512 if ( state.backtracking==0 ) {
6167 9513
6168 leaveRule(); 9514 leaveRule();
6169 9515
9516 }
6170 } 9517 }
6171 9518
6172 catch (RecognitionException re) { 9519 catch (RecognitionException re) {
@@ -6177,29 +9524,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6177 } 9524 }
6178 return current; 9525 return current;
6179 } 9526 }
6180 // $ANTLR end "ruleClassInterpretation" 9527 // $ANTLR end "ruleLowerBoundedScopeDefinition"
6181 9528
6182 9529
6183 // $ANTLR start "entryRuleEnumInterpretation" 9530 // $ANTLR start "entryRuleObjectiveDefinition"
6184 // InternalSolverLanguage.g:2123:1: entryRuleEnumInterpretation returns [EObject current=null] : iv_ruleEnumInterpretation= ruleEnumInterpretation EOF ; 9531 // InternalSolverLanguage.g:3333:1: entryRuleObjectiveDefinition returns [EObject current=null] : iv_ruleObjectiveDefinition= ruleObjectiveDefinition EOF ;
6185 public final EObject entryRuleEnumInterpretation() throws RecognitionException { 9532 public final EObject entryRuleObjectiveDefinition() throws RecognitionException {
6186 EObject current = null; 9533 EObject current = null;
6187 9534
6188 EObject iv_ruleEnumInterpretation = null; 9535 EObject iv_ruleObjectiveDefinition = null;
6189 9536
6190 9537
6191 try { 9538 try {
6192 // InternalSolverLanguage.g:2123:59: (iv_ruleEnumInterpretation= ruleEnumInterpretation EOF ) 9539 // InternalSolverLanguage.g:3333:60: (iv_ruleObjectiveDefinition= ruleObjectiveDefinition EOF )
6193 // InternalSolverLanguage.g:2124:2: iv_ruleEnumInterpretation= ruleEnumInterpretation EOF 9540 // InternalSolverLanguage.g:3334:2: iv_ruleObjectiveDefinition= ruleObjectiveDefinition EOF
6194 { 9541 {
6195 newCompositeNode(grammarAccess.getEnumInterpretationRule()); 9542 if ( state.backtracking==0 ) {
9543 newCompositeNode(grammarAccess.getObjectiveDefinitionRule());
9544 }
6196 pushFollow(FOLLOW_1); 9545 pushFollow(FOLLOW_1);
6197 iv_ruleEnumInterpretation=ruleEnumInterpretation(); 9546 iv_ruleObjectiveDefinition=ruleObjectiveDefinition();
6198 9547
6199 state._fsp--; 9548 state._fsp--;
6200 9549 if (state.failed) return current;
6201 current =iv_ruleEnumInterpretation; 9550 if ( state.backtracking==0 ) {
6202 match(input,EOF,FOLLOW_2); 9551 current =iv_ruleObjectiveDefinition;
9552 }
9553 match(input,EOF,FOLLOW_2); if (state.failed) return current;
6203 9554
6204 } 9555 }
6205 9556
@@ -6213,138 +9564,110 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6213 } 9564 }
6214 return current; 9565 return current;
6215 } 9566 }
6216 // $ANTLR end "entryRuleEnumInterpretation" 9567 // $ANTLR end "entryRuleObjectiveDefinition"
6217 9568
6218 9569
6219 // $ANTLR start "ruleEnumInterpretation" 9570 // $ANTLR start "ruleObjectiveDefinition"
6220 // InternalSolverLanguage.g:2130:1: ruleEnumInterpretation returns [EObject current=null] : (otherlv_0= 'enum' ( (lv_Symbol_1_0= ruleModelSymbol ) ) otherlv_2= '{' ( (lv_objects_3_0= ruleNamedObject ) )+ otherlv_4= '}' ) ; 9571 // InternalSolverLanguage.g:3340:1: ruleObjectiveDefinition returns [EObject current=null] : ( ( (lv_kind_0_0= ruleObjectiveKind ) ) ( (lv_objective_1_0= ruleExpression ) ) ) ;
6221 public final EObject ruleEnumInterpretation() throws RecognitionException { 9572 public final EObject ruleObjectiveDefinition() throws RecognitionException {
6222 EObject current = null; 9573 EObject current = null;
6223 9574
6224 Token otherlv_0=null; 9575 Enumerator lv_kind_0_0 = null;
6225 Token otherlv_2=null;
6226 Token otherlv_4=null;
6227 EObject lv_Symbol_1_0 = null;
6228 9576
6229 EObject lv_objects_3_0 = null; 9577 EObject lv_objective_1_0 = null;
6230 9578
6231 9579
6232 9580
6233 enterRule(); 9581 enterRule();
6234 9582
6235 try { 9583 try {
6236 // InternalSolverLanguage.g:2136:2: ( (otherlv_0= 'enum' ( (lv_Symbol_1_0= ruleModelSymbol ) ) otherlv_2= '{' ( (lv_objects_3_0= ruleNamedObject ) )+ otherlv_4= '}' ) ) 9584 // InternalSolverLanguage.g:3346:2: ( ( ( (lv_kind_0_0= ruleObjectiveKind ) ) ( (lv_objective_1_0= ruleExpression ) ) ) )
6237 // InternalSolverLanguage.g:2137:2: (otherlv_0= 'enum' ( (lv_Symbol_1_0= ruleModelSymbol ) ) otherlv_2= '{' ( (lv_objects_3_0= ruleNamedObject ) )+ otherlv_4= '}' ) 9585 // InternalSolverLanguage.g:3347:2: ( ( (lv_kind_0_0= ruleObjectiveKind ) ) ( (lv_objective_1_0= ruleExpression ) ) )
6238 { 9586 {
6239 // InternalSolverLanguage.g:2137:2: (otherlv_0= 'enum' ( (lv_Symbol_1_0= ruleModelSymbol ) ) otherlv_2= '{' ( (lv_objects_3_0= ruleNamedObject ) )+ otherlv_4= '}' ) 9587 // InternalSolverLanguage.g:3347:2: ( ( (lv_kind_0_0= ruleObjectiveKind ) ) ( (lv_objective_1_0= ruleExpression ) ) )
6240 // InternalSolverLanguage.g:2138:3: otherlv_0= 'enum' ( (lv_Symbol_1_0= ruleModelSymbol ) ) otherlv_2= '{' ( (lv_objects_3_0= ruleNamedObject ) )+ otherlv_4= '}' 9588 // InternalSolverLanguage.g:3348:3: ( (lv_kind_0_0= ruleObjectiveKind ) ) ( (lv_objective_1_0= ruleExpression ) )
6241 { 9589 {
6242 otherlv_0=(Token)match(input,38,FOLLOW_12); 9590 // InternalSolverLanguage.g:3348:3: ( (lv_kind_0_0= ruleObjectiveKind ) )
6243 9591 // InternalSolverLanguage.g:3349:4: (lv_kind_0_0= ruleObjectiveKind )
6244 newLeafNode(otherlv_0, grammarAccess.getEnumInterpretationAccess().getEnumKeyword_0());
6245
6246 // InternalSolverLanguage.g:2142:3: ( (lv_Symbol_1_0= ruleModelSymbol ) )
6247 // InternalSolverLanguage.g:2143:4: (lv_Symbol_1_0= ruleModelSymbol )
6248 { 9592 {
6249 // InternalSolverLanguage.g:2143:4: (lv_Symbol_1_0= ruleModelSymbol ) 9593 // InternalSolverLanguage.g:3349:4: (lv_kind_0_0= ruleObjectiveKind )
6250 // InternalSolverLanguage.g:2144:5: lv_Symbol_1_0= ruleModelSymbol 9594 // InternalSolverLanguage.g:3350:5: lv_kind_0_0= ruleObjectiveKind
6251 { 9595 {
9596 if ( state.backtracking==0 ) {
6252 9597
6253 newCompositeNode(grammarAccess.getEnumInterpretationAccess().getSymbolModelSymbolParserRuleCall_1_0()); 9598 newCompositeNode(grammarAccess.getObjectiveDefinitionAccess().getKindObjectiveKindEnumRuleCall_0_0());
6254 9599
6255 pushFollow(FOLLOW_31); 9600 }
6256 lv_Symbol_1_0=ruleModelSymbol(); 9601 pushFollow(FOLLOW_6);
9602 lv_kind_0_0=ruleObjectiveKind();
6257 9603
6258 state._fsp--; 9604 state._fsp--;
9605 if (state.failed) return current;
9606 if ( state.backtracking==0 ) {
6259 9607
6260 9608 if (current==null) {
6261 if (current==null) { 9609 current = createModelElementForParent(grammarAccess.getObjectiveDefinitionRule());
6262 current = createModelElementForParent(grammarAccess.getEnumInterpretationRule()); 9610 }
6263 } 9611 set(
6264 set( 9612 current,
6265 current, 9613 "kind",
6266 "Symbol", 9614 lv_kind_0_0,
6267 lv_Symbol_1_0, 9615 "org.eclipse.viatra.solver.language.SolverLanguage.ObjectiveKind");
6268 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol"); 9616 afterParserOrEnumRuleCall();
6269 afterParserOrEnumRuleCall(); 9617
6270
6271
6272 } 9618 }
6273 9619
6274
6275 } 9620 }
6276 9621
6277 otherlv_2=(Token)match(input,36,FOLLOW_13);
6278
6279 newLeafNode(otherlv_2, grammarAccess.getEnumInterpretationAccess().getLeftCurlyBracketKeyword_2());
6280
6281 // InternalSolverLanguage.g:2165:3: ( (lv_objects_3_0= ruleNamedObject ) )+
6282 int cnt41=0;
6283 loop41:
6284 do {
6285 int alt41=2;
6286 int LA41_0 = input.LA(1);
6287
6288 if ( (LA41_0==27) ) {
6289 alt41=1;
6290 }
6291
6292
6293 switch (alt41) {
6294 case 1 :
6295 // InternalSolverLanguage.g:2166:4: (lv_objects_3_0= ruleNamedObject )
6296 {
6297 // InternalSolverLanguage.g:2166:4: (lv_objects_3_0= ruleNamedObject )
6298 // InternalSolverLanguage.g:2167:5: lv_objects_3_0= ruleNamedObject
6299 {
6300
6301 newCompositeNode(grammarAccess.getEnumInterpretationAccess().getObjectsNamedObjectParserRuleCall_3_0());
6302
6303 pushFollow(FOLLOW_32);
6304 lv_objects_3_0=ruleNamedObject();
6305 9622
6306 state._fsp--; 9623 }
6307 9624
9625 // InternalSolverLanguage.g:3367:3: ( (lv_objective_1_0= ruleExpression ) )
9626 // InternalSolverLanguage.g:3368:4: (lv_objective_1_0= ruleExpression )
9627 {
9628 // InternalSolverLanguage.g:3368:4: (lv_objective_1_0= ruleExpression )
9629 // InternalSolverLanguage.g:3369:5: lv_objective_1_0= ruleExpression
9630 {
9631 if ( state.backtracking==0 ) {
6308 9632
6309 if (current==null) { 9633 newCompositeNode(grammarAccess.getObjectiveDefinitionAccess().getObjectiveExpressionParserRuleCall_1_0());
6310 current = createModelElementForParent(grammarAccess.getEnumInterpretationRule()); 9634
6311 } 9635 }
6312 add( 9636 pushFollow(FOLLOW_2);
6313 current, 9637 lv_objective_1_0=ruleExpression();
6314 "objects",
6315 lv_objects_3_0,
6316 "org.eclipse.viatra.solver.language.SolverLanguage.NamedObject");
6317 afterParserOrEnumRuleCall();
6318
6319 9638
6320 } 9639 state._fsp--;
9640 if (state.failed) return current;
9641 if ( state.backtracking==0 ) {
6321 9642
9643 if (current==null) {
9644 current = createModelElementForParent(grammarAccess.getObjectiveDefinitionRule());
9645 }
9646 set(
9647 current,
9648 "objective",
9649 lv_objective_1_0,
9650 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
9651 afterParserOrEnumRuleCall();
9652
9653 }
6322 9654
6323 } 9655 }
6324 break;
6325 9656
6326 default :
6327 if ( cnt41 >= 1 ) break loop41;
6328 EarlyExitException eee =
6329 new EarlyExitException(41, input);
6330 throw eee;
6331 }
6332 cnt41++;
6333 } while (true);
6334 9657
6335 otherlv_4=(Token)match(input,37,FOLLOW_2); 9658 }
6336 9659
6337 newLeafNode(otherlv_4, grammarAccess.getEnumInterpretationAccess().getRightCurlyBracketKeyword_4());
6338
6339 9660
6340 } 9661 }
6341 9662
6342 9663
6343 } 9664 }
6344 9665
9666 if ( state.backtracking==0 ) {
6345 9667
6346 leaveRule(); 9668 leaveRule();
6347 9669
9670 }
6348 } 9671 }
6349 9672
6350 catch (RecognitionException re) { 9673 catch (RecognitionException re) {
@@ -6355,29 +9678,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6355 } 9678 }
6356 return current; 9679 return current;
6357 } 9680 }
6358 // $ANTLR end "ruleEnumInterpretation" 9681 // $ANTLR end "ruleObjectiveDefinition"
6359 9682
6360 9683
6361 // $ANTLR start "entryRuleFieldRelationInterpretation" 9684 // $ANTLR start "entryRuleUpperMultiplicty"
6362 // InternalSolverLanguage.g:2192:1: entryRuleFieldRelationInterpretation returns [EObject current=null] : iv_ruleFieldRelationInterpretation= ruleFieldRelationInterpretation EOF ; 9685 // InternalSolverLanguage.g:3390:1: entryRuleUpperMultiplicty returns [String current=null] : iv_ruleUpperMultiplicty= ruleUpperMultiplicty EOF ;
6363 public final EObject entryRuleFieldRelationInterpretation() throws RecognitionException { 9686 public final String entryRuleUpperMultiplicty() throws RecognitionException {
6364 EObject current = null; 9687 String current = null;
6365 9688
6366 EObject iv_ruleFieldRelationInterpretation = null; 9689 AntlrDatatypeRuleToken iv_ruleUpperMultiplicty = null;
6367 9690
6368 9691
6369 try { 9692 try {
6370 // InternalSolverLanguage.g:2192:68: (iv_ruleFieldRelationInterpretation= ruleFieldRelationInterpretation EOF ) 9693 // InternalSolverLanguage.g:3390:56: (iv_ruleUpperMultiplicty= ruleUpperMultiplicty EOF )
6371 // InternalSolverLanguage.g:2193:2: iv_ruleFieldRelationInterpretation= ruleFieldRelationInterpretation EOF 9694 // InternalSolverLanguage.g:3391:2: iv_ruleUpperMultiplicty= ruleUpperMultiplicty EOF
6372 { 9695 {
6373 newCompositeNode(grammarAccess.getFieldRelationInterpretationRule()); 9696 if ( state.backtracking==0 ) {
9697 newCompositeNode(grammarAccess.getUpperMultiplictyRule());
9698 }
6374 pushFollow(FOLLOW_1); 9699 pushFollow(FOLLOW_1);
6375 iv_ruleFieldRelationInterpretation=ruleFieldRelationInterpretation(); 9700 iv_ruleUpperMultiplicty=ruleUpperMultiplicty();
6376 9701
6377 state._fsp--; 9702 state._fsp--;
6378 9703 if (state.failed) return current;
6379 current =iv_ruleFieldRelationInterpretation; 9704 if ( state.backtracking==0 ) {
6380 match(input,EOF,FOLLOW_2); 9705 current =iv_ruleUpperMultiplicty.getText();
9706 }
9707 match(input,EOF,FOLLOW_2); if (state.failed) return current;
6381 9708
6382 } 9709 }
6383 9710
@@ -6391,171 +9718,205 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6391 } 9718 }
6392 return current; 9719 return current;
6393 } 9720 }
6394 // $ANTLR end "entryRuleFieldRelationInterpretation" 9721 // $ANTLR end "entryRuleUpperMultiplicty"
6395
6396 9722
6397 // $ANTLR start "ruleFieldRelationInterpretation"
6398 // InternalSolverLanguage.g:2199:1: ruleFieldRelationInterpretation returns [EObject current=null] : ( ( (lv_containment_0_0= 'containment' ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) otherlv_2= ':' ( (lv_multiplicity_3_0= ruleMultiplicityDefinition ) )? ( (lv_target_4_0= ruleSymbol ) ) ) ;
6399 public final EObject ruleFieldRelationInterpretation() throws RecognitionException {
6400 EObject current = null;
6401 9723
6402 Token lv_containment_0_0=null; 9724 // $ANTLR start "ruleUpperMultiplicty"
6403 Token otherlv_2=null; 9725 // InternalSolverLanguage.g:3397:1: ruleUpperMultiplicty returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_INT_0= RULE_INT | kw= '*' ) ;
6404 EObject lv_symbol_1_0 = null; 9726 public final AntlrDatatypeRuleToken ruleUpperMultiplicty() throws RecognitionException {
6405 9727 AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
6406 EObject lv_multiplicity_3_0 = null;
6407
6408 EObject lv_target_4_0 = null;
6409 9728
9729 Token this_INT_0=null;
9730 Token kw=null;
6410 9731
6411 9732
6412 enterRule(); 9733 enterRule();
6413 9734
6414 try { 9735 try {
6415 // InternalSolverLanguage.g:2205:2: ( ( ( (lv_containment_0_0= 'containment' ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) otherlv_2= ':' ( (lv_multiplicity_3_0= ruleMultiplicityDefinition ) )? ( (lv_target_4_0= ruleSymbol ) ) ) ) 9736 // InternalSolverLanguage.g:3403:2: ( (this_INT_0= RULE_INT | kw= '*' ) )
6416 // InternalSolverLanguage.g:2206:2: ( ( (lv_containment_0_0= 'containment' ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) otherlv_2= ':' ( (lv_multiplicity_3_0= ruleMultiplicityDefinition ) )? ( (lv_target_4_0= ruleSymbol ) ) ) 9737 // InternalSolverLanguage.g:3404:2: (this_INT_0= RULE_INT | kw= '*' )
6417 { 9738 {
6418 // InternalSolverLanguage.g:2206:2: ( ( (lv_containment_0_0= 'containment' ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) otherlv_2= ':' ( (lv_multiplicity_3_0= ruleMultiplicityDefinition ) )? ( (lv_target_4_0= ruleSymbol ) ) ) 9739 // InternalSolverLanguage.g:3404:2: (this_INT_0= RULE_INT | kw= '*' )
6419 // InternalSolverLanguage.g:2207:3: ( (lv_containment_0_0= 'containment' ) )? ( (lv_symbol_1_0= ruleModelSymbol ) ) otherlv_2= ':' ( (lv_multiplicity_3_0= ruleMultiplicityDefinition ) )? ( (lv_target_4_0= ruleSymbol ) ) 9740 int alt41=2;
6420 { 9741 int LA41_0 = input.LA(1);
6421 // InternalSolverLanguage.g:2207:3: ( (lv_containment_0_0= 'containment' ) )?
6422 int alt42=2;
6423 int LA42_0 = input.LA(1);
6424 9742
6425 if ( (LA42_0==39) ) { 9743 if ( (LA41_0==RULE_INT) ) {
6426 alt42=1; 9744 alt41=1;
6427 } 9745 }
6428 switch (alt42) { 9746 else if ( (LA41_0==35) ) {
9747 alt41=2;
9748 }
9749 else {
9750 if (state.backtracking>0) {state.failed=true; return current;}
9751 NoViableAltException nvae =
9752 new NoViableAltException("", 41, 0, input);
9753
9754 throw nvae;
9755 }
9756 switch (alt41) {
6429 case 1 : 9757 case 1 :
6430 // InternalSolverLanguage.g:2208:4: (lv_containment_0_0= 'containment' ) 9758 // InternalSolverLanguage.g:3405:3: this_INT_0= RULE_INT
6431 { 9759 {
6432 // InternalSolverLanguage.g:2208:4: (lv_containment_0_0= 'containment' ) 9760 this_INT_0=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
6433 // InternalSolverLanguage.g:2209:5: lv_containment_0_0= 'containment' 9761 if ( state.backtracking==0 ) {
6434 {
6435 lv_containment_0_0=(Token)match(input,39,FOLLOW_12);
6436 9762
6437 newLeafNode(lv_containment_0_0, grammarAccess.getFieldRelationInterpretationAccess().getContainmentContainmentKeyword_0_0()); 9763 current.merge(this_INT_0);
6438 9764
9765 }
9766 if ( state.backtracking==0 ) {
6439 9767
6440 if (current==null) { 9768 newLeafNode(this_INT_0, grammarAccess.getUpperMultiplictyAccess().getINTTerminalRuleCall_0());
6441 current = createModelElement(grammarAccess.getFieldRelationInterpretationRule()); 9769
6442 } 9770 }
6443 setWithLastConsumed(current, "containment", true, "containment");
6444
6445 9771
6446 } 9772 }
9773 break;
9774 case 2 :
9775 // InternalSolverLanguage.g:3413:3: kw= '*'
9776 {
9777 kw=(Token)match(input,35,FOLLOW_2); if (state.failed) return current;
9778 if ( state.backtracking==0 ) {
6447 9779
9780 current.merge(kw);
9781 newLeafNode(kw, grammarAccess.getUpperMultiplictyAccess().getAsteriskKeyword_1());
9782
9783 }
6448 9784
6449 } 9785 }
6450 break; 9786 break;
6451 9787
6452 } 9788 }
6453 9789
6454 // InternalSolverLanguage.g:2221:3: ( (lv_symbol_1_0= ruleModelSymbol ) )
6455 // InternalSolverLanguage.g:2222:4: (lv_symbol_1_0= ruleModelSymbol )
6456 {
6457 // InternalSolverLanguage.g:2222:4: (lv_symbol_1_0= ruleModelSymbol )
6458 // InternalSolverLanguage.g:2223:5: lv_symbol_1_0= ruleModelSymbol
6459 {
6460 9790
6461 newCompositeNode(grammarAccess.getFieldRelationInterpretationAccess().getSymbolModelSymbolParserRuleCall_1_0()); 9791 }
6462
6463 pushFollow(FOLLOW_10);
6464 lv_symbol_1_0=ruleModelSymbol();
6465 9792
6466 state._fsp--; 9793 if ( state.backtracking==0 ) {
6467 9794
9795 leaveRule();
6468 9796
6469 if (current==null) { 9797 }
6470 current = createModelElementForParent(grammarAccess.getFieldRelationInterpretationRule()); 9798 }
6471 }
6472 set(
6473 current,
6474 "symbol",
6475 lv_symbol_1_0,
6476 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
6477 afterParserOrEnumRuleCall();
6478
6479 9799
9800 catch (RecognitionException re) {
9801 recover(input,re);
9802 appendSkippedTokens();
6480 } 9803 }
9804 finally {
9805 }
9806 return current;
9807 }
9808 // $ANTLR end "ruleUpperMultiplicty"
6481 9809
6482 9810
6483 } 9811 // $ANTLR start "entryRuleReal"
9812 // InternalSolverLanguage.g:3422:1: entryRuleReal returns [String current=null] : iv_ruleReal= ruleReal EOF ;
9813 public final String entryRuleReal() throws RecognitionException {
9814 String current = null;
9815
9816 AntlrDatatypeRuleToken iv_ruleReal = null;
6484 9817
6485 otherlv_2=(Token)match(input,20,FOLLOW_33);
6486 9818
6487 newLeafNode(otherlv_2, grammarAccess.getFieldRelationInterpretationAccess().getColonKeyword_2());
6488
6489 // InternalSolverLanguage.g:2244:3: ( (lv_multiplicity_3_0= ruleMultiplicityDefinition ) )?
6490 int alt43=2;
6491 int LA43_0 = input.LA(1);
6492 9819
6493 if ( (LA43_0==RULE_INT) ) { 9820 HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
6494 alt43=1; 9821
9822 try {
9823 // InternalSolverLanguage.g:3424:2: (iv_ruleReal= ruleReal EOF )
9824 // InternalSolverLanguage.g:3425:2: iv_ruleReal= ruleReal EOF
9825 {
9826 if ( state.backtracking==0 ) {
9827 newCompositeNode(grammarAccess.getRealRule());
6495 } 9828 }
6496 switch (alt43) { 9829 pushFollow(FOLLOW_1);
6497 case 1 : 9830 iv_ruleReal=ruleReal();
6498 // InternalSolverLanguage.g:2245:4: (lv_multiplicity_3_0= ruleMultiplicityDefinition )
6499 {
6500 // InternalSolverLanguage.g:2245:4: (lv_multiplicity_3_0= ruleMultiplicityDefinition )
6501 // InternalSolverLanguage.g:2246:5: lv_multiplicity_3_0= ruleMultiplicityDefinition
6502 {
6503 9831
6504 newCompositeNode(grammarAccess.getFieldRelationInterpretationAccess().getMultiplicityMultiplicityDefinitionParserRuleCall_3_0()); 9832 state._fsp--;
6505 9833 if (state.failed) return current;
6506 pushFollow(FOLLOW_21); 9834 if ( state.backtracking==0 ) {
6507 lv_multiplicity_3_0=ruleMultiplicityDefinition(); 9835 current =iv_ruleReal.getText();
9836 }
9837 match(input,EOF,FOLLOW_2); if (state.failed) return current;
6508 9838
6509 state._fsp--; 9839 }
9840
9841 }
6510 9842
9843 catch (RecognitionException re) {
9844 recover(input,re);
9845 appendSkippedTokens();
9846 }
9847 finally {
6511 9848
6512 if (current==null) { 9849 myHiddenTokenState.restore();
6513 current = createModelElementForParent(grammarAccess.getFieldRelationInterpretationRule());
6514 }
6515 set(
6516 current,
6517 "multiplicity",
6518 lv_multiplicity_3_0,
6519 "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicityDefinition");
6520 afterParserOrEnumRuleCall();
6521
6522 9850
6523 } 9851 }
9852 return current;
9853 }
9854 // $ANTLR end "entryRuleReal"
6524 9855
6525 9856
6526 } 9857 // $ANTLR start "ruleReal"
6527 break; 9858 // InternalSolverLanguage.g:3434:1: ruleReal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_INT_0= RULE_INT (kw= '.' this_INT_2= RULE_INT )? ) ;
9859 public final AntlrDatatypeRuleToken ruleReal() throws RecognitionException {
9860 AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
6528 9861
6529 } 9862 Token this_INT_0=null;
9863 Token kw=null;
9864 Token this_INT_2=null;
6530 9865
6531 // InternalSolverLanguage.g:2263:3: ( (lv_target_4_0= ruleSymbol ) ) 9866
6532 // InternalSolverLanguage.g:2264:4: (lv_target_4_0= ruleSymbol ) 9867 enterRule();
9868 HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
9869
9870 try {
9871 // InternalSolverLanguage.g:3441:2: ( (this_INT_0= RULE_INT (kw= '.' this_INT_2= RULE_INT )? ) )
9872 // InternalSolverLanguage.g:3442:2: (this_INT_0= RULE_INT (kw= '.' this_INT_2= RULE_INT )? )
6533 { 9873 {
6534 // InternalSolverLanguage.g:2264:4: (lv_target_4_0= ruleSymbol ) 9874 // InternalSolverLanguage.g:3442:2: (this_INT_0= RULE_INT (kw= '.' this_INT_2= RULE_INT )? )
6535 // InternalSolverLanguage.g:2265:5: lv_target_4_0= ruleSymbol 9875 // InternalSolverLanguage.g:3443:3: this_INT_0= RULE_INT (kw= '.' this_INT_2= RULE_INT )?
6536 { 9876 {
9877 this_INT_0=(Token)match(input,RULE_INT,FOLLOW_53); if (state.failed) return current;
9878 if ( state.backtracking==0 ) {
6537 9879
6538 newCompositeNode(grammarAccess.getFieldRelationInterpretationAccess().getTargetSymbolParserRuleCall_4_0()); 9880 current.merge(this_INT_0);
6539 9881
6540 pushFollow(FOLLOW_2); 9882 }
6541 lv_target_4_0=ruleSymbol(); 9883 if ( state.backtracking==0 ) {
6542 9884
6543 state._fsp--; 9885 newLeafNode(this_INT_0, grammarAccess.getRealAccess().getINTTerminalRuleCall_0());
9886
9887 }
9888 // InternalSolverLanguage.g:3450:3: (kw= '.' this_INT_2= RULE_INT )?
9889 int alt42=2;
9890 int LA42_0 = input.LA(1);
6544 9891
9892 if ( (LA42_0==22) ) {
9893 alt42=1;
9894 }
9895 switch (alt42) {
9896 case 1 :
9897 // InternalSolverLanguage.g:3451:4: kw= '.' this_INT_2= RULE_INT
9898 {
9899 kw=(Token)match(input,22,FOLLOW_47); if (state.failed) return current;
9900 if ( state.backtracking==0 ) {
6545 9901
6546 if (current==null) { 9902 current.merge(kw);
6547 current = createModelElementForParent(grammarAccess.getFieldRelationInterpretationRule()); 9903 newLeafNode(kw, grammarAccess.getRealAccess().getFullStopKeyword_1_0());
6548 } 9904
6549 set( 9905 }
6550 current, 9906 this_INT_2=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
6551 "target", 9907 if ( state.backtracking==0 ) {
6552 lv_target_4_0,
6553 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol");
6554 afterParserOrEnumRuleCall();
6555
6556 9908
6557 } 9909 current.merge(this_INT_2);
9910
9911 }
9912 if ( state.backtracking==0 ) {
6558 9913
9914 newLeafNode(this_INT_2, grammarAccess.getRealAccess().getINTTerminalRuleCall_1_1());
9915
9916 }
9917
9918 }
9919 break;
6559 9920
6560 } 9921 }
6561 9922
@@ -6565,9 +9926,11 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6565 9926
6566 } 9927 }
6567 9928
9929 if ( state.backtracking==0 ) {
6568 9930
6569 leaveRule(); 9931 leaveRule();
6570 9932
9933 }
6571 } 9934 }
6572 9935
6573 catch (RecognitionException re) { 9936 catch (RecognitionException re) {
@@ -6575,32 +9938,42 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6575 appendSkippedTokens(); 9938 appendSkippedTokens();
6576 } 9939 }
6577 finally { 9940 finally {
9941
9942 myHiddenTokenState.restore();
9943
6578 } 9944 }
6579 return current; 9945 return current;
6580 } 9946 }
6581 // $ANTLR end "ruleFieldRelationInterpretation" 9947 // $ANTLR end "ruleReal"
6582 9948
6583 9949
6584 // $ANTLR start "entryRuleGlobalRelationInterpretation" 9950 // $ANTLR start "entryRuleQualifiedName"
6585 // InternalSolverLanguage.g:2286:1: entryRuleGlobalRelationInterpretation returns [EObject current=null] : iv_ruleGlobalRelationInterpretation= ruleGlobalRelationInterpretation EOF ; 9951 // InternalSolverLanguage.g:3471:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
6586 public final EObject entryRuleGlobalRelationInterpretation() throws RecognitionException { 9952 public final String entryRuleQualifiedName() throws RecognitionException {
6587 EObject current = null; 9953 String current = null;
9954
9955 AntlrDatatypeRuleToken iv_ruleQualifiedName = null;
6588 9956
6589 EObject iv_ruleGlobalRelationInterpretation = null;
6590 9957
6591 9958
9959 HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
9960
6592 try { 9961 try {
6593 // InternalSolverLanguage.g:2286:69: (iv_ruleGlobalRelationInterpretation= ruleGlobalRelationInterpretation EOF ) 9962 // InternalSolverLanguage.g:3473:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
6594 // InternalSolverLanguage.g:2287:2: iv_ruleGlobalRelationInterpretation= ruleGlobalRelationInterpretation EOF 9963 // InternalSolverLanguage.g:3474:2: iv_ruleQualifiedName= ruleQualifiedName EOF
6595 { 9964 {
6596 newCompositeNode(grammarAccess.getGlobalRelationInterpretationRule()); 9965 if ( state.backtracking==0 ) {
9966 newCompositeNode(grammarAccess.getQualifiedNameRule());
9967 }
6597 pushFollow(FOLLOW_1); 9968 pushFollow(FOLLOW_1);
6598 iv_ruleGlobalRelationInterpretation=ruleGlobalRelationInterpretation(); 9969 iv_ruleQualifiedName=ruleQualifiedName();
6599 9970
6600 state._fsp--; 9971 state._fsp--;
6601 9972 if (state.failed) return current;
6602 current =iv_ruleGlobalRelationInterpretation; 9973 if ( state.backtracking==0 ) {
6603 match(input,EOF,FOLLOW_2); 9974 current =iv_ruleQualifiedName.getText();
9975 }
9976 match(input,EOF,FOLLOW_2); if (state.failed) return current;
6604 9977
6605 } 9978 }
6606 9979
@@ -6611,146 +9984,231 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6611 appendSkippedTokens(); 9984 appendSkippedTokens();
6612 } 9985 }
6613 finally { 9986 finally {
9987
9988 myHiddenTokenState.restore();
9989
6614 } 9990 }
6615 return current; 9991 return current;
6616 } 9992 }
6617 // $ANTLR end "entryRuleGlobalRelationInterpretation" 9993 // $ANTLR end "entryRuleQualifiedName"
6618
6619
6620 // $ANTLR start "ruleGlobalRelationInterpretation"
6621 // InternalSolverLanguage.g:2293:1: ruleGlobalRelationInterpretation returns [EObject current=null] : ( ( (lv_containment_0_0= 'containment' ) )? otherlv_1= 'relation' ( (lv_symbol_2_0= ruleModelSymbol ) ) otherlv_3= ':' ( (lv_sourceMultiplicity_4_0= ruleMultiplicityDefinition ) )? ( (lv_source_5_0= ruleSymbol ) ) ( (lv_targetMultiplicity_6_0= ruleMultiplicityDefinition ) )? ( (lv_target_7_0= ruleSymbol ) ) ) ;
6622 public final EObject ruleGlobalRelationInterpretation() throws RecognitionException {
6623 EObject current = null;
6624 9994
6625 Token lv_containment_0_0=null;
6626 Token otherlv_1=null;
6627 Token otherlv_3=null;
6628 EObject lv_symbol_2_0 = null;
6629
6630 EObject lv_sourceMultiplicity_4_0 = null;
6631 9995
6632 EObject lv_source_5_0 = null; 9996 // $ANTLR start "ruleQualifiedName"
6633 9997 // InternalSolverLanguage.g:3483:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) | this_QUOTED_ID_3= RULE_QUOTED_ID ) ;
6634 EObject lv_targetMultiplicity_6_0 = null; 9998 public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
6635 9999 AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
6636 EObject lv_target_7_0 = null;
6637 10000
10001 Token this_ID_0=null;
10002 Token kw=null;
10003 Token this_ID_2=null;
10004 Token this_QUOTED_ID_3=null;
6638 10005
6639 10006
6640 enterRule(); 10007 enterRule();
10008 HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
6641 10009
6642 try { 10010 try {
6643 // InternalSolverLanguage.g:2299:2: ( ( ( (lv_containment_0_0= 'containment' ) )? otherlv_1= 'relation' ( (lv_symbol_2_0= ruleModelSymbol ) ) otherlv_3= ':' ( (lv_sourceMultiplicity_4_0= ruleMultiplicityDefinition ) )? ( (lv_source_5_0= ruleSymbol ) ) ( (lv_targetMultiplicity_6_0= ruleMultiplicityDefinition ) )? ( (lv_target_7_0= ruleSymbol ) ) ) ) 10011 // InternalSolverLanguage.g:3490:2: ( ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) | this_QUOTED_ID_3= RULE_QUOTED_ID ) )
6644 // InternalSolverLanguage.g:2300:2: ( ( (lv_containment_0_0= 'containment' ) )? otherlv_1= 'relation' ( (lv_symbol_2_0= ruleModelSymbol ) ) otherlv_3= ':' ( (lv_sourceMultiplicity_4_0= ruleMultiplicityDefinition ) )? ( (lv_source_5_0= ruleSymbol ) ) ( (lv_targetMultiplicity_6_0= ruleMultiplicityDefinition ) )? ( (lv_target_7_0= ruleSymbol ) ) ) 10012 // InternalSolverLanguage.g:3491:2: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) | this_QUOTED_ID_3= RULE_QUOTED_ID )
6645 { 10013 {
6646 // InternalSolverLanguage.g:2300:2: ( ( (lv_containment_0_0= 'containment' ) )? otherlv_1= 'relation' ( (lv_symbol_2_0= ruleModelSymbol ) ) otherlv_3= ':' ( (lv_sourceMultiplicity_4_0= ruleMultiplicityDefinition ) )? ( (lv_source_5_0= ruleSymbol ) ) ( (lv_targetMultiplicity_6_0= ruleMultiplicityDefinition ) )? ( (lv_target_7_0= ruleSymbol ) ) ) 10014 // InternalSolverLanguage.g:3491:2: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) | this_QUOTED_ID_3= RULE_QUOTED_ID )
6647 // InternalSolverLanguage.g:2301:3: ( (lv_containment_0_0= 'containment' ) )? otherlv_1= 'relation' ( (lv_symbol_2_0= ruleModelSymbol ) ) otherlv_3= ':' ( (lv_sourceMultiplicity_4_0= ruleMultiplicityDefinition ) )? ( (lv_source_5_0= ruleSymbol ) ) ( (lv_targetMultiplicity_6_0= ruleMultiplicityDefinition ) )? ( (lv_target_7_0= ruleSymbol ) )
6648 {
6649 // InternalSolverLanguage.g:2301:3: ( (lv_containment_0_0= 'containment' ) )?
6650 int alt44=2; 10015 int alt44=2;
6651 int LA44_0 = input.LA(1); 10016 int LA44_0 = input.LA(1);
6652 10017
6653 if ( (LA44_0==39) ) { 10018 if ( (LA44_0==RULE_ID) ) {
6654 alt44=1; 10019 alt44=1;
6655 } 10020 }
10021 else if ( (LA44_0==RULE_QUOTED_ID) ) {
10022 alt44=2;
10023 }
10024 else {
10025 if (state.backtracking>0) {state.failed=true; return current;}
10026 NoViableAltException nvae =
10027 new NoViableAltException("", 44, 0, input);
10028
10029 throw nvae;
10030 }
6656 switch (alt44) { 10031 switch (alt44) {
6657 case 1 : 10032 case 1 :
6658 // InternalSolverLanguage.g:2302:4: (lv_containment_0_0= 'containment' ) 10033 // InternalSolverLanguage.g:3492:3: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
6659 { 10034 {
6660 // InternalSolverLanguage.g:2302:4: (lv_containment_0_0= 'containment' ) 10035 // InternalSolverLanguage.g:3492:3: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
6661 // InternalSolverLanguage.g:2303:5: lv_containment_0_0= 'containment' 10036 // InternalSolverLanguage.g:3493:4: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
6662 { 10037 {
6663 lv_containment_0_0=(Token)match(input,39,FOLLOW_34); 10038 this_ID_0=(Token)match(input,RULE_ID,FOLLOW_53); if (state.failed) return current;
10039 if ( state.backtracking==0 ) {
6664 10040
6665 newLeafNode(lv_containment_0_0, grammarAccess.getGlobalRelationInterpretationAccess().getContainmentContainmentKeyword_0_0()); 10041 current.merge(this_ID_0);
6666 10042
10043 }
10044 if ( state.backtracking==0 ) {
10045
10046 newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0_0());
10047
10048 }
10049 // InternalSolverLanguage.g:3500:4: (kw= '.' this_ID_2= RULE_ID )*
10050 loop43:
10051 do {
10052 int alt43=2;
10053 int LA43_0 = input.LA(1);
10054
10055 if ( (LA43_0==22) ) {
10056 int LA43_2 = input.LA(2);
10057
10058 if ( (LA43_2==RULE_ID) ) {
10059 alt43=1;
10060 }
10061
10062
10063 }
10064
10065
10066 switch (alt43) {
10067 case 1 :
10068 // InternalSolverLanguage.g:3501:5: kw= '.' this_ID_2= RULE_ID
10069 {
10070 kw=(Token)match(input,22,FOLLOW_40); if (state.failed) return current;
10071 if ( state.backtracking==0 ) {
10072
10073 current.merge(kw);
10074 newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_0_1_0());
10075
10076 }
10077 this_ID_2=(Token)match(input,RULE_ID,FOLLOW_53); if (state.failed) return current;
10078 if ( state.backtracking==0 ) {
10079
10080 current.merge(this_ID_2);
10081
10082 }
10083 if ( state.backtracking==0 ) {
10084
10085 newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0_1_1());
10086
10087 }
10088
10089 }
10090 break;
10091
10092 default :
10093 break loop43;
10094 }
10095 } while (true);
6667 10096
6668 if (current==null) {
6669 current = createModelElement(grammarAccess.getGlobalRelationInterpretationRule());
6670 }
6671 setWithLastConsumed(current, "containment", true, "containment");
6672
6673 10097
6674 } 10098 }
6675 10099
6676 10100
6677 } 10101 }
6678 break; 10102 break;
10103 case 2 :
10104 // InternalSolverLanguage.g:3516:3: this_QUOTED_ID_3= RULE_QUOTED_ID
10105 {
10106 this_QUOTED_ID_3=(Token)match(input,RULE_QUOTED_ID,FOLLOW_2); if (state.failed) return current;
10107 if ( state.backtracking==0 ) {
6679 10108
6680 } 10109 current.merge(this_QUOTED_ID_3);
10110
10111 }
10112 if ( state.backtracking==0 ) {
6681 10113
6682 otherlv_1=(Token)match(input,40,FOLLOW_12); 10114 newLeafNode(this_QUOTED_ID_3, grammarAccess.getQualifiedNameAccess().getQUOTED_IDTerminalRuleCall_1());
10115
10116 }
6683 10117
6684 newLeafNode(otherlv_1, grammarAccess.getGlobalRelationInterpretationAccess().getRelationKeyword_1()); 10118 }
6685 10119 break;
6686 // InternalSolverLanguage.g:2319:3: ( (lv_symbol_2_0= ruleModelSymbol ) )
6687 // InternalSolverLanguage.g:2320:4: (lv_symbol_2_0= ruleModelSymbol )
6688 {
6689 // InternalSolverLanguage.g:2320:4: (lv_symbol_2_0= ruleModelSymbol )
6690 // InternalSolverLanguage.g:2321:5: lv_symbol_2_0= ruleModelSymbol
6691 {
6692 10120
6693 newCompositeNode(grammarAccess.getGlobalRelationInterpretationAccess().getSymbolModelSymbolParserRuleCall_2_0()); 10121 }
6694
6695 pushFollow(FOLLOW_10);
6696 lv_symbol_2_0=ruleModelSymbol();
6697 10122
6698 state._fsp--;
6699 10123
10124 }
6700 10125
6701 if (current==null) { 10126 if ( state.backtracking==0 ) {
6702 current = createModelElementForParent(grammarAccess.getGlobalRelationInterpretationRule());
6703 }
6704 set(
6705 current,
6706 "symbol",
6707 lv_symbol_2_0,
6708 "org.eclipse.viatra.solver.language.SolverLanguage.ModelSymbol");
6709 afterParserOrEnumRuleCall();
6710
6711 10127
6712 } 10128 leaveRule();
6713 10129
10130 }
10131 }
6714 10132
10133 catch (RecognitionException re) {
10134 recover(input,re);
10135 appendSkippedTokens();
6715 } 10136 }
10137 finally {
10138
10139 myHiddenTokenState.restore();
10140
10141 }
10142 return current;
10143 }
10144 // $ANTLR end "ruleQualifiedName"
10145
6716 10146
6717 otherlv_3=(Token)match(input,20,FOLLOW_33); 10147 // $ANTLR start "ruleMetricType"
10148 // InternalSolverLanguage.g:3530:1: ruleMetricType returns [Enumerator current=null] : ( (enumLiteral_0= 'int' ) | (enumLiteral_1= 'real' ) ) ;
10149 public final Enumerator ruleMetricType() throws RecognitionException {
10150 Enumerator current = null;
6718 10151
6719 newLeafNode(otherlv_3, grammarAccess.getGlobalRelationInterpretationAccess().getColonKeyword_3()); 10152 Token enumLiteral_0=null;
6720 10153 Token enumLiteral_1=null;
6721 // InternalSolverLanguage.g:2342:3: ( (lv_sourceMultiplicity_4_0= ruleMultiplicityDefinition ) )? 10154
10155
10156 enterRule();
10157
10158 try {
10159 // InternalSolverLanguage.g:3536:2: ( ( (enumLiteral_0= 'int' ) | (enumLiteral_1= 'real' ) ) )
10160 // InternalSolverLanguage.g:3537:2: ( (enumLiteral_0= 'int' ) | (enumLiteral_1= 'real' ) )
10161 {
10162 // InternalSolverLanguage.g:3537:2: ( (enumLiteral_0= 'int' ) | (enumLiteral_1= 'real' ) )
6722 int alt45=2; 10163 int alt45=2;
6723 int LA45_0 = input.LA(1); 10164 int LA45_0 = input.LA(1);
6724 10165
6725 if ( (LA45_0==RULE_INT) ) { 10166 if ( (LA45_0==50) ) {
6726 alt45=1; 10167 alt45=1;
6727 } 10168 }
10169 else if ( (LA45_0==51) ) {
10170 alt45=2;
10171 }
10172 else {
10173 if (state.backtracking>0) {state.failed=true; return current;}
10174 NoViableAltException nvae =
10175 new NoViableAltException("", 45, 0, input);
10176
10177 throw nvae;
10178 }
6728 switch (alt45) { 10179 switch (alt45) {
6729 case 1 : 10180 case 1 :
6730 // InternalSolverLanguage.g:2343:4: (lv_sourceMultiplicity_4_0= ruleMultiplicityDefinition ) 10181 // InternalSolverLanguage.g:3538:3: (enumLiteral_0= 'int' )
6731 { 10182 {
6732 // InternalSolverLanguage.g:2343:4: (lv_sourceMultiplicity_4_0= ruleMultiplicityDefinition ) 10183 // InternalSolverLanguage.g:3538:3: (enumLiteral_0= 'int' )
6733 // InternalSolverLanguage.g:2344:5: lv_sourceMultiplicity_4_0= ruleMultiplicityDefinition 10184 // InternalSolverLanguage.g:3539:4: enumLiteral_0= 'int'
6734 { 10185 {
10186 enumLiteral_0=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
10187 if ( state.backtracking==0 ) {
6735 10188
6736 newCompositeNode(grammarAccess.getGlobalRelationInterpretationAccess().getSourceMultiplicityMultiplicityDefinitionParserRuleCall_4_0()); 10189 current = grammarAccess.getMetricTypeAccess().getINTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
6737 10190 newLeafNode(enumLiteral_0, grammarAccess.getMetricTypeAccess().getINTEnumLiteralDeclaration_0());
6738 pushFollow(FOLLOW_21); 10191
6739 lv_sourceMultiplicity_4_0=ruleMultiplicityDefinition(); 10192 }
6740 10193
6741 state._fsp--; 10194 }
6742 10195
6743 10196
6744 if (current==null) { 10197 }
6745 current = createModelElementForParent(grammarAccess.getGlobalRelationInterpretationRule()); 10198 break;
6746 } 10199 case 2 :
6747 set( 10200 // InternalSolverLanguage.g:3546:3: (enumLiteral_1= 'real' )
6748 current, 10201 {
6749 "sourceMultiplicity", 10202 // InternalSolverLanguage.g:3546:3: (enumLiteral_1= 'real' )
6750 lv_sourceMultiplicity_4_0, 10203 // InternalSolverLanguage.g:3547:4: enumLiteral_1= 'real'
6751 "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicityDefinition"); 10204 {
6752 afterParserOrEnumRuleCall(); 10205 enumLiteral_1=(Token)match(input,51,FOLLOW_2); if (state.failed) return current;
6753 10206 if ( state.backtracking==0 ) {
10207
10208 current = grammarAccess.getMetricTypeAccess().getREALEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
10209 newLeafNode(enumLiteral_1, grammarAccess.getMetricTypeAccess().getREALEnumLiteralDeclaration_1());
10210
10211 }
6754 10212
6755 } 10213 }
6756 10214
@@ -6760,70 +10218,221 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6760 10218
6761 } 10219 }
6762 10220
6763 // InternalSolverLanguage.g:2361:3: ( (lv_source_5_0= ruleSymbol ) )
6764 // InternalSolverLanguage.g:2362:4: (lv_source_5_0= ruleSymbol )
6765 {
6766 // InternalSolverLanguage.g:2362:4: (lv_source_5_0= ruleSymbol )
6767 // InternalSolverLanguage.g:2363:5: lv_source_5_0= ruleSymbol
6768 {
6769 10221
6770 newCompositeNode(grammarAccess.getGlobalRelationInterpretationAccess().getSourceSymbolParserRuleCall_5_0()); 10222 }
6771
6772 pushFollow(FOLLOW_33);
6773 lv_source_5_0=ruleSymbol();
6774 10223
6775 state._fsp--; 10224 if ( state.backtracking==0 ) {
6776 10225
10226 leaveRule();
6777 10227
6778 if (current==null) { 10228 }
6779 current = createModelElementForParent(grammarAccess.getGlobalRelationInterpretationRule()); 10229 }
6780 }
6781 set(
6782 current,
6783 "source",
6784 lv_source_5_0,
6785 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol");
6786 afterParserOrEnumRuleCall();
6787
6788 10230
10231 catch (RecognitionException re) {
10232 recover(input,re);
10233 appendSkippedTokens();
6789 } 10234 }
10235 finally {
10236 }
10237 return current;
10238 }
10239 // $ANTLR end "ruleMetricType"
6790 10240
6791 10241
6792 } 10242 // $ANTLR start "ruleComparisonOperator"
10243 // InternalSolverLanguage.g:3557:1: ruleComparisonOperator returns [Enumerator current=null] : ( (enumLiteral_0= '==' ) | (enumLiteral_1= '!=' ) | (enumLiteral_2= '<' ) | (enumLiteral_3= '<=' ) | (enumLiteral_4= '>' ) | (enumLiteral_5= '>=' ) | (enumLiteral_6= 'in' ) ) ;
10244 public final Enumerator ruleComparisonOperator() throws RecognitionException {
10245 Enumerator current = null;
10246
10247 Token enumLiteral_0=null;
10248 Token enumLiteral_1=null;
10249 Token enumLiteral_2=null;
10250 Token enumLiteral_3=null;
10251 Token enumLiteral_4=null;
10252 Token enumLiteral_5=null;
10253 Token enumLiteral_6=null;
6793 10254
6794 // InternalSolverLanguage.g:2380:3: ( (lv_targetMultiplicity_6_0= ruleMultiplicityDefinition ) )?
6795 int alt46=2;
6796 int LA46_0 = input.LA(1);
6797 10255
6798 if ( (LA46_0==RULE_INT) ) { 10256 enterRule();
10257
10258 try {
10259 // InternalSolverLanguage.g:3563:2: ( ( (enumLiteral_0= '==' ) | (enumLiteral_1= '!=' ) | (enumLiteral_2= '<' ) | (enumLiteral_3= '<=' ) | (enumLiteral_4= '>' ) | (enumLiteral_5= '>=' ) | (enumLiteral_6= 'in' ) ) )
10260 // InternalSolverLanguage.g:3564:2: ( (enumLiteral_0= '==' ) | (enumLiteral_1= '!=' ) | (enumLiteral_2= '<' ) | (enumLiteral_3= '<=' ) | (enumLiteral_4= '>' ) | (enumLiteral_5= '>=' ) | (enumLiteral_6= 'in' ) )
10261 {
10262 // InternalSolverLanguage.g:3564:2: ( (enumLiteral_0= '==' ) | (enumLiteral_1= '!=' ) | (enumLiteral_2= '<' ) | (enumLiteral_3= '<=' ) | (enumLiteral_4= '>' ) | (enumLiteral_5= '>=' ) | (enumLiteral_6= 'in' ) )
10263 int alt46=7;
10264 switch ( input.LA(1) ) {
10265 case 47:
10266 {
6799 alt46=1; 10267 alt46=1;
10268 }
10269 break;
10270 case 52:
10271 {
10272 alt46=2;
10273 }
10274 break;
10275 case 53:
10276 {
10277 alt46=3;
10278 }
10279 break;
10280 case 48:
10281 {
10282 alt46=4;
10283 }
10284 break;
10285 case 54:
10286 {
10287 alt46=5;
10288 }
10289 break;
10290 case 49:
10291 {
10292 alt46=6;
10293 }
10294 break;
10295 case 55:
10296 {
10297 alt46=7;
10298 }
10299 break;
10300 default:
10301 if (state.backtracking>0) {state.failed=true; return current;}
10302 NoViableAltException nvae =
10303 new NoViableAltException("", 46, 0, input);
10304
10305 throw nvae;
6800 } 10306 }
10307
6801 switch (alt46) { 10308 switch (alt46) {
6802 case 1 : 10309 case 1 :
6803 // InternalSolverLanguage.g:2381:4: (lv_targetMultiplicity_6_0= ruleMultiplicityDefinition ) 10310 // InternalSolverLanguage.g:3565:3: (enumLiteral_0= '==' )
6804 { 10311 {
6805 // InternalSolverLanguage.g:2381:4: (lv_targetMultiplicity_6_0= ruleMultiplicityDefinition ) 10312 // InternalSolverLanguage.g:3565:3: (enumLiteral_0= '==' )
6806 // InternalSolverLanguage.g:2382:5: lv_targetMultiplicity_6_0= ruleMultiplicityDefinition 10313 // InternalSolverLanguage.g:3566:4: enumLiteral_0= '=='
6807 { 10314 {
10315 enumLiteral_0=(Token)match(input,47,FOLLOW_2); if (state.failed) return current;
10316 if ( state.backtracking==0 ) {
6808 10317
6809 newCompositeNode(grammarAccess.getGlobalRelationInterpretationAccess().getTargetMultiplicityMultiplicityDefinitionParserRuleCall_6_0()); 10318 current = grammarAccess.getComparisonOperatorAccess().getEQEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
6810 10319 newLeafNode(enumLiteral_0, grammarAccess.getComparisonOperatorAccess().getEQEnumLiteralDeclaration_0());
6811 pushFollow(FOLLOW_21); 10320
6812 lv_targetMultiplicity_6_0=ruleMultiplicityDefinition(); 10321 }
6813 10322
6814 state._fsp--; 10323 }
10324
10325
10326 }
10327 break;
10328 case 2 :
10329 // InternalSolverLanguage.g:3573:3: (enumLiteral_1= '!=' )
10330 {
10331 // InternalSolverLanguage.g:3573:3: (enumLiteral_1= '!=' )
10332 // InternalSolverLanguage.g:3574:4: enumLiteral_1= '!='
10333 {
10334 enumLiteral_1=(Token)match(input,52,FOLLOW_2); if (state.failed) return current;
10335 if ( state.backtracking==0 ) {
10336
10337 current = grammarAccess.getComparisonOperatorAccess().getNOT_EQEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
10338 newLeafNode(enumLiteral_1, grammarAccess.getComparisonOperatorAccess().getNOT_EQEnumLiteralDeclaration_1());
10339
10340 }
10341
10342 }
6815 10343
6816 10344
6817 if (current==null) { 10345 }
6818 current = createModelElementForParent(grammarAccess.getGlobalRelationInterpretationRule()); 10346 break;
6819 } 10347 case 3 :
6820 set( 10348 // InternalSolverLanguage.g:3581:3: (enumLiteral_2= '<' )
6821 current, 10349 {
6822 "targetMultiplicity", 10350 // InternalSolverLanguage.g:3581:3: (enumLiteral_2= '<' )
6823 lv_targetMultiplicity_6_0, 10351 // InternalSolverLanguage.g:3582:4: enumLiteral_2= '<'
6824 "org.eclipse.viatra.solver.language.SolverLanguage.MultiplicityDefinition"); 10352 {
6825 afterParserOrEnumRuleCall(); 10353 enumLiteral_2=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
6826 10354 if ( state.backtracking==0 ) {
10355
10356 current = grammarAccess.getComparisonOperatorAccess().getLESSEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
10357 newLeafNode(enumLiteral_2, grammarAccess.getComparisonOperatorAccess().getLESSEnumLiteralDeclaration_2());
10358
10359 }
10360
10361 }
10362
10363
10364 }
10365 break;
10366 case 4 :
10367 // InternalSolverLanguage.g:3589:3: (enumLiteral_3= '<=' )
10368 {
10369 // InternalSolverLanguage.g:3589:3: (enumLiteral_3= '<=' )
10370 // InternalSolverLanguage.g:3590:4: enumLiteral_3= '<='
10371 {
10372 enumLiteral_3=(Token)match(input,48,FOLLOW_2); if (state.failed) return current;
10373 if ( state.backtracking==0 ) {
10374
10375 current = grammarAccess.getComparisonOperatorAccess().getLESS_EQEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
10376 newLeafNode(enumLiteral_3, grammarAccess.getComparisonOperatorAccess().getLESS_EQEnumLiteralDeclaration_3());
10377
10378 }
10379
10380 }
10381
10382
10383 }
10384 break;
10385 case 5 :
10386 // InternalSolverLanguage.g:3597:3: (enumLiteral_4= '>' )
10387 {
10388 // InternalSolverLanguage.g:3597:3: (enumLiteral_4= '>' )
10389 // InternalSolverLanguage.g:3598:4: enumLiteral_4= '>'
10390 {
10391 enumLiteral_4=(Token)match(input,54,FOLLOW_2); if (state.failed) return current;
10392 if ( state.backtracking==0 ) {
10393
10394 current = grammarAccess.getComparisonOperatorAccess().getGREATEREnumLiteralDeclaration_4().getEnumLiteral().getInstance();
10395 newLeafNode(enumLiteral_4, grammarAccess.getComparisonOperatorAccess().getGREATEREnumLiteralDeclaration_4());
10396
10397 }
10398
10399 }
10400
10401
10402 }
10403 break;
10404 case 6 :
10405 // InternalSolverLanguage.g:3605:3: (enumLiteral_5= '>=' )
10406 {
10407 // InternalSolverLanguage.g:3605:3: (enumLiteral_5= '>=' )
10408 // InternalSolverLanguage.g:3606:4: enumLiteral_5= '>='
10409 {
10410 enumLiteral_5=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
10411 if ( state.backtracking==0 ) {
10412
10413 current = grammarAccess.getComparisonOperatorAccess().getGREATER_EQEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
10414 newLeafNode(enumLiteral_5, grammarAccess.getComparisonOperatorAccess().getGREATER_EQEnumLiteralDeclaration_5());
10415
10416 }
10417
10418 }
10419
10420
10421 }
10422 break;
10423 case 7 :
10424 // InternalSolverLanguage.g:3613:3: (enumLiteral_6= 'in' )
10425 {
10426 // InternalSolverLanguage.g:3613:3: (enumLiteral_6= 'in' )
10427 // InternalSolverLanguage.g:3614:4: enumLiteral_6= 'in'
10428 {
10429 enumLiteral_6=(Token)match(input,55,FOLLOW_2); if (state.failed) return current;
10430 if ( state.backtracking==0 ) {
10431
10432 current = grammarAccess.getComparisonOperatorAccess().getINEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
10433 newLeafNode(enumLiteral_6, grammarAccess.getComparisonOperatorAccess().getINEnumLiteralDeclaration_6());
10434
10435 }
6827 10436
6828 } 10437 }
6829 10438
@@ -6833,46 +10442,109 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6833 10442
6834 } 10443 }
6835 10444
6836 // InternalSolverLanguage.g:2399:3: ( (lv_target_7_0= ruleSymbol ) )
6837 // InternalSolverLanguage.g:2400:4: (lv_target_7_0= ruleSymbol )
6838 {
6839 // InternalSolverLanguage.g:2400:4: (lv_target_7_0= ruleSymbol )
6840 // InternalSolverLanguage.g:2401:5: lv_target_7_0= ruleSymbol
6841 {
6842 10445
6843 newCompositeNode(grammarAccess.getGlobalRelationInterpretationAccess().getTargetSymbolParserRuleCall_7_0()); 10446 }
6844
6845 pushFollow(FOLLOW_2);
6846 lv_target_7_0=ruleSymbol();
6847 10447
6848 state._fsp--; 10448 if ( state.backtracking==0 ) {
6849 10449
10450 leaveRule();
6850 10451
6851 if (current==null) { 10452 }
6852 current = createModelElementForParent(grammarAccess.getGlobalRelationInterpretationRule()); 10453 }
6853 }
6854 set(
6855 current,
6856 "target",
6857 lv_target_7_0,
6858 "org.eclipse.viatra.solver.language.SolverLanguage.Symbol");
6859 afterParserOrEnumRuleCall();
6860
6861 10454
10455 catch (RecognitionException re) {
10456 recover(input,re);
10457 appendSkippedTokens();
6862 } 10458 }
10459 finally {
10460 }
10461 return current;
10462 }
10463 // $ANTLR end "ruleComparisonOperator"
10464
6863 10465
10466 // $ANTLR start "ruleAdditiveBinaryOperator"
10467 // InternalSolverLanguage.g:3624:1: ruleAdditiveBinaryOperator returns [Enumerator current=null] : ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) ) ;
10468 public final Enumerator ruleAdditiveBinaryOperator() throws RecognitionException {
10469 Enumerator current = null;
10470
10471 Token enumLiteral_0=null;
10472 Token enumLiteral_1=null;
10473
10474
10475 enterRule();
10476
10477 try {
10478 // InternalSolverLanguage.g:3630:2: ( ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) ) )
10479 // InternalSolverLanguage.g:3631:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
10480 {
10481 // InternalSolverLanguage.g:3631:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
10482 int alt47=2;
10483 int LA47_0 = input.LA(1);
10484
10485 if ( (LA47_0==56) ) {
10486 alt47=1;
10487 }
10488 else if ( (LA47_0==57) ) {
10489 alt47=2;
10490 }
10491 else {
10492 if (state.backtracking>0) {state.failed=true; return current;}
10493 NoViableAltException nvae =
10494 new NoViableAltException("", 47, 0, input);
6864 10495
10496 throw nvae;
6865 } 10497 }
10498 switch (alt47) {
10499 case 1 :
10500 // InternalSolverLanguage.g:3632:3: (enumLiteral_0= '+' )
10501 {
10502 // InternalSolverLanguage.g:3632:3: (enumLiteral_0= '+' )
10503 // InternalSolverLanguage.g:3633:4: enumLiteral_0= '+'
10504 {
10505 enumLiteral_0=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
10506 if ( state.backtracking==0 ) {
10507
10508 current = grammarAccess.getAdditiveBinaryOperatorAccess().getADDEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
10509 newLeafNode(enumLiteral_0, grammarAccess.getAdditiveBinaryOperatorAccess().getADDEnumLiteralDeclaration_0());
10510
10511 }
10512
10513 }
6866 10514
6867 10515
10516 }
10517 break;
10518 case 2 :
10519 // InternalSolverLanguage.g:3640:3: (enumLiteral_1= '-' )
10520 {
10521 // InternalSolverLanguage.g:3640:3: (enumLiteral_1= '-' )
10522 // InternalSolverLanguage.g:3641:4: enumLiteral_1= '-'
10523 {
10524 enumLiteral_1=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
10525 if ( state.backtracking==0 ) {
10526
10527 current = grammarAccess.getAdditiveBinaryOperatorAccess().getSUBEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
10528 newLeafNode(enumLiteral_1, grammarAccess.getAdditiveBinaryOperatorAccess().getSUBEnumLiteralDeclaration_1());
10529
10530 }
10531
10532 }
10533
10534
10535 }
10536 break;
10537
6868 } 10538 }
6869 10539
6870 10540
6871 } 10541 }
6872 10542
10543 if ( state.backtracking==0 ) {
6873 10544
6874 leaveRule(); 10545 leaveRule();
6875 10546
10547 }
6876 } 10548 }
6877 10549
6878 catch (RecognitionException re) { 10550 catch (RecognitionException re) {
@@ -6883,32 +10555,91 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6883 } 10555 }
6884 return current; 10556 return current;
6885 } 10557 }
6886 // $ANTLR end "ruleGlobalRelationInterpretation" 10558 // $ANTLR end "ruleAdditiveBinaryOperator"
6887 10559
6888 10560
6889 // $ANTLR start "entryRuleMultiplicityDefinition" 10561 // $ANTLR start "ruleMultiplicativeBinaryOperator"
6890 // InternalSolverLanguage.g:2422:1: entryRuleMultiplicityDefinition returns [EObject current=null] : iv_ruleMultiplicityDefinition= ruleMultiplicityDefinition EOF ; 10562 // InternalSolverLanguage.g:3651:1: ruleMultiplicativeBinaryOperator returns [Enumerator current=null] : ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) ) ;
6891 public final EObject entryRuleMultiplicityDefinition() throws RecognitionException { 10563 public final Enumerator ruleMultiplicativeBinaryOperator() throws RecognitionException {
6892 EObject current = null; 10564 Enumerator current = null;
10565
10566 Token enumLiteral_0=null;
10567 Token enumLiteral_1=null;
6893 10568
6894 EObject iv_ruleMultiplicityDefinition = null;
6895 10569
10570 enterRule();
6896 10571
6897 try { 10572 try {
6898 // InternalSolverLanguage.g:2422:63: (iv_ruleMultiplicityDefinition= ruleMultiplicityDefinition EOF ) 10573 // InternalSolverLanguage.g:3657:2: ( ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) ) )
6899 // InternalSolverLanguage.g:2423:2: iv_ruleMultiplicityDefinition= ruleMultiplicityDefinition EOF 10574 // InternalSolverLanguage.g:3658:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) )
6900 { 10575 {
6901 newCompositeNode(grammarAccess.getMultiplicityDefinitionRule()); 10576 // InternalSolverLanguage.g:3658:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) )
6902 pushFollow(FOLLOW_1); 10577 int alt48=2;
6903 iv_ruleMultiplicityDefinition=ruleMultiplicityDefinition(); 10578 int LA48_0 = input.LA(1);
6904 10579
6905 state._fsp--; 10580 if ( (LA48_0==35) ) {
10581 alt48=1;
10582 }
10583 else if ( (LA48_0==58) ) {
10584 alt48=2;
10585 }
10586 else {
10587 if (state.backtracking>0) {state.failed=true; return current;}
10588 NoViableAltException nvae =
10589 new NoViableAltException("", 48, 0, input);
10590
10591 throw nvae;
10592 }
10593 switch (alt48) {
10594 case 1 :
10595 // InternalSolverLanguage.g:3659:3: (enumLiteral_0= '*' )
10596 {
10597 // InternalSolverLanguage.g:3659:3: (enumLiteral_0= '*' )
10598 // InternalSolverLanguage.g:3660:4: enumLiteral_0= '*'
10599 {
10600 enumLiteral_0=(Token)match(input,35,FOLLOW_2); if (state.failed) return current;
10601 if ( state.backtracking==0 ) {
10602
10603 current = grammarAccess.getMultiplicativeBinaryOperatorAccess().getMULEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
10604 newLeafNode(enumLiteral_0, grammarAccess.getMultiplicativeBinaryOperatorAccess().getMULEnumLiteralDeclaration_0());
10605
10606 }
10607
10608 }
10609
10610
10611 }
10612 break;
10613 case 2 :
10614 // InternalSolverLanguage.g:3667:3: (enumLiteral_1= '/' )
10615 {
10616 // InternalSolverLanguage.g:3667:3: (enumLiteral_1= '/' )
10617 // InternalSolverLanguage.g:3668:4: enumLiteral_1= '/'
10618 {
10619 enumLiteral_1=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
10620 if ( state.backtracking==0 ) {
10621
10622 current = grammarAccess.getMultiplicativeBinaryOperatorAccess().getDIVEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
10623 newLeafNode(enumLiteral_1, grammarAccess.getMultiplicativeBinaryOperatorAccess().getDIVEnumLiteralDeclaration_1());
10624
10625 }
10626
10627 }
10628
10629
10630 }
10631 break;
10632
10633 }
6906 10634
6907 current =iv_ruleMultiplicityDefinition;
6908 match(input,EOF,FOLLOW_2);
6909 10635
6910 } 10636 }
6911 10637
10638 if ( state.backtracking==0 ) {
10639
10640 leaveRule();
10641
10642 }
6912 } 10643 }
6913 10644
6914 catch (RecognitionException re) { 10645 catch (RecognitionException re) {
@@ -6919,102 +10650,517 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
6919 } 10650 }
6920 return current; 10651 return current;
6921 } 10652 }
6922 // $ANTLR end "entryRuleMultiplicityDefinition" 10653 // $ANTLR end "ruleMultiplicativeBinaryOperator"
6923 10654
6924 10655
6925 // $ANTLR start "ruleMultiplicityDefinition" 10656 // $ANTLR start "ruleExponentialOp"
6926 // InternalSolverLanguage.g:2429:1: ruleMultiplicityDefinition returns [EObject current=null] : ( ( (lv_lower_0_0= RULE_INT ) ) otherlv_1= '..' ( ( (lv_upper_2_0= RULE_INT ) ) | ( (lv_unlimitedUpper_3_0= '*' ) ) ) ) ; 10657 // InternalSolverLanguage.g:3678:1: ruleExponentialOp returns [Enumerator current=null] : (enumLiteral_0= '^' ) ;
6927 public final EObject ruleMultiplicityDefinition() throws RecognitionException { 10658 public final Enumerator ruleExponentialOp() throws RecognitionException {
6928 EObject current = null; 10659 Enumerator current = null;
6929 10660
6930 Token lv_lower_0_0=null; 10661 Token enumLiteral_0=null;
6931 Token otherlv_1=null;
6932 Token lv_upper_2_0=null;
6933 Token lv_unlimitedUpper_3_0=null;
6934 10662
6935 10663
6936 enterRule(); 10664 enterRule();
6937 10665
6938 try { 10666 try {
6939 // InternalSolverLanguage.g:2435:2: ( ( ( (lv_lower_0_0= RULE_INT ) ) otherlv_1= '..' ( ( (lv_upper_2_0= RULE_INT ) ) | ( (lv_unlimitedUpper_3_0= '*' ) ) ) ) ) 10667 // InternalSolverLanguage.g:3684:2: ( (enumLiteral_0= '^' ) )
6940 // InternalSolverLanguage.g:2436:2: ( ( (lv_lower_0_0= RULE_INT ) ) otherlv_1= '..' ( ( (lv_upper_2_0= RULE_INT ) ) | ( (lv_unlimitedUpper_3_0= '*' ) ) ) ) 10668 // InternalSolverLanguage.g:3685:2: (enumLiteral_0= '^' )
6941 {
6942 // InternalSolverLanguage.g:2436:2: ( ( (lv_lower_0_0= RULE_INT ) ) otherlv_1= '..' ( ( (lv_upper_2_0= RULE_INT ) ) | ( (lv_unlimitedUpper_3_0= '*' ) ) ) )
6943 // InternalSolverLanguage.g:2437:3: ( (lv_lower_0_0= RULE_INT ) ) otherlv_1= '..' ( ( (lv_upper_2_0= RULE_INT ) ) | ( (lv_unlimitedUpper_3_0= '*' ) ) )
6944 { 10669 {
6945 // InternalSolverLanguage.g:2437:3: ( (lv_lower_0_0= RULE_INT ) ) 10670 // InternalSolverLanguage.g:3685:2: (enumLiteral_0= '^' )
6946 // InternalSolverLanguage.g:2438:4: (lv_lower_0_0= RULE_INT ) 10671 // InternalSolverLanguage.g:3686:3: enumLiteral_0= '^'
6947 { 10672 {
6948 // InternalSolverLanguage.g:2438:4: (lv_lower_0_0= RULE_INT ) 10673 enumLiteral_0=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
6949 // InternalSolverLanguage.g:2439:5: lv_lower_0_0= RULE_INT 10674 if ( state.backtracking==0 ) {
10675
10676 current = grammarAccess.getExponentialOpAccess().getPOWEnumLiteralDeclaration().getEnumLiteral().getInstance();
10677 newLeafNode(enumLiteral_0, grammarAccess.getExponentialOpAccess().getPOWEnumLiteralDeclaration());
10678
10679 }
10680
10681 }
10682
10683
10684 }
10685
10686 if ( state.backtracking==0 ) {
10687
10688 leaveRule();
10689
10690 }
10691 }
10692
10693 catch (RecognitionException re) {
10694 recover(input,re);
10695 appendSkippedTokens();
10696 }
10697 finally {
10698 }
10699 return current;
10700 }
10701 // $ANTLR end "ruleExponentialOp"
10702
10703
10704 // $ANTLR start "ruleUnaryOp"
10705 // InternalSolverLanguage.g:3695:1: ruleUnaryOp returns [Enumerator current=null] : ( (enumLiteral_0= '!' ) | (enumLiteral_1= '+' ) | (enumLiteral_2= '-' ) | (enumLiteral_3= 'may' ) | (enumLiteral_4= 'must' ) | (enumLiteral_5= 'current' ) ) ;
10706 public final Enumerator ruleUnaryOp() throws RecognitionException {
10707 Enumerator current = null;
10708
10709 Token enumLiteral_0=null;
10710 Token enumLiteral_1=null;
10711 Token enumLiteral_2=null;
10712 Token enumLiteral_3=null;
10713 Token enumLiteral_4=null;
10714 Token enumLiteral_5=null;
10715
10716
10717 enterRule();
10718
10719 try {
10720 // InternalSolverLanguage.g:3701:2: ( ( (enumLiteral_0= '!' ) | (enumLiteral_1= '+' ) | (enumLiteral_2= '-' ) | (enumLiteral_3= 'may' ) | (enumLiteral_4= 'must' ) | (enumLiteral_5= 'current' ) ) )
10721 // InternalSolverLanguage.g:3702:2: ( (enumLiteral_0= '!' ) | (enumLiteral_1= '+' ) | (enumLiteral_2= '-' ) | (enumLiteral_3= 'may' ) | (enumLiteral_4= 'must' ) | (enumLiteral_5= 'current' ) )
6950 { 10722 {
6951 lv_lower_0_0=(Token)match(input,RULE_INT,FOLLOW_35); 10723 // InternalSolverLanguage.g:3702:2: ( (enumLiteral_0= '!' ) | (enumLiteral_1= '+' ) | (enumLiteral_2= '-' ) | (enumLiteral_3= 'may' ) | (enumLiteral_4= 'must' ) | (enumLiteral_5= 'current' ) )
10724 int alt49=6;
10725 switch ( input.LA(1) ) {
10726 case 60:
10727 {
10728 alt49=1;
10729 }
10730 break;
10731 case 56:
10732 {
10733 alt49=2;
10734 }
10735 break;
10736 case 57:
10737 {
10738 alt49=3;
10739 }
10740 break;
10741 case 61:
10742 {
10743 alt49=4;
10744 }
10745 break;
10746 case 62:
10747 {
10748 alt49=5;
10749 }
10750 break;
10751 case 63:
10752 {
10753 alt49=6;
10754 }
10755 break;
10756 default:
10757 if (state.backtracking>0) {state.failed=true; return current;}
10758 NoViableAltException nvae =
10759 new NoViableAltException("", 49, 0, input);
10760
10761 throw nvae;
10762 }
10763
10764 switch (alt49) {
10765 case 1 :
10766 // InternalSolverLanguage.g:3703:3: (enumLiteral_0= '!' )
10767 {
10768 // InternalSolverLanguage.g:3703:3: (enumLiteral_0= '!' )
10769 // InternalSolverLanguage.g:3704:4: enumLiteral_0= '!'
10770 {
10771 enumLiteral_0=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
10772 if ( state.backtracking==0 ) {
10773
10774 current = grammarAccess.getUnaryOpAccess().getNEGEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
10775 newLeafNode(enumLiteral_0, grammarAccess.getUnaryOpAccess().getNEGEnumLiteralDeclaration_0());
10776
10777 }
10778
10779 }
10780
6952 10781
6953 newLeafNode(lv_lower_0_0, grammarAccess.getMultiplicityDefinitionAccess().getLowerINTTerminalRuleCall_0_0()); 10782 }
6954 10783 break;
10784 case 2 :
10785 // InternalSolverLanguage.g:3711:3: (enumLiteral_1= '+' )
10786 {
10787 // InternalSolverLanguage.g:3711:3: (enumLiteral_1= '+' )
10788 // InternalSolverLanguage.g:3712:4: enumLiteral_1= '+'
10789 {
10790 enumLiteral_1=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
10791 if ( state.backtracking==0 ) {
10792
10793 current = grammarAccess.getUnaryOpAccess().getPLUSEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
10794 newLeafNode(enumLiteral_1, grammarAccess.getUnaryOpAccess().getPLUSEnumLiteralDeclaration_1());
10795
10796 }
6955 10797
6956 if (current==null) { 10798 }
6957 current = createModelElement(grammarAccess.getMultiplicityDefinitionRule()); 10799
6958 } 10800
6959 setWithLastConsumed( 10801 }
6960 current, 10802 break;
6961 "lower", 10803 case 3 :
6962 lv_lower_0_0, 10804 // InternalSolverLanguage.g:3719:3: (enumLiteral_2= '-' )
6963 "org.eclipse.xtext.common.Terminals.INT"); 10805 {
6964 10806 // InternalSolverLanguage.g:3719:3: (enumLiteral_2= '-' )
10807 // InternalSolverLanguage.g:3720:4: enumLiteral_2= '-'
10808 {
10809 enumLiteral_2=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
10810 if ( state.backtracking==0 ) {
10811
10812 current = grammarAccess.getUnaryOpAccess().getMINUSEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
10813 newLeafNode(enumLiteral_2, grammarAccess.getUnaryOpAccess().getMINUSEnumLiteralDeclaration_2());
10814
10815 }
10816
10817 }
10818
10819
10820 }
10821 break;
10822 case 4 :
10823 // InternalSolverLanguage.g:3727:3: (enumLiteral_3= 'may' )
10824 {
10825 // InternalSolverLanguage.g:3727:3: (enumLiteral_3= 'may' )
10826 // InternalSolverLanguage.g:3728:4: enumLiteral_3= 'may'
10827 {
10828 enumLiteral_3=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
10829 if ( state.backtracking==0 ) {
10830
10831 current = grammarAccess.getUnaryOpAccess().getMAYEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
10832 newLeafNode(enumLiteral_3, grammarAccess.getUnaryOpAccess().getMAYEnumLiteralDeclaration_3());
10833
10834 }
10835
10836 }
10837
10838
10839 }
10840 break;
10841 case 5 :
10842 // InternalSolverLanguage.g:3735:3: (enumLiteral_4= 'must' )
10843 {
10844 // InternalSolverLanguage.g:3735:3: (enumLiteral_4= 'must' )
10845 // InternalSolverLanguage.g:3736:4: enumLiteral_4= 'must'
10846 {
10847 enumLiteral_4=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
10848 if ( state.backtracking==0 ) {
10849
10850 current = grammarAccess.getUnaryOpAccess().getMUSTEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
10851 newLeafNode(enumLiteral_4, grammarAccess.getUnaryOpAccess().getMUSTEnumLiteralDeclaration_4());
10852
10853 }
10854
10855 }
10856
10857
10858 }
10859 break;
10860 case 6 :
10861 // InternalSolverLanguage.g:3743:3: (enumLiteral_5= 'current' )
10862 {
10863 // InternalSolverLanguage.g:3743:3: (enumLiteral_5= 'current' )
10864 // InternalSolverLanguage.g:3744:4: enumLiteral_5= 'current'
10865 {
10866 enumLiteral_5=(Token)match(input,63,FOLLOW_2); if (state.failed) return current;
10867 if ( state.backtracking==0 ) {
10868
10869 current = grammarAccess.getUnaryOpAccess().getCURRENTEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
10870 newLeafNode(enumLiteral_5, grammarAccess.getUnaryOpAccess().getCURRENTEnumLiteralDeclaration_5());
10871
10872 }
10873
10874 }
10875
10876
10877 }
10878 break;
6965 10879
6966 } 10880 }
6967 10881
6968 10882
6969 } 10883 }
6970 10884
6971 otherlv_1=(Token)match(input,41,FOLLOW_36); 10885 if ( state.backtracking==0 ) {
6972 10886
6973 newLeafNode(otherlv_1, grammarAccess.getMultiplicityDefinitionAccess().getFullStopFullStopKeyword_1()); 10887 leaveRule();
6974
6975 // InternalSolverLanguage.g:2459:3: ( ( (lv_upper_2_0= RULE_INT ) ) | ( (lv_unlimitedUpper_3_0= '*' ) ) )
6976 int alt47=2;
6977 int LA47_0 = input.LA(1);
6978 10888
6979 if ( (LA47_0==RULE_INT) ) {
6980 alt47=1;
6981 } 10889 }
6982 else if ( (LA47_0==31) ) { 10890 }
6983 alt47=2; 10891
10892 catch (RecognitionException re) {
10893 recover(input,re);
10894 appendSkippedTokens();
6984 } 10895 }
6985 else { 10896 finally {
10897 }
10898 return current;
10899 }
10900 // $ANTLR end "ruleUnaryOp"
10901
10902
10903 // $ANTLR start "ruleAggregationOp"
10904 // InternalSolverLanguage.g:3754:1: ruleAggregationOp returns [Enumerator current=null] : ( (enumLiteral_0= 'only' ) | (enumLiteral_1= 'sum' ) | (enumLiteral_2= 'prod' ) | (enumLiteral_3= 'avg' ) | (enumLiteral_4= 'min' ) | (enumLiteral_5= 'max' ) ) ;
10905 public final Enumerator ruleAggregationOp() throws RecognitionException {
10906 Enumerator current = null;
10907
10908 Token enumLiteral_0=null;
10909 Token enumLiteral_1=null;
10910 Token enumLiteral_2=null;
10911 Token enumLiteral_3=null;
10912 Token enumLiteral_4=null;
10913 Token enumLiteral_5=null;
10914
10915
10916 enterRule();
10917
10918 try {
10919 // InternalSolverLanguage.g:3760:2: ( ( (enumLiteral_0= 'only' ) | (enumLiteral_1= 'sum' ) | (enumLiteral_2= 'prod' ) | (enumLiteral_3= 'avg' ) | (enumLiteral_4= 'min' ) | (enumLiteral_5= 'max' ) ) )
10920 // InternalSolverLanguage.g:3761:2: ( (enumLiteral_0= 'only' ) | (enumLiteral_1= 'sum' ) | (enumLiteral_2= 'prod' ) | (enumLiteral_3= 'avg' ) | (enumLiteral_4= 'min' ) | (enumLiteral_5= 'max' ) )
10921 {
10922 // InternalSolverLanguage.g:3761:2: ( (enumLiteral_0= 'only' ) | (enumLiteral_1= 'sum' ) | (enumLiteral_2= 'prod' ) | (enumLiteral_3= 'avg' ) | (enumLiteral_4= 'min' ) | (enumLiteral_5= 'max' ) )
10923 int alt50=6;
10924 switch ( input.LA(1) ) {
10925 case 64:
10926 {
10927 alt50=1;
10928 }
10929 break;
10930 case 65:
10931 {
10932 alt50=2;
10933 }
10934 break;
10935 case 66:
10936 {
10937 alt50=3;
10938 }
10939 break;
10940 case 67:
10941 {
10942 alt50=4;
10943 }
10944 break;
10945 case 68:
10946 {
10947 alt50=5;
10948 }
10949 break;
10950 case 69:
10951 {
10952 alt50=6;
10953 }
10954 break;
10955 default:
10956 if (state.backtracking>0) {state.failed=true; return current;}
6986 NoViableAltException nvae = 10957 NoViableAltException nvae =
6987 new NoViableAltException("", 47, 0, input); 10958 new NoViableAltException("", 50, 0, input);
6988 10959
6989 throw nvae; 10960 throw nvae;
6990 } 10961 }
6991 switch (alt47) { 10962
10963 switch (alt50) {
6992 case 1 : 10964 case 1 :
6993 // InternalSolverLanguage.g:2460:4: ( (lv_upper_2_0= RULE_INT ) ) 10965 // InternalSolverLanguage.g:3762:3: (enumLiteral_0= 'only' )
10966 {
10967 // InternalSolverLanguage.g:3762:3: (enumLiteral_0= 'only' )
10968 // InternalSolverLanguage.g:3763:4: enumLiteral_0= 'only'
10969 {
10970 enumLiteral_0=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
10971 if ( state.backtracking==0 ) {
10972
10973 current = grammarAccess.getAggregationOpAccess().getONLYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
10974 newLeafNode(enumLiteral_0, grammarAccess.getAggregationOpAccess().getONLYEnumLiteralDeclaration_0());
10975
10976 }
10977
10978 }
10979
10980
10981 }
10982 break;
10983 case 2 :
10984 // InternalSolverLanguage.g:3770:3: (enumLiteral_1= 'sum' )
10985 {
10986 // InternalSolverLanguage.g:3770:3: (enumLiteral_1= 'sum' )
10987 // InternalSolverLanguage.g:3771:4: enumLiteral_1= 'sum'
6994 { 10988 {
6995 // InternalSolverLanguage.g:2460:4: ( (lv_upper_2_0= RULE_INT ) ) 10989 enumLiteral_1=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
6996 // InternalSolverLanguage.g:2461:5: (lv_upper_2_0= RULE_INT ) 10990 if ( state.backtracking==0 ) {
10991
10992 current = grammarAccess.getAggregationOpAccess().getSUMEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
10993 newLeafNode(enumLiteral_1, grammarAccess.getAggregationOpAccess().getSUMEnumLiteralDeclaration_1());
10994
10995 }
10996
10997 }
10998
10999
11000 }
11001 break;
11002 case 3 :
11003 // InternalSolverLanguage.g:3778:3: (enumLiteral_2= 'prod' )
6997 { 11004 {
6998 // InternalSolverLanguage.g:2461:5: (lv_upper_2_0= RULE_INT ) 11005 // InternalSolverLanguage.g:3778:3: (enumLiteral_2= 'prod' )
6999 // InternalSolverLanguage.g:2462:6: lv_upper_2_0= RULE_INT 11006 // InternalSolverLanguage.g:3779:4: enumLiteral_2= 'prod'
7000 { 11007 {
7001 lv_upper_2_0=(Token)match(input,RULE_INT,FOLLOW_2); 11008 enumLiteral_2=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
11009 if ( state.backtracking==0 ) {
11010
11011 current = grammarAccess.getAggregationOpAccess().getPRODEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
11012 newLeafNode(enumLiteral_2, grammarAccess.getAggregationOpAccess().getPRODEnumLiteralDeclaration_2());
11013
11014 }
7002 11015
7003 newLeafNode(lv_upper_2_0, grammarAccess.getMultiplicityDefinitionAccess().getUpperINTTerminalRuleCall_2_0_0()); 11016 }
7004
7005 11017
7006 if (current==null) {
7007 current = createModelElement(grammarAccess.getMultiplicityDefinitionRule());
7008 }
7009 setWithLastConsumed(
7010 current,
7011 "upper",
7012 lv_upper_2_0,
7013 "org.eclipse.xtext.common.Terminals.INT");
7014
7015 11018
7016 } 11019 }
11020 break;
11021 case 4 :
11022 // InternalSolverLanguage.g:3786:3: (enumLiteral_3= 'avg' )
11023 {
11024 // InternalSolverLanguage.g:3786:3: (enumLiteral_3= 'avg' )
11025 // InternalSolverLanguage.g:3787:4: enumLiteral_3= 'avg'
11026 {
11027 enumLiteral_3=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
11028 if ( state.backtracking==0 ) {
11029
11030 current = grammarAccess.getAggregationOpAccess().getAVGEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
11031 newLeafNode(enumLiteral_3, grammarAccess.getAggregationOpAccess().getAVGEnumLiteralDeclaration_3());
11032
11033 }
11034
11035 }
11036
11037
11038 }
11039 break;
11040 case 5 :
11041 // InternalSolverLanguage.g:3794:3: (enumLiteral_4= 'min' )
11042 {
11043 // InternalSolverLanguage.g:3794:3: (enumLiteral_4= 'min' )
11044 // InternalSolverLanguage.g:3795:4: enumLiteral_4= 'min'
11045 {
11046 enumLiteral_4=(Token)match(input,68,FOLLOW_2); if (state.failed) return current;
11047 if ( state.backtracking==0 ) {
11048
11049 current = grammarAccess.getAggregationOpAccess().getMINEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
11050 newLeafNode(enumLiteral_4, grammarAccess.getAggregationOpAccess().getMINEnumLiteralDeclaration_4());
11051
11052 }
11053
11054 }
11055
11056
11057 }
11058 break;
11059 case 6 :
11060 // InternalSolverLanguage.g:3802:3: (enumLiteral_5= 'max' )
11061 {
11062 // InternalSolverLanguage.g:3802:3: (enumLiteral_5= 'max' )
11063 // InternalSolverLanguage.g:3803:4: enumLiteral_5= 'max'
11064 {
11065 enumLiteral_5=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
11066 if ( state.backtracking==0 ) {
11067
11068 current = grammarAccess.getAggregationOpAccess().getMAXEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
11069 newLeafNode(enumLiteral_5, grammarAccess.getAggregationOpAccess().getMAXEnumLiteralDeclaration_5());
11070
11071 }
11072
11073 }
11074
11075
11076 }
11077 break;
11078
11079 }
11080
11081
11082 }
11083
11084 if ( state.backtracking==0 ) {
11085
11086 leaveRule();
11087
11088 }
11089 }
11090
11091 catch (RecognitionException re) {
11092 recover(input,re);
11093 appendSkippedTokens();
11094 }
11095 finally {
11096 }
11097 return current;
11098 }
11099 // $ANTLR end "ruleAggregationOp"
11100
11101
11102 // $ANTLR start "ruleLogicValue"
11103 // InternalSolverLanguage.g:3813:1: ruleLogicValue returns [Enumerator current=null] : ( (enumLiteral_0= 'true' ) | (enumLiteral_1= 'false' ) | (enumLiteral_2= 'unknown' ) | (enumLiteral_3= 'error' ) ) ;
11104 public final Enumerator ruleLogicValue() throws RecognitionException {
11105 Enumerator current = null;
11106
11107 Token enumLiteral_0=null;
11108 Token enumLiteral_1=null;
11109 Token enumLiteral_2=null;
11110 Token enumLiteral_3=null;
11111
11112
11113 enterRule();
11114
11115 try {
11116 // InternalSolverLanguage.g:3819:2: ( ( (enumLiteral_0= 'true' ) | (enumLiteral_1= 'false' ) | (enumLiteral_2= 'unknown' ) | (enumLiteral_3= 'error' ) ) )
11117 // InternalSolverLanguage.g:3820:2: ( (enumLiteral_0= 'true' ) | (enumLiteral_1= 'false' ) | (enumLiteral_2= 'unknown' ) | (enumLiteral_3= 'error' ) )
11118 {
11119 // InternalSolverLanguage.g:3820:2: ( (enumLiteral_0= 'true' ) | (enumLiteral_1= 'false' ) | (enumLiteral_2= 'unknown' ) | (enumLiteral_3= 'error' ) )
11120 int alt51=4;
11121 switch ( input.LA(1) ) {
11122 case 70:
11123 {
11124 alt51=1;
11125 }
11126 break;
11127 case 71:
11128 {
11129 alt51=2;
11130 }
11131 break;
11132 case 72:
11133 {
11134 alt51=3;
11135 }
11136 break;
11137 case 19:
11138 {
11139 alt51=4;
11140 }
11141 break;
11142 default:
11143 if (state.backtracking>0) {state.failed=true; return current;}
11144 NoViableAltException nvae =
11145 new NoViableAltException("", 51, 0, input);
7017 11146
11147 throw nvae;
11148 }
11149
11150 switch (alt51) {
11151 case 1 :
11152 // InternalSolverLanguage.g:3821:3: (enumLiteral_0= 'true' )
11153 {
11154 // InternalSolverLanguage.g:3821:3: (enumLiteral_0= 'true' )
11155 // InternalSolverLanguage.g:3822:4: enumLiteral_0= 'true'
11156 {
11157 enumLiteral_0=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
11158 if ( state.backtracking==0 ) {
11159
11160 current = grammarAccess.getLogicValueAccess().getTRUEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
11161 newLeafNode(enumLiteral_0, grammarAccess.getLogicValueAccess().getTRUEEnumLiteralDeclaration_0());
11162
11163 }
7018 11164
7019 } 11165 }
7020 11166
@@ -7022,27 +11168,56 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
7022 } 11168 }
7023 break; 11169 break;
7024 case 2 : 11170 case 2 :
7025 // InternalSolverLanguage.g:2479:4: ( (lv_unlimitedUpper_3_0= '*' ) ) 11171 // InternalSolverLanguage.g:3829:3: (enumLiteral_1= 'false' )
11172 {
11173 // InternalSolverLanguage.g:3829:3: (enumLiteral_1= 'false' )
11174 // InternalSolverLanguage.g:3830:4: enumLiteral_1= 'false'
7026 { 11175 {
7027 // InternalSolverLanguage.g:2479:4: ( (lv_unlimitedUpper_3_0= '*' ) ) 11176 enumLiteral_1=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
7028 // InternalSolverLanguage.g:2480:5: (lv_unlimitedUpper_3_0= '*' ) 11177 if ( state.backtracking==0 ) {
11178
11179 current = grammarAccess.getLogicValueAccess().getFALSEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
11180 newLeafNode(enumLiteral_1, grammarAccess.getLogicValueAccess().getFALSEEnumLiteralDeclaration_1());
11181
11182 }
11183
11184 }
11185
11186
11187 }
11188 break;
11189 case 3 :
11190 // InternalSolverLanguage.g:3837:3: (enumLiteral_2= 'unknown' )
7029 { 11191 {
7030 // InternalSolverLanguage.g:2480:5: (lv_unlimitedUpper_3_0= '*' ) 11192 // InternalSolverLanguage.g:3837:3: (enumLiteral_2= 'unknown' )
7031 // InternalSolverLanguage.g:2481:6: lv_unlimitedUpper_3_0= '*' 11193 // InternalSolverLanguage.g:3838:4: enumLiteral_2= 'unknown'
7032 { 11194 {
7033 lv_unlimitedUpper_3_0=(Token)match(input,31,FOLLOW_2); 11195 enumLiteral_2=(Token)match(input,72,FOLLOW_2); if (state.failed) return current;
11196 if ( state.backtracking==0 ) {
11197
11198 current = grammarAccess.getLogicValueAccess().getUNKNOWNEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
11199 newLeafNode(enumLiteral_2, grammarAccess.getLogicValueAccess().getUNKNOWNEnumLiteralDeclaration_2());
11200
11201 }
7034 11202
7035 newLeafNode(lv_unlimitedUpper_3_0, grammarAccess.getMultiplicityDefinitionAccess().getUnlimitedUpperAsteriskKeyword_2_1_0()); 11203 }
7036
7037 11204
7038 if (current==null) {
7039 current = createModelElement(grammarAccess.getMultiplicityDefinitionRule());
7040 }
7041 setWithLastConsumed(current, "unlimitedUpper", true, "*");
7042
7043 11205
7044 } 11206 }
11207 break;
11208 case 4 :
11209 // InternalSolverLanguage.g:3845:3: (enumLiteral_3= 'error' )
11210 {
11211 // InternalSolverLanguage.g:3845:3: (enumLiteral_3= 'error' )
11212 // InternalSolverLanguage.g:3846:4: enumLiteral_3= 'error'
11213 {
11214 enumLiteral_3=(Token)match(input,19,FOLLOW_2); if (state.failed) return current;
11215 if ( state.backtracking==0 ) {
7045 11216
11217 current = grammarAccess.getLogicValueAccess().getERROREnumLiteralDeclaration_3().getEnumLiteral().getInstance();
11218 newLeafNode(enumLiteral_3, grammarAccess.getLogicValueAccess().getERROREnumLiteralDeclaration_3());
11219
11220 }
7046 11221
7047 } 11222 }
7048 11223
@@ -7055,12 +11230,106 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
7055 11230
7056 } 11231 }
7057 11232
11233 if ( state.backtracking==0 ) {
11234
11235 leaveRule();
7058 11236
7059 } 11237 }
11238 }
11239
11240 catch (RecognitionException re) {
11241 recover(input,re);
11242 appendSkippedTokens();
11243 }
11244 finally {
11245 }
11246 return current;
11247 }
11248 // $ANTLR end "ruleLogicValue"
11249
11250
11251 // $ANTLR start "ruleObjectiveKind"
11252 // InternalSolverLanguage.g:3856:1: ruleObjectiveKind returns [Enumerator current=null] : ( (enumLiteral_0= 'minimize' ) | (enumLiteral_1= 'maximize' ) ) ;
11253 public final Enumerator ruleObjectiveKind() throws RecognitionException {
11254 Enumerator current = null;
7060 11255
11256 Token enumLiteral_0=null;
11257 Token enumLiteral_1=null;
7061 11258
7062 leaveRule();
7063 11259
11260 enterRule();
11261
11262 try {
11263 // InternalSolverLanguage.g:3862:2: ( ( (enumLiteral_0= 'minimize' ) | (enumLiteral_1= 'maximize' ) ) )
11264 // InternalSolverLanguage.g:3863:2: ( (enumLiteral_0= 'minimize' ) | (enumLiteral_1= 'maximize' ) )
11265 {
11266 // InternalSolverLanguage.g:3863:2: ( (enumLiteral_0= 'minimize' ) | (enumLiteral_1= 'maximize' ) )
11267 int alt52=2;
11268 int LA52_0 = input.LA(1);
11269
11270 if ( (LA52_0==73) ) {
11271 alt52=1;
11272 }
11273 else if ( (LA52_0==74) ) {
11274 alt52=2;
11275 }
11276 else {
11277 if (state.backtracking>0) {state.failed=true; return current;}
11278 NoViableAltException nvae =
11279 new NoViableAltException("", 52, 0, input);
11280
11281 throw nvae;
11282 }
11283 switch (alt52) {
11284 case 1 :
11285 // InternalSolverLanguage.g:3864:3: (enumLiteral_0= 'minimize' )
11286 {
11287 // InternalSolverLanguage.g:3864:3: (enumLiteral_0= 'minimize' )
11288 // InternalSolverLanguage.g:3865:4: enumLiteral_0= 'minimize'
11289 {
11290 enumLiteral_0=(Token)match(input,73,FOLLOW_2); if (state.failed) return current;
11291 if ( state.backtracking==0 ) {
11292
11293 current = grammarAccess.getObjectiveKindAccess().getMINIMIZEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
11294 newLeafNode(enumLiteral_0, grammarAccess.getObjectiveKindAccess().getMINIMIZEEnumLiteralDeclaration_0());
11295
11296 }
11297
11298 }
11299
11300
11301 }
11302 break;
11303 case 2 :
11304 // InternalSolverLanguage.g:3872:3: (enumLiteral_1= 'maximize' )
11305 {
11306 // InternalSolverLanguage.g:3872:3: (enumLiteral_1= 'maximize' )
11307 // InternalSolverLanguage.g:3873:4: enumLiteral_1= 'maximize'
11308 {
11309 enumLiteral_1=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
11310 if ( state.backtracking==0 ) {
11311
11312 current = grammarAccess.getObjectiveKindAccess().getMAXIMIZEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
11313 newLeafNode(enumLiteral_1, grammarAccess.getObjectiveKindAccess().getMAXIMIZEEnumLiteralDeclaration_1());
11314
11315 }
11316
11317 }
11318
11319
11320 }
11321 break;
11322
11323 }
11324
11325
11326 }
11327
11328 if ( state.backtracking==0 ) {
11329
11330 leaveRule();
11331
11332 }
7064 } 11333 }
7065 11334
7066 catch (RecognitionException re) { 11335 catch (RecognitionException re) {
@@ -7071,27 +11340,33 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
7071 } 11340 }
7072 return current; 11341 return current;
7073 } 11342 }
7074 // $ANTLR end "ruleMultiplicityDefinition" 11343 // $ANTLR end "ruleObjectiveKind"
7075 11344
7076 // Delegated rules 11345 // Delegated rules
7077 11346
7078 11347
7079 protected DFA2 dfa2 = new DFA2(this); 11348 protected DFA2 dfa2 = new DFA2(this);
7080 static final String dfa_1s = "\11\uffff"; 11349 protected DFA25 dfa25 = new DFA25(this);
7081 static final String dfa_2s = "\1\5\1\21\2\uffff\1\4\1\22\1\24\1\4\1\22"; 11350 protected DFA36 dfa36 = new DFA36(this);
7082 static final String dfa_3s = "\1\50\1\34\2\uffff\1\37\1\24\1\34\1\37\1\24"; 11351 static final String dfa_1s = "\15\uffff";
7083 static final String dfa_4s = "\2\uffff\1\1\1\2\5\uffff"; 11352 static final String dfa_2s = "\1\7\1\uffff\1\4\2\uffff\1\10\7\uffff";
7084 static final String dfa_5s = "\11\uffff}>"; 11353 static final String dfa_3s = "\1\112\1\uffff\1\73\2\uffff\1\63\7\uffff";
11354 static final String dfa_4s = "\1\uffff\1\1\1\uffff\1\2\1\4\1\uffff\1\6\1\10\1\11\1\12\1\3\1\7\1\5";
11355 static final String dfa_5s = "\15\uffff}>";
7085 static final String[] dfa_6s = { 11356 static final String[] dfa_6s = {
7086 "\1\1\12\uffff\1\3\4\uffff\6\2\5\uffff\3\2\3\uffff\3\2", 11357 "\4\1\7\uffff\1\3\1\2\1\4\1\5\1\uffff\1\1\5\uffff\1\1\3\uffff\1\1\2\uffff\1\1\2\uffff\2\1\2\7\3\uffff\1\10\3\uffff\2\6\4\uffff\2\1\2\uffff\15\1\2\11",
7087 "\1\4\2\uffff\1\2\7\uffff\1\3", 11358 "",
11359 "\1\1\3\uffff\1\3\1\uffff\1\3\4\uffff\3\1\1\3\7\uffff\3\1\4\uffff\1\12\1\uffff\1\1\13\uffff\3\1\2\uffff\10\1",
11360 "",
7088 "", 11361 "",
11362 "\1\14\1\uffff\1\14\47\uffff\2\13",
7089 "", 11363 "",
7090 "\1\2\1\5\1\2\4\uffff\1\2\1\uffff\2\2\4\uffff\1\6\1\2\6\uffff\1\2\3\uffff\1\2", 11364 "",
7091 "\1\7\1\6\1\3", 11365 "",
7092 "\1\2\7\uffff\1\3", 11366 "",
7093 "\1\2\1\10\1\2\4\uffff\1\2\1\uffff\2\2\5\uffff\1\2\6\uffff\1\2\3\uffff\1\2", 11367 "",
7094 "\1\7\1\6\1\3" 11368 "",
11369 ""
7095 }; 11370 };
7096 11371
7097 static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s); 11372 static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
@@ -7115,46 +11390,156 @@ public class InternalSolverLanguageParser extends AbstractInternalAntlrParser {
7115 this.transition = dfa_6; 11390 this.transition = dfa_6;
7116 } 11391 }
7117 public String getDescription() { 11392 public String getDescription() {
7118 return "114:2: (this_Interpretation_0= ruleInterpretation | this_Predicate_1= rulePredicate )"; 11393 return "116:3: (this_AssertionOrDefinition_0= ruleAssertionOrDefinition | this_PredicateDefinition_1= rulePredicateDefinition | this_UnnamedErrorPrediateDefinition_2= ruleUnnamedErrorPrediateDefinition | this_DefaultDefinition_3= ruleDefaultDefinition | this_ExternPredicateDefinition_4= ruleExternPredicateDefinition | this_MetricDefinition_5= ruleMetricDefinition | this_ExternMetricDefinition_6= ruleExternMetricDefinition | this_ClassDefinition_7= ruleClassDefinition | this_ScopeDefinition_8= ruleScopeDefinition | this_ObjectiveDefinition_9= ruleObjectiveDefinition )";
11394 }
11395 }
11396 static final String dfa_7s = "\12\uffff";
11397 static final String dfa_8s = "\1\uffff\2\3\4\uffff\1\11\1\3\1\uffff";
11398 static final String dfa_9s = "\1\7\2\10\2\uffff\1\10\1\uffff\1\7\1\10\1\uffff";
11399 static final String dfa_10s = "\1\110\2\73\2\uffff\1\10\1\uffff\1\110\1\73\1\uffff";
11400 static final String dfa_11s = "\3\uffff\1\1\1\2\1\uffff\1\3\2\uffff\1\4";
11401 static final String dfa_12s = "\12\uffff}>";
11402 static final String[] dfa_13s = {
11403 "\1\3\1\1\1\3\1\2\10\uffff\1\3\11\uffff\1\3\3\uffff\1\3\1\uffff\1\4\1\3\2\uffff\2\3\17\uffff\2\3\2\uffff\15\3",
11404 "\1\6\1\uffff\1\6\13\uffff\1\5\5\uffff\1\3\4\uffff\2\3\1\7\13\uffff\3\3\2\uffff\10\3",
11405 "\1\6\1\uffff\1\6\21\uffff\1\3\4\uffff\2\3\1\7\13\uffff\3\3\2\uffff\10\3",
11406 "",
11407 "",
11408 "\1\10",
11409 "",
11410 "\4\3\10\uffff\1\3\10\uffff\1\11\1\3\3\uffff\1\3\1\11\1\uffff\1\3\2\uffff\2\3\17\uffff\2\3\2\uffff\15\3",
11411 "\1\6\1\uffff\1\6\13\uffff\1\5\5\uffff\1\3\4\uffff\2\3\1\7\13\uffff\3\3\2\uffff\10\3",
11412 ""
11413 };
11414
11415 static final short[] dfa_7 = DFA.unpackEncodedString(dfa_7s);
11416 static final short[] dfa_8 = DFA.unpackEncodedString(dfa_8s);
11417 static final char[] dfa_9 = DFA.unpackEncodedStringToUnsignedChars(dfa_9s);
11418 static final char[] dfa_10 = DFA.unpackEncodedStringToUnsignedChars(dfa_10s);
11419 static final short[] dfa_11 = DFA.unpackEncodedString(dfa_11s);
11420 static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
11421 static final short[][] dfa_13 = unpackEncodedStringArray(dfa_13s);
11422
11423 class DFA25 extends DFA {
11424
11425 public DFA25(BaseRecognizer recognizer) {
11426 this.recognizer = recognizer;
11427 this.decisionNumber = 25;
11428 this.eot = dfa_7;
11429 this.eof = dfa_8;
11430 this.min = dfa_9;
11431 this.max = dfa_10;
11432 this.accept = dfa_11;
11433 this.special = dfa_12;
11434 this.transition = dfa_13;
11435 }
11436 public String getDescription() {
11437 return "1998:2: (this_ExpressionArgument_0= ruleExpressionArgument | this_StarArgument_1= ruleStarArgument | this_TypedArgument_2= ruleTypedArgument | this_TypedStarArgument_3= ruleTypedStarArgument )";
11438 }
11439 }
11440 static final String dfa_14s = "\17\uffff";
11441 static final String dfa_15s = "\15\uffff\1\11\1\uffff";
11442 static final String dfa_16s = "\1\56\1\10\1\60\1\26\1\57\1\10\1\uffff\1\10\2\uffff\3\26\1\4\1\26";
11443 static final String dfa_17s = "\1\56\1\12\3\61\1\12\1\uffff\1\10\2\uffff\2\60\1\61\1\10\1\60";
11444 static final String dfa_18s = "\6\uffff\1\2\1\uffff\1\1\1\3\5\uffff";
11445 static final String dfa_19s = "\17\uffff}>";
11446 static final String[] dfa_20s = {
11447 "\1\1",
11448 "\1\3\1\2\1\4",
11449 "\1\5\1\6",
11450 "\1\7\30\uffff\1\10\1\6\1\11",
11451 "\1\10\1\6\1\11",
11452 "\1\12\1\uffff\1\13",
11453 "",
11454 "\1\14",
11455 "",
11456 "",
11457 "\1\15\31\uffff\1\6",
11458 "\1\11\31\uffff\1\6",
11459 "\1\7\30\uffff\1\10\1\6\1\11",
11460 "\1\11\3\uffff\1\16",
11461 "\1\15\31\uffff\1\6"
11462 };
11463
11464 static final short[] dfa_14 = DFA.unpackEncodedString(dfa_14s);
11465 static final short[] dfa_15 = DFA.unpackEncodedString(dfa_15s);
11466 static final char[] dfa_16 = DFA.unpackEncodedStringToUnsignedChars(dfa_16s);
11467 static final char[] dfa_17 = DFA.unpackEncodedStringToUnsignedChars(dfa_17s);
11468 static final short[] dfa_18 = DFA.unpackEncodedString(dfa_18s);
11469 static final short[] dfa_19 = DFA.unpackEncodedString(dfa_19s);
11470 static final short[][] dfa_20 = unpackEncodedStringArray(dfa_20s);
11471
11472 class DFA36 extends DFA {
11473
11474 public DFA36(BaseRecognizer recognizer) {
11475 this.recognizer = recognizer;
11476 this.decisionNumber = 36;
11477 this.eot = dfa_14;
11478 this.eof = dfa_15;
11479 this.min = dfa_16;
11480 this.max = dfa_17;
11481 this.accept = dfa_18;
11482 this.special = dfa_19;
11483 this.transition = dfa_20;
11484 }
11485 public String getDescription() {
11486 return "2973:2: (this_ExactScopeDefinition_0= ruleExactScopeDefinition | this_BoundedScopeDefinition_1= ruleBoundedScopeDefinition | this_LowerBoundedScopeDefinition_2= ruleLowerBoundedScopeDefinition )";
7119 } 11487 }
7120 } 11488 }
7121 11489
7122 11490
7123 public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L}); 11491 public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
7124 public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L}); 11492 public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
7125 public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x000001C707E10022L}); 11493 public static final BitSet FOLLOW_3 = new BitSet(new long[]{0xF30C479220BC0782L,0x00000000000007FFL});
7126 public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000010L}); 11494 public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000010L});
7127 public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000001000L}); 11495 public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000038002L});
7128 public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000120000L}); 11496 public static final BitSet FOLLOW_6 = new BitSet(new long[]{0xF300019220880780L,0x00000000000001FFL});
7129 public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000088186870L}); 11497 public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000080500L});
7130 public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x00000000000C0000L}); 11498 public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x00000000000C0500L});
7131 public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000088106870L}); 11499 public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000010000L});
7132 public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000100000L}); 11500 public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000200000000L});
7133 public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x000000000001E000L}); 11501 public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000008000L});
7134 public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000020L}); 11502 public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000400000L});
7135 public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000008000000L}); 11503 public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000020000L});
7136 public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000010020000L}); 11504 public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x000C000000000000L});
7137 public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000080020L}); 11505 public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000001000000L});
7138 public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000010000000L}); 11506 public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000002000000L});
7139 public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x00000000E0007820L}); 11507 public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x000000000C000002L});
7140 public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000020001000L}); 11508 public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000004000002L});
7141 public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x00000000E0003820L}); 11509 public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000008000000L});
7142 public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000100002L}); 11510 public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000010000002L});
7143 public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000007E00020L}); 11511 public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x00F3800000000002L});
7144 public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x00000000C0000822L}); 11512 public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0300000000000002L});
7145 public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000020002L}); 11513 public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0400000800000002L});
7146 public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x00000000080C6870L}); 11514 public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0800000000000002L});
7147 public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000008006870L}); 11515 public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000019220080780L,0x00000000000001FFL});
7148 public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000020000L}); 11516 public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000040000000L});
7149 public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000400000000L}); 11517 public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000080000000L});
7150 public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000001800000000L}); 11518 public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000100000000L});
7151 public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000001000000020L}); 11519 public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000200000002L});
7152 public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x000000A000000020L}); 11520 public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000400000000L});
7153 public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000001000000000L}); 11521 public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000200000060L});
7154 public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000002008000000L}); 11522 public static final BitSet FOLLOW_32 = new BitSet(new long[]{0xF300019E20880780L,0x00000000000001FFL});
7155 public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000007E00030L}); 11523 public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000410000000L});
7156 public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000010000000000L}); 11524 public static final BitSet FOLLOW_34 = new BitSet(new long[]{0xF300019A20880780L,0x00000000000001FFL});
7157 public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000020000000000L}); 11525 public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000500L});
7158 public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000080000010L}); 11526 public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000800000000L});
11527 public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000002000000000L});
11528 public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000004000000000L});
11529 public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000040000000000L});
11530 public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000100L});
11531 public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000080040000000L});
11532 public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000050000000L});
11533 public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000100080000500L});
11534 public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000001000000100L});
11535 public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000200004000002L});
11536 public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000800000200L});
11537 public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000200L});
11538 public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000800000000000L});
11539 public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000700L});
11540 public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0001000000000000L});
11541 public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0002000000000000L});
11542 public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0002000000400000L});
11543 public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000400002L});
7159 11544
7160} \ No newline at end of file 11545} \ No newline at end of file