Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CalculateFC()

void System.Text.RegularExpressions.RegexPrefixAnalyzer.CalculateFC ( int NodeType,
RegexNode node,
int CurIndex )
inlineprivate

Definition at line 373 of file RegexPrefixAnalyzer.cs.

374 {
375 bool caseInsensitive = (node.Options & RegexOptions.IgnoreCase) != 0;
376 bool flag = (node.Options & RegexOptions.RightToLeft) != 0;
377 switch (NodeType)
378 {
379 case 98:
380 if (CurIndex == 0)
381 {
382 SkipChild();
383 }
384 break;
385 case 23:
386 PushFC(new RegexFC(nullable: true));
387 break;
388 case 153:
389 if (CurIndex != 0)
390 {
391 RegexFC fc3 = PopFC();
392 RegexFC regexFC3 = TopFC();
393 _failed = !regexFC3.AddFC(fc3, concatenate: true);
394 }
395 if (!TopFC()._nullable)
396 {
397 _skipAllChildren = true;
398 }
399 break;
400 case 162:
401 if (CurIndex > 1)
402 {
403 RegexFC fc2 = PopFC();
404 RegexFC regexFC2 = TopFC();
406 }
407 break;
408 case 152:
409 case 161:
410 if (CurIndex != 0)
411 {
412 RegexFC fc = PopFC();
413 RegexFC regexFC = TopFC();
414 _failed = !regexFC.AddFC(fc, concatenate: false);
415 }
416 break;
417 case 154:
418 case 155:
419 if (node.M == 0)
420 {
421 TopFC()._nullable = true;
422 }
423 break;
424 case 94:
425 case 95:
426 SkipChild();
427 PushFC(new RegexFC(nullable: true));
428 break;
429 case 9:
430 case 10:
431 PushFC(new RegexFC(node.Ch, NodeType == 10, nullable: false, caseInsensitive));
432 break;
433 case 3:
434 case 6:
435 case 43:
436 PushFC(new RegexFC(node.Ch, not: false, node.M == 0, caseInsensitive));
437 break;
438 case 4:
439 case 7:
440 case 44:
441 PushFC(new RegexFC(node.Ch, not: true, node.M == 0, caseInsensitive));
442 break;
443 case 12:
444 if (node.Str.Length == 0)
445 {
446 PushFC(new RegexFC(nullable: true));
447 }
448 else if (!flag)
449 {
450 PushFC(new RegexFC(node.Str[0], not: false, nullable: false, caseInsensitive));
451 }
452 else
453 {
454 PushFC(new RegexFC(node.Str[node.Str.Length - 1], not: false, nullable: false, caseInsensitive));
455 }
456 break;
457 case 11:
458 PushFC(new RegexFC(node.Str, nullable: false, caseInsensitive));
459 break;
460 case 5:
461 case 8:
462 case 45:
463 PushFC(new RegexFC(node.Str, node.M == 0, caseInsensitive));
464 break;
465 case 13:
466 PushFC(new RegexFC("\0\u0001\0\0", nullable: true, caseInsensitive: false));
467 break;
468 case 14:
469 case 15:
470 case 16:
471 case 17:
472 case 18:
473 case 19:
474 case 20:
475 case 21:
476 case 22:
477 case 41:
478 case 42:
479 case 46:
480 PushFC(new RegexFC(nullable: true));
481 break;
482 default:
484 case 88:
485 case 89:
486 case 90:
487 case 91:
488 case 92:
489 case 93:
490 case 96:
491 case 97:
492 case 156:
493 case 157:
494 case 158:
495 case 159:
496 case 160:
497 break;
498 }
499 }
static CultureInfo CurrentCulture
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string UnexpectedOpcode
Definition SR.cs:94
Definition SR.cs:7

References System.Text.RegularExpressions.RegexPrefixAnalyzer._failed, System.Text.RegularExpressions.RegexFC._nullable, System.Text.RegularExpressions.RegexPrefixAnalyzer._skipAllChildren, System.Globalization.CultureInfo.CurrentCulture, System.SR.Format(), System.Text.RegularExpressions.RegexPrefixAnalyzer.PopFC(), System.Text.RegularExpressions.RegexPrefixAnalyzer.PushFC(), System.Text.RegularExpressions.RegexPrefixAnalyzer.SkipChild(), System.Text.RegularExpressions.RegexPrefixAnalyzer.TopFC(), and System.SR.UnexpectedOpcode.

Referenced by System.Text.RegularExpressions.RegexPrefixAnalyzer.RegexFCFromRegexTree().