aboutsummaryrefslogtreecommitdiffstats
path: root/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.g
diff options
context:
space:
mode:
Diffstat (limited to 'Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.g')
-rw-r--r--Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.g1071
1 files changed, 868 insertions, 203 deletions
diff --git a/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.g b/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.g
index 6cd0341f..8ec69aaa 100644
--- a/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.g
+++ b/Application/org.eclipse.viatra.solver.language/src-gen/org/eclipse/viatra/solver/language/parser/antlr/internal/InternalSolverLanguageParser.g
@@ -144,20 +144,20 @@ ruleStatement returns [EObject current=null]
144 } 144 }
145 | 145 |
146 { 146 {
147 newCompositeNode(grammarAccess.getStatementAccess().getExternPredicateDefinitionParserRuleCall_0_4()); 147 newCompositeNode(grammarAccess.getStatementAccess().getMetricDefinitionParserRuleCall_0_4());
148 } 148 }
149 this_ExternPredicateDefinition_4=ruleExternPredicateDefinition 149 this_MetricDefinition_4=ruleMetricDefinition
150 { 150 {
151 $current = $this_ExternPredicateDefinition_4.current; 151 $current = $this_MetricDefinition_4.current;
152 afterParserOrEnumRuleCall(); 152 afterParserOrEnumRuleCall();
153 } 153 }
154 | 154 |
155 { 155 {
156 newCompositeNode(grammarAccess.getStatementAccess().getMetricDefinitionParserRuleCall_0_5()); 156 newCompositeNode(grammarAccess.getStatementAccess().getExternPredicateDefinitionParserRuleCall_0_5());
157 } 157 }
158 this_MetricDefinition_5=ruleMetricDefinition 158 this_ExternPredicateDefinition_5=ruleExternPredicateDefinition
159 { 159 {
160 $current = $this_MetricDefinition_5.current; 160 $current = $this_ExternPredicateDefinition_5.current;
161 afterParserOrEnumRuleCall(); 161 afterParserOrEnumRuleCall();
162 } 162 }
163 | 163 |
@@ -171,35 +171,53 @@ ruleStatement returns [EObject current=null]
171 } 171 }
172 | 172 |
173 { 173 {
174 newCompositeNode(grammarAccess.getStatementAccess().getClassDefinitionParserRuleCall_0_7()); 174 newCompositeNode(grammarAccess.getStatementAccess().getExternAggregatorDefinitionParserRuleCall_0_7());
175 } 175 }
176 this_ClassDefinition_7=ruleClassDefinition 176 this_ExternAggregatorDefinition_7=ruleExternAggregatorDefinition
177 { 177 {
178 $current = $this_ClassDefinition_7.current; 178 $current = $this_ExternAggregatorDefinition_7.current;
179 afterParserOrEnumRuleCall(); 179 afterParserOrEnumRuleCall();
180 } 180 }
181 | 181 |
182 { 182 {
183 newCompositeNode(grammarAccess.getStatementAccess().getScopeDefinitionParserRuleCall_0_8()); 183 newCompositeNode(grammarAccess.getStatementAccess().getExternDatatypeDefinitionParserRuleCall_0_8());
184 } 184 }
185 this_ScopeDefinition_8=ruleScopeDefinition 185 this_ExternDatatypeDefinition_8=ruleExternDatatypeDefinition
186 { 186 {
187 $current = $this_ScopeDefinition_8.current; 187 $current = $this_ExternDatatypeDefinition_8.current;
188 afterParserOrEnumRuleCall(); 188 afterParserOrEnumRuleCall();
189 } 189 }
190 | 190 |
191 { 191 {
192 newCompositeNode(grammarAccess.getStatementAccess().getObjectiveDefinitionParserRuleCall_0_9()); 192 newCompositeNode(grammarAccess.getStatementAccess().getClassDefinitionParserRuleCall_0_9());
193 } 193 }
194 this_ObjectiveDefinition_9=ruleObjectiveDefinition 194 this_ClassDefinition_9=ruleClassDefinition
195 { 195 {
196 $current = $this_ObjectiveDefinition_9.current; 196 $current = $this_ClassDefinition_9.current;
197 afterParserOrEnumRuleCall();
198 }
199 |
200 {
201 newCompositeNode(grammarAccess.getStatementAccess().getScopeDefinitionParserRuleCall_0_10());
202 }
203 this_ScopeDefinition_10=ruleScopeDefinition
204 {
205 $current = $this_ScopeDefinition_10.current;
206 afterParserOrEnumRuleCall();
207 }
208 |
209 {
210 newCompositeNode(grammarAccess.getStatementAccess().getObjectiveDefinitionParserRuleCall_0_11());
211 }
212 this_ObjectiveDefinition_11=ruleObjectiveDefinition
213 {
214 $current = $this_ObjectiveDefinition_11.current;
197 afterParserOrEnumRuleCall(); 215 afterParserOrEnumRuleCall();
198 } 216 }
199 ) 217 )
200 this_FULL_STOP_10=RULE_FULL_STOP 218 this_FULL_STOP_12=RULE_FULL_STOP
201 { 219 {
202 newLeafNode(this_FULL_STOP_10, grammarAccess.getStatementAccess().getFULL_STOPTerminalRuleCall_1()); 220 newLeafNode(this_FULL_STOP_12, grammarAccess.getStatementAccess().getFULL_STOPTerminalRuleCall_1());
203 } 221 }
204 ) 222 )
205; 223;
@@ -233,35 +251,33 @@ ruleAssertionOrDefinition returns [EObject current=null]
233 ( 251 (
234 { 252 {
235 $current = forceCreateModelElementAndSet( 253 $current = forceCreateModelElementAndSet(
236 grammarAccess.getAssertionOrDefinitionAccess().getAssertionBodyAction_1_0_0(), 254 grammarAccess.getAssertionOrDefinitionAccess().getInterpretationBodyAction_1_0_0(),
237 $current); 255 $current);
238 } 256 }
239 ) 257 )
258 otherlv_2=Colon
259 {
260 newLeafNode(otherlv_2, grammarAccess.getAssertionOrDefinitionAccess().getColonKeyword_1_0_1());
261 }
240 ( 262 (
241 otherlv_2=Colon
242 {
243 newLeafNode(otherlv_2, grammarAccess.getAssertionOrDefinitionAccess().getColonKeyword_1_0_1_0());
244 }
245 ( 263 (
246 ( 264 {
247 { 265 newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getRangeExpressionParserRuleCall_1_0_2_0());
248 newCompositeNode(grammarAccess.getAssertionOrDefinitionAccess().getRangeExpressionParserRuleCall_1_0_1_1_0()); 266 }
249 } 267 lv_range_3_0=ruleExpression
250 lv_range_3_0=ruleExpression 268 {
251 { 269 if ($current==null) {
252 if ($current==null) { 270 $current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule());
253 $current = createModelElementForParent(grammarAccess.getAssertionOrDefinitionRule());
254 }
255 set(
256 $current,
257 "range",
258 lv_range_3_0,
259 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
260 afterParserOrEnumRuleCall();
261 } 271 }
262 ) 272 set(
273 $current,
274 "range",
275 lv_range_3_0,
276 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
277 afterParserOrEnumRuleCall();
278 }
263 ) 279 )
264 )? 280 )
265 ) 281 )
266 | 282 |
267 ( 283 (
@@ -329,7 +345,7 @@ ruleAssertionOrDefinition returns [EObject current=null]
329 ) 345 )
330 ) 346 )
331 ) 347 )
332 ) 348 )?
333 ) 349 )
334; 350;
335 351
@@ -587,6 +603,83 @@ ruleDefaultDefinition returns [EObject current=null]
587 ) 603 )
588; 604;
589 605
606// Entry rule entryRuleMetricDefinition
607entryRuleMetricDefinition returns [EObject current=null]:
608 { newCompositeNode(grammarAccess.getMetricDefinitionRule()); }
609 iv_ruleMetricDefinition=ruleMetricDefinition
610 { $current=$iv_ruleMetricDefinition.current; }
611 EOF;
612
613// Rule MetricDefinition
614ruleMetricDefinition returns [EObject current=null]
615@init {
616 enterRule();
617}
618@after {
619 leaveRule();
620}:
621 (
622 (
623 (
624 {
625 if ($current==null) {
626 $current = createModelElement(grammarAccess.getMetricDefinitionRule());
627 }
628 }
629 {
630 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getTypeNamedElementCrossReference_0_0());
631 }
632 ruleQualifiedName
633 {
634 afterParserOrEnumRuleCall();
635 }
636 )
637 )
638 (
639 (
640 {
641 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getHeadCallParserRuleCall_1_0());
642 }
643 lv_head_1_0=ruleCall
644 {
645 if ($current==null) {
646 $current = createModelElementForParent(grammarAccess.getMetricDefinitionRule());
647 }
648 set(
649 $current,
650 "head",
651 lv_head_1_0,
652 "org.eclipse.viatra.solver.language.SolverLanguage.Call");
653 afterParserOrEnumRuleCall();
654 }
655 )
656 )
657 otherlv_2=EqualsSign
658 {
659 newLeafNode(otherlv_2, grammarAccess.getMetricDefinitionAccess().getEqualsSignKeyword_2());
660 }
661 (
662 (
663 {
664 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getBodyExpressionParserRuleCall_3_0());
665 }
666 lv_body_3_0=ruleExpression
667 {
668 if ($current==null) {
669 $current = createModelElementForParent(grammarAccess.getMetricDefinitionRule());
670 }
671 set(
672 $current,
673 "body",
674 lv_body_3_0,
675 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
676 afterParserOrEnumRuleCall();
677 }
678 )
679 )
680 )
681;
682
590// Entry rule entryRuleExternPredicateDefinition 683// Entry rule entryRuleExternPredicateDefinition
591entryRuleExternPredicateDefinition returns [EObject current=null]: 684entryRuleExternPredicateDefinition returns [EObject current=null]:
592 { newCompositeNode(grammarAccess.getExternPredicateDefinitionRule()); } 685 { newCompositeNode(grammarAccess.getExternPredicateDefinitionRule()); }
@@ -610,18 +703,37 @@ ruleExternPredicateDefinition returns [EObject current=null]
610 ( 703 (
611 ( 704 (
612 { 705 {
613 newCompositeNode(grammarAccess.getExternPredicateDefinitionAccess().getHeadCallParserRuleCall_1_0()); 706 newCompositeNode(grammarAccess.getExternPredicateDefinitionAccess().getNameQualifiedNameParserRuleCall_1_0());
614 } 707 }
615 lv_head_1_0=ruleCall 708 lv_name_1_0=ruleQualifiedName
616 { 709 {
617 if ($current==null) { 710 if ($current==null) {
618 $current = createModelElementForParent(grammarAccess.getExternPredicateDefinitionRule()); 711 $current = createModelElementForParent(grammarAccess.getExternPredicateDefinitionRule());
619 } 712 }
620 set( 713 set(
621 $current, 714 $current,
622 "head", 715 "name",
623 lv_head_1_0, 716 lv_name_1_0,
624 "org.eclipse.viatra.solver.language.SolverLanguage.Call"); 717 "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName");
718 afterParserOrEnumRuleCall();
719 }
720 )
721 )
722 (
723 (
724 {
725 newCompositeNode(grammarAccess.getExternPredicateDefinitionAccess().getArgumentListArgumentListParserRuleCall_2_0());
726 }
727 lv_argumentList_2_0=ruleArgumentList
728 {
729 if ($current==null) {
730 $current = createModelElementForParent(grammarAccess.getExternPredicateDefinitionRule());
731 }
732 set(
733 $current,
734 "argumentList",
735 lv_argumentList_2_0,
736 "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList");
625 afterParserOrEnumRuleCall(); 737 afterParserOrEnumRuleCall();
626 } 738 }
627 ) 739 )
@@ -629,15 +741,15 @@ ruleExternPredicateDefinition returns [EObject current=null]
629 ) 741 )
630; 742;
631 743
632// Entry rule entryRuleMetricDefinition 744// Entry rule entryRuleExternMetricDefinition
633entryRuleMetricDefinition returns [EObject current=null]: 745entryRuleExternMetricDefinition returns [EObject current=null]:
634 { newCompositeNode(grammarAccess.getMetricDefinitionRule()); } 746 { newCompositeNode(grammarAccess.getExternMetricDefinitionRule()); }
635 iv_ruleMetricDefinition=ruleMetricDefinition 747 iv_ruleExternMetricDefinition=ruleExternMetricDefinition
636 { $current=$iv_ruleMetricDefinition.current; } 748 { $current=$iv_ruleExternMetricDefinition.current; }
637 EOF; 749 EOF;
638 750
639// Rule MetricDefinition 751// Rule ExternMetricDefinition
640ruleMetricDefinition returns [EObject current=null] 752ruleExternMetricDefinition returns [EObject current=null]
641@init { 753@init {
642 enterRule(); 754 enterRule();
643} 755}
@@ -645,21 +757,41 @@ ruleMetricDefinition returns [EObject current=null]
645 leaveRule(); 757 leaveRule();
646}: 758}:
647 ( 759 (
760 otherlv_0=Extern
761 {
762 newLeafNode(otherlv_0, grammarAccess.getExternMetricDefinitionAccess().getExternKeyword_0());
763 }
648 ( 764 (
649 ( 765 (
650 { 766 {
651 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getTypeMetricTypeEnumRuleCall_0_0()); 767 if ($current==null) {
768 $current = createModelElement(grammarAccess.getExternMetricDefinitionRule());
769 }
652 } 770 }
653 lv_type_0_0=ruleMetricType 771 {
772 newCompositeNode(grammarAccess.getExternMetricDefinitionAccess().getTypeNamedElementCrossReference_1_0());
773 }
774 ruleQualifiedName
775 {
776 afterParserOrEnumRuleCall();
777 }
778 )
779 )
780 (
781 (
782 {
783 newCompositeNode(grammarAccess.getExternMetricDefinitionAccess().getNameQualifiedNameParserRuleCall_2_0());
784 }
785 lv_name_2_0=ruleQualifiedName
654 { 786 {
655 if ($current==null) { 787 if ($current==null) {
656 $current = createModelElementForParent(grammarAccess.getMetricDefinitionRule()); 788 $current = createModelElementForParent(grammarAccess.getExternMetricDefinitionRule());
657 } 789 }
658 set( 790 set(
659 $current, 791 $current,
660 "type", 792 "name",
661 lv_type_0_0, 793 lv_name_2_0,
662 "org.eclipse.viatra.solver.language.SolverLanguage.MetricType"); 794 "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName");
663 afterParserOrEnumRuleCall(); 795 afterParserOrEnumRuleCall();
664 } 796 }
665 ) 797 )
@@ -667,57 +799,120 @@ ruleMetricDefinition returns [EObject current=null]
667 ( 799 (
668 ( 800 (
669 { 801 {
670 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getHeadExpressionParserRuleCall_1_0()); 802 newCompositeNode(grammarAccess.getExternMetricDefinitionAccess().getArgumentListArgumentListParserRuleCall_3_0());
671 } 803 }
672 lv_head_1_0=ruleExpression 804 lv_argumentList_3_0=ruleArgumentList
673 { 805 {
674 if ($current==null) { 806 if ($current==null) {
675 $current = createModelElementForParent(grammarAccess.getMetricDefinitionRule()); 807 $current = createModelElementForParent(grammarAccess.getExternMetricDefinitionRule());
676 } 808 }
677 set( 809 set(
678 $current, 810 $current,
679 "head", 811 "argumentList",
680 lv_head_1_0, 812 lv_argumentList_3_0,
681 "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); 813 "org.eclipse.viatra.solver.language.SolverLanguage.ArgumentList");
682 afterParserOrEnumRuleCall(); 814 afterParserOrEnumRuleCall();
683 } 815 }
684 ) 816 )
685 ) 817 )
686 otherlv_2=EqualsSign 818 )
819;
820
821// Entry rule entryRuleExternAggregatorDefinition
822entryRuleExternAggregatorDefinition returns [EObject current=null]:
823 { newCompositeNode(grammarAccess.getExternAggregatorDefinitionRule()); }
824 iv_ruleExternAggregatorDefinition=ruleExternAggregatorDefinition
825 { $current=$iv_ruleExternAggregatorDefinition.current; }
826 EOF;
827
828// Rule ExternAggregatorDefinition
829ruleExternAggregatorDefinition returns [EObject current=null]
830@init {
831 enterRule();
832}
833@after {
834 leaveRule();
835}:
836 (
837 otherlv_0=Extern
687 { 838 {
688 newLeafNode(otherlv_2, grammarAccess.getMetricDefinitionAccess().getEqualsSignKeyword_2()); 839 newLeafNode(otherlv_0, grammarAccess.getExternAggregatorDefinitionAccess().getExternKeyword_0());
689 } 840 }
690 ( 841 (
691 ( 842 (
692 { 843 {
693 newCompositeNode(grammarAccess.getMetricDefinitionAccess().getBodyExpressionParserRuleCall_3_0()); 844 if ($current==null) {
845 $current = createModelElement(grammarAccess.getExternAggregatorDefinitionRule());
846 }
694 } 847 }
695 lv_body_3_0=ruleExpression 848 {
849 newCompositeNode(grammarAccess.getExternAggregatorDefinitionAccess().getTypeNamedElementCrossReference_1_0());
850 }
851 ruleQualifiedName
852 {
853 afterParserOrEnumRuleCall();
854 }
855 )
856 )
857 (
858 (
859 {
860 newCompositeNode(grammarAccess.getExternAggregatorDefinitionAccess().getNameQualifiedNameParserRuleCall_2_0());
861 }
862 lv_name_2_0=ruleQualifiedName
696 { 863 {
697 if ($current==null) { 864 if ($current==null) {
698 $current = createModelElementForParent(grammarAccess.getMetricDefinitionRule()); 865 $current = createModelElementForParent(grammarAccess.getExternAggregatorDefinitionRule());
699 } 866 }
700 set( 867 set(
701 $current, 868 $current,
702 "body", 869 "name",
703 lv_body_3_0, 870 lv_name_2_0,
704 "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); 871 "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName");
705 afterParserOrEnumRuleCall(); 872 afterParserOrEnumRuleCall();
706 } 873 }
707 ) 874 )
708 ) 875 )
876 otherlv_3=LeftCurlyBracket
877 {
878 newLeafNode(otherlv_3, grammarAccess.getExternAggregatorDefinitionAccess().getLeftCurlyBracketKeyword_3());
879 }
880 (
881 (
882 {
883 if ($current==null) {
884 $current = createModelElement(grammarAccess.getExternAggregatorDefinitionRule());
885 }
886 }
887 {
888 newCompositeNode(grammarAccess.getExternAggregatorDefinitionAccess().getInputTypeNamedElementCrossReference_4_0());
889 }
890 ruleQualifiedName
891 {
892 afterParserOrEnumRuleCall();
893 }
894 )
895 )
896 otherlv_5=FullStopFullStopFullStop
897 {
898 newLeafNode(otherlv_5, grammarAccess.getExternAggregatorDefinitionAccess().getFullStopFullStopFullStopKeyword_5());
899 }
900 otherlv_6=RightCurlyBracket
901 {
902 newLeafNode(otherlv_6, grammarAccess.getExternAggregatorDefinitionAccess().getRightCurlyBracketKeyword_6());
903 }
709 ) 904 )
710; 905;
711 906
712// Entry rule entryRuleExternMetricDefinition 907// Entry rule entryRuleExternDatatypeDefinition
713entryRuleExternMetricDefinition returns [EObject current=null]: 908entryRuleExternDatatypeDefinition returns [EObject current=null]:
714 { newCompositeNode(grammarAccess.getExternMetricDefinitionRule()); } 909 { newCompositeNode(grammarAccess.getExternDatatypeDefinitionRule()); }
715 iv_ruleExternMetricDefinition=ruleExternMetricDefinition 910 iv_ruleExternDatatypeDefinition=ruleExternDatatypeDefinition
716 { $current=$iv_ruleExternMetricDefinition.current; } 911 { $current=$iv_ruleExternDatatypeDefinition.current; }
717 EOF; 912 EOF;
718 913
719// Rule ExternMetricDefinition 914// Rule ExternDatatypeDefinition
720ruleExternMetricDefinition returns [EObject current=null] 915ruleExternDatatypeDefinition returns [EObject current=null]
721@init { 916@init {
722 enterRule(); 917 enterRule();
723} 918}
@@ -727,43 +922,125 @@ ruleExternMetricDefinition returns [EObject current=null]
727 ( 922 (
728 otherlv_0=Extern 923 otherlv_0=Extern
729 { 924 {
730 newLeafNode(otherlv_0, grammarAccess.getExternMetricDefinitionAccess().getExternKeyword_0()); 925 newLeafNode(otherlv_0, grammarAccess.getExternDatatypeDefinitionAccess().getExternKeyword_0());
926 }
927 otherlv_1=Datatype
928 {
929 newLeafNode(otherlv_1, grammarAccess.getExternDatatypeDefinitionAccess().getDatatypeKeyword_1());
731 } 930 }
732 ( 931 (
733 ( 932 (
734 { 933 {
735 newCompositeNode(grammarAccess.getExternMetricDefinitionAccess().getTypeMetricTypeEnumRuleCall_1_0()); 934 newCompositeNode(grammarAccess.getExternDatatypeDefinitionAccess().getNameQualifiedNameParserRuleCall_2_0());
736 } 935 }
737 lv_type_1_0=ruleMetricType 936 lv_name_2_0=ruleQualifiedName
738 { 937 {
739 if ($current==null) { 938 if ($current==null) {
740 $current = createModelElementForParent(grammarAccess.getExternMetricDefinitionRule()); 939 $current = createModelElementForParent(grammarAccess.getExternDatatypeDefinitionRule());
741 } 940 }
742 set( 941 set(
743 $current, 942 $current,
744 "type", 943 "name",
745 lv_type_1_0, 944 lv_name_2_0,
746 "org.eclipse.viatra.solver.language.SolverLanguage.MetricType"); 945 "org.eclipse.viatra.solver.language.SolverLanguage.QualifiedName");
747 afterParserOrEnumRuleCall(); 946 afterParserOrEnumRuleCall();
748 } 947 }
749 ) 948 )
750 ) 949 )
751 ( 950 (
951 otherlv_3=Extends
952 {
953 newLeafNode(otherlv_3, grammarAccess.getExternDatatypeDefinitionAccess().getExtendsKeyword_3_0());
954 }
955 (
956 (
957 {
958 if ($current==null) {
959 $current = createModelElement(grammarAccess.getExternDatatypeDefinitionRule());
960 }
961 }
962 {
963 newCompositeNode(grammarAccess.getExternDatatypeDefinitionAccess().getSupertypesNamedElementCrossReference_3_1_0());
964 }
965 ruleQualifiedName
966 {
967 afterParserOrEnumRuleCall();
968 }
969 )
970 )
971 (
972 otherlv_5=Comma
973 {
974 newLeafNode(otherlv_5, grammarAccess.getExternDatatypeDefinitionAccess().getCommaKeyword_3_2_0());
975 }
976 (
977 (
978 {
979 if ($current==null) {
980 $current = createModelElement(grammarAccess.getExternDatatypeDefinitionRule());
981 }
982 }
983 {
984 newCompositeNode(grammarAccess.getExternDatatypeDefinitionAccess().getSupertypesNamedElementCrossReference_3_2_1_0());
985 }
986 ruleQualifiedName
987 {
988 afterParserOrEnumRuleCall();
989 }
990 )
991 )
992 )*
993 )
994 )
995;
996
997// Entry rule entryRuleVariable
998entryRuleVariable returns [EObject current=null]:
999 { newCompositeNode(grammarAccess.getVariableRule()); }
1000 iv_ruleVariable=ruleVariable
1001 { $current=$iv_ruleVariable.current; }
1002 EOF;
1003
1004// Rule Variable
1005ruleVariable returns [EObject current=null]
1006@init {
1007 enterRule();
1008}
1009@after {
1010 leaveRule();
1011}:
1012 (
1013 (
752 ( 1014 (
753 { 1015 {
754 newCompositeNode(grammarAccess.getExternMetricDefinitionAccess().getHeadCallParserRuleCall_2_0()); 1016 if ($current==null) {
1017 $current = createModelElement(grammarAccess.getVariableRule());
1018 }
1019 }
1020 {
1021 newCompositeNode(grammarAccess.getVariableAccess().getTypeNamedElementCrossReference_0_0());
1022 }
1023 ruleQualifiedName
1024 {
1025 afterParserOrEnumRuleCall();
1026 }
1027 )
1028 )?
1029 (
1030 (
1031 lv_name_1_0=RULE_ID
1032 {
1033 newLeafNode(lv_name_1_0, grammarAccess.getVariableAccess().getNameIDTerminalRuleCall_1_0());
755 } 1034 }
756 lv_head_2_0=ruleCall
757 { 1035 {
758 if ($current==null) { 1036 if ($current==null) {
759 $current = createModelElementForParent(grammarAccess.getExternMetricDefinitionRule()); 1037 $current = createModelElement(grammarAccess.getVariableRule());
760 } 1038 }
761 set( 1039 setWithLastConsumed(
762 $current, 1040 $current,
763 "head", 1041 "name",
764 lv_head_2_0, 1042 lv_name_1_0,
765 "org.eclipse.viatra.solver.language.SolverLanguage.Call"); 1043 "org.eclipse.xtext.common.Terminals.ID");
766 afterParserOrEnumRuleCall();
767 } 1044 }
768 ) 1045 )
769 ) 1046 )
@@ -796,11 +1073,20 @@ ruleExpression returns [EObject current=null]
796 } 1073 }
797 | 1074 |
798 { 1075 {
799 newCompositeNode(grammarAccess.getExpressionAccess().getDisjunctiveExpressionParserRuleCall_1()); 1076 newCompositeNode(grammarAccess.getExpressionAccess().getLetParserRuleCall_1());
800 } 1077 }
801 this_DisjunctiveExpression_1=ruleDisjunctiveExpression 1078 this_Let_1=ruleLet
802 { 1079 {
803 $current = $this_DisjunctiveExpression_1.current; 1080 $current = $this_Let_1.current;
1081 afterParserOrEnumRuleCall();
1082 }
1083 |
1084 {
1085 newCompositeNode(grammarAccess.getExpressionAccess().getImplicationExpressionParserRuleCall_2());
1086 }
1087 this_ImplicationExpression_2=ruleImplicationExpression
1088 {
1089 $current = $this_ImplicationExpression_2.current;
804 afterParserOrEnumRuleCall(); 1090 afterParserOrEnumRuleCall();
805 } 1091 }
806 ) 1092 )
@@ -894,6 +1180,231 @@ ruleIfElse returns [EObject current=null]
894 ) 1180 )
895; 1181;
896 1182
1183// Entry rule entryRuleLet
1184entryRuleLet returns [EObject current=null]:
1185 { newCompositeNode(grammarAccess.getLetRule()); }
1186 iv_ruleLet=ruleLet
1187 { $current=$iv_ruleLet.current; }
1188 EOF;
1189
1190// Rule Let
1191ruleLet returns [EObject current=null]
1192@init {
1193 enterRule();
1194}
1195@after {
1196 leaveRule();
1197}:
1198 (
1199 otherlv_0=Let
1200 {
1201 newLeafNode(otherlv_0, grammarAccess.getLetAccess().getLetKeyword_0());
1202 }
1203 (
1204 (
1205 {
1206 newCompositeNode(grammarAccess.getLetAccess().getBindingsLetBindingParserRuleCall_1_0());
1207 }
1208 lv_bindings_1_0=ruleLetBinding
1209 {
1210 if ($current==null) {
1211 $current = createModelElementForParent(grammarAccess.getLetRule());
1212 }
1213 add(
1214 $current,
1215 "bindings",
1216 lv_bindings_1_0,
1217 "org.eclipse.viatra.solver.language.SolverLanguage.LetBinding");
1218 afterParserOrEnumRuleCall();
1219 }
1220 )
1221 )
1222 (
1223 otherlv_2=Comma
1224 {
1225 newLeafNode(otherlv_2, grammarAccess.getLetAccess().getCommaKeyword_2_0());
1226 }
1227 (
1228 (
1229 {
1230 newCompositeNode(grammarAccess.getLetAccess().getBindingsLetBindingParserRuleCall_2_1_0());
1231 }
1232 lv_bindings_3_0=ruleLetBinding
1233 {
1234 if ($current==null) {
1235 $current = createModelElementForParent(grammarAccess.getLetRule());
1236 }
1237 add(
1238 $current,
1239 "bindings",
1240 lv_bindings_3_0,
1241 "org.eclipse.viatra.solver.language.SolverLanguage.LetBinding");
1242 afterParserOrEnumRuleCall();
1243 }
1244 )
1245 )
1246 )*
1247 otherlv_4=In
1248 {
1249 newLeafNode(otherlv_4, grammarAccess.getLetAccess().getInKeyword_3());
1250 }
1251 (
1252 (
1253 {
1254 newCompositeNode(grammarAccess.getLetAccess().getBodyExpressionParserRuleCall_4_0());
1255 }
1256 lv_body_5_0=ruleExpression
1257 {
1258 if ($current==null) {
1259 $current = createModelElementForParent(grammarAccess.getLetRule());
1260 }
1261 set(
1262 $current,
1263 "body",
1264 lv_body_5_0,
1265 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1266 afterParserOrEnumRuleCall();
1267 }
1268 )
1269 )
1270 )
1271;
1272
1273// Entry rule entryRuleLetBinding
1274entryRuleLetBinding returns [EObject current=null]:
1275 { newCompositeNode(grammarAccess.getLetBindingRule()); }
1276 iv_ruleLetBinding=ruleLetBinding
1277 { $current=$iv_ruleLetBinding.current; }
1278 EOF;
1279
1280// Rule LetBinding
1281ruleLetBinding returns [EObject current=null]
1282@init {
1283 enterRule();
1284}
1285@after {
1286 leaveRule();
1287}:
1288 (
1289 (
1290 (
1291 {
1292 newCompositeNode(grammarAccess.getLetBindingAccess().getVariableVariableParserRuleCall_0_0());
1293 }
1294 lv_variable_0_0=ruleVariable
1295 {
1296 if ($current==null) {
1297 $current = createModelElementForParent(grammarAccess.getLetBindingRule());
1298 }
1299 set(
1300 $current,
1301 "variable",
1302 lv_variable_0_0,
1303 "org.eclipse.viatra.solver.language.SolverLanguage.Variable");
1304 afterParserOrEnumRuleCall();
1305 }
1306 )
1307 )
1308 otherlv_1=EqualsSign
1309 {
1310 newLeafNode(otherlv_1, grammarAccess.getLetBindingAccess().getEqualsSignKeyword_1());
1311 }
1312 (
1313 (
1314 {
1315 newCompositeNode(grammarAccess.getLetBindingAccess().getValueAdditiveExpressionParserRuleCall_2_0());
1316 }
1317 lv_value_2_0=ruleAdditiveExpression
1318 {
1319 if ($current==null) {
1320 $current = createModelElementForParent(grammarAccess.getLetBindingRule());
1321 }
1322 set(
1323 $current,
1324 "value",
1325 lv_value_2_0,
1326 "org.eclipse.viatra.solver.language.SolverLanguage.AdditiveExpression");
1327 afterParserOrEnumRuleCall();
1328 }
1329 )
1330 )
1331 )
1332;
1333
1334// Entry rule entryRuleImplicationExpression
1335entryRuleImplicationExpression returns [EObject current=null]:
1336 { newCompositeNode(grammarAccess.getImplicationExpressionRule()); }
1337 iv_ruleImplicationExpression=ruleImplicationExpression
1338 { $current=$iv_ruleImplicationExpression.current; }
1339 EOF;
1340
1341// Rule ImplicationExpression
1342ruleImplicationExpression returns [EObject current=null]
1343@init {
1344 enterRule();
1345}
1346@after {
1347 leaveRule();
1348}:
1349 (
1350 {
1351 newCompositeNode(grammarAccess.getImplicationExpressionAccess().getDisjunctiveExpressionParserRuleCall_0());
1352 }
1353 this_DisjunctiveExpression_0=ruleDisjunctiveExpression
1354 {
1355 $current = $this_DisjunctiveExpression_0.current;
1356 afterParserOrEnumRuleCall();
1357 }
1358 (
1359 (
1360 {
1361 $current = forceCreateModelElementAndSet(
1362 grammarAccess.getImplicationExpressionAccess().getBinaryExpressionLeftAction_1_0(),
1363 $current);
1364 }
1365 )
1366 (
1367 (
1368 {
1369 newCompositeNode(grammarAccess.getImplicationExpressionAccess().getOpImplicationOperatorEnumRuleCall_1_1_0());
1370 }
1371 lv_op_2_0=ruleImplicationOperator
1372 {
1373 if ($current==null) {
1374 $current = createModelElementForParent(grammarAccess.getImplicationExpressionRule());
1375 }
1376 set(
1377 $current,
1378 "op",
1379 lv_op_2_0,
1380 "org.eclipse.viatra.solver.language.SolverLanguage.ImplicationOperator");
1381 afterParserOrEnumRuleCall();
1382 }
1383 )
1384 )
1385 (
1386 (
1387 {
1388 newCompositeNode(grammarAccess.getImplicationExpressionAccess().getRightImplicationExpressionParserRuleCall_1_2_0());
1389 }
1390 lv_right_3_0=ruleImplicationExpression
1391 {
1392 if ($current==null) {
1393 $current = createModelElementForParent(grammarAccess.getImplicationExpressionRule());
1394 }
1395 set(
1396 $current,
1397 "right",
1398 lv_right_3_0,
1399 "org.eclipse.viatra.solver.language.SolverLanguage.ImplicationExpression");
1400 afterParserOrEnumRuleCall();
1401 }
1402 )
1403 )
1404 )?
1405 )
1406;
1407
897// Entry rule entryRuleDisjunctiveExpression 1408// Entry rule entryRuleDisjunctiveExpression
898entryRuleDisjunctiveExpression returns [EObject current=null]: 1409entryRuleDisjunctiveExpression returns [EObject current=null]:
899 { newCompositeNode(grammarAccess.getDisjunctiveExpressionRule()); } 1410 { newCompositeNode(grammarAccess.getDisjunctiveExpressionRule()); }
@@ -1383,11 +1894,11 @@ ruleExponentialExpression returns [EObject current=null]
1383}: 1894}:
1384 ( 1895 (
1385 { 1896 {
1386 newCompositeNode(grammarAccess.getExponentialExpressionAccess().getUnaryExpressionParserRuleCall_0()); 1897 newCompositeNode(grammarAccess.getExponentialExpressionAccess().getCastExpressionParserRuleCall_0());
1387 } 1898 }
1388 this_UnaryExpression_0=ruleUnaryExpression 1899 this_CastExpression_0=ruleCastExpression
1389 { 1900 {
1390 $current = $this_UnaryExpression_0.current; 1901 $current = $this_CastExpression_0.current;
1391 afterParserOrEnumRuleCall(); 1902 afterParserOrEnumRuleCall();
1392 } 1903 }
1393 ( 1904 (
@@ -1420,9 +1931,9 @@ ruleExponentialExpression returns [EObject current=null]
1420 ( 1931 (
1421 ( 1932 (
1422 { 1933 {
1423 newCompositeNode(grammarAccess.getExponentialExpressionAccess().getRightExponentialExpressionParserRuleCall_1_2_0()); 1934 newCompositeNode(grammarAccess.getExponentialExpressionAccess().getRightCastExpressionParserRuleCall_1_2_0());
1424 } 1935 }
1425 lv_right_3_0=ruleExponentialExpression 1936 lv_right_3_0=ruleCastExpression
1426 { 1937 {
1427 if ($current==null) { 1938 if ($current==null) {
1428 $current = createModelElementForParent(grammarAccess.getExponentialExpressionRule()); 1939 $current = createModelElementForParent(grammarAccess.getExponentialExpressionRule());
@@ -1431,7 +1942,63 @@ ruleExponentialExpression returns [EObject current=null]
1431 $current, 1942 $current,
1432 "right", 1943 "right",
1433 lv_right_3_0, 1944 lv_right_3_0,
1434 "org.eclipse.viatra.solver.language.SolverLanguage.ExponentialExpression"); 1945 "org.eclipse.viatra.solver.language.SolverLanguage.CastExpression");
1946 afterParserOrEnumRuleCall();
1947 }
1948 )
1949 )
1950 )?
1951 )
1952;
1953
1954// Entry rule entryRuleCastExpression
1955entryRuleCastExpression returns [EObject current=null]:
1956 { newCompositeNode(grammarAccess.getCastExpressionRule()); }
1957 iv_ruleCastExpression=ruleCastExpression
1958 { $current=$iv_ruleCastExpression.current; }
1959 EOF;
1960
1961// Rule CastExpression
1962ruleCastExpression returns [EObject current=null]
1963@init {
1964 enterRule();
1965}
1966@after {
1967 leaveRule();
1968}:
1969 (
1970 {
1971 newCompositeNode(grammarAccess.getCastExpressionAccess().getUnaryExpressionParserRuleCall_0());
1972 }
1973 this_UnaryExpression_0=ruleUnaryExpression
1974 {
1975 $current = $this_UnaryExpression_0.current;
1976 afterParserOrEnumRuleCall();
1977 }
1978 (
1979 (
1980 {
1981 $current = forceCreateModelElementAndSet(
1982 grammarAccess.getCastExpressionAccess().getCastExpressionBodyAction_1_0(),
1983 $current);
1984 }
1985 )
1986 otherlv_2=As
1987 {
1988 newLeafNode(otherlv_2, grammarAccess.getCastExpressionAccess().getAsKeyword_1_1());
1989 }
1990 (
1991 (
1992 {
1993 if ($current==null) {
1994 $current = createModelElement(grammarAccess.getCastExpressionRule());
1995 }
1996 }
1997 {
1998 newCompositeNode(grammarAccess.getCastExpressionAccess().getTypeNamedElementCrossReference_1_2_0());
1999 }
2000 ruleQualifiedName
2001 {
1435 afterParserOrEnumRuleCall(); 2002 afterParserOrEnumRuleCall();
1436 } 2003 }
1437 ) 2004 )
@@ -1541,11 +2108,11 @@ ruleAggregationExpression returns [EObject current=null]
1541 } 2108 }
1542 | 2109 |
1543 { 2110 {
1544 newCompositeNode(grammarAccess.getAggregationExpressionAccess().getCountParserRuleCall_1()); 2111 newCompositeNode(grammarAccess.getAggregationExpressionAccess().getQuantifiedExpressionParserRuleCall_1());
1545 } 2112 }
1546 this_Count_1=ruleCount 2113 this_QuantifiedExpression_1=ruleQuantifiedExpression
1547 { 2114 {
1548 $current = $this_Count_1.current; 2115 $current = $this_QuantifiedExpression_1.current;
1549 afterParserOrEnumRuleCall(); 2116 afterParserOrEnumRuleCall();
1550 } 2117 }
1551 | 2118 |
@@ -1560,15 +2127,15 @@ ruleAggregationExpression returns [EObject current=null]
1560 ) 2127 )
1561; 2128;
1562 2129
1563// Entry rule entryRuleCount 2130// Entry rule entryRuleLocalVariables
1564entryRuleCount returns [EObject current=null]: 2131entryRuleLocalVariables returns [EObject current=null]:
1565 { newCompositeNode(grammarAccess.getCountRule()); } 2132 { newCompositeNode(grammarAccess.getLocalVariablesRule()); }
1566 iv_ruleCount=ruleCount 2133 iv_ruleLocalVariables=ruleLocalVariables
1567 { $current=$iv_ruleCount.current; } 2134 { $current=$iv_ruleLocalVariables.current; }
1568 EOF; 2135 EOF;
1569 2136
1570// Rule Count 2137// Rule LocalVariables
1571ruleCount returns [EObject current=null] 2138ruleLocalVariables returns [EObject current=null]
1572@init { 2139@init {
1573 enterRule(); 2140 enterRule();
1574} 2141}
@@ -1576,36 +2143,150 @@ ruleCount returns [EObject current=null]
1576 leaveRule(); 2143 leaveRule();
1577}: 2144}:
1578 ( 2145 (
1579 otherlv_0=Count 2146 (
2147 {
2148 $current = forceCreateModelElement(
2149 grammarAccess.getLocalVariablesAccess().getLocalVariablesAction_0(),
2150 $current);
2151 }
2152 )
2153 otherlv_1=LeftSquareBracket
1580 { 2154 {
1581 newLeafNode(otherlv_0, grammarAccess.getCountAccess().getCountKeyword_0()); 2155 newLeafNode(otherlv_1, grammarAccess.getLocalVariablesAccess().getLeftSquareBracketKeyword_1());
1582 } 2156 }
1583 otherlv_1=LeftCurlyBracket 2157 (
2158 (
2159 (
2160 {
2161 newCompositeNode(grammarAccess.getLocalVariablesAccess().getVariablesVariableParserRuleCall_2_0_0());
2162 }
2163 lv_variables_2_0=ruleVariable
2164 {
2165 if ($current==null) {
2166 $current = createModelElementForParent(grammarAccess.getLocalVariablesRule());
2167 }
2168 add(
2169 $current,
2170 "variables",
2171 lv_variables_2_0,
2172 "org.eclipse.viatra.solver.language.SolverLanguage.Variable");
2173 afterParserOrEnumRuleCall();
2174 }
2175 )
2176 )
2177 (
2178 otherlv_3=Comma
2179 {
2180 newLeafNode(otherlv_3, grammarAccess.getLocalVariablesAccess().getCommaKeyword_2_1_0());
2181 }
2182 (
2183 (
2184 {
2185 newCompositeNode(grammarAccess.getLocalVariablesAccess().getVariablesVariableParserRuleCall_2_1_1_0());
2186 }
2187 lv_variables_4_0=ruleVariable
2188 {
2189 if ($current==null) {
2190 $current = createModelElementForParent(grammarAccess.getLocalVariablesRule());
2191 }
2192 add(
2193 $current,
2194 "variables",
2195 lv_variables_4_0,
2196 "org.eclipse.viatra.solver.language.SolverLanguage.Variable");
2197 afterParserOrEnumRuleCall();
2198 }
2199 )
2200 )
2201 )*
2202 )?
2203 otherlv_5=RightSquareBracket
1584 { 2204 {
1585 newLeafNode(otherlv_1, grammarAccess.getCountAccess().getLeftCurlyBracketKeyword_1()); 2205 newLeafNode(otherlv_5, grammarAccess.getLocalVariablesAccess().getRightSquareBracketKeyword_3());
1586 } 2206 }
2207 )
2208;
2209
2210// Entry rule entryRuleQuantifiedExpression
2211entryRuleQuantifiedExpression returns [EObject current=null]:
2212 { newCompositeNode(grammarAccess.getQuantifiedExpressionRule()); }
2213 iv_ruleQuantifiedExpression=ruleQuantifiedExpression
2214 { $current=$iv_ruleQuantifiedExpression.current; }
2215 EOF;
2216
2217// Rule QuantifiedExpression
2218ruleQuantifiedExpression returns [EObject current=null]
2219@init {
2220 enterRule();
2221}
2222@after {
2223 leaveRule();
2224}:
2225 (
1587 ( 2226 (
1588 ( 2227 (
1589 { 2228 {
1590 newCompositeNode(grammarAccess.getCountAccess().getBodyExpressionParserRuleCall_2_0()); 2229 newCompositeNode(grammarAccess.getQuantifiedExpressionAccess().getQuantifierQuantifierEnumRuleCall_0_0());
1591 } 2230 }
1592 lv_body_2_0=ruleExpression 2231 lv_quantifier_0_0=ruleQuantifier
1593 { 2232 {
1594 if ($current==null) { 2233 if ($current==null) {
1595 $current = createModelElementForParent(grammarAccess.getCountRule()); 2234 $current = createModelElementForParent(grammarAccess.getQuantifiedExpressionRule());
2235 }
2236 set(
2237 $current,
2238 "quantifier",
2239 lv_quantifier_0_0,
2240 "org.eclipse.viatra.solver.language.SolverLanguage.Quantifier");
2241 afterParserOrEnumRuleCall();
2242 }
2243 )
2244 )
2245 (
2246 (
2247 {
2248 newCompositeNode(grammarAccess.getQuantifiedExpressionAccess().getLocalVariablesLocalVariablesParserRuleCall_1_0());
2249 }
2250 lv_localVariables_1_0=ruleLocalVariables
2251 {
2252 if ($current==null) {
2253 $current = createModelElementForParent(grammarAccess.getQuantifiedExpressionRule());
2254 }
2255 set(
2256 $current,
2257 "localVariables",
2258 lv_localVariables_1_0,
2259 "org.eclipse.viatra.solver.language.SolverLanguage.LocalVariables");
2260 afterParserOrEnumRuleCall();
2261 }
2262 )
2263 )?
2264 otherlv_2=LeftCurlyBracket
2265 {
2266 newLeafNode(otherlv_2, grammarAccess.getQuantifiedExpressionAccess().getLeftCurlyBracketKeyword_2());
2267 }
2268 (
2269 (
2270 {
2271 newCompositeNode(grammarAccess.getQuantifiedExpressionAccess().getBodyExpressionParserRuleCall_3_0());
2272 }
2273 lv_body_3_0=ruleExpression
2274 {
2275 if ($current==null) {
2276 $current = createModelElementForParent(grammarAccess.getQuantifiedExpressionRule());
1596 } 2277 }
1597 set( 2278 set(
1598 $current, 2279 $current,
1599 "body", 2280 "body",
1600 lv_body_2_0, 2281 lv_body_3_0,
1601 "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); 2282 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1602 afterParserOrEnumRuleCall(); 2283 afterParserOrEnumRuleCall();
1603 } 2284 }
1604 ) 2285 )
1605 ) 2286 )
1606 otherlv_3=RightCurlyBracket 2287 otherlv_4=RightCurlyBracket
1607 { 2288 {
1608 newLeafNode(otherlv_3, grammarAccess.getCountAccess().getRightCurlyBracketKeyword_3()); 2289 newLeafNode(otherlv_4, grammarAccess.getQuantifiedExpressionAccess().getRightCurlyBracketKeyword_4());
1609 } 2290 }
1610 ) 2291 )
1611; 2292;
@@ -1629,71 +2310,89 @@ ruleAggregation returns [EObject current=null]
1629 ( 2310 (
1630 ( 2311 (
1631 { 2312 {
1632 newCompositeNode(grammarAccess.getAggregationAccess().getOpAggregationOpEnumRuleCall_0_0());
1633 }
1634 lv_op_0_0=ruleAggregationOp
1635 {
1636 if ($current==null) { 2313 if ($current==null) {
1637 $current = createModelElementForParent(grammarAccess.getAggregationRule()); 2314 $current = createModelElement(grammarAccess.getAggregationRule());
1638 } 2315 }
1639 set( 2316 }
1640 $current, 2317 {
1641 "op", 2318 newCompositeNode(grammarAccess.getAggregationAccess().getOpNamedElementCrossReference_0_0());
1642 lv_op_0_0, 2319 }
1643 "org.eclipse.viatra.solver.language.SolverLanguage.AggregationOp"); 2320 ruleQualifiedName
2321 {
1644 afterParserOrEnumRuleCall(); 2322 afterParserOrEnumRuleCall();
1645 } 2323 }
1646 ) 2324 )
1647 ) 2325 )
1648 otherlv_1=LeftCurlyBracket
1649 {
1650 newLeafNode(otherlv_1, grammarAccess.getAggregationAccess().getLeftCurlyBracketKeyword_1());
1651 }
1652 ( 2326 (
1653 ( 2327 (
1654 { 2328 {
1655 newCompositeNode(grammarAccess.getAggregationAccess().getBodyExpressionParserRuleCall_2_0()); 2329 newCompositeNode(grammarAccess.getAggregationAccess().getLocalVariablesLocalVariablesParserRuleCall_1_0());
1656 } 2330 }
1657 lv_body_2_0=ruleExpression 2331 lv_localVariables_1_0=ruleLocalVariables
1658 { 2332 {
1659 if ($current==null) { 2333 if ($current==null) {
1660 $current = createModelElementForParent(grammarAccess.getAggregationRule()); 2334 $current = createModelElementForParent(grammarAccess.getAggregationRule());
1661 } 2335 }
1662 set( 2336 set(
1663 $current, 2337 $current,
1664 "body", 2338 "localVariables",
1665 lv_body_2_0, 2339 lv_localVariables_1_0,
1666 "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); 2340 "org.eclipse.viatra.solver.language.SolverLanguage.LocalVariables");
1667 afterParserOrEnumRuleCall(); 2341 afterParserOrEnumRuleCall();
1668 } 2342 }
1669 ) 2343 )
1670 ) 2344 )?
1671 otherlv_3=VerticalLine 2345 otherlv_2=LeftCurlyBracket
1672 { 2346 {
1673 newLeafNode(otherlv_3, grammarAccess.getAggregationAccess().getVerticalLineKeyword_3()); 2347 newLeafNode(otherlv_2, grammarAccess.getAggregationAccess().getLeftCurlyBracketKeyword_2());
1674 } 2348 }
1675 ( 2349 (
1676 ( 2350 (
1677 { 2351 {
1678 newCompositeNode(grammarAccess.getAggregationAccess().getConditionExpressionParserRuleCall_4_0()); 2352 newCompositeNode(grammarAccess.getAggregationAccess().getBodyExpressionParserRuleCall_3_0());
1679 } 2353 }
1680 lv_condition_4_0=ruleExpression 2354 lv_body_3_0=ruleExpression
1681 { 2355 {
1682 if ($current==null) { 2356 if ($current==null) {
1683 $current = createModelElementForParent(grammarAccess.getAggregationRule()); 2357 $current = createModelElementForParent(grammarAccess.getAggregationRule());
1684 } 2358 }
1685 set( 2359 set(
1686 $current, 2360 $current,
1687 "condition", 2361 "body",
1688 lv_condition_4_0, 2362 lv_body_3_0,
1689 "org.eclipse.viatra.solver.language.SolverLanguage.Expression"); 2363 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
1690 afterParserOrEnumRuleCall(); 2364 afterParserOrEnumRuleCall();
1691 } 2365 }
1692 ) 2366 )
1693 ) 2367 )
1694 otherlv_5=RightCurlyBracket 2368 (
2369 otherlv_4=VerticalLine
2370 {
2371 newLeafNode(otherlv_4, grammarAccess.getAggregationAccess().getVerticalLineKeyword_4_0());
2372 }
2373 (
2374 (
2375 {
2376 newCompositeNode(grammarAccess.getAggregationAccess().getConditionExpressionParserRuleCall_4_1_0());
2377 }
2378 lv_condition_5_0=ruleExpression
2379 {
2380 if ($current==null) {
2381 $current = createModelElementForParent(grammarAccess.getAggregationRule());
2382 }
2383 set(
2384 $current,
2385 "condition",
2386 lv_condition_5_0,
2387 "org.eclipse.viatra.solver.language.SolverLanguage.Expression");
2388 afterParserOrEnumRuleCall();
2389 }
2390 )
2391 )
2392 )?
2393 otherlv_6=RightCurlyBracket
1695 { 2394 {
1696 newLeafNode(otherlv_5, grammarAccess.getAggregationAccess().getRightCurlyBracketKeyword_5()); 2395 newLeafNode(otherlv_6, grammarAccess.getAggregationAccess().getRightCurlyBracketKeyword_5());
1697 } 2396 }
1698 ) 2397 )
1699; 2398;
@@ -3485,8 +4184,8 @@ finally {
3485 myHiddenTokenState.restore(); 4184 myHiddenTokenState.restore();
3486} 4185}
3487 4186
3488// Rule MetricType 4187// Rule ImplicationOperator
3489ruleMetricType returns [Enumerator current=null] 4188ruleImplicationOperator returns [Enumerator current=null]
3490@init { 4189@init {
3491 enterRule(); 4190 enterRule();
3492} 4191}
@@ -3494,21 +4193,11 @@ ruleMetricType returns [Enumerator current=null]
3494 leaveRule(); 4193 leaveRule();
3495}: 4194}:
3496 ( 4195 (
3497 ( 4196 enumLiteral_0=EqualsSignGreaterThanSign
3498 enumLiteral_0=Int 4197 {
3499 { 4198 $current = grammarAccess.getImplicationOperatorAccess().getIMPLIESEnumLiteralDeclaration().getEnumLiteral().getInstance();
3500 $current = grammarAccess.getMetricTypeAccess().getINTEnumLiteralDeclaration_0().getEnumLiteral().getInstance(); 4199 newLeafNode(enumLiteral_0, grammarAccess.getImplicationOperatorAccess().getIMPLIESEnumLiteralDeclaration());
3501 newLeafNode(enumLiteral_0, grammarAccess.getMetricTypeAccess().getINTEnumLiteralDeclaration_0()); 4200 }
3502 }
3503 )
3504 |
3505 (
3506 enumLiteral_1=Real
3507 {
3508 $current = grammarAccess.getMetricTypeAccess().getREALEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
3509 newLeafNode(enumLiteral_1, grammarAccess.getMetricTypeAccess().getREALEnumLiteralDeclaration_1());
3510 }
3511 )
3512 ) 4201 )
3513; 4202;
3514 4203
@@ -3709,8 +4398,8 @@ ruleUnaryOp returns [Enumerator current=null]
3709 ) 4398 )
3710; 4399;
3711 4400
3712// Rule AggregationOp 4401// Rule Quantifier
3713ruleAggregationOp returns [Enumerator current=null] 4402ruleQuantifier returns [Enumerator current=null]
3714@init { 4403@init {
3715 enterRule(); 4404 enterRule();
3716} 4405}
@@ -3719,50 +4408,26 @@ ruleAggregationOp returns [Enumerator current=null]
3719}: 4408}:
3720 ( 4409 (
3721 ( 4410 (
3722 enumLiteral_0=Only 4411 enumLiteral_0=Exists
3723 {
3724 $current = grammarAccess.getAggregationOpAccess().getONLYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
3725 newLeafNode(enumLiteral_0, grammarAccess.getAggregationOpAccess().getONLYEnumLiteralDeclaration_0());
3726 }
3727 )
3728 |
3729 (
3730 enumLiteral_1=Sum
3731 {
3732 $current = grammarAccess.getAggregationOpAccess().getSUMEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
3733 newLeafNode(enumLiteral_1, grammarAccess.getAggregationOpAccess().getSUMEnumLiteralDeclaration_1());
3734 }
3735 )
3736 |
3737 (
3738 enumLiteral_2=Prod
3739 {
3740 $current = grammarAccess.getAggregationOpAccess().getPRODEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
3741 newLeafNode(enumLiteral_2, grammarAccess.getAggregationOpAccess().getPRODEnumLiteralDeclaration_2());
3742 }
3743 )
3744 |
3745 (
3746 enumLiteral_3=Avg
3747 { 4412 {
3748 $current = grammarAccess.getAggregationOpAccess().getAVGEnumLiteralDeclaration_3().getEnumLiteral().getInstance(); 4413 $current = grammarAccess.getQuantifierAccess().getEXISTSEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
3749 newLeafNode(enumLiteral_3, grammarAccess.getAggregationOpAccess().getAVGEnumLiteralDeclaration_3()); 4414 newLeafNode(enumLiteral_0, grammarAccess.getQuantifierAccess().getEXISTSEnumLiteralDeclaration_0());
3750 } 4415 }
3751 ) 4416 )
3752 | 4417 |
3753 ( 4418 (
3754 enumLiteral_4=Min 4419 enumLiteral_1=Forall
3755 { 4420 {
3756 $current = grammarAccess.getAggregationOpAccess().getMINEnumLiteralDeclaration_4().getEnumLiteral().getInstance(); 4421 $current = grammarAccess.getQuantifierAccess().getFORALLEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
3757 newLeafNode(enumLiteral_4, grammarAccess.getAggregationOpAccess().getMINEnumLiteralDeclaration_4()); 4422 newLeafNode(enumLiteral_1, grammarAccess.getQuantifierAccess().getFORALLEnumLiteralDeclaration_1());
3758 } 4423 }
3759 ) 4424 )
3760 | 4425 |
3761 ( 4426 (
3762 enumLiteral_5=Max 4427 enumLiteral_2=Count
3763 { 4428 {
3764 $current = grammarAccess.getAggregationOpAccess().getMAXEnumLiteralDeclaration_5().getEnumLiteral().getInstance(); 4429 $current = grammarAccess.getQuantifierAccess().getCOUNTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
3765 newLeafNode(enumLiteral_5, grammarAccess.getAggregationOpAccess().getMAXEnumLiteralDeclaration_5()); 4430 newLeafNode(enumLiteral_2, grammarAccess.getQuantifierAccess().getCOUNTEnumLiteralDeclaration_2());
3766 } 4431 }
3767 ) 4432 )
3768 ) 4433 )