Skip to content

Commit 32cc3ed

Browse files
committed
a?[2:10:2]
1 parent 813e061 commit 32cc3ed

25 files changed

+2790
-2030
lines changed

Configuration/GlobalAssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ internal static class RevisionClass
1515
public const string Major = "3";
1616
public const string Minor = "2";
1717
public const string Build = "0";
18-
public const string Revision = "1371";
18+
public const string Revision = "1372";
1919

2020
public const string MainVersion = Major + "." + Minor;
2121
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

Configuration/Version.defs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
%COREVERSION%=0
2-
%REVISION%=1371
31
%MINOR%=2
2+
%REVISION%=1372
3+
%COREVERSION%=0
44
%MAJOR%=3

NETGenerator/NETGenerator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9210,7 +9210,8 @@ public override void visit(SemanticTree.ICompiledConstructorCall value)
92109210
}
92119211
else
92129212
{
9213-
mi = helper.GetMethod(ifc.function).mi;
9213+
var meth = helper.GetMethod(ifc.function);
9214+
mi = meth.mi;
92149215
}
92159216
}
92169217
PushObjectCommand(ifc);

Parsers/PascalABCParserNewSaushkin/ABCPascal.cs

Lines changed: 94 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
//
22
// This CSharp output file generated by Gardens Point LEX
33
// Version: 1.1.3.301
4-
// Machine: IVAN-PC
5-
// DateTime: 18.12.2016 12:52:06
6-
// UserName: Ivan
4+
// Machine: DESKTOP-8EAQPI9
5+
// DateTime: 09.01.2017 15:07:29
6+
// UserName: ?????????
77
// GPLEX input file <ABCPascal.lex>
88
// GPLEX frame file <embedded resource>
99
//
@@ -124,8 +124,8 @@ private static int GetMaxParseToken() {
124124

125125
enum Result {accept, noMatch, contextFound};
126126

127-
const int maxAccept = 62;
128-
const int initial = 63;
127+
const int maxAccept = 63;
128+
const int initial = 64;
129129
const int eofNum = 0;
130130
const int goStart = -1;
131131
const int INITIAL = 0;
@@ -177,7 +177,7 @@ public Table(int m, int x, int d, sbyte[] n) {
177177
}
178178
};
179179

180-
static int[] startState = new int[] {63, 97, 98, 99, 99, 100,
180+
static int[] startState = new int[] {64, 98, 99, 100, 100, 101,
181181
0};
182182

183183
#region TwoLevelCharacterMap
@@ -1177,52 +1177,52 @@ static sbyte Map(int code)
11771177
return MapC(code);
11781178
}
11791179

1180-
static Table[] NxS = new Table[102] {
1180+
static Table[] NxS = new Table[103] {
11811181
/* NxS[ 0] */ new Table(0, 0, 0, null),
1182-
/* NxS[ 1] */ new Table(1, 19, -1, new sbyte[] {51, -1, -1, -1, -1, -1,
1183-
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52}),
1182+
/* NxS[ 1] */ new Table(1, 19, -1, new sbyte[] {52, -1, -1, -1, -1, -1,
1183+
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53}),
11841184
/* NxS[ 2] */ new Table(0, 0, -1, null),
1185-
/* NxS[ 3] */ new Table(4, 1, -1, new sbyte[] {96}),
1186-
/* NxS[ 4] */ new Table(26, 19, -1, new sbyte[] {49, 49, 49, -1, -1, -1,
1187-
-1, -1, -1, -1, -1, 49, -1, -1, -1, -1, 49, 49, 49}),
1188-
/* NxS[ 5] */ new Table(8, 1, -1, new sbyte[] {48}),
1189-
/* NxS[ 6] */ new Table(19, 1, -1, new sbyte[] {47}),
1185+
/* NxS[ 3] */ new Table(4, 1, -1, new sbyte[] {97}),
1186+
/* NxS[ 4] */ new Table(26, 19, -1, new sbyte[] {50, 50, 50, -1, -1, -1,
1187+
-1, -1, -1, -1, -1, 50, -1, -1, -1, -1, 50, 50, 50}),
1188+
/* NxS[ 5] */ new Table(8, 1, -1, new sbyte[] {49}),
1189+
/* NxS[ 6] */ new Table(19, 1, -1, new sbyte[] {48}),
11901190
/* NxS[ 7] */ new Table(0, 0, -1, null),
11911191
/* NxS[ 8] */ new Table(28, 17, -1, new sbyte[] {25, 25, 25, 25, 25, 25,
11921192
25, 25, 25, 25, 25, 25, -1, 25, -1, 25, 25}),
11931193
/* NxS[ 9] */ new Table(0, 0, -1, null),
1194-
/* NxS[ 10] */ new Table(19, 1, -1, new sbyte[] {46}),
1195-
/* NxS[ 11] */ new Table(13, 1, -1, new sbyte[] {45}),
1194+
/* NxS[ 10] */ new Table(19, 1, -1, new sbyte[] {47}),
1195+
/* NxS[ 11] */ new Table(13, 1, -1, new sbyte[] {46}),
11961196
/* NxS[ 12] */ new Table(0, 0, -1, null),
11971197
/* NxS[ 13] */ new Table(0, 0, -1, null),
11981198
/* NxS[ 14] */ new Table(0, 0, -1, null),
1199-
/* NxS[ 15] */ new Table(13, 1, -1, new sbyte[] {44}),
1199+
/* NxS[ 15] */ new Table(13, 3, -1, new sbyte[] {44, -1, 45}),
12001200
/* NxS[ 16] */ new Table(0, 0, -1, null),
12011201
/* NxS[ 17] */ new Table(0, 0, -1, null),
12021202
/* NxS[ 18] */ new Table(19, 1, -1, new sbyte[] {43}),
12031203
/* NxS[ 19] */ new Table(19, 4, -1, new sbyte[] {41, -1, -1, 42}),
12041204
/* NxS[ 20] */ new Table(19, 1, -1, new sbyte[] {40}),
1205-
/* NxS[ 21] */ new Table(19, 5, -1, new sbyte[] {35, -1, -1, 36, 69}),
1205+
/* NxS[ 21] */ new Table(19, 5, -1, new sbyte[] {35, -1, -1, 36, 70}),
12061206
/* NxS[ 22] */ new Table(0, 0, -1, null),
1207-
/* NxS[ 23] */ new Table(26, 1, -1, new sbyte[] {68}),
1208-
/* NxS[ 24] */ new Table(13, 32, -1, new sbyte[] {65, -1, -1, -1, -1, -1,
1209-
-1, -1, -1, -1, -1, -1, -1, 24, 24, 66, -1, -1, -1, -1, -1, -1,
1210-
-1, -1, -1, -1, -1, -1, -1, 24, -1, 66}),
1207+
/* NxS[ 23] */ new Table(26, 1, -1, new sbyte[] {69}),
1208+
/* NxS[ 24] */ new Table(13, 32, -1, new sbyte[] {66, -1, -1, -1, -1, -1,
1209+
-1, -1, -1, -1, -1, -1, -1, 24, 24, 67, -1, -1, -1, -1, -1, -1,
1210+
-1, -1, -1, -1, -1, -1, -1, 24, -1, 67}),
12111211
/* NxS[ 25] */ new Table(26, 19, -1, new sbyte[] {25, 25, 25, 25, 25, 25,
12121212
25, 25, 25, 25, 25, 25, 25, 25, -1, 25, 25, 25, 25}),
12131213
/* NxS[ 26] */ new Table(0, 0, -1, null),
1214-
/* NxS[ 27] */ new Table(45, 4, 64, new sbyte[] {31, 64, 64, -1}),
1214+
/* NxS[ 27] */ new Table(45, 4, 65, new sbyte[] {31, 65, 65, -1}),
12151215
/* NxS[ 28] */ new Table(26, 19, -1, new sbyte[] {29, 29, 30, 30, 30, 30,
12161216
30, 30, 30, 30, 30, 30, 30, 30, -1, 30, 29, 30, 30}),
12171217
/* NxS[ 29] */ new Table(26, 17, -1, new sbyte[] {29, 29, -1, -1, -1, -1,
12181218
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29}),
12191219
/* NxS[ 30] */ new Table(26, 19, -1, new sbyte[] {30, 30, 30, 30, 30, 30,
12201220
30, 30, 30, 30, 30, 30, 30, 30, -1, 30, 30, 30, 30}),
1221-
/* NxS[ 31] */ new Table(45, 1, -1, new sbyte[] {64}),
1221+
/* NxS[ 31] */ new Table(45, 1, -1, new sbyte[] {65}),
12221222
/* NxS[ 32] */ new Table(26, 17, -1, new sbyte[] {32, 32, -1, -1, -1, -1,
12231223
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32}),
1224-
/* NxS[ 33] */ new Table(26, 19, -1, new sbyte[] {33, 33, 66, -1, -1, -1,
1225-
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 66}),
1224+
/* NxS[ 33] */ new Table(26, 19, -1, new sbyte[] {33, 33, 67, -1, -1, -1,
1225+
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 67}),
12261226
/* NxS[ 34] */ new Table(0, 0, -1, null),
12271227
/* NxS[ 35] */ new Table(0, 0, -1, null),
12281228
/* NxS[ 36] */ new Table(0, 0, -1, null),
@@ -1238,70 +1238,71 @@ static sbyte Map(int code)
12381238
/* NxS[ 46] */ new Table(0, 0, -1, null),
12391239
/* NxS[ 47] */ new Table(0, 0, -1, null),
12401240
/* NxS[ 48] */ new Table(0, 0, -1, null),
1241-
/* NxS[ 49] */ new Table(26, 19, -1, new sbyte[] {49, 49, 49, -1, -1, -1,
1242-
-1, -1, -1, -1, -1, 49, -1, -1, -1, -1, 49, 49, 49}),
1243-
/* NxS[ 50] */ new Table(0, 0, -1, null),
1244-
/* NxS[ 51] */ new Table(0, 7, 51, new sbyte[] {-1, 51, 51, 51, 51, 51,
1241+
/* NxS[ 49] */ new Table(0, 0, -1, null),
1242+
/* NxS[ 50] */ new Table(26, 19, -1, new sbyte[] {50, 50, 50, -1, -1, -1,
1243+
-1, -1, -1, -1, -1, 50, -1, -1, -1, -1, 50, 50, 50}),
1244+
/* NxS[ 51] */ new Table(0, 0, -1, null),
1245+
/* NxS[ 52] */ new Table(0, 7, 52, new sbyte[] {-1, 52, 52, 52, 52, 52,
12451246
-1}),
1246-
/* NxS[ 52] */ new Table(0, 0, -1, null),
12471247
/* NxS[ 53] */ new Table(0, 0, -1, null),
12481248
/* NxS[ 54] */ new Table(0, 0, -1, null),
12491249
/* NxS[ 55] */ new Table(0, 0, -1, null),
1250-
/* NxS[ 56] */ new Table(9, 1, -1, new sbyte[] {57}),
1251-
/* NxS[ 57] */ new Table(0, 0, -1, null),
1250+
/* NxS[ 56] */ new Table(0, 0, -1, null),
1251+
/* NxS[ 57] */ new Table(9, 1, -1, new sbyte[] {58}),
12521252
/* NxS[ 58] */ new Table(0, 0, -1, null),
1253-
/* NxS[ 59] */ new Table(1, 1, -1, new sbyte[] {62}),
1254-
/* NxS[ 60] */ new Table(4, 1, -1, new sbyte[] {101}),
1255-
/* NxS[ 61] */ new Table(0, 0, -1, null),
1256-
/* NxS[ 62] */ new Table(0, 7, 62, new sbyte[] {-1, 62, 62, 62, 62, 62,
1253+
/* NxS[ 59] */ new Table(0, 0, -1, null),
1254+
/* NxS[ 60] */ new Table(1, 1, -1, new sbyte[] {63}),
1255+
/* NxS[ 61] */ new Table(4, 1, -1, new sbyte[] {102}),
1256+
/* NxS[ 62] */ new Table(0, 0, -1, null),
1257+
/* NxS[ 63] */ new Table(0, 7, 63, new sbyte[] {-1, 63, 63, 63, 63, 63,
12571258
-1}),
1258-
/* NxS[ 63] */ new Table(40, 36, 25, new sbyte[] {26, 25, 24, 25, 25, 27,
1259+
/* NxS[ 64] */ new Table(40, 36, 25, new sbyte[] {26, 25, 24, 25, 25, 27,
12591260
28, 2, -1, 1, 2, 3, 4, -1, -1, 5, 6, 7, 8, 9, 10, 11,
12601261
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 24}),
1261-
/* NxS[ 64] */ new Table(45, 4, 64, new sbyte[] {31, 64, 64, -1}),
1262-
/* NxS[ 65] */ new Table(26, 17, -1, new sbyte[] {33, 33, -1, -1, -1, -1,
1262+
/* NxS[ 65] */ new Table(45, 4, 65, new sbyte[] {31, 65, 65, -1}),
1263+
/* NxS[ 66] */ new Table(26, 17, -1, new sbyte[] {33, 33, -1, -1, -1, -1,
12631264
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33}),
1264-
/* NxS[ 66] */ new Table(20, 23, -1, new sbyte[] {67, 67, -1, -1, -1, -1,
1265+
/* NxS[ 67] */ new Table(20, 23, -1, new sbyte[] {68, 68, -1, -1, -1, -1,
12651266
32, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
12661267
32}),
1267-
/* NxS[ 67] */ new Table(26, 17, -1, new sbyte[] {32, 32, -1, -1, -1, -1,
1268+
/* NxS[ 68] */ new Table(26, 17, -1, new sbyte[] {32, 32, -1, -1, -1, -1,
12681269
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32}),
1269-
/* NxS[ 68] */ new Table(27, 1, -1, new sbyte[] {34}),
1270-
/* NxS[ 69] */ new Table(28, 9, -1, new sbyte[] {70, -1, -1, -1, 71, -1,
1271-
-1, -1, 72}),
1272-
/* NxS[ 70] */ new Table(29, 1, -1, new sbyte[] {86}),
1273-
/* NxS[ 71] */ new Table(36, 1, -1, new sbyte[] {77}),
1274-
/* NxS[ 72] */ new Table(39, 1, -1, new sbyte[] {73}),
1275-
/* NxS[ 73] */ new Table(30, 1, -1, new sbyte[] {74}),
1276-
/* NxS[ 74] */ new Table(28, 1, -1, new sbyte[] {75}),
1277-
/* NxS[ 75] */ new Table(22, 1, -1, new sbyte[] {76}),
1278-
/* NxS[ 76] */ new Table(22, 1, -1, new sbyte[] {37}),
1279-
/* NxS[ 77] */ new Table(37, 1, -1, new sbyte[] {78}),
1280-
/* NxS[ 78] */ new Table(36, 1, -1, new sbyte[] {79}),
1281-
/* NxS[ 79] */ new Table(28, 1, -1, new sbyte[] {80}),
1282-
/* NxS[ 80] */ new Table(38, 1, -1, new sbyte[] {81}),
1283-
/* NxS[ 81] */ new Table(28, 1, -1, new sbyte[] {82}),
1284-
/* NxS[ 82] */ new Table(35, 1, -1, new sbyte[] {83}),
1285-
/* NxS[ 83] */ new Table(36, 1, -1, new sbyte[] {84}),
1286-
/* NxS[ 84] */ new Table(22, 1, -1, new sbyte[] {85}),
1287-
/* NxS[ 85] */ new Table(22, 1, -1, new sbyte[] {38}),
1288-
/* NxS[ 86] */ new Table(30, 1, -1, new sbyte[] {87}),
1289-
/* NxS[ 87] */ new Table(31, 1, -1, new sbyte[] {88}),
1290-
/* NxS[ 88] */ new Table(28, 1, -1, new sbyte[] {89}),
1291-
/* NxS[ 89] */ new Table(32, 1, -1, new sbyte[] {90}),
1270+
/* NxS[ 69] */ new Table(27, 1, -1, new sbyte[] {34}),
1271+
/* NxS[ 70] */ new Table(28, 9, -1, new sbyte[] {71, -1, -1, -1, 72, -1,
1272+
-1, -1, 73}),
1273+
/* NxS[ 71] */ new Table(29, 1, -1, new sbyte[] {87}),
1274+
/* NxS[ 72] */ new Table(36, 1, -1, new sbyte[] {78}),
1275+
/* NxS[ 73] */ new Table(39, 1, -1, new sbyte[] {74}),
1276+
/* NxS[ 74] */ new Table(30, 1, -1, new sbyte[] {75}),
1277+
/* NxS[ 75] */ new Table(28, 1, -1, new sbyte[] {76}),
1278+
/* NxS[ 76] */ new Table(22, 1, -1, new sbyte[] {77}),
1279+
/* NxS[ 77] */ new Table(22, 1, -1, new sbyte[] {37}),
1280+
/* NxS[ 78] */ new Table(37, 1, -1, new sbyte[] {79}),
1281+
/* NxS[ 79] */ new Table(36, 1, -1, new sbyte[] {80}),
1282+
/* NxS[ 80] */ new Table(28, 1, -1, new sbyte[] {81}),
1283+
/* NxS[ 81] */ new Table(38, 1, -1, new sbyte[] {82}),
1284+
/* NxS[ 82] */ new Table(28, 1, -1, new sbyte[] {83}),
1285+
/* NxS[ 83] */ new Table(35, 1, -1, new sbyte[] {84}),
1286+
/* NxS[ 84] */ new Table(36, 1, -1, new sbyte[] {85}),
1287+
/* NxS[ 85] */ new Table(22, 1, -1, new sbyte[] {86}),
1288+
/* NxS[ 86] */ new Table(22, 1, -1, new sbyte[] {38}),
1289+
/* NxS[ 87] */ new Table(30, 1, -1, new sbyte[] {88}),
1290+
/* NxS[ 88] */ new Table(31, 1, -1, new sbyte[] {89}),
1291+
/* NxS[ 89] */ new Table(28, 1, -1, new sbyte[] {90}),
12921292
/* NxS[ 90] */ new Table(32, 1, -1, new sbyte[] {91}),
1293-
/* NxS[ 91] */ new Table(33, 1, -1, new sbyte[] {92}),
1294-
/* NxS[ 92] */ new Table(34, 1, -1, new sbyte[] {93}),
1295-
/* NxS[ 93] */ new Table(35, 1, -1, new sbyte[] {94}),
1296-
/* NxS[ 94] */ new Table(22, 1, -1, new sbyte[] {95}),
1297-
/* NxS[ 95] */ new Table(22, 1, -1, new sbyte[] {39}),
1298-
/* NxS[ 96] */ new Table(0, 7, 96, new sbyte[] {-1, 96, 50, 96, 96, 96,
1293+
/* NxS[ 91] */ new Table(32, 1, -1, new sbyte[] {92}),
1294+
/* NxS[ 92] */ new Table(33, 1, -1, new sbyte[] {93}),
1295+
/* NxS[ 93] */ new Table(34, 1, -1, new sbyte[] {94}),
1296+
/* NxS[ 94] */ new Table(35, 1, -1, new sbyte[] {95}),
1297+
/* NxS[ 95] */ new Table(22, 1, -1, new sbyte[] {96}),
1298+
/* NxS[ 96] */ new Table(22, 1, -1, new sbyte[] {39}),
1299+
/* NxS[ 97] */ new Table(0, 7, 97, new sbyte[] {-1, 97, 51, 97, 97, 97,
12991300
-1}),
1300-
/* NxS[ 97] */ new Table(2, 1, 53, new sbyte[] {54}),
1301-
/* NxS[ 98] */ new Table(8, 1, 55, new sbyte[] {56}),
1302-
/* NxS[ 99] */ new Table(0, 0, -1, null),
1303-
/* NxS[ 100] */ new Table(1, 3, 58, new sbyte[] {59, 58, 60}),
1304-
/* NxS[ 101] */ new Table(0, 7, 101, new sbyte[] {-1, 101, 61, 101, 101, 101,
1301+
/* NxS[ 98] */ new Table(2, 1, 54, new sbyte[] {55}),
1302+
/* NxS[ 99] */ new Table(8, 1, 56, new sbyte[] {57}),
1303+
/* NxS[ 100] */ new Table(0, 0, -1, null),
1304+
/* NxS[ 101] */ new Table(1, 3, 59, new sbyte[] {60, 59, 61}),
1305+
/* NxS[ 102] */ new Table(0, 7, 102, new sbyte[] {-1, 102, 62, 102, 102, 102,
13051306
-1}),
13061307
};
13071308

@@ -2064,24 +2065,27 @@ int Scan()
20642065
return (int)Tokens.tkQuestionPoint;
20652066
break;
20662067
case 45:
2067-
return (int)Tokens.tkDotDot;
2068+
return (int)Tokens.tkQuestionSquareOpen;
20682069
break;
20692070
case 46:
2070-
yylval = new Union(); yylval.op = new op_type_node(Operators.Assignment); return (int)Tokens.tkAssign;
2071+
return (int)Tokens.tkDotDot;
20712072
break;
20722073
case 47:
2073-
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentMultiplication); return (int)Tokens.tkMultEqual;
2074+
yylval = new Union(); yylval.op = new op_type_node(Operators.Assignment); return (int)Tokens.tkAssign;
20742075
break;
20752076
case 48:
2076-
BEGIN(COMMENT1);
2077+
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentMultiplication); return (int)Tokens.tkMultEqual;
20772078
break;
20782079
case 49:
2080+
BEGIN(COMMENT1);
2081+
break;
2082+
case 50:
20792083
yylval = new Union();
20802084
currentLexLocation = CurrentLexLocation;
20812085
yylval.ex = parsertools.create_hex_const(yytext,currentLexLocation);
20822086
return (int)Tokens.tkHex;
20832087
break;
2084-
case 50:
2088+
case 51:
20852089
if (parsertools.build_tree_for_formatter)
20862090
break;
20872091

@@ -2132,36 +2136,36 @@ int Scan()
21322136
Defines.Add(directiveparam);
21332137
}
21342138
break;
2135-
case 51:
2139+
case 52:
21362140
{
21372141

21382142
}
21392143
break;
2140-
case 52:
2144+
case 53:
21412145
yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentDivision); return (int)Tokens.tkDivEqual;
21422146
break;
2143-
case 53:
2147+
case 54:
21442148
{
21452149
}
21462150
break;
2147-
case 54:
2151+
case 55:
21482152
BEGIN(INITIAL);
21492153
break;
2150-
case 55:
21512154
case 56:
2155+
case 57:
21522156
{
21532157
}
21542158
break;
2155-
case 57:
2159+
case 58:
21562160
BEGIN(INITIAL);
21572161
break;
2158-
case 58:
21592162
case 59:
21602163
case 60:
2164+
case 61:
21612165
{
21622166
}
21632167
break;
2164-
case 61:
2168+
case 62:
21652169
parsertools.DivideDirectiveOn(yytext,out directivename,out directiveparam);
21662170
parsertools.CheckDirectiveParams(directivename,directiveparam); // directivename in UPPERCASE!
21672171
if (directivename == "IFDEF")
@@ -2193,7 +2197,7 @@ int Scan()
21932197
BEGIN(INITIAL);
21942198
}
21952199
break;
2196-
case 62:
2200+
case 63:
21972201
{
21982202

21992203
}

Parsers/PascalABCParserNewSaushkin/ABCPascal.lex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ UNICODEARROW \x890
186186
"]" { return (int)Tokens.tkSquareClose; }
187187
"?" { return (int)Tokens.tkQuestion; }
188188
"?." { return (int)Tokens.tkQuestionPoint; }
189+
"?[" { return (int)Tokens.tkQuestionSquareOpen; }
189190
"@" { yylval = new Union(); yylval.op = new op_type_node(Operators.AddressOf); return (int)Tokens.tkAddressOf; }
190191
":=" { yylval = new Union(); yylval.op = new op_type_node(Operators.Assignment); return (int)Tokens.tkAssign; }
191192
"+=" { yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentAddition); return (int)Tokens.tkPlusEqual; }

Parsers/PascalABCParserNewSaushkin/ABCPascal.y

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
%start parse_goal
3131

32-
%token <ti> tkDirectiveName tkAmpersend tkColon tkDotDot tkPoint tkRoundOpen tkRoundClose tkSemiColon tkSquareOpen tkSquareClose tkQuestion tkQuestionPoint
32+
%token <ti> tkDirectiveName tkAmpersend tkColon tkDotDot tkPoint tkRoundOpen tkRoundClose tkSemiColon tkSquareOpen tkSquareClose tkQuestion tkQuestionPoint tkQuestionSquareOpen
3333
%token <ti> tkSizeOf tkTypeOf tkWhere tkArray tkCase tkClass tkAuto tkConst tkConstructor tkDestructor tkElse tkExcept tkFile tkFor tkForeach tkFunction
3434
%token <ti> tkIf tkImplementation tkInherited tkInterface tkProcedure tkOperator tkProperty tkRaise tkRecord tkSet tkType tkThen tkUses tkVar tkWhile tkWith tkNil
3535
%token <ti> tkGoto tkOf tkLabel tkLock tkProgram tkEvent tkDefault tkTemplate tkPacked tkExports tkResourceString tkThreadvar tkSealed tkPartial tkTo tkDownto
@@ -3090,6 +3090,11 @@ variable
30903090
}
30913091
else $$ = new indexer($1 as addressed_value,el, @$);
30923092
}
3093+
| variable tkQuestionSquareOpen format_expr tkSquareClose
3094+
{
3095+
var fe = $3 as format_expr; // SSM 9/01/17
3096+
$$ = new slice_expr_question($1 as addressed_value,fe.expr,fe.format1,fe.format2,@$);
3097+
}
30933098
| variable tkRoundOpen optional_expr_list tkRoundClose
30943099
{
30953100
$$ = new method_call($1 as addressed_value,$3 as expression_list, @$);

0 commit comments

Comments
 (0)