@@ -112,7 +112,8 @@ void Parser::setCheckTypes(bool checkTypes) { checkTypes_ = checkTypes; }
112
112
auto Parser::prec (TokenKind tk) -> Parser::Prec {
113
113
switch (tk) {
114
114
default :
115
- cxx_runtime_error (" expected a binary operator" );
115
+ cxx_runtime_error (fmt::format (" expected a binary operator, found {}" ,
116
+ Token::spell (tk)));
116
117
117
118
case TokenKind::T_DOT_STAR:
118
119
case TokenKind::T_MINUS_GREATER_STAR:
@@ -331,40 +332,6 @@ auto Parser::parse_greater_greater() -> bool {
331
332
return false ;
332
333
}
333
334
334
- auto Parser::parse_greater_greater_equal () -> bool {
335
- const auto saved = currentLocation ();
336
-
337
- SourceLocation greaterLoc;
338
- SourceLocation secondGreaterLoc;
339
- SourceLocation equalLoc;
340
-
341
- if (match (TokenKind::T_GREATER, greaterLoc) && parse_nospace () &&
342
- match (TokenKind::T_GREATER, secondGreaterLoc) && parse_nospace () &&
343
- match (TokenKind::T_EQUAL, equalLoc)) {
344
- return true ;
345
- }
346
-
347
- rewind (saved);
348
-
349
- return false ;
350
- }
351
-
352
- auto Parser::parse_greater_equal () -> bool {
353
- const auto saved = currentLocation ();
354
-
355
- SourceLocation greaterLoc;
356
- SourceLocation equalLoc;
357
-
358
- if (match (TokenKind::T_GREATER, greaterLoc) && parse_nospace () &&
359
- match (TokenKind::T_EQUAL, equalLoc)) {
360
- return true ;
361
- }
362
-
363
- rewind (saved);
364
-
365
- return false ;
366
- }
367
-
368
335
auto Parser::parse_header_name (SourceLocation& loc) -> bool {
369
336
if (match (TokenKind::T_STRING_LITERAL, loc)) return true ;
370
337
@@ -1298,21 +1265,11 @@ auto Parser::parse_fold_operator(SourceLocation& loc, TokenKind& op) -> bool {
1298
1265
1299
1266
switch (TokenKind (LA ())) {
1300
1267
case TokenKind::T_GREATER: {
1301
- if (parse_greater_greater_equal ()) {
1302
- op = TokenKind::T_GREATER_GREATER_EQUAL;
1303
- return true ;
1304
- }
1305
-
1306
1268
if (parse_greater_greater ()) {
1307
1269
op = TokenKind::T_GREATER_GREATER;
1308
1270
return true ;
1309
1271
}
1310
1272
1311
- if (parse_greater_equal ()) {
1312
- op = TokenKind::T_GREATER_EQUAL;
1313
- return true ;
1314
- }
1315
-
1316
1273
op = TokenKind::T_GREATER;
1317
1274
1318
1275
consumeToken ();
@@ -2492,11 +2449,6 @@ auto Parser::parse_binary_operator(SourceLocation& loc, TokenKind& tk,
2492
2449
return true ;
2493
2450
}
2494
2451
2495
- if (parse_greater_equal ()) {
2496
- tk = TokenKind::T_GREATER_EQUAL;
2497
- return true ;
2498
- }
2499
-
2500
2452
if (exprContext.templArg || exprContext.templParam ) {
2501
2453
rewind (start);
2502
2454
return false ;
@@ -2507,24 +2459,25 @@ auto Parser::parse_binary_operator(SourceLocation& loc, TokenKind& tk,
2507
2459
return true ;
2508
2460
}
2509
2461
2510
- case TokenKind::T_STAR:
2511
- case TokenKind::T_SLASH:
2512
- case TokenKind::T_PLUS:
2513
- case TokenKind::T_PERCENT:
2514
- case TokenKind::T_MINUS_GREATER_STAR:
2515
- case TokenKind::T_MINUS:
2516
- case TokenKind::T_LESS_LESS:
2462
+ case TokenKind::T_AMP_AMP:
2463
+ case TokenKind::T_AMP:
2464
+ case TokenKind::T_BAR_BAR:
2465
+ case TokenKind::T_BAR:
2466
+ case TokenKind::T_CARET:
2467
+ case TokenKind::T_DOT_STAR:
2468
+ case TokenKind::T_EQUAL_EQUAL:
2469
+ case TokenKind::T_EXCLAIM_EQUAL:
2470
+ case TokenKind::T_GREATER_EQUAL:
2517
2471
case TokenKind::T_LESS_EQUAL_GREATER:
2518
2472
case TokenKind::T_LESS_EQUAL:
2473
+ case TokenKind::T_LESS_LESS:
2519
2474
case TokenKind::T_LESS:
2520
- case TokenKind::T_EXCLAIM_EQUAL:
2521
- case TokenKind::T_EQUAL_EQUAL:
2522
- case TokenKind::T_DOT_STAR:
2523
- case TokenKind::T_CARET:
2524
- case TokenKind::T_BAR_BAR:
2525
- case TokenKind::T_BAR:
2526
- case TokenKind::T_AMP_AMP:
2527
- case TokenKind::T_AMP:
2475
+ case TokenKind::T_MINUS_GREATER_STAR:
2476
+ case TokenKind::T_MINUS:
2477
+ case TokenKind::T_PERCENT:
2478
+ case TokenKind::T_PLUS:
2479
+ case TokenKind::T_SLASH:
2480
+ case TokenKind::T_STAR:
2528
2481
tk = LA ().kind ();
2529
2482
consumeToken ();
2530
2483
return true ;
@@ -2728,13 +2681,6 @@ auto Parser::parse_assignment_operator(SourceLocation& loc, TokenKind& op)
2728
2681
return true ;
2729
2682
}
2730
2683
2731
- case TokenKind::T_GREATER: {
2732
- loc = currentLocation ();
2733
- if (!parse_greater_greater_equal ()) return false ;
2734
- op = TokenKind::T_GREATER_GREATER_EQUAL;
2735
- return true ;
2736
- }
2737
-
2738
2684
default :
2739
2685
return false ;
2740
2686
} // switch
@@ -7540,18 +7486,10 @@ auto Parser::parse_operator(TokenKind& op, SourceLocation& opLoc,
7540
7486
7541
7487
case TokenKind::T_GREATER: {
7542
7488
opLoc = currentLocation ();
7543
- if (parse_greater_greater_equal ()) {
7544
- op = TokenKind::T_GREATER_GREATER_EQUAL;
7545
- return true ;
7546
- }
7547
7489
if (parse_greater_greater ()) {
7548
7490
op = TokenKind::T_GREATER_GREATER;
7549
7491
return true ;
7550
7492
}
7551
- if (parse_greater_equal ()) {
7552
- op = TokenKind::T_GREATER_EQUAL;
7553
- return true ;
7554
- }
7555
7493
consumeToken ();
7556
7494
return true ;
7557
7495
}
0 commit comments