diff --git a/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/helper/LabelConstants.java b/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/helper/LabelConstants.java index 24e78e17e..e6da58faf 100644 --- a/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/helper/LabelConstants.java +++ b/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/helper/LabelConstants.java @@ -71,5 +71,7 @@ public class LabelConstants { public static final String SUBSETTING = ":>"; + public static final String VARIANT = "variant"; + public static final String VARIATION = "variation"; } diff --git a/backend/services/syson-services/src/main/generated/org/eclipse/syson/services/grammars/DirectEdit.interp b/backend/services/syson-services/src/main/generated/org/eclipse/syson/services/grammars/DirectEdit.interp index 0daaaa83d..7a1bab3eb 100644 --- a/backend/services/syson-services/src/main/generated/org/eclipse/syson/services/grammars/DirectEdit.interp +++ b/backend/services/syson-services/src/main/generated/org/eclipse/syson/services/grammars/DirectEdit.interp @@ -309,4 +309,4 @@ name atn: -[4, 1, 134, 257, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 1, 0, 3, 0, 68, 8, 0, 1, 0, 3, 0, 71, 8, 0, 1, 0, 3, 0, 74, 8, 0, 1, 0, 3, 0, 77, 8, 0, 1, 0, 3, 0, 80, 8, 0, 1, 0, 1, 0, 1, 0, 1, 1, 3, 1, 86, 8, 1, 1, 1, 3, 1, 89, 8, 1, 1, 1, 3, 1, 92, 8, 1, 1, 1, 3, 1, 95, 8, 1, 1, 1, 3, 1, 98, 8, 1, 1, 1, 3, 1, 101, 8, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 121, 8, 9, 1, 9, 1, 9, 1, 9, 1, 10, 3, 10, 127, 8, 10, 1, 10, 3, 10, 130, 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 140, 8, 14, 1, 14, 3, 14, 143, 8, 14, 1, 14, 3, 14, 146, 8, 14, 1, 14, 3, 14, 149, 8, 14, 1, 14, 1, 14, 3, 14, 153, 8, 14, 1, 14, 3, 14, 156, 8, 14, 3, 14, 158, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 175, 8, 18, 1, 19, 1, 19, 1, 20, 4, 20, 180, 8, 20, 11, 20, 12, 20, 181, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 193, 8, 22, 1, 22, 3, 22, 196, 8, 22, 1, 23, 1, 23, 1, 23, 3, 23, 201, 8, 23, 1, 24, 4, 24, 204, 8, 24, 11, 24, 12, 24, 205, 1, 25, 1, 25, 1, 26, 3, 26, 211, 8, 26, 1, 26, 3, 26, 214, 8, 26, 1, 26, 3, 26, 217, 8, 26, 1, 27, 1, 27, 1, 27, 5, 27, 222, 8, 27, 10, 27, 12, 27, 225, 9, 27, 1, 28, 1, 28, 3, 28, 229, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 239, 8, 30, 10, 30, 12, 30, 242, 9, 30, 1, 31, 1, 31, 1, 31, 5, 31, 247, 8, 31, 10, 31, 12, 31, 250, 9, 31, 1, 32, 4, 32, 253, 8, 32, 11, 32, 12, 32, 254, 1, 32, 0, 0, 33, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 0, 7, 3, 0, 76, 76, 78, 78, 99, 99, 2, 0, 4, 4, 22, 22, 1, 0, 21, 24, 1, 0, 3, 3, 1, 0, 9, 14, 1, 0, 10, 14, 5, 0, 1, 1, 5, 8, 19, 19, 91, 91, 97, 97, 260, 0, 67, 1, 0, 0, 0, 2, 85, 1, 0, 0, 0, 4, 102, 1, 0, 0, 0, 6, 104, 1, 0, 0, 0, 8, 106, 1, 0, 0, 0, 10, 108, 1, 0, 0, 0, 12, 110, 1, 0, 0, 0, 14, 112, 1, 0, 0, 0, 16, 114, 1, 0, 0, 0, 18, 116, 1, 0, 0, 0, 20, 126, 1, 0, 0, 0, 22, 131, 1, 0, 0, 0, 24, 133, 1, 0, 0, 0, 26, 135, 1, 0, 0, 0, 28, 157, 1, 0, 0, 0, 30, 159, 1, 0, 0, 0, 32, 162, 1, 0, 0, 0, 34, 165, 1, 0, 0, 0, 36, 168, 1, 0, 0, 0, 38, 176, 1, 0, 0, 0, 40, 179, 1, 0, 0, 0, 42, 183, 1, 0, 0, 0, 44, 195, 1, 0, 0, 0, 46, 197, 1, 0, 0, 0, 48, 203, 1, 0, 0, 0, 50, 207, 1, 0, 0, 0, 52, 210, 1, 0, 0, 0, 54, 218, 1, 0, 0, 0, 56, 226, 1, 0, 0, 0, 58, 230, 1, 0, 0, 0, 60, 234, 1, 0, 0, 0, 62, 243, 1, 0, 0, 0, 64, 252, 1, 0, 0, 0, 66, 68, 3, 2, 1, 0, 67, 66, 1, 0, 0, 0, 67, 68, 1, 0, 0, 0, 68, 70, 1, 0, 0, 0, 69, 71, 3, 16, 8, 0, 70, 69, 1, 0, 0, 0, 70, 71, 1, 0, 0, 0, 71, 73, 1, 0, 0, 0, 72, 74, 3, 64, 32, 0, 73, 72, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 76, 1, 0, 0, 0, 75, 77, 3, 18, 9, 0, 76, 75, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 79, 1, 0, 0, 0, 78, 80, 3, 20, 10, 0, 79, 78, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 3, 28, 14, 0, 82, 83, 5, 0, 0, 1, 83, 1, 1, 0, 0, 0, 84, 86, 3, 4, 2, 0, 85, 84, 1, 0, 0, 0, 85, 86, 1, 0, 0, 0, 86, 88, 1, 0, 0, 0, 87, 89, 3, 6, 3, 0, 88, 87, 1, 0, 0, 0, 88, 89, 1, 0, 0, 0, 89, 91, 1, 0, 0, 0, 90, 92, 3, 8, 4, 0, 91, 90, 1, 0, 0, 0, 91, 92, 1, 0, 0, 0, 92, 94, 1, 0, 0, 0, 93, 95, 3, 10, 5, 0, 94, 93, 1, 0, 0, 0, 94, 95, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 98, 3, 12, 6, 0, 97, 96, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 100, 1, 0, 0, 0, 99, 101, 3, 14, 7, 0, 100, 99, 1, 0, 0, 0, 100, 101, 1, 0, 0, 0, 101, 3, 1, 0, 0, 0, 102, 103, 7, 0, 0, 0, 103, 5, 1, 0, 0, 0, 104, 105, 5, 27, 0, 0, 105, 7, 1, 0, 0, 0, 106, 107, 5, 132, 0, 0, 107, 9, 1, 0, 0, 0, 108, 109, 5, 107, 0, 0, 109, 11, 1, 0, 0, 0, 110, 111, 5, 51, 0, 0, 111, 13, 1, 0, 0, 0, 112, 113, 5, 58, 0, 0, 113, 15, 1, 0, 0, 0, 114, 115, 5, 111, 0, 0, 115, 17, 1, 0, 0, 0, 116, 120, 5, 1, 0, 0, 117, 118, 3, 26, 13, 0, 118, 119, 5, 2, 0, 0, 119, 121, 1, 0, 0, 0, 120, 117, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 123, 3, 26, 13, 0, 123, 124, 5, 3, 0, 0, 124, 19, 1, 0, 0, 0, 125, 127, 3, 22, 11, 0, 126, 125, 1, 0, 0, 0, 126, 127, 1, 0, 0, 0, 127, 129, 1, 0, 0, 0, 128, 130, 3, 24, 12, 0, 129, 128, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 21, 1, 0, 0, 0, 131, 132, 5, 97, 0, 0, 132, 23, 1, 0, 0, 0, 133, 134, 5, 91, 0, 0, 134, 25, 1, 0, 0, 0, 135, 136, 7, 1, 0, 0, 136, 27, 1, 0, 0, 0, 137, 140, 3, 30, 15, 0, 138, 140, 3, 32, 16, 0, 139, 137, 1, 0, 0, 0, 139, 138, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 142, 1, 0, 0, 0, 141, 143, 3, 34, 17, 0, 142, 141, 1, 0, 0, 0, 142, 143, 1, 0, 0, 0, 143, 145, 1, 0, 0, 0, 144, 146, 3, 36, 18, 0, 145, 144, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 158, 1, 0, 0, 0, 147, 149, 3, 34, 17, 0, 148, 147, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 152, 1, 0, 0, 0, 150, 153, 3, 30, 15, 0, 151, 153, 3, 32, 16, 0, 152, 150, 1, 0, 0, 0, 152, 151, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 155, 1, 0, 0, 0, 154, 156, 3, 36, 18, 0, 155, 154, 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 158, 1, 0, 0, 0, 157, 139, 1, 0, 0, 0, 157, 148, 1, 0, 0, 0, 158, 29, 1, 0, 0, 0, 159, 160, 5, 5, 0, 0, 160, 161, 3, 62, 31, 0, 161, 31, 1, 0, 0, 0, 162, 163, 5, 6, 0, 0, 163, 164, 3, 62, 31, 0, 164, 33, 1, 0, 0, 0, 165, 166, 5, 7, 0, 0, 166, 167, 3, 62, 31, 0, 167, 35, 1, 0, 0, 0, 168, 169, 5, 8, 0, 0, 169, 174, 3, 38, 19, 0, 170, 171, 5, 1, 0, 0, 171, 172, 3, 40, 20, 0, 172, 173, 5, 3, 0, 0, 173, 175, 1, 0, 0, 0, 174, 170, 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 37, 1, 0, 0, 0, 176, 177, 7, 2, 0, 0, 177, 39, 1, 0, 0, 0, 178, 180, 8, 3, 0, 0, 179, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 179, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 41, 1, 0, 0, 0, 183, 184, 3, 44, 22, 0, 184, 185, 3, 50, 25, 0, 185, 186, 3, 44, 22, 0, 186, 43, 1, 0, 0, 0, 187, 192, 3, 38, 19, 0, 188, 189, 5, 1, 0, 0, 189, 190, 3, 40, 20, 0, 190, 191, 5, 3, 0, 0, 191, 193, 1, 0, 0, 0, 192, 188, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 196, 1, 0, 0, 0, 194, 196, 3, 46, 23, 0, 195, 187, 1, 0, 0, 0, 195, 194, 1, 0, 0, 0, 196, 45, 1, 0, 0, 0, 197, 200, 3, 48, 24, 0, 198, 199, 5, 9, 0, 0, 199, 201, 3, 46, 23, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 47, 1, 0, 0, 0, 202, 204, 8, 4, 0, 0, 203, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 49, 1, 0, 0, 0, 207, 208, 7, 5, 0, 0, 208, 51, 1, 0, 0, 0, 209, 211, 3, 54, 27, 0, 210, 209, 1, 0, 0, 0, 210, 211, 1, 0, 0, 0, 211, 213, 1, 0, 0, 0, 212, 214, 3, 58, 29, 0, 213, 212, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 216, 1, 0, 0, 0, 215, 217, 3, 60, 30, 0, 216, 215, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 53, 1, 0, 0, 0, 218, 223, 3, 56, 28, 0, 219, 220, 5, 15, 0, 0, 220, 222, 3, 56, 28, 0, 221, 219, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 55, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 3, 64, 32, 0, 227, 229, 3, 34, 17, 0, 228, 227, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 57, 1, 0, 0, 0, 230, 231, 5, 1, 0, 0, 231, 232, 3, 36, 18, 0, 232, 233, 5, 3, 0, 0, 233, 59, 1, 0, 0, 0, 234, 235, 5, 16, 0, 0, 235, 240, 3, 62, 31, 0, 236, 237, 5, 17, 0, 0, 237, 239, 3, 62, 31, 0, 238, 236, 1, 0, 0, 0, 239, 242, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 61, 1, 0, 0, 0, 242, 240, 1, 0, 0, 0, 243, 248, 3, 64, 32, 0, 244, 245, 5, 18, 0, 0, 245, 247, 3, 64, 32, 0, 246, 244, 1, 0, 0, 0, 247, 250, 1, 0, 0, 0, 248, 246, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 63, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 253, 8, 6, 0, 0, 252, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 65, 1, 0, 0, 0, 35, 67, 70, 73, 76, 79, 85, 88, 91, 94, 97, 100, 120, 126, 129, 139, 142, 145, 148, 152, 155, 157, 174, 181, 192, 195, 200, 205, 210, 213, 216, 223, 228, 240, 248, 254] \ No newline at end of file +[4, 1, 134, 255, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 1, 0, 3, 0, 68, 8, 0, 1, 0, 3, 0, 71, 8, 0, 1, 0, 3, 0, 74, 8, 0, 1, 0, 3, 0, 77, 8, 0, 1, 0, 3, 0, 80, 8, 0, 1, 0, 1, 0, 1, 0, 1, 1, 3, 1, 86, 8, 1, 1, 1, 1, 1, 3, 1, 90, 8, 1, 1, 1, 3, 1, 93, 8, 1, 1, 1, 3, 1, 96, 8, 1, 1, 1, 3, 1, 99, 8, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 119, 8, 9, 1, 9, 1, 9, 1, 9, 1, 10, 3, 10, 125, 8, 10, 1, 10, 3, 10, 128, 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 138, 8, 14, 1, 14, 3, 14, 141, 8, 14, 1, 14, 3, 14, 144, 8, 14, 1, 14, 3, 14, 147, 8, 14, 1, 14, 1, 14, 3, 14, 151, 8, 14, 1, 14, 3, 14, 154, 8, 14, 3, 14, 156, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 173, 8, 18, 1, 19, 1, 19, 1, 20, 4, 20, 178, 8, 20, 11, 20, 12, 20, 179, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 191, 8, 22, 1, 22, 3, 22, 194, 8, 22, 1, 23, 1, 23, 1, 23, 3, 23, 199, 8, 23, 1, 24, 4, 24, 202, 8, 24, 11, 24, 12, 24, 203, 1, 25, 1, 25, 1, 26, 3, 26, 209, 8, 26, 1, 26, 3, 26, 212, 8, 26, 1, 26, 3, 26, 215, 8, 26, 1, 27, 1, 27, 1, 27, 5, 27, 220, 8, 27, 10, 27, 12, 27, 223, 9, 27, 1, 28, 1, 28, 3, 28, 227, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 237, 8, 30, 10, 30, 12, 30, 240, 9, 30, 1, 31, 1, 31, 1, 31, 5, 31, 245, 8, 31, 10, 31, 12, 31, 248, 9, 31, 1, 32, 4, 32, 251, 8, 32, 11, 32, 12, 32, 252, 1, 32, 0, 0, 33, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 0, 7, 3, 0, 76, 76, 78, 78, 99, 99, 2, 0, 4, 4, 22, 22, 1, 0, 21, 24, 1, 0, 3, 3, 1, 0, 9, 14, 1, 0, 10, 14, 5, 0, 1, 1, 5, 8, 19, 19, 91, 91, 97, 97, 258, 0, 67, 1, 0, 0, 0, 2, 85, 1, 0, 0, 0, 4, 100, 1, 0, 0, 0, 6, 102, 1, 0, 0, 0, 8, 104, 1, 0, 0, 0, 10, 106, 1, 0, 0, 0, 12, 108, 1, 0, 0, 0, 14, 110, 1, 0, 0, 0, 16, 112, 1, 0, 0, 0, 18, 114, 1, 0, 0, 0, 20, 124, 1, 0, 0, 0, 22, 129, 1, 0, 0, 0, 24, 131, 1, 0, 0, 0, 26, 133, 1, 0, 0, 0, 28, 155, 1, 0, 0, 0, 30, 157, 1, 0, 0, 0, 32, 160, 1, 0, 0, 0, 34, 163, 1, 0, 0, 0, 36, 166, 1, 0, 0, 0, 38, 174, 1, 0, 0, 0, 40, 177, 1, 0, 0, 0, 42, 181, 1, 0, 0, 0, 44, 193, 1, 0, 0, 0, 46, 195, 1, 0, 0, 0, 48, 201, 1, 0, 0, 0, 50, 205, 1, 0, 0, 0, 52, 208, 1, 0, 0, 0, 54, 216, 1, 0, 0, 0, 56, 224, 1, 0, 0, 0, 58, 228, 1, 0, 0, 0, 60, 232, 1, 0, 0, 0, 62, 241, 1, 0, 0, 0, 64, 250, 1, 0, 0, 0, 66, 68, 3, 2, 1, 0, 67, 66, 1, 0, 0, 0, 67, 68, 1, 0, 0, 0, 68, 70, 1, 0, 0, 0, 69, 71, 3, 16, 8, 0, 70, 69, 1, 0, 0, 0, 70, 71, 1, 0, 0, 0, 71, 73, 1, 0, 0, 0, 72, 74, 3, 64, 32, 0, 73, 72, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 76, 1, 0, 0, 0, 75, 77, 3, 18, 9, 0, 76, 75, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 79, 1, 0, 0, 0, 78, 80, 3, 20, 10, 0, 79, 78, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 3, 28, 14, 0, 82, 83, 5, 0, 0, 1, 83, 1, 1, 0, 0, 0, 84, 86, 3, 4, 2, 0, 85, 84, 1, 0, 0, 0, 85, 86, 1, 0, 0, 0, 86, 89, 1, 0, 0, 0, 87, 90, 3, 6, 3, 0, 88, 90, 3, 8, 4, 0, 89, 87, 1, 0, 0, 0, 89, 88, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 92, 1, 0, 0, 0, 91, 93, 3, 10, 5, 0, 92, 91, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 95, 1, 0, 0, 0, 94, 96, 3, 12, 6, 0, 95, 94, 1, 0, 0, 0, 95, 96, 1, 0, 0, 0, 96, 98, 1, 0, 0, 0, 97, 99, 3, 14, 7, 0, 98, 97, 1, 0, 0, 0, 98, 99, 1, 0, 0, 0, 99, 3, 1, 0, 0, 0, 100, 101, 7, 0, 0, 0, 101, 5, 1, 0, 0, 0, 102, 103, 5, 27, 0, 0, 103, 7, 1, 0, 0, 0, 104, 105, 5, 132, 0, 0, 105, 9, 1, 0, 0, 0, 106, 107, 5, 107, 0, 0, 107, 11, 1, 0, 0, 0, 108, 109, 5, 51, 0, 0, 109, 13, 1, 0, 0, 0, 110, 111, 5, 58, 0, 0, 111, 15, 1, 0, 0, 0, 112, 113, 5, 111, 0, 0, 113, 17, 1, 0, 0, 0, 114, 118, 5, 1, 0, 0, 115, 116, 3, 26, 13, 0, 116, 117, 5, 2, 0, 0, 117, 119, 1, 0, 0, 0, 118, 115, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 121, 3, 26, 13, 0, 121, 122, 5, 3, 0, 0, 122, 19, 1, 0, 0, 0, 123, 125, 3, 22, 11, 0, 124, 123, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 127, 1, 0, 0, 0, 126, 128, 3, 24, 12, 0, 127, 126, 1, 0, 0, 0, 127, 128, 1, 0, 0, 0, 128, 21, 1, 0, 0, 0, 129, 130, 5, 97, 0, 0, 130, 23, 1, 0, 0, 0, 131, 132, 5, 91, 0, 0, 132, 25, 1, 0, 0, 0, 133, 134, 7, 1, 0, 0, 134, 27, 1, 0, 0, 0, 135, 138, 3, 30, 15, 0, 136, 138, 3, 32, 16, 0, 137, 135, 1, 0, 0, 0, 137, 136, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 140, 1, 0, 0, 0, 139, 141, 3, 34, 17, 0, 140, 139, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 143, 1, 0, 0, 0, 142, 144, 3, 36, 18, 0, 143, 142, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 156, 1, 0, 0, 0, 145, 147, 3, 34, 17, 0, 146, 145, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 150, 1, 0, 0, 0, 148, 151, 3, 30, 15, 0, 149, 151, 3, 32, 16, 0, 150, 148, 1, 0, 0, 0, 150, 149, 1, 0, 0, 0, 150, 151, 1, 0, 0, 0, 151, 153, 1, 0, 0, 0, 152, 154, 3, 36, 18, 0, 153, 152, 1, 0, 0, 0, 153, 154, 1, 0, 0, 0, 154, 156, 1, 0, 0, 0, 155, 137, 1, 0, 0, 0, 155, 146, 1, 0, 0, 0, 156, 29, 1, 0, 0, 0, 157, 158, 5, 5, 0, 0, 158, 159, 3, 62, 31, 0, 159, 31, 1, 0, 0, 0, 160, 161, 5, 6, 0, 0, 161, 162, 3, 62, 31, 0, 162, 33, 1, 0, 0, 0, 163, 164, 5, 7, 0, 0, 164, 165, 3, 62, 31, 0, 165, 35, 1, 0, 0, 0, 166, 167, 5, 8, 0, 0, 167, 172, 3, 38, 19, 0, 168, 169, 5, 1, 0, 0, 169, 170, 3, 40, 20, 0, 170, 171, 5, 3, 0, 0, 171, 173, 1, 0, 0, 0, 172, 168, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 37, 1, 0, 0, 0, 174, 175, 7, 2, 0, 0, 175, 39, 1, 0, 0, 0, 176, 178, 8, 3, 0, 0, 177, 176, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 177, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 41, 1, 0, 0, 0, 181, 182, 3, 44, 22, 0, 182, 183, 3, 50, 25, 0, 183, 184, 3, 44, 22, 0, 184, 43, 1, 0, 0, 0, 185, 190, 3, 38, 19, 0, 186, 187, 5, 1, 0, 0, 187, 188, 3, 40, 20, 0, 188, 189, 5, 3, 0, 0, 189, 191, 1, 0, 0, 0, 190, 186, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 194, 3, 46, 23, 0, 193, 185, 1, 0, 0, 0, 193, 192, 1, 0, 0, 0, 194, 45, 1, 0, 0, 0, 195, 198, 3, 48, 24, 0, 196, 197, 5, 9, 0, 0, 197, 199, 3, 46, 23, 0, 198, 196, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 47, 1, 0, 0, 0, 200, 202, 8, 4, 0, 0, 201, 200, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 49, 1, 0, 0, 0, 205, 206, 7, 5, 0, 0, 206, 51, 1, 0, 0, 0, 207, 209, 3, 54, 27, 0, 208, 207, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 211, 1, 0, 0, 0, 210, 212, 3, 58, 29, 0, 211, 210, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 214, 1, 0, 0, 0, 213, 215, 3, 60, 30, 0, 214, 213, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 53, 1, 0, 0, 0, 216, 221, 3, 56, 28, 0, 217, 218, 5, 15, 0, 0, 218, 220, 3, 56, 28, 0, 219, 217, 1, 0, 0, 0, 220, 223, 1, 0, 0, 0, 221, 219, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 55, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 224, 226, 3, 64, 32, 0, 225, 227, 3, 34, 17, 0, 226, 225, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 57, 1, 0, 0, 0, 228, 229, 5, 1, 0, 0, 229, 230, 3, 36, 18, 0, 230, 231, 5, 3, 0, 0, 231, 59, 1, 0, 0, 0, 232, 233, 5, 16, 0, 0, 233, 238, 3, 62, 31, 0, 234, 235, 5, 17, 0, 0, 235, 237, 3, 62, 31, 0, 236, 234, 1, 0, 0, 0, 237, 240, 1, 0, 0, 0, 238, 236, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 61, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 241, 246, 3, 64, 32, 0, 242, 243, 5, 18, 0, 0, 243, 245, 3, 64, 32, 0, 244, 242, 1, 0, 0, 0, 245, 248, 1, 0, 0, 0, 246, 244, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 63, 1, 0, 0, 0, 248, 246, 1, 0, 0, 0, 249, 251, 8, 6, 0, 0, 250, 249, 1, 0, 0, 0, 251, 252, 1, 0, 0, 0, 252, 250, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 65, 1, 0, 0, 0, 34, 67, 70, 73, 76, 79, 85, 89, 92, 95, 98, 118, 124, 127, 137, 140, 143, 146, 150, 153, 155, 172, 179, 190, 193, 198, 203, 208, 211, 214, 221, 226, 238, 246, 252] \ No newline at end of file diff --git a/backend/services/syson-services/src/main/generated/org/eclipse/syson/services/grammars/DirectEditParser.java b/backend/services/syson-services/src/main/generated/org/eclipse/syson/services/grammars/DirectEditParser.java index 43f0e16a4..442c05f82 100644 --- a/backend/services/syson-services/src/main/generated/org/eclipse/syson/services/grammars/DirectEditParser.java +++ b/backend/services/syson-services/src/main/generated/org/eclipse/syson/services/grammars/DirectEditParser.java @@ -339,7 +339,7 @@ public final PrefixExpressionContext prefixExpression() throws RecognitionExcept } break; } - setState(88); + setState(89); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { case 1: @@ -348,43 +348,39 @@ public final PrefixExpressionContext prefixExpression() throws RecognitionExcept abstractPrefixExpression(); } break; - } - setState(91); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { - case 1: + case 2: { - setState(90); + setState(88); variationPrefixExpression(); } break; } - setState(94); + setState(92); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { case 1: { - setState(93); + setState(91); readonlyPrefixExpression(); } break; } - setState(97); + setState(95); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) { case 1: { - setState(96); + setState(94); derivedPrefixExpression(); } break; } - setState(100); + setState(98); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) { case 1: { - setState(99); + setState(97); endPrefixExpression(); } break; @@ -427,7 +423,7 @@ public final DirectionPrefixExpressionContext directionPrefixExpression() throws try { enterOuterAlt(_localctx, 1); { - setState(102); + setState(100); _la = _input.LA(1); if ( !(((((_la - 76)) & ~0x3f) == 0 && ((1L << (_la - 76)) & ((1L << (IN_PREFIX - 76)) | (1L << (INOUT_PREFIX - 76)) | (1L << (OUT_PREFIX - 76)))) != 0)) ) { _errHandler.recoverInline(this); @@ -472,7 +468,7 @@ public final AbstractPrefixExpressionContext abstractPrefixExpression() throws R try { enterOuterAlt(_localctx, 1); { - setState(104); + setState(102); match(ABSTRACT_PREFIX); } } @@ -509,7 +505,7 @@ public final VariationPrefixExpressionContext variationPrefixExpression() throws try { enterOuterAlt(_localctx, 1); { - setState(106); + setState(104); match(VARIATION_PREFIX); } } @@ -546,7 +542,7 @@ public final ReadonlyPrefixExpressionContext readonlyPrefixExpression() throws R try { enterOuterAlt(_localctx, 1); { - setState(108); + setState(106); match(READONLY_PREFIX); } } @@ -583,7 +579,7 @@ public final DerivedPrefixExpressionContext derivedPrefixExpression() throws Rec try { enterOuterAlt(_localctx, 1); { - setState(110); + setState(108); match(DERIVED_PREFIX); } } @@ -620,7 +616,7 @@ public final EndPrefixExpressionContext endPrefixExpression() throws Recognition try { enterOuterAlt(_localctx, 1); { - setState(112); + setState(110); match(END_PREFIX); } } @@ -657,7 +653,7 @@ public final ReferenceExpressionContext referenceExpression() throws Recognition try { enterOuterAlt(_localctx, 1); { - setState(114); + setState(112); match(REF_PREFIX); } } @@ -701,23 +697,23 @@ public final MultiplicityExpressionContext multiplicityExpression() throws Recog try { enterOuterAlt(_localctx, 1); { - setState(116); + setState(114); match(T__0); - setState(120); + setState(118); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { case 1: { - setState(117); + setState(115); ((MultiplicityExpressionContext)_localctx).lowerBound = multiplicityExpressionMember(); - setState(118); + setState(116); match(T__1); } break; } - setState(122); + setState(120); ((MultiplicityExpressionContext)_localctx).upperBound = multiplicityExpressionMember(); - setState(123); + setState(121); match(T__2); } } @@ -760,22 +756,22 @@ public final MultiplicityPropExpressionContext multiplicityPropExpression() thro try { enterOuterAlt(_localctx, 1); { - setState(126); + setState(124); _errHandler.sync(this); _la = _input.LA(1); if (_la==ORDERED_SUFFIX) { { - setState(125); + setState(123); orderedMultiplicityExpression(); } } - setState(129); + setState(127); _errHandler.sync(this); _la = _input.LA(1); if (_la==NONUNIQUE_SUFFIX) { { - setState(128); + setState(126); nonuniqueMultiplicityExpression(); } } @@ -815,7 +811,7 @@ public final OrderedMultiplicityExpressionContext orderedMultiplicityExpression( try { enterOuterAlt(_localctx, 1); { - setState(131); + setState(129); match(ORDERED_SUFFIX); } } @@ -852,7 +848,7 @@ public final NonuniqueMultiplicityExpressionContext nonuniqueMultiplicityExpress try { enterOuterAlt(_localctx, 1); { - setState(133); + setState(131); match(NONUNIQUE_SUFFIX); } } @@ -890,7 +886,7 @@ public final MultiplicityExpressionMemberContext multiplicityExpressionMember() try { enterOuterAlt(_localctx, 1); { - setState(135); + setState(133); _la = _input.LA(1); if ( !(_la==T__3 || _la==Integer) ) { _errHandler.recoverInline(this); @@ -945,24 +941,24 @@ public final FeatureExpressionsContext featureExpressions() throws RecognitionEx enterRule(_localctx, 28, RULE_featureExpressions); int _la; try { - setState(157); + setState(155); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(139); + setState(137); _errHandler.sync(this); switch (_input.LA(1)) { case T__4: { - setState(137); + setState(135); subsettingExpression(); } break; case T__5: { - setState(138); + setState(136); redefinitionExpression(); } break; @@ -973,22 +969,22 @@ public final FeatureExpressionsContext featureExpressions() throws RecognitionEx default: break; } - setState(142); + setState(140); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__6) { { - setState(141); + setState(139); typingExpression(); } } - setState(145); + setState(143); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__7) { { - setState(144); + setState(142); valueExpression(); } } @@ -998,28 +994,28 @@ public final FeatureExpressionsContext featureExpressions() throws RecognitionEx case 2: enterOuterAlt(_localctx, 2); { - setState(148); + setState(146); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__6) { { - setState(147); + setState(145); typingExpression(); } } - setState(152); + setState(150); _errHandler.sync(this); switch (_input.LA(1)) { case T__4: { - setState(150); + setState(148); subsettingExpression(); } break; case T__5: { - setState(151); + setState(149); redefinitionExpression(); } break; @@ -1029,12 +1025,12 @@ public final FeatureExpressionsContext featureExpressions() throws RecognitionEx default: break; } - setState(155); + setState(153); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__7) { { - setState(154); + setState(152); valueExpression(); } } @@ -1078,9 +1074,9 @@ public final SubsettingExpressionContext subsettingExpression() throws Recogniti try { enterOuterAlt(_localctx, 1); { - setState(159); + setState(157); match(T__4); - setState(160); + setState(158); qualifiedName(); } } @@ -1119,9 +1115,9 @@ public final RedefinitionExpressionContext redefinitionExpression() throws Recog try { enterOuterAlt(_localctx, 1); { - setState(162); + setState(160); match(T__5); - setState(163); + setState(161); qualifiedName(); } } @@ -1160,9 +1156,9 @@ public final TypingExpressionContext typingExpression() throws RecognitionExcept try { enterOuterAlt(_localctx, 1); { - setState(165); + setState(163); match(T__6); - setState(166); + setState(164); qualifiedName(); } } @@ -1205,20 +1201,20 @@ public final ValueExpressionContext valueExpression() throws RecognitionExceptio try { enterOuterAlt(_localctx, 1); { - setState(168); + setState(166); match(T__7); - setState(169); + setState(167); literalExpression(); - setState(174); + setState(172); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__0) { { - setState(170); + setState(168); match(T__0); - setState(171); + setState(169); measurementExpression(); - setState(172); + setState(170); match(T__2); } } @@ -1262,7 +1258,7 @@ public final LiteralExpressionContext literalExpression() throws RecognitionExce try { enterOuterAlt(_localctx, 1); { - setState(176); + setState(174); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << Boolean) | (1L << Integer) | (1L << Real) | (1L << DoubleQuotedString))) != 0)) ) { _errHandler.recoverInline(this); @@ -1307,13 +1303,13 @@ public final MeasurementExpressionContext measurementExpression() throws Recogni try { enterOuterAlt(_localctx, 1); { - setState(179); + setState(177); _errHandler.sync(this); _la = _input.LA(1); do { { { - setState(178); + setState(176); _la = _input.LA(1); if ( _la <= 0 || (_la==T__2) ) { _errHandler.recoverInline(this); @@ -1325,7 +1321,7 @@ public final MeasurementExpressionContext measurementExpression() throws Recogni } } } - setState(181); + setState(179); _errHandler.sync(this); _la = _input.LA(1); } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__1) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << WS) | (1L << Boolean) | (1L << Integer) | (1L << Real) | (1L << DoubleQuotedString) | (1L << ABOUT) | (1L << ABSTRACT) | (1L << ABSTRACT_PREFIX) | (1L << ALIAS) | (1L << ALL) | (1L << AND) | (1L << AS) | (1L << ASSIGN) | (1L << ASSOC) | (1L << BEAHVIOR) | (1L << BINDING) | (1L << BOOL) | (1L << BY) | (1L << CHAINS) | (1L << CLASS) | (1L << CLASSIFIER) | (1L << COMMENT) | (1L << COMPOSITE) | (1L << CONJUGATE) | (1L << CONJUGATES) | (1L << CONJUGATION) | (1L << CONNECTOR) | (1L << DATATYPE) | (1L << DEFAULT) | (1L << DEPENDENCY) | (1L << DERIVED) | (1L << DERIVED_PREFIX) | (1L << DIFFERENCES) | (1L << DISJOINING) | (1L << DISJOINT) | (1L << DOC) | (1L << ELSE) | (1L << END) | (1L << END_PREFIX) | (1L << EXPR) | (1L << FALSE) | (1L << FEATURE) | (1L << FEATURED) | (1L << FEATURING))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FLOW - 64)) | (1L << (FOR - 64)) | (1L << (FROM - 64)) | (1L << (FUNCTION - 64)) | (1L << (HASTYPE - 64)) | (1L << (IF - 64)) | (1L << (INTERSECTS - 64)) | (1L << (IMPLIES - 64)) | (1L << (IMPORT - 64)) | (1L << (IN - 64)) | (1L << (IN_PREFIX - 64)) | (1L << (INOUT - 64)) | (1L << (INOUT_PREFIX - 64)) | (1L << (INTERACTION - 64)) | (1L << (INV - 64)) | (1L << (INVERSE - 64)) | (1L << (INVERTING - 64)) | (1L << (ISTYPE - 64)) | (1L << (LANGUAGE - 64)) | (1L << (MEMBER - 64)) | (1L << (METACLASS - 64)) | (1L << (METADATA - 64)) | (1L << (MULTIPLICITY - 64)) | (1L << (NAMESPACE - 64)) | (1L << (NONUNIQUE - 64)) | (1L << (NONUNIQUE_SUFFIX - 64)) | (1L << (NOT - 64)) | (1L << (NULL - 64)) | (1L << (OF - 64)) | (1L << (OR - 64)) | (1L << (ORDERED - 64)) | (1L << (ORDERED_SUFFIX - 64)) | (1L << (OUT - 64)) | (1L << (OUT_PREFIX - 64)) | (1L << (PACKAGE - 64)) | (1L << (PORTION - 64)) | (1L << (PREDICATE - 64)) | (1L << (PRIAVTE - 64)) | (1L << (PROTECTED - 64)) | (1L << (PUBLIC - 64)) | (1L << (READONLY - 64)) | (1L << (READONLY_PREFIX - 64)) | (1L << (REDEFINES - 64)) | (1L << (REDEFINITION - 64)) | (1L << (REF - 64)) | (1L << (REF_PREFIX - 64)) | (1L << (REFERENCES - 64)) | (1L << (REP - 64)) | (1L << (RETURN - 64)) | (1L << (SPECIALIZTION - 64)) | (1L << (SPECIALIZES - 64)) | (1L << (STEP - 64)) | (1L << (STRCUT - 64)) | (1L << (SUBCLASSIFIER - 64)) | (1L << (SUBSET - 64)) | (1L << (SUBSETS - 64)) | (1L << (SUBTYPE - 64)) | (1L << (SUCCESSION - 64)) | (1L << (THEN - 64)) | (1L << (TO - 64)) | (1L << (TRUE - 64)) | (1L << (TYPE - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (TYPED - 128)) | (1L << (TYPING - 128)) | (1L << (UNIONS - 128)) | (1L << (VARIATION - 128)) | (1L << (VARIATION_PREFIX - 128)) | (1L << (XOR - 128)) | (1L << (ANY - 128)))) != 0) ); @@ -1372,11 +1368,11 @@ public final ConstraintExpressionContext constraintExpression() throws Recogniti try { enterOuterAlt(_localctx, 1); { - setState(183); + setState(181); operand(); - setState(184); + setState(182); operatorExpression(); - setState(185); + setState(183); operand(); } } @@ -1422,23 +1418,23 @@ public final OperandContext operand() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(195); + setState(193); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) { case 1: { - setState(187); + setState(185); literalExpression(); - setState(192); + setState(190); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__0) { { - setState(188); + setState(186); match(T__0); - setState(189); + setState(187); measurementExpression(); - setState(190); + setState(188); match(T__2); } } @@ -1447,7 +1443,7 @@ public final OperandContext operand() throws RecognitionException { break; case 2: { - setState(194); + setState(192); featureChainExpression(); } break; @@ -1493,16 +1489,16 @@ public final FeatureChainExpressionContext featureChainExpression() throws Recog try { enterOuterAlt(_localctx, 1); { - setState(197); + setState(195); featureReference(); - setState(200); + setState(198); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__8) { { - setState(198); + setState(196); match(T__8); - setState(199); + setState(197); featureChainExpression(); } } @@ -1542,13 +1538,13 @@ public final FeatureReferenceContext featureReference() throws RecognitionExcept try { enterOuterAlt(_localctx, 1); { - setState(203); + setState(201); _errHandler.sync(this); _la = _input.LA(1); do { { { - setState(202); + setState(200); _la = _input.LA(1); if ( _la <= 0 || ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__8) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__13))) != 0)) ) { _errHandler.recoverInline(this); @@ -1560,7 +1556,7 @@ public final FeatureReferenceContext featureReference() throws RecognitionExcept } } } - setState(205); + setState(203); _errHandler.sync(this); _la = _input.LA(1); } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << WS) | (1L << Boolean) | (1L << Integer) | (1L << Real) | (1L << DoubleQuotedString) | (1L << ABOUT) | (1L << ABSTRACT) | (1L << ABSTRACT_PREFIX) | (1L << ALIAS) | (1L << ALL) | (1L << AND) | (1L << AS) | (1L << ASSIGN) | (1L << ASSOC) | (1L << BEAHVIOR) | (1L << BINDING) | (1L << BOOL) | (1L << BY) | (1L << CHAINS) | (1L << CLASS) | (1L << CLASSIFIER) | (1L << COMMENT) | (1L << COMPOSITE) | (1L << CONJUGATE) | (1L << CONJUGATES) | (1L << CONJUGATION) | (1L << CONNECTOR) | (1L << DATATYPE) | (1L << DEFAULT) | (1L << DEPENDENCY) | (1L << DERIVED) | (1L << DERIVED_PREFIX) | (1L << DIFFERENCES) | (1L << DISJOINING) | (1L << DISJOINT) | (1L << DOC) | (1L << ELSE) | (1L << END) | (1L << END_PREFIX) | (1L << EXPR) | (1L << FALSE) | (1L << FEATURE) | (1L << FEATURED) | (1L << FEATURING))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (FILTER - 64)) | (1L << (FIRST - 64)) | (1L << (FLOW - 64)) | (1L << (FOR - 64)) | (1L << (FROM - 64)) | (1L << (FUNCTION - 64)) | (1L << (HASTYPE - 64)) | (1L << (IF - 64)) | (1L << (INTERSECTS - 64)) | (1L << (IMPLIES - 64)) | (1L << (IMPORT - 64)) | (1L << (IN - 64)) | (1L << (IN_PREFIX - 64)) | (1L << (INOUT - 64)) | (1L << (INOUT_PREFIX - 64)) | (1L << (INTERACTION - 64)) | (1L << (INV - 64)) | (1L << (INVERSE - 64)) | (1L << (INVERTING - 64)) | (1L << (ISTYPE - 64)) | (1L << (LANGUAGE - 64)) | (1L << (MEMBER - 64)) | (1L << (METACLASS - 64)) | (1L << (METADATA - 64)) | (1L << (MULTIPLICITY - 64)) | (1L << (NAMESPACE - 64)) | (1L << (NONUNIQUE - 64)) | (1L << (NONUNIQUE_SUFFIX - 64)) | (1L << (NOT - 64)) | (1L << (NULL - 64)) | (1L << (OF - 64)) | (1L << (OR - 64)) | (1L << (ORDERED - 64)) | (1L << (ORDERED_SUFFIX - 64)) | (1L << (OUT - 64)) | (1L << (OUT_PREFIX - 64)) | (1L << (PACKAGE - 64)) | (1L << (PORTION - 64)) | (1L << (PREDICATE - 64)) | (1L << (PRIAVTE - 64)) | (1L << (PROTECTED - 64)) | (1L << (PUBLIC - 64)) | (1L << (READONLY - 64)) | (1L << (READONLY_PREFIX - 64)) | (1L << (REDEFINES - 64)) | (1L << (REDEFINITION - 64)) | (1L << (REF - 64)) | (1L << (REF_PREFIX - 64)) | (1L << (REFERENCES - 64)) | (1L << (REP - 64)) | (1L << (RETURN - 64)) | (1L << (SPECIALIZTION - 64)) | (1L << (SPECIALIZES - 64)) | (1L << (STEP - 64)) | (1L << (STRCUT - 64)) | (1L << (SUBCLASSIFIER - 64)) | (1L << (SUBSET - 64)) | (1L << (SUBSETS - 64)) | (1L << (SUBTYPE - 64)) | (1L << (SUCCESSION - 64)) | (1L << (THEN - 64)) | (1L << (TO - 64)) | (1L << (TRUE - 64)) | (1L << (TYPE - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (TYPED - 128)) | (1L << (TYPING - 128)) | (1L << (UNIONS - 128)) | (1L << (VARIATION - 128)) | (1L << (VARIATION_PREFIX - 128)) | (1L << (XOR - 128)) | (1L << (ANY - 128)))) != 0) ); @@ -1599,7 +1595,7 @@ public final OperatorExpressionContext operatorExpression() throws RecognitionEx try { enterOuterAlt(_localctx, 1); { - setState(207); + setState(205); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__13))) != 0)) ) { _errHandler.recoverInline(this); @@ -1653,32 +1649,32 @@ public final TransitionExpressionContext transitionExpression() throws Recogniti try { enterOuterAlt(_localctx, 1); { - setState(210); + setState(208); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { case 1: { - setState(209); + setState(207); triggerExpression(); } break; } - setState(213); + setState(211); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__0) { { - setState(212); + setState(210); guardExpression(); } } - setState(216); + setState(214); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__15) { { - setState(215); + setState(213); effectExpression(); } } @@ -1724,21 +1720,21 @@ public final TriggerExpressionContext triggerExpression() throws RecognitionExce try { enterOuterAlt(_localctx, 1); { - setState(218); + setState(216); triggerExpressionName(); - setState(223); + setState(221); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__14) { { { - setState(219); + setState(217); match(T__14); - setState(220); + setState(218); triggerExpressionName(); } } - setState(225); + setState(223); _errHandler.sync(this); _la = _input.LA(1); } @@ -1783,14 +1779,14 @@ public final TriggerExpressionNameContext triggerExpressionName() throws Recogni try { enterOuterAlt(_localctx, 1); { - setState(226); + setState(224); name(); - setState(228); + setState(226); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__6) { { - setState(227); + setState(225); typingExpression(); } } @@ -1832,11 +1828,11 @@ public final GuardExpressionContext guardExpression() throws RecognitionExceptio try { enterOuterAlt(_localctx, 1); { - setState(230); + setState(228); match(T__0); - setState(231); + setState(229); valueExpression(); - setState(232); + setState(230); match(T__2); } } @@ -1879,23 +1875,23 @@ public final EffectExpressionContext effectExpression() throws RecognitionExcept try { enterOuterAlt(_localctx, 1); { - setState(234); + setState(232); match(T__15); - setState(235); + setState(233); qualifiedName(); - setState(240); + setState(238); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__16) { { { - setState(236); + setState(234); match(T__16); - setState(237); + setState(235); qualifiedName(); } } - setState(242); + setState(240); _errHandler.sync(this); _la = _input.LA(1); } @@ -1940,21 +1936,21 @@ public final QualifiedNameContext qualifiedName() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(243); + setState(241); name(); - setState(248); + setState(246); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__17) { { { - setState(244); + setState(242); match(T__17); - setState(245); + setState(243); name(); } } - setState(250); + setState(248); _errHandler.sync(this); _la = _input.LA(1); } @@ -2002,7 +1998,7 @@ public final NameContext name() throws RecognitionException { int _alt; enterOuterAlt(_localctx, 1); { - setState(252); + setState(250); _errHandler.sync(this); _alt = 1; do { @@ -2010,7 +2006,7 @@ public final NameContext name() throws RecognitionException { case 1: { { - setState(251); + setState(249); _la = _input.LA(1); if ( _la <= 0 || ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__18))) != 0) || _la==NONUNIQUE_SUFFIX || _la==ORDERED_SUFFIX) ) { _errHandler.recoverInline(this); @@ -2026,9 +2022,9 @@ public final NameContext name() throws RecognitionException { default: throw new NoViableAltException(this); } - setState(254); + setState(252); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,34,_ctx); + _alt = getInterpreter().adaptivePredict(_input,33,_ctx); } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); } } @@ -2044,7 +2040,7 @@ public final NameContext name() throws RecognitionException { } public static final String _serializedATN = - "\u0004\u0001\u0086\u0101\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+ + "\u0004\u0001\u0086\u00ff\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+ "\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+ "\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+ "\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+ @@ -2058,153 +2054,152 @@ public final NameContext name() throws RecognitionException { "\b\u0000\u0001\u0000\u0003\u0000G\b\u0000\u0001\u0000\u0003\u0000J\b\u0000"+ "\u0001\u0000\u0003\u0000M\b\u0000\u0001\u0000\u0003\u0000P\b\u0000\u0001"+ "\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0003\u0001V\b\u0001\u0001"+ - "\u0001\u0003\u0001Y\b\u0001\u0001\u0001\u0003\u0001\\\b\u0001\u0001\u0001"+ - "\u0003\u0001_\b\u0001\u0001\u0001\u0003\u0001b\b\u0001\u0001\u0001\u0003"+ - "\u0001e\b\u0001\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001"+ - "\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001"+ - "\u0007\u0001\u0007\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\t\u0003"+ - "\ty\b\t\u0001\t\u0001\t\u0001\t\u0001\n\u0003\n\u007f\b\n\u0001\n\u0003"+ - "\n\u0082\b\n\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0001"+ - "\u000e\u0001\u000e\u0003\u000e\u008c\b\u000e\u0001\u000e\u0003\u000e\u008f"+ - "\b\u000e\u0001\u000e\u0003\u000e\u0092\b\u000e\u0001\u000e\u0003\u000e"+ - "\u0095\b\u000e\u0001\u000e\u0001\u000e\u0003\u000e\u0099\b\u000e\u0001"+ - "\u000e\u0003\u000e\u009c\b\u000e\u0003\u000e\u009e\b\u000e\u0001\u000f"+ - "\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011"+ - "\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0012\u0003\u0012\u00af\b\u0012\u0001\u0013\u0001\u0013"+ - "\u0001\u0014\u0004\u0014\u00b4\b\u0014\u000b\u0014\f\u0014\u00b5\u0001"+ - "\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001"+ - "\u0016\u0001\u0016\u0001\u0016\u0003\u0016\u00c1\b\u0016\u0001\u0016\u0003"+ - "\u0016\u00c4\b\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0003\u0017\u00c9"+ - "\b\u0017\u0001\u0018\u0004\u0018\u00cc\b\u0018\u000b\u0018\f\u0018\u00cd"+ - "\u0001\u0019\u0001\u0019\u0001\u001a\u0003\u001a\u00d3\b\u001a\u0001\u001a"+ - "\u0003\u001a\u00d6\b\u001a\u0001\u001a\u0003\u001a\u00d9\b\u001a\u0001"+ - "\u001b\u0001\u001b\u0001\u001b\u0005\u001b\u00de\b\u001b\n\u001b\f\u001b"+ - "\u00e1\t\u001b\u0001\u001c\u0001\u001c\u0003\u001c\u00e5\b\u001c\u0001"+ - "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001"+ - "\u001e\u0001\u001e\u0005\u001e\u00ef\b\u001e\n\u001e\f\u001e\u00f2\t\u001e"+ - "\u0001\u001f\u0001\u001f\u0001\u001f\u0005\u001f\u00f7\b\u001f\n\u001f"+ - "\f\u001f\u00fa\t\u001f\u0001 \u0004 \u00fd\b \u000b \f \u00fe\u0001 \u0000"+ - "\u0000!\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018"+ - "\u001a\u001c\u001e \"$&(*,.02468:<>@\u0000\u0007\u0003\u0000LLNNcc\u0002"+ - "\u0000\u0004\u0004\u0016\u0016\u0001\u0000\u0015\u0018\u0001\u0000\u0003"+ - "\u0003\u0001\u0000\t\u000e\u0001\u0000\n\u000e\u0005\u0000\u0001\u0001"+ - "\u0005\b\u0013\u0013[[aa\u0104\u0000C\u0001\u0000\u0000\u0000\u0002U\u0001"+ - "\u0000\u0000\u0000\u0004f\u0001\u0000\u0000\u0000\u0006h\u0001\u0000\u0000"+ - "\u0000\bj\u0001\u0000\u0000\u0000\nl\u0001\u0000\u0000\u0000\fn\u0001"+ - "\u0000\u0000\u0000\u000ep\u0001\u0000\u0000\u0000\u0010r\u0001\u0000\u0000"+ - "\u0000\u0012t\u0001\u0000\u0000\u0000\u0014~\u0001\u0000\u0000\u0000\u0016"+ - "\u0083\u0001\u0000\u0000\u0000\u0018\u0085\u0001\u0000\u0000\u0000\u001a"+ - "\u0087\u0001\u0000\u0000\u0000\u001c\u009d\u0001\u0000\u0000\u0000\u001e"+ - "\u009f\u0001\u0000\u0000\u0000 \u00a2\u0001\u0000\u0000\u0000\"\u00a5"+ - "\u0001\u0000\u0000\u0000$\u00a8\u0001\u0000\u0000\u0000&\u00b0\u0001\u0000"+ - "\u0000\u0000(\u00b3\u0001\u0000\u0000\u0000*\u00b7\u0001\u0000\u0000\u0000"+ - ",\u00c3\u0001\u0000\u0000\u0000.\u00c5\u0001\u0000\u0000\u00000\u00cb"+ - "\u0001\u0000\u0000\u00002\u00cf\u0001\u0000\u0000\u00004\u00d2\u0001\u0000"+ - "\u0000\u00006\u00da\u0001\u0000\u0000\u00008\u00e2\u0001\u0000\u0000\u0000"+ - ":\u00e6\u0001\u0000\u0000\u0000<\u00ea\u0001\u0000\u0000\u0000>\u00f3"+ - "\u0001\u0000\u0000\u0000@\u00fc\u0001\u0000\u0000\u0000BD\u0003\u0002"+ - "\u0001\u0000CB\u0001\u0000\u0000\u0000CD\u0001\u0000\u0000\u0000DF\u0001"+ - "\u0000\u0000\u0000EG\u0003\u0010\b\u0000FE\u0001\u0000\u0000\u0000FG\u0001"+ - "\u0000\u0000\u0000GI\u0001\u0000\u0000\u0000HJ\u0003@ \u0000IH\u0001\u0000"+ - "\u0000\u0000IJ\u0001\u0000\u0000\u0000JL\u0001\u0000\u0000\u0000KM\u0003"+ - "\u0012\t\u0000LK\u0001\u0000\u0000\u0000LM\u0001\u0000\u0000\u0000MO\u0001"+ - "\u0000\u0000\u0000NP\u0003\u0014\n\u0000ON\u0001\u0000\u0000\u0000OP\u0001"+ - "\u0000\u0000\u0000PQ\u0001\u0000\u0000\u0000QR\u0003\u001c\u000e\u0000"+ - "RS\u0005\u0000\u0000\u0001S\u0001\u0001\u0000\u0000\u0000TV\u0003\u0004"+ - "\u0002\u0000UT\u0001\u0000\u0000\u0000UV\u0001\u0000\u0000\u0000VX\u0001"+ - "\u0000\u0000\u0000WY\u0003\u0006\u0003\u0000XW\u0001\u0000\u0000\u0000"+ - "XY\u0001\u0000\u0000\u0000Y[\u0001\u0000\u0000\u0000Z\\\u0003\b\u0004"+ - "\u0000[Z\u0001\u0000\u0000\u0000[\\\u0001\u0000\u0000\u0000\\^\u0001\u0000"+ - "\u0000\u0000]_\u0003\n\u0005\u0000^]\u0001\u0000\u0000\u0000^_\u0001\u0000"+ - "\u0000\u0000_a\u0001\u0000\u0000\u0000`b\u0003\f\u0006\u0000a`\u0001\u0000"+ - "\u0000\u0000ab\u0001\u0000\u0000\u0000bd\u0001\u0000\u0000\u0000ce\u0003"+ - "\u000e\u0007\u0000dc\u0001\u0000\u0000\u0000de\u0001\u0000\u0000\u0000"+ - "e\u0003\u0001\u0000\u0000\u0000fg\u0007\u0000\u0000\u0000g\u0005\u0001"+ - "\u0000\u0000\u0000hi\u0005\u001b\u0000\u0000i\u0007\u0001\u0000\u0000"+ - "\u0000jk\u0005\u0084\u0000\u0000k\t\u0001\u0000\u0000\u0000lm\u0005k\u0000"+ - "\u0000m\u000b\u0001\u0000\u0000\u0000no\u00053\u0000\u0000o\r\u0001\u0000"+ - "\u0000\u0000pq\u0005:\u0000\u0000q\u000f\u0001\u0000\u0000\u0000rs\u0005"+ - "o\u0000\u0000s\u0011\u0001\u0000\u0000\u0000tx\u0005\u0001\u0000\u0000"+ - "uv\u0003\u001a\r\u0000vw\u0005\u0002\u0000\u0000wy\u0001\u0000\u0000\u0000"+ - "xu\u0001\u0000\u0000\u0000xy\u0001\u0000\u0000\u0000yz\u0001\u0000\u0000"+ - "\u0000z{\u0003\u001a\r\u0000{|\u0005\u0003\u0000\u0000|\u0013\u0001\u0000"+ - "\u0000\u0000}\u007f\u0003\u0016\u000b\u0000~}\u0001\u0000\u0000\u0000"+ - "~\u007f\u0001\u0000\u0000\u0000\u007f\u0081\u0001\u0000\u0000\u0000\u0080"+ - "\u0082\u0003\u0018\f\u0000\u0081\u0080\u0001\u0000\u0000\u0000\u0081\u0082"+ - "\u0001\u0000\u0000\u0000\u0082\u0015\u0001\u0000\u0000\u0000\u0083\u0084"+ - "\u0005a\u0000\u0000\u0084\u0017\u0001\u0000\u0000\u0000\u0085\u0086\u0005"+ - "[\u0000\u0000\u0086\u0019\u0001\u0000\u0000\u0000\u0087\u0088\u0007\u0001"+ - "\u0000\u0000\u0088\u001b\u0001\u0000\u0000\u0000\u0089\u008c\u0003\u001e"+ - "\u000f\u0000\u008a\u008c\u0003 \u0010\u0000\u008b\u0089\u0001\u0000\u0000"+ - "\u0000\u008b\u008a\u0001\u0000\u0000\u0000\u008b\u008c\u0001\u0000\u0000"+ - "\u0000\u008c\u008e\u0001\u0000\u0000\u0000\u008d\u008f\u0003\"\u0011\u0000"+ - "\u008e\u008d\u0001\u0000\u0000\u0000\u008e\u008f\u0001\u0000\u0000\u0000"+ - "\u008f\u0091\u0001\u0000\u0000\u0000\u0090\u0092\u0003$\u0012\u0000\u0091"+ - "\u0090\u0001\u0000\u0000\u0000\u0091\u0092\u0001\u0000\u0000\u0000\u0092"+ - "\u009e\u0001\u0000\u0000\u0000\u0093\u0095\u0003\"\u0011\u0000\u0094\u0093"+ - "\u0001\u0000\u0000\u0000\u0094\u0095\u0001\u0000\u0000\u0000\u0095\u0098"+ - "\u0001\u0000\u0000\u0000\u0096\u0099\u0003\u001e\u000f\u0000\u0097\u0099"+ - "\u0003 \u0010\u0000\u0098\u0096\u0001\u0000\u0000\u0000\u0098\u0097\u0001"+ - "\u0000\u0000\u0000\u0098\u0099\u0001\u0000\u0000\u0000\u0099\u009b\u0001"+ - "\u0000\u0000\u0000\u009a\u009c\u0003$\u0012\u0000\u009b\u009a\u0001\u0000"+ - "\u0000\u0000\u009b\u009c\u0001\u0000\u0000\u0000\u009c\u009e\u0001\u0000"+ - "\u0000\u0000\u009d\u008b\u0001\u0000\u0000\u0000\u009d\u0094\u0001\u0000"+ - "\u0000\u0000\u009e\u001d\u0001\u0000\u0000\u0000\u009f\u00a0\u0005\u0005"+ - "\u0000\u0000\u00a0\u00a1\u0003>\u001f\u0000\u00a1\u001f\u0001\u0000\u0000"+ - "\u0000\u00a2\u00a3\u0005\u0006\u0000\u0000\u00a3\u00a4\u0003>\u001f\u0000"+ - "\u00a4!\u0001\u0000\u0000\u0000\u00a5\u00a6\u0005\u0007\u0000\u0000\u00a6"+ - "\u00a7\u0003>\u001f\u0000\u00a7#\u0001\u0000\u0000\u0000\u00a8\u00a9\u0005"+ - "\b\u0000\u0000\u00a9\u00ae\u0003&\u0013\u0000\u00aa\u00ab\u0005\u0001"+ - "\u0000\u0000\u00ab\u00ac\u0003(\u0014\u0000\u00ac\u00ad\u0005\u0003\u0000"+ - "\u0000\u00ad\u00af\u0001\u0000\u0000\u0000\u00ae\u00aa\u0001\u0000\u0000"+ - "\u0000\u00ae\u00af\u0001\u0000\u0000\u0000\u00af%\u0001\u0000\u0000\u0000"+ - "\u00b0\u00b1\u0007\u0002\u0000\u0000\u00b1\'\u0001\u0000\u0000\u0000\u00b2"+ - "\u00b4\b\u0003\u0000\u0000\u00b3\u00b2\u0001\u0000\u0000\u0000\u00b4\u00b5"+ - "\u0001\u0000\u0000\u0000\u00b5\u00b3\u0001\u0000\u0000\u0000\u00b5\u00b6"+ - "\u0001\u0000\u0000\u0000\u00b6)\u0001\u0000\u0000\u0000\u00b7\u00b8\u0003"+ - ",\u0016\u0000\u00b8\u00b9\u00032\u0019\u0000\u00b9\u00ba\u0003,\u0016"+ - "\u0000\u00ba+\u0001\u0000\u0000\u0000\u00bb\u00c0\u0003&\u0013\u0000\u00bc"+ - "\u00bd\u0005\u0001\u0000\u0000\u00bd\u00be\u0003(\u0014\u0000\u00be\u00bf"+ - "\u0005\u0003\u0000\u0000\u00bf\u00c1\u0001\u0000\u0000\u0000\u00c0\u00bc"+ - "\u0001\u0000\u0000\u0000\u00c0\u00c1\u0001\u0000\u0000\u0000\u00c1\u00c4"+ - "\u0001\u0000\u0000\u0000\u00c2\u00c4\u0003.\u0017\u0000\u00c3\u00bb\u0001"+ - "\u0000\u0000\u0000\u00c3\u00c2\u0001\u0000\u0000\u0000\u00c4-\u0001\u0000"+ - "\u0000\u0000\u00c5\u00c8\u00030\u0018\u0000\u00c6\u00c7\u0005\t\u0000"+ - "\u0000\u00c7\u00c9\u0003.\u0017\u0000\u00c8\u00c6\u0001\u0000\u0000\u0000"+ - "\u00c8\u00c9\u0001\u0000\u0000\u0000\u00c9/\u0001\u0000\u0000\u0000\u00ca"+ - "\u00cc\b\u0004\u0000\u0000\u00cb\u00ca\u0001\u0000\u0000\u0000\u00cc\u00cd"+ - "\u0001\u0000\u0000\u0000\u00cd\u00cb\u0001\u0000\u0000\u0000\u00cd\u00ce"+ - "\u0001\u0000\u0000\u0000\u00ce1\u0001\u0000\u0000\u0000\u00cf\u00d0\u0007"+ - "\u0005\u0000\u0000\u00d03\u0001\u0000\u0000\u0000\u00d1\u00d3\u00036\u001b"+ - "\u0000\u00d2\u00d1\u0001\u0000\u0000\u0000\u00d2\u00d3\u0001\u0000\u0000"+ - "\u0000\u00d3\u00d5\u0001\u0000\u0000\u0000\u00d4\u00d6\u0003:\u001d\u0000"+ - "\u00d5\u00d4\u0001\u0000\u0000\u0000\u00d5\u00d6\u0001\u0000\u0000\u0000"+ - "\u00d6\u00d8\u0001\u0000\u0000\u0000\u00d7\u00d9\u0003<\u001e\u0000\u00d8"+ - "\u00d7\u0001\u0000\u0000\u0000\u00d8\u00d9\u0001\u0000\u0000\u0000\u00d9"+ - "5\u0001\u0000\u0000\u0000\u00da\u00df\u00038\u001c\u0000\u00db\u00dc\u0005"+ - "\u000f\u0000\u0000\u00dc\u00de\u00038\u001c\u0000\u00dd\u00db\u0001\u0000"+ - "\u0000\u0000\u00de\u00e1\u0001\u0000\u0000\u0000\u00df\u00dd\u0001\u0000"+ - "\u0000\u0000\u00df\u00e0\u0001\u0000\u0000\u0000\u00e07\u0001\u0000\u0000"+ - "\u0000\u00e1\u00df\u0001\u0000\u0000\u0000\u00e2\u00e4\u0003@ \u0000\u00e3"+ - "\u00e5\u0003\"\u0011\u0000\u00e4\u00e3\u0001\u0000\u0000\u0000\u00e4\u00e5"+ - "\u0001\u0000\u0000\u0000\u00e59\u0001\u0000\u0000\u0000\u00e6\u00e7\u0005"+ - "\u0001\u0000\u0000\u00e7\u00e8\u0003$\u0012\u0000\u00e8\u00e9\u0005\u0003"+ - "\u0000\u0000\u00e9;\u0001\u0000\u0000\u0000\u00ea\u00eb\u0005\u0010\u0000"+ - "\u0000\u00eb\u00f0\u0003>\u001f\u0000\u00ec\u00ed\u0005\u0011\u0000\u0000"+ - "\u00ed\u00ef\u0003>\u001f\u0000\u00ee\u00ec\u0001\u0000\u0000\u0000\u00ef"+ - "\u00f2\u0001\u0000\u0000\u0000\u00f0\u00ee\u0001\u0000\u0000\u0000\u00f0"+ - "\u00f1\u0001\u0000\u0000\u0000\u00f1=\u0001\u0000\u0000\u0000\u00f2\u00f0"+ - "\u0001\u0000\u0000\u0000\u00f3\u00f8\u0003@ \u0000\u00f4\u00f5\u0005\u0012"+ - "\u0000\u0000\u00f5\u00f7\u0003@ \u0000\u00f6\u00f4\u0001\u0000\u0000\u0000"+ - "\u00f7\u00fa\u0001\u0000\u0000\u0000\u00f8\u00f6\u0001\u0000\u0000\u0000"+ - "\u00f8\u00f9\u0001\u0000\u0000\u0000\u00f9?\u0001\u0000\u0000\u0000\u00fa"+ - "\u00f8\u0001\u0000\u0000\u0000\u00fb\u00fd\b\u0006\u0000\u0000\u00fc\u00fb"+ - "\u0001\u0000\u0000\u0000\u00fd\u00fe\u0001\u0000\u0000\u0000\u00fe\u00fc"+ - "\u0001\u0000\u0000\u0000\u00fe\u00ff\u0001\u0000\u0000\u0000\u00ffA\u0001"+ - "\u0000\u0000\u0000#CFILOUX[^adx~\u0081\u008b\u008e\u0091\u0094\u0098\u009b"+ - "\u009d\u00ae\u00b5\u00c0\u00c3\u00c8\u00cd\u00d2\u00d5\u00d8\u00df\u00e4"+ - "\u00f0\u00f8\u00fe"; + "\u0001\u0001\u0001\u0003\u0001Z\b\u0001\u0001\u0001\u0003\u0001]\b\u0001"+ + "\u0001\u0001\u0003\u0001`\b\u0001\u0001\u0001\u0003\u0001c\b\u0001\u0001"+ + "\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001"+ + "\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001"+ + "\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\t\u0003\tw\b\t\u0001\t\u0001"+ + "\t\u0001\t\u0001\n\u0003\n}\b\n\u0001\n\u0003\n\u0080\b\n\u0001\u000b"+ + "\u0001\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0003"+ + "\u000e\u008a\b\u000e\u0001\u000e\u0003\u000e\u008d\b\u000e\u0001\u000e"+ + "\u0003\u000e\u0090\b\u000e\u0001\u000e\u0003\u000e\u0093\b\u000e\u0001"+ + "\u000e\u0001\u000e\u0003\u000e\u0097\b\u000e\u0001\u000e\u0003\u000e\u009a"+ + "\b\u000e\u0003\u000e\u009c\b\u000e\u0001\u000f\u0001\u000f\u0001\u000f"+ + "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011"+ + "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ + "\u0003\u0012\u00ad\b\u0012\u0001\u0013\u0001\u0013\u0001\u0014\u0004\u0014"+ + "\u00b2\b\u0014\u000b\u0014\f\u0014\u00b3\u0001\u0015\u0001\u0015\u0001"+ + "\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+ + "\u0016\u0003\u0016\u00bf\b\u0016\u0001\u0016\u0003\u0016\u00c2\b\u0016"+ + "\u0001\u0017\u0001\u0017\u0001\u0017\u0003\u0017\u00c7\b\u0017\u0001\u0018"+ + "\u0004\u0018\u00ca\b\u0018\u000b\u0018\f\u0018\u00cb\u0001\u0019\u0001"+ + "\u0019\u0001\u001a\u0003\u001a\u00d1\b\u001a\u0001\u001a\u0003\u001a\u00d4"+ + "\b\u001a\u0001\u001a\u0003\u001a\u00d7\b\u001a\u0001\u001b\u0001\u001b"+ + "\u0001\u001b\u0005\u001b\u00dc\b\u001b\n\u001b\f\u001b\u00df\t\u001b\u0001"+ + "\u001c\u0001\u001c\u0003\u001c\u00e3\b\u001c\u0001\u001d\u0001\u001d\u0001"+ + "\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0005"+ + "\u001e\u00ed\b\u001e\n\u001e\f\u001e\u00f0\t\u001e\u0001\u001f\u0001\u001f"+ + "\u0001\u001f\u0005\u001f\u00f5\b\u001f\n\u001f\f\u001f\u00f8\t\u001f\u0001"+ + " \u0004 \u00fb\b \u000b \f \u00fc\u0001 \u0000\u0000!\u0000\u0002\u0004"+ + "\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \""+ + "$&(*,.02468:<>@\u0000\u0007\u0003\u0000LLNNcc\u0002\u0000\u0004\u0004"+ + "\u0016\u0016\u0001\u0000\u0015\u0018\u0001\u0000\u0003\u0003\u0001\u0000"+ + "\t\u000e\u0001\u0000\n\u000e\u0005\u0000\u0001\u0001\u0005\b\u0013\u0013"+ + "[[aa\u0102\u0000C\u0001\u0000\u0000\u0000\u0002U\u0001\u0000\u0000\u0000"+ + "\u0004d\u0001\u0000\u0000\u0000\u0006f\u0001\u0000\u0000\u0000\bh\u0001"+ + "\u0000\u0000\u0000\nj\u0001\u0000\u0000\u0000\fl\u0001\u0000\u0000\u0000"+ + "\u000en\u0001\u0000\u0000\u0000\u0010p\u0001\u0000\u0000\u0000\u0012r"+ + "\u0001\u0000\u0000\u0000\u0014|\u0001\u0000\u0000\u0000\u0016\u0081\u0001"+ + "\u0000\u0000\u0000\u0018\u0083\u0001\u0000\u0000\u0000\u001a\u0085\u0001"+ + "\u0000\u0000\u0000\u001c\u009b\u0001\u0000\u0000\u0000\u001e\u009d\u0001"+ + "\u0000\u0000\u0000 \u00a0\u0001\u0000\u0000\u0000\"\u00a3\u0001\u0000"+ + "\u0000\u0000$\u00a6\u0001\u0000\u0000\u0000&\u00ae\u0001\u0000\u0000\u0000"+ + "(\u00b1\u0001\u0000\u0000\u0000*\u00b5\u0001\u0000\u0000\u0000,\u00c1"+ + "\u0001\u0000\u0000\u0000.\u00c3\u0001\u0000\u0000\u00000\u00c9\u0001\u0000"+ + "\u0000\u00002\u00cd\u0001\u0000\u0000\u00004\u00d0\u0001\u0000\u0000\u0000"+ + "6\u00d8\u0001\u0000\u0000\u00008\u00e0\u0001\u0000\u0000\u0000:\u00e4"+ + "\u0001\u0000\u0000\u0000<\u00e8\u0001\u0000\u0000\u0000>\u00f1\u0001\u0000"+ + "\u0000\u0000@\u00fa\u0001\u0000\u0000\u0000BD\u0003\u0002\u0001\u0000"+ + "CB\u0001\u0000\u0000\u0000CD\u0001\u0000\u0000\u0000DF\u0001\u0000\u0000"+ + "\u0000EG\u0003\u0010\b\u0000FE\u0001\u0000\u0000\u0000FG\u0001\u0000\u0000"+ + "\u0000GI\u0001\u0000\u0000\u0000HJ\u0003@ \u0000IH\u0001\u0000\u0000\u0000"+ + "IJ\u0001\u0000\u0000\u0000JL\u0001\u0000\u0000\u0000KM\u0003\u0012\t\u0000"+ + "LK\u0001\u0000\u0000\u0000LM\u0001\u0000\u0000\u0000MO\u0001\u0000\u0000"+ + "\u0000NP\u0003\u0014\n\u0000ON\u0001\u0000\u0000\u0000OP\u0001\u0000\u0000"+ + "\u0000PQ\u0001\u0000\u0000\u0000QR\u0003\u001c\u000e\u0000RS\u0005\u0000"+ + "\u0000\u0001S\u0001\u0001\u0000\u0000\u0000TV\u0003\u0004\u0002\u0000"+ + "UT\u0001\u0000\u0000\u0000UV\u0001\u0000\u0000\u0000VY\u0001\u0000\u0000"+ + "\u0000WZ\u0003\u0006\u0003\u0000XZ\u0003\b\u0004\u0000YW\u0001\u0000\u0000"+ + "\u0000YX\u0001\u0000\u0000\u0000YZ\u0001\u0000\u0000\u0000Z\\\u0001\u0000"+ + "\u0000\u0000[]\u0003\n\u0005\u0000\\[\u0001\u0000\u0000\u0000\\]\u0001"+ + "\u0000\u0000\u0000]_\u0001\u0000\u0000\u0000^`\u0003\f\u0006\u0000_^\u0001"+ + "\u0000\u0000\u0000_`\u0001\u0000\u0000\u0000`b\u0001\u0000\u0000\u0000"+ + "ac\u0003\u000e\u0007\u0000ba\u0001\u0000\u0000\u0000bc\u0001\u0000\u0000"+ + "\u0000c\u0003\u0001\u0000\u0000\u0000de\u0007\u0000\u0000\u0000e\u0005"+ + "\u0001\u0000\u0000\u0000fg\u0005\u001b\u0000\u0000g\u0007\u0001\u0000"+ + "\u0000\u0000hi\u0005\u0084\u0000\u0000i\t\u0001\u0000\u0000\u0000jk\u0005"+ + "k\u0000\u0000k\u000b\u0001\u0000\u0000\u0000lm\u00053\u0000\u0000m\r\u0001"+ + "\u0000\u0000\u0000no\u0005:\u0000\u0000o\u000f\u0001\u0000\u0000\u0000"+ + "pq\u0005o\u0000\u0000q\u0011\u0001\u0000\u0000\u0000rv\u0005\u0001\u0000"+ + "\u0000st\u0003\u001a\r\u0000tu\u0005\u0002\u0000\u0000uw\u0001\u0000\u0000"+ + "\u0000vs\u0001\u0000\u0000\u0000vw\u0001\u0000\u0000\u0000wx\u0001\u0000"+ + "\u0000\u0000xy\u0003\u001a\r\u0000yz\u0005\u0003\u0000\u0000z\u0013\u0001"+ + "\u0000\u0000\u0000{}\u0003\u0016\u000b\u0000|{\u0001\u0000\u0000\u0000"+ + "|}\u0001\u0000\u0000\u0000}\u007f\u0001\u0000\u0000\u0000~\u0080\u0003"+ + "\u0018\f\u0000\u007f~\u0001\u0000\u0000\u0000\u007f\u0080\u0001\u0000"+ + "\u0000\u0000\u0080\u0015\u0001\u0000\u0000\u0000\u0081\u0082\u0005a\u0000"+ + "\u0000\u0082\u0017\u0001\u0000\u0000\u0000\u0083\u0084\u0005[\u0000\u0000"+ + "\u0084\u0019\u0001\u0000\u0000\u0000\u0085\u0086\u0007\u0001\u0000\u0000"+ + "\u0086\u001b\u0001\u0000\u0000\u0000\u0087\u008a\u0003\u001e\u000f\u0000"+ + "\u0088\u008a\u0003 \u0010\u0000\u0089\u0087\u0001\u0000\u0000\u0000\u0089"+ + "\u0088\u0001\u0000\u0000\u0000\u0089\u008a\u0001\u0000\u0000\u0000\u008a"+ + "\u008c\u0001\u0000\u0000\u0000\u008b\u008d\u0003\"\u0011\u0000\u008c\u008b"+ + "\u0001\u0000\u0000\u0000\u008c\u008d\u0001\u0000\u0000\u0000\u008d\u008f"+ + "\u0001\u0000\u0000\u0000\u008e\u0090\u0003$\u0012\u0000\u008f\u008e\u0001"+ + "\u0000\u0000\u0000\u008f\u0090\u0001\u0000\u0000\u0000\u0090\u009c\u0001"+ + "\u0000\u0000\u0000\u0091\u0093\u0003\"\u0011\u0000\u0092\u0091\u0001\u0000"+ + "\u0000\u0000\u0092\u0093\u0001\u0000\u0000\u0000\u0093\u0096\u0001\u0000"+ + "\u0000\u0000\u0094\u0097\u0003\u001e\u000f\u0000\u0095\u0097\u0003 \u0010"+ + "\u0000\u0096\u0094\u0001\u0000\u0000\u0000\u0096\u0095\u0001\u0000\u0000"+ + "\u0000\u0096\u0097\u0001\u0000\u0000\u0000\u0097\u0099\u0001\u0000\u0000"+ + "\u0000\u0098\u009a\u0003$\u0012\u0000\u0099\u0098\u0001\u0000\u0000\u0000"+ + "\u0099\u009a\u0001\u0000\u0000\u0000\u009a\u009c\u0001\u0000\u0000\u0000"+ + "\u009b\u0089\u0001\u0000\u0000\u0000\u009b\u0092\u0001\u0000\u0000\u0000"+ + "\u009c\u001d\u0001\u0000\u0000\u0000\u009d\u009e\u0005\u0005\u0000\u0000"+ + "\u009e\u009f\u0003>\u001f\u0000\u009f\u001f\u0001\u0000\u0000\u0000\u00a0"+ + "\u00a1\u0005\u0006\u0000\u0000\u00a1\u00a2\u0003>\u001f\u0000\u00a2!\u0001"+ + "\u0000\u0000\u0000\u00a3\u00a4\u0005\u0007\u0000\u0000\u00a4\u00a5\u0003"+ + ">\u001f\u0000\u00a5#\u0001\u0000\u0000\u0000\u00a6\u00a7\u0005\b\u0000"+ + "\u0000\u00a7\u00ac\u0003&\u0013\u0000\u00a8\u00a9\u0005\u0001\u0000\u0000"+ + "\u00a9\u00aa\u0003(\u0014\u0000\u00aa\u00ab\u0005\u0003\u0000\u0000\u00ab"+ + "\u00ad\u0001\u0000\u0000\u0000\u00ac\u00a8\u0001\u0000\u0000\u0000\u00ac"+ + "\u00ad\u0001\u0000\u0000\u0000\u00ad%\u0001\u0000\u0000\u0000\u00ae\u00af"+ + "\u0007\u0002\u0000\u0000\u00af\'\u0001\u0000\u0000\u0000\u00b0\u00b2\b"+ + "\u0003\u0000\u0000\u00b1\u00b0\u0001\u0000\u0000\u0000\u00b2\u00b3\u0001"+ + "\u0000\u0000\u0000\u00b3\u00b1\u0001\u0000\u0000\u0000\u00b3\u00b4\u0001"+ + "\u0000\u0000\u0000\u00b4)\u0001\u0000\u0000\u0000\u00b5\u00b6\u0003,\u0016"+ + "\u0000\u00b6\u00b7\u00032\u0019\u0000\u00b7\u00b8\u0003,\u0016\u0000\u00b8"+ + "+\u0001\u0000\u0000\u0000\u00b9\u00be\u0003&\u0013\u0000\u00ba\u00bb\u0005"+ + "\u0001\u0000\u0000\u00bb\u00bc\u0003(\u0014\u0000\u00bc\u00bd\u0005\u0003"+ + "\u0000\u0000\u00bd\u00bf\u0001\u0000\u0000\u0000\u00be\u00ba\u0001\u0000"+ + "\u0000\u0000\u00be\u00bf\u0001\u0000\u0000\u0000\u00bf\u00c2\u0001\u0000"+ + "\u0000\u0000\u00c0\u00c2\u0003.\u0017\u0000\u00c1\u00b9\u0001\u0000\u0000"+ + "\u0000\u00c1\u00c0\u0001\u0000\u0000\u0000\u00c2-\u0001\u0000\u0000\u0000"+ + "\u00c3\u00c6\u00030\u0018\u0000\u00c4\u00c5\u0005\t\u0000\u0000\u00c5"+ + "\u00c7\u0003.\u0017\u0000\u00c6\u00c4\u0001\u0000\u0000\u0000\u00c6\u00c7"+ + "\u0001\u0000\u0000\u0000\u00c7/\u0001\u0000\u0000\u0000\u00c8\u00ca\b"+ + "\u0004\u0000\u0000\u00c9\u00c8\u0001\u0000\u0000\u0000\u00ca\u00cb\u0001"+ + "\u0000\u0000\u0000\u00cb\u00c9\u0001\u0000\u0000\u0000\u00cb\u00cc\u0001"+ + "\u0000\u0000\u0000\u00cc1\u0001\u0000\u0000\u0000\u00cd\u00ce\u0007\u0005"+ + "\u0000\u0000\u00ce3\u0001\u0000\u0000\u0000\u00cf\u00d1\u00036\u001b\u0000"+ + "\u00d0\u00cf\u0001\u0000\u0000\u0000\u00d0\u00d1\u0001\u0000\u0000\u0000"+ + "\u00d1\u00d3\u0001\u0000\u0000\u0000\u00d2\u00d4\u0003:\u001d\u0000\u00d3"+ + "\u00d2\u0001\u0000\u0000\u0000\u00d3\u00d4\u0001\u0000\u0000\u0000\u00d4"+ + "\u00d6\u0001\u0000\u0000\u0000\u00d5\u00d7\u0003<\u001e\u0000\u00d6\u00d5"+ + "\u0001\u0000\u0000\u0000\u00d6\u00d7\u0001\u0000\u0000\u0000\u00d75\u0001"+ + "\u0000\u0000\u0000\u00d8\u00dd\u00038\u001c\u0000\u00d9\u00da\u0005\u000f"+ + "\u0000\u0000\u00da\u00dc\u00038\u001c\u0000\u00db\u00d9\u0001\u0000\u0000"+ + "\u0000\u00dc\u00df\u0001\u0000\u0000\u0000\u00dd\u00db\u0001\u0000\u0000"+ + "\u0000\u00dd\u00de\u0001\u0000\u0000\u0000\u00de7\u0001\u0000\u0000\u0000"+ + "\u00df\u00dd\u0001\u0000\u0000\u0000\u00e0\u00e2\u0003@ \u0000\u00e1\u00e3"+ + "\u0003\"\u0011\u0000\u00e2\u00e1\u0001\u0000\u0000\u0000\u00e2\u00e3\u0001"+ + "\u0000\u0000\u0000\u00e39\u0001\u0000\u0000\u0000\u00e4\u00e5\u0005\u0001"+ + "\u0000\u0000\u00e5\u00e6\u0003$\u0012\u0000\u00e6\u00e7\u0005\u0003\u0000"+ + "\u0000\u00e7;\u0001\u0000\u0000\u0000\u00e8\u00e9\u0005\u0010\u0000\u0000"+ + "\u00e9\u00ee\u0003>\u001f\u0000\u00ea\u00eb\u0005\u0011\u0000\u0000\u00eb"+ + "\u00ed\u0003>\u001f\u0000\u00ec\u00ea\u0001\u0000\u0000\u0000\u00ed\u00f0"+ + "\u0001\u0000\u0000\u0000\u00ee\u00ec\u0001\u0000\u0000\u0000\u00ee\u00ef"+ + "\u0001\u0000\u0000\u0000\u00ef=\u0001\u0000\u0000\u0000\u00f0\u00ee\u0001"+ + "\u0000\u0000\u0000\u00f1\u00f6\u0003@ \u0000\u00f2\u00f3\u0005\u0012\u0000"+ + "\u0000\u00f3\u00f5\u0003@ \u0000\u00f4\u00f2\u0001\u0000\u0000\u0000\u00f5"+ + "\u00f8\u0001\u0000\u0000\u0000\u00f6\u00f4\u0001\u0000\u0000\u0000\u00f6"+ + "\u00f7\u0001\u0000\u0000\u0000\u00f7?\u0001\u0000\u0000\u0000\u00f8\u00f6"+ + "\u0001\u0000\u0000\u0000\u00f9\u00fb\b\u0006\u0000\u0000\u00fa\u00f9\u0001"+ + "\u0000\u0000\u0000\u00fb\u00fc\u0001\u0000\u0000\u0000\u00fc\u00fa\u0001"+ + "\u0000\u0000\u0000\u00fc\u00fd\u0001\u0000\u0000\u0000\u00fdA\u0001\u0000"+ + "\u0000\u0000\"CFILOUY\\_bv|\u007f\u0089\u008c\u008f\u0092\u0096\u0099"+ + "\u009b\u00ac\u00b3\u00be\u00c1\u00c6\u00cb\u00d0\u00d3\u00d6\u00dd\u00e2"+ + "\u00ee\u00f6\u00fc"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/DiagramDirectEditListener.java b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/DiagramDirectEditListener.java index 5fa801d3b..d85ab4f6a 100644 --- a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/DiagramDirectEditListener.java +++ b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/DiagramDirectEditListener.java @@ -216,6 +216,8 @@ public void exitAbstractPrefixExpression(AbstractPrefixExpressionContext ctx) { usage.setIsAbstract(true); } else { usage.setIsAbstract(false); + // A variation is always abstract, + usage.setIsVariation(false); } } super.exitAbstractPrefixExpression(ctx); @@ -262,6 +264,8 @@ public void exitVariationPrefixExpression(VariationPrefixExpressionContext ctx) if (this.element instanceof Usage usage) { if (ctx != null) { usage.setIsVariation(true); + // A variation is always abstract, + usage.setIsAbstract(true); } else { usage.setIsVariation(false); } @@ -948,7 +952,8 @@ private void handleMissingDirectionPrefixExpression(ExpressionContext ctx) { private void handleMissingAbstractPrefixExpression(ExpressionContext ctx) { AbstractPrefixExpressionContext abstractPrefixExpression = ctx.prefixExpression().abstractPrefixExpression(); - if (this.element instanceof Usage usage && abstractPrefixExpression == null) { + if (this.element instanceof Usage usage && abstractPrefixExpression == null && !usage.isIsVariation()) { + // A variation is always abstract, usage.setIsAbstract(false); } } diff --git a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/LabelService.java b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/LabelService.java index 666e6f768..a472b8232 100644 --- a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/LabelService.java +++ b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/LabelService.java @@ -249,7 +249,7 @@ public String getUsagePrefix(Usage usage) { } else if (usage.getDirection() == FeatureDirectionKind.INOUT) { label.append(LabelConstants.INOUT + LabelConstants.SPACE); } - if (usage.isIsAbstract()) { + if (usage.isIsAbstract() && !usage.isIsVariation()) { label.append(LabelConstants.ABSTRACT + LabelConstants.SPACE); } if (usage.isIsVariation()) { diff --git a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/MultiLineLabelSwitch.java b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/MultiLineLabelSwitch.java index ea1178c2c..71509f9e6 100644 --- a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/MultiLineLabelSwitch.java +++ b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/MultiLineLabelSwitch.java @@ -14,6 +14,7 @@ import java.util.Objects; +import org.eclipse.emf.ecore.EObject; import org.eclipse.syson.sysml.AcceptActionUsage; import org.eclipse.syson.sysml.ActionDefinition; import org.eclipse.syson.sysml.ActionUsage; @@ -25,6 +26,7 @@ import org.eclipse.syson.sysml.AttributeUsage; import org.eclipse.syson.sysml.ConstraintDefinition; import org.eclipse.syson.sysml.ConstraintUsage; +import org.eclipse.syson.sysml.Definition; import org.eclipse.syson.sysml.Element; import org.eclipse.syson.sysml.EnumerationDefinition; import org.eclipse.syson.sysml.ExhibitStateUsage; @@ -57,6 +59,7 @@ import org.eclipse.syson.sysml.Usage; import org.eclipse.syson.sysml.UseCaseDefinition; import org.eclipse.syson.sysml.UseCaseUsage; +import org.eclipse.syson.sysml.VariantMembership; import org.eclipse.syson.sysml.helper.LabelConstants; import org.eclipse.syson.sysml.util.SysmlSwitch; @@ -86,7 +89,7 @@ public String caseElement(Element object) { public String caseAcceptActionUsage(AcceptActionUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append("accept action") @@ -108,7 +111,7 @@ public String caseAcceptActionUsage(AcceptActionUsage object) { public String caseActionDefinition(ActionDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("action def") .append(LabelConstants.CLOSE_QUOTE) @@ -122,7 +125,7 @@ public String caseActionDefinition(ActionDefinition object) { public String caseActionUsage(ActionUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append("action") @@ -141,7 +144,7 @@ public String caseActionUsage(ActionUsage object) { public String caseAllocationDefinition(AllocationDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("allocation def") .append(LabelConstants.CLOSE_QUOTE) @@ -155,7 +158,7 @@ public String caseAllocationDefinition(AllocationDefinition object) { public String caseAllocationUsage(AllocationUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append("allocation") @@ -174,7 +177,7 @@ public String caseAllocationUsage(AllocationUsage object) { public String caseAttributeDefinition(AttributeDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("attribute def") .append(LabelConstants.CLOSE_QUOTE) @@ -188,7 +191,7 @@ public String caseAttributeDefinition(AttributeDefinition object) { public String caseAttributeUsage(AttributeUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("attribute") .append(LabelConstants.CLOSE_QUOTE) @@ -206,7 +209,7 @@ public String caseAttributeUsage(AttributeUsage object) { public String caseAssignmentActionUsage(AssignmentActionUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append("assign") @@ -220,7 +223,7 @@ public String caseAssignmentActionUsage(AssignmentActionUsage object) { public String caseConstraintDefinition(ConstraintDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("constraint def") .append(LabelConstants.CLOSE_QUOTE) @@ -234,7 +237,7 @@ public String caseConstraintDefinition(ConstraintDefinition object) { public String caseConstraintUsage(ConstraintUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append("constraint") @@ -253,7 +256,7 @@ public String caseConstraintUsage(ConstraintUsage object) { public String caseEnumerationDefinition(EnumerationDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("enumeration def") .append(LabelConstants.CLOSE_QUOTE) @@ -267,7 +270,7 @@ public String caseEnumerationDefinition(EnumerationDefinition object) { public String caseExhibitStateUsage(ExhibitStateUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(this.getIsParallel(object.isIsParallel())) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) @@ -287,7 +290,7 @@ public String caseExhibitStateUsage(ExhibitStateUsage object) { public String caseInterfaceDefinition(InterfaceDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("interface def") .append(LabelConstants.CLOSE_QUOTE) @@ -301,7 +304,7 @@ public String caseInterfaceDefinition(InterfaceDefinition object) { public String caseInterfaceUsage(InterfaceUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append("interface") @@ -320,7 +323,7 @@ public String caseInterfaceUsage(InterfaceUsage object) { public String caseItemDefinition(ItemDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("item def") .append(LabelConstants.CLOSE_QUOTE) @@ -334,7 +337,7 @@ public String caseItemDefinition(ItemDefinition object) { public String caseItemUsage(ItemUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append("item") @@ -353,7 +356,7 @@ public String caseItemUsage(ItemUsage object) { public String caseMetadataDefinition(MetadataDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("metadata def") .append(LabelConstants.CLOSE_QUOTE) @@ -367,7 +370,7 @@ public String caseMetadataDefinition(MetadataDefinition object) { public String caseOccurrenceDefinition(OccurrenceDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(this.individual(object)) .append(LabelConstants.OPEN_QUOTE) .append("occurrence def") @@ -382,7 +385,7 @@ public String caseOccurrenceDefinition(OccurrenceDefinition object) { public String caseOccurrenceUsage(OccurrenceUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(this.individual(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) @@ -409,7 +412,7 @@ public String casePackage(Package object) { public String casePartDefinition(PartDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("part def") .append(LabelConstants.CLOSE_QUOTE) @@ -425,12 +428,12 @@ public String casePartUsage(PartUsage object) { if (!(object.getOwningMembership() instanceof ActorMembership)) { // The label shouldn't contain abstract, ref, or part if the part represents an actor. label - .append(this.abstractType(object)) - .append(LabelConstants.OPEN_QUOTE) - .append(this.reference(object)) - .append("part") - .append(LabelConstants.CLOSE_QUOTE) - .append(LabelConstants.CR); + .append(this.getBasicNamePrefix(object)) + .append(LabelConstants.OPEN_QUOTE) + .append(this.reference(object)) + .append("part") + .append(LabelConstants.CLOSE_QUOTE) + .append(LabelConstants.CR); } label @@ -447,7 +450,7 @@ public String casePartUsage(PartUsage object) { public String casePerformActionUsage(PerformActionUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append(this.getPerformActionUsageTag(object)) @@ -461,7 +464,7 @@ public String casePerformActionUsage(PerformActionUsage object) { public String casePortDefinition(PortDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("port def") .append(LabelConstants.CLOSE_QUOTE) @@ -475,7 +478,7 @@ public String casePortDefinition(PortDefinition object) { public String casePortUsage(PortUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append("port") @@ -495,7 +498,7 @@ public String casePortUsage(PortUsage object) { public String caseRequirementDefinition(RequirementDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("requirement def") .append(LabelConstants.CLOSE_QUOTE) @@ -509,7 +512,7 @@ public String caseRequirementDefinition(RequirementDefinition object) { public String caseRequirementUsage(RequirementUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append("requirement") @@ -528,7 +531,7 @@ public String caseRequirementUsage(RequirementUsage object) { public String caseUseCaseDefinition(UseCaseDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append("use case def") .append(LabelConstants.CLOSE_QUOTE) @@ -542,7 +545,7 @@ public String caseUseCaseDefinition(UseCaseDefinition object) { public String caseUseCaseUsage(UseCaseUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) .append("use case") @@ -561,7 +564,7 @@ public String caseUseCaseUsage(UseCaseUsage object) { public String caseStateDefinition(StateDefinition object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(this.getIsParallel(object.isIsParallel())) .append(LabelConstants.OPEN_QUOTE) .append("state def") @@ -576,7 +579,7 @@ public String caseStateDefinition(StateDefinition object) { public String caseStateUsage(StateUsage object) { StringBuilder label = new StringBuilder(); label - .append(this.abstractType(object)) + .append(this.getBasicNamePrefix(object)) .append(this.getIsParallel(object.isIsParallel())) .append(LabelConstants.OPEN_QUOTE) .append(this.reference(object)) @@ -610,18 +613,72 @@ private StringBuilder getIsParallel(boolean isParallel) { return parallel; } + private String getBasicNamePrefix(Type object) { + StringBuilder label = new StringBuilder(); + if (object instanceof Usage usage) { + label.append(this.variationUsage(usage)); + } else if (object instanceof Definition definition) { + label.append(this.variationDefinition(definition)); + + } + label.append(this.variantElement(object)) + .append(this.abstractType(object)); + return label.toString(); + } + private String abstractType(Type type) { StringBuilder label = new StringBuilder(); if (type.isIsAbstract()) { label .append(LabelConstants.OPEN_QUOTE) - .append("abstract") + .append(LabelConstants.ABSTRACT) + .append(LabelConstants.CLOSE_QUOTE) + .append(LabelConstants.CR); + } + return label.toString(); + } + + private String variationDefinition(Definition definition) { + StringBuilder label = new StringBuilder(); + if (definition.isIsVariation()) { + label + .append(LabelConstants.OPEN_QUOTE) + .append(LabelConstants.VARIATION) .append(LabelConstants.CLOSE_QUOTE) .append(LabelConstants.CR); } return label.toString(); } + private String variationUsage(Usage usage) { + StringBuilder label = new StringBuilder(); + if (usage.isIsVariation()) { + label + .append(LabelConstants.OPEN_QUOTE) + .append(LabelConstants.VARIATION) + .append(LabelConstants.CLOSE_QUOTE) + .append(LabelConstants.CR); + } + return label.toString(); + } + + private String variantElement(Element elt) { + StringBuilder label = new StringBuilder(); + EObject membership = elt.getOwningMembership(); + if (membership != null) { + EObject parent = membership.eContainer(); + boolean hasVariationParent = (parent instanceof Definition && ((Definition) parent).isIsVariation()) | (parent instanceof Usage && ((Usage) parent).isIsVariation()); + if (membership instanceof VariantMembership | hasVariationParent) { + label + .append(LabelConstants.OPEN_QUOTE) + .append(LabelConstants.VARIANT) + .append(LabelConstants.CLOSE_QUOTE) + .append(LabelConstants.CR); + } + } + return label.toString(); + } + private String multiplicityRange(Usage usage) { StringBuilder label = new StringBuilder(); var optMultiplicityRange = usage.getOwnedRelationship().stream() @@ -665,7 +722,7 @@ private String multiplicityRange(Usage usage) { private String reference(Usage usage) { String result = ""; if (usage.isIsReference()) { - result = "ref" + LabelConstants.SPACE; + result = LabelConstants.REF + LabelConstants.SPACE; } return result; } diff --git a/backend/services/syson-services/src/main/resources/DirectEdit.g4 b/backend/services/syson-services/src/main/resources/DirectEdit.g4 index d9f7767d0..136bed820 100644 --- a/backend/services/syson-services/src/main/resources/DirectEdit.g4 +++ b/backend/services/syson-services/src/main/resources/DirectEdit.g4 @@ -33,7 +33,7 @@ expression : ; prefixExpression : - directionPrefixExpression? abstractPrefixExpression? variationPrefixExpression? readonlyPrefixExpression? derivedPrefixExpression? endPrefixExpression? + directionPrefixExpression? (abstractPrefixExpression | variationPrefixExpression)? readonlyPrefixExpression? derivedPrefixExpression? endPrefixExpression? ; directionPrefixExpression : diff --git a/backend/services/syson-services/src/test/java/org/eclipse/syson/services/MultilineLabelSwitchTest.java b/backend/services/syson-services/src/test/java/org/eclipse/syson/services/MultilineLabelSwitchTest.java new file mode 100644 index 000000000..53922deb0 --- /dev/null +++ b/backend/services/syson-services/src/test/java/org/eclipse/syson/services/MultilineLabelSwitchTest.java @@ -0,0 +1,213 @@ +/******************************************************************************* + * Copyright (c) 2024 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.services; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.stream.Stream; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.sirius.components.core.api.IFeedbackMessageService; +import org.eclipse.syson.sysml.Definition; +import org.eclipse.syson.sysml.Element; +import org.eclipse.syson.sysml.FeatureMembership; +import org.eclipse.syson.sysml.SysmlFactory; +import org.eclipse.syson.sysml.SysmlPackage; +import org.eclipse.syson.sysml.Type; +import org.eclipse.syson.sysml.Usage; +import org.eclipse.syson.sysml.helper.LabelConstants; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +/** + * Multiline Label services tests. + * + * @author jmallet + */ +public class MultilineLabelSwitchTest extends AbstractServiceTest { + + protected static final SysmlPackage SYSML = SysmlPackage.eINSTANCE; + + private static final String REF_ATTRIBUTE_LABEL = LabelConstants.REF + LabelConstants.SPACE; + + private static final String DEFAULT_ACTION_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "action" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_ACTION_DEF_LABEL = LabelConstants.OPEN_QUOTE + "action def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_ACCEPT_ACTION_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "accept action" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR + + LabelConstants.CR; + + private static final String DEFAULT_ALLOCATION_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "allocation def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_ALLOCATION_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "allocation" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_ATTRIBUTE_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "attribute def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_ATTRIBUTE_USAGE_LABEL = LabelConstants.OPEN_QUOTE + "attribute" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_ASSIGNMENT_ACTION_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "assign" + LabelConstants.CLOSE_QUOTE + + LabelConstants.CR; + + private static final String DEFAULT_CONSTRAINT_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "constraint def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_CONSTRAINT_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "constraint" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_ENUMERATION_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "enumeration def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_EXHIBIT_STATE_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "exhibit state" + LabelConstants.CLOSE_QUOTE + + LabelConstants.CR; + + private static final String DEFAULT_INTERFACE_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "interface def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_INTERFACE_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "interface" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_ITEM_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "item def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_ITEM_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "item" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_METADATA_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "metadata def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_OCCURRENCE_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "occurrence def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_OCCURRENCE_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "occurrence" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_PART_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "part def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_PART_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "part" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_PERFORM_ACTION_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "perform action" + LabelConstants.CLOSE_QUOTE + + LabelConstants.CR + "null"; + + private static final String DEFAULT_PORT_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "port def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_PORT_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "port" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_REQUIREMENT_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "requirement def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_REQUIREMENT_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "requirement" + LabelConstants.CLOSE_QUOTE + + LabelConstants.CR; + + private static final String DEFAULT_USE_CASE_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "use case def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_USE_CASE_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "use case" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_STATE_DEFINITION_LABEL = LabelConstants.OPEN_QUOTE + "state def" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private static final String DEFAULT_STATE_USAGE_LABEL = LabelConstants.OPEN_QUOTE + REF_ATTRIBUTE_LABEL + "state" + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + + private MultiLineLabelSwitch multiLineLabelSwitch; + + @BeforeEach + void beforeEach() { + LabelService labelService = new LabelService(new IFeedbackMessageService.NoOp()); + this.multiLineLabelSwitch = new MultiLineLabelSwitch(labelService); + } + + private static Stream parameterProvider() { + return Stream.of(// + Arguments.of(SYSML.getActionUsage(), DEFAULT_ACTION_LABEL), // + Arguments.of(SYSML.getActionDefinition(), DEFAULT_ACTION_DEF_LABEL), // + Arguments.of(SYSML.getAcceptActionUsage(), DEFAULT_ACCEPT_ACTION_LABEL), // + Arguments.of(SYSML.getAllocationDefinition(), DEFAULT_ALLOCATION_DEFINITION_LABEL), // + Arguments.of(SYSML.getAllocationUsage(), DEFAULT_ALLOCATION_USAGE_LABEL), // + Arguments.of(SYSML.getAttributeDefinition(), DEFAULT_ATTRIBUTE_DEFINITION_LABEL), // + Arguments.of(SYSML.getAttributeUsage(), DEFAULT_ATTRIBUTE_USAGE_LABEL), // + Arguments.of(SYSML.getAssignmentActionUsage(), DEFAULT_ASSIGNMENT_ACTION_USAGE_LABEL), // + Arguments.of(SYSML.getConstraintDefinition(), DEFAULT_CONSTRAINT_DEFINITION_LABEL), // + Arguments.of(SYSML.getConstraintUsage(), DEFAULT_CONSTRAINT_USAGE_LABEL), // + Arguments.of(SYSML.getEnumerationDefinition(), DEFAULT_ENUMERATION_DEFINITION_LABEL), // + Arguments.of(SYSML.getExhibitStateUsage(), DEFAULT_EXHIBIT_STATE_USAGE_LABEL), // + Arguments.of(SYSML.getInterfaceDefinition(), DEFAULT_INTERFACE_DEFINITION_LABEL), // + Arguments.of(SYSML.getInterfaceUsage(), DEFAULT_INTERFACE_USAGE_LABEL), // + Arguments.of(SYSML.getItemDefinition(), DEFAULT_ITEM_DEFINITION_LABEL), // + Arguments.of(SYSML.getItemUsage(), DEFAULT_ITEM_USAGE_LABEL), // + Arguments.of(SYSML.getMetadataDefinition(), DEFAULT_METADATA_DEFINITION_LABEL), // + Arguments.of(SYSML.getOccurrenceUsage(), DEFAULT_OCCURRENCE_USAGE_LABEL), // + Arguments.of(SYSML.getOccurrenceDefinition(), DEFAULT_OCCURRENCE_DEFINITION_LABEL), // + Arguments.of(SYSML.getPartUsage(), DEFAULT_PART_USAGE_LABEL), // + Arguments.of(SYSML.getPartDefinition(), DEFAULT_PART_DEFINITION_LABEL), // + Arguments.of(SYSML.getPerformActionUsage(), DEFAULT_PERFORM_ACTION_USAGE_LABEL), // + Arguments.of(SYSML.getPortDefinition(), DEFAULT_PORT_DEFINITION_LABEL), // + Arguments.of(SYSML.getPortUsage(), DEFAULT_PORT_USAGE_LABEL), // + Arguments.of(SYSML.getRequirementDefinition(), DEFAULT_REQUIREMENT_DEFINITION_LABEL), // + Arguments.of(SYSML.getRequirementUsage(), DEFAULT_REQUIREMENT_USAGE_LABEL), // + Arguments.of(SYSML.getUseCaseDefinition(), DEFAULT_USE_CASE_DEFINITION_LABEL), // + Arguments.of(SYSML.getUseCaseUsage(), DEFAULT_USE_CASE_USAGE_LABEL), // + Arguments.of(SYSML.getStateDefinition(), DEFAULT_STATE_DEFINITION_LABEL), // + Arguments.of(SYSML.getStateUsage(), DEFAULT_STATE_USAGE_LABEL) // + ); + } + + @ParameterizedTest(name = "[{index}] Check default prefix in {0} element label") + @MethodSource("parameterProvider") + public void testPrefixLabelWithDefaultProperty(EClass elementType, String defaultLabel) { + EObject newElement = SysmlFactory.eINSTANCE.create(elementType); + assertEquals(defaultLabel, + this.multiLineLabelSwitch.doSwitch(newElement)); + } + + @ParameterizedTest(name = "[{index}] Check Abstract prefix in {0} element label") + @MethodSource("parameterProvider") + public void testPrefixLabelWithAbstractProperty(EClass elementType, String defaultLabel) { + Element newElement = (Element) SysmlFactory.eINSTANCE.create(elementType); + if (newElement instanceof Type type) { + type.setIsAbstract(true); + String abstractPrefix = LabelConstants.OPEN_QUOTE + LabelConstants.ABSTRACT + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + assertEquals(abstractPrefix + defaultLabel, + this.multiLineLabelSwitch.doSwitch(newElement)); + } + } + + @ParameterizedTest(name = "[{index}] Check Variation prefix in {0} element label") + @MethodSource("parameterProvider") + public void testPrefixLabelWithVariationProperty(EClass elementType, String defaultLabel) { + Element newElement = (Element) SysmlFactory.eINSTANCE.create(elementType); + if (newElement instanceof Usage) { + ((Usage) newElement).setIsVariation(true); + } + if (newElement instanceof Definition) { + ((Definition) newElement).setIsVariation(true); + } + String abstractPrefix = LabelConstants.OPEN_QUOTE + LabelConstants.VARIATION + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + assertEquals(abstractPrefix + defaultLabel, + this.multiLineLabelSwitch.doSwitch(newElement)); + } + + @ParameterizedTest(name = "[{index}] Check Variant prefix in {0} element label") + @MethodSource("parameterProvider") + public void testPrefixLabelWithVariantProperty(EClass elementType, String defaultLabel) { + Element parentElement = (Element) SysmlFactory.eINSTANCE.create(elementType); + if (parentElement instanceof Usage) { + ((Usage) parentElement).setIsVariation(true); + } + if (parentElement instanceof Definition) { + ((Definition) parentElement).setIsVariation(true); + } + Element newElement = this.createNestedElementIn(parentElement, elementType); + String abstractPrefix = LabelConstants.OPEN_QUOTE + LabelConstants.VARIANT + LabelConstants.CLOSE_QUOTE + LabelConstants.CR; + assertEquals(abstractPrefix + defaultLabel, + this.multiLineLabelSwitch.doSwitch(newElement)); + } + + private Element createNestedElementIn(Element parentElement, EClass elementType) { + Element newElement = (Element) SysmlFactory.eINSTANCE.create(elementType); + FeatureMembership membership = SysmlFactory.eINSTANCE.createFeatureMembership(); + parentElement.getOwnedRelationship().add(membership); + membership.getOwnedRelatedElement().add(newElement); + return newElement; + } + +} diff --git a/integration-tests/cypress/e2e/project/diagrams/general-view/directEditTests.cy.ts b/integration-tests/cypress/e2e/project/diagrams/general-view/directEditTests.cy.ts index 7f2bc38e8..bec13f1f4 100644 --- a/integration-tests/cypress/e2e/project/diagrams/general-view/directEditTests.cy.ts +++ b/integration-tests/cypress/e2e/project/diagrams/general-view/directEditTests.cy.ts @@ -163,7 +163,7 @@ describe('Node Creation Tests', () => { diagram.getNodes(diagramLabel, 'attribute').should('exist'); // direct edit attribute - cy.getByTestId('IconLabel - attribute').type('abstract variation end myAttribute ordered nonunique{enter}'); + cy.getByTestId('IconLabel - attribute').type('variation end myAttribute ordered nonunique{enter}'); diagram.getNodes(diagramLabel, 'myAttribute').should('exist'); // check attribute properties @@ -177,12 +177,12 @@ describe('Node Creation Tests', () => { // reset attribute to default properties diagram.getNodes(diagramLabel, 'myAttribute').should('exist'); - cy.getByTestId('IconLabel - abstract variation end myAttribute ordered nonunique').type('myAttribute{enter}'); + cy.getByTestId('IconLabel - variation end myAttribute ordered nonunique').type('myAttribute{enter}'); // check attribute properties details.getPage('Advanced').click(); details.getGroup('Attribute Properties').should('be.visible'); - details.getDetailsView().find(`[data-testid="Is Abstract"]`).should('not.have.class', 'Mui-checked'); + details.getDetailsView().find(`[data-testid="Is Abstract"]`).should('have.class', 'Mui-checked'); details.getDetailsView().find(`[data-testid="Is Variation"]`).should('not.have.class', 'Mui-checked'); details.getDetailsView().find(`[data-testid="Is End"]`).should('not.have.class', 'Mui-checked'); details.getDetailsView().find(`[data-testid="Is Ordered"]`).should('not.have.class', 'Mui-checked');