Exemple #1
0
 public override string ToString()
 {
     return("Matching:"
            + string.Join(", ", MatchingCharacters.Select((item, i) => $"[{i}] = {string.Join("|", item.Select(r => $"{r.Data1}...{r.Data2}"))}"))
            + " Failing: "
            + string.Join(", ", FailingCharacters.Select((item, i) => $"[{i}] = {string.Join("|", item.Select(r => $"{r.Data1}...{r.Data2}"))}")));
 }
Exemple #2
0
        public CharCheckEntry MatchSuccess(OptimizationContext context, Instruction instruction)
        {
            var matching = MatchingCharacters.Clone();

            AddEntry(instruction, true, instruction.Offset, matching);

            matching[instruction.Offset].RemoveAll(existing => InstructionHelper.NonJumpMatchWillFail(context, existing, instruction));

            return(new CharCheckEntry(matching, FailingCharacters));
        }
Exemple #3
0
        public NdState MatchSuccess(OptimizationContext context, Instruction instruction, int offset)
        {
            var matching = MatchingCharacters.Clone();

            AddEntry(instruction, true, offset, matching);

            matching[offset].RemoveAll(existing => InstructionHelper.NonJumpMatchWillFail(context, existing, instruction));

            return(new NdState(Variable, Vug, PositionA, PositionB, AdvancesA, AdvancesB, MinBounds, MaxBounds, VarAs, VarBs, matching, FailingCharacters));
        }
Exemple #4
0
        public CharCheckEntry Advance(int offset)
        {
            var matching = MatchingCharacters.Clone();
            var failing  = FailingCharacters.Clone();

            for (var i = 0; i < offset; i++)
            {
                if (matching.Count > 0)
                {
                    matching.PopFront();
                }

                if (failing.Count > 0)
                {
                    failing.PopFront();
                }
            }

            return(new CharCheckEntry(matching, failing));
        }
 private char GetMatchCloseCharacter(char c)
 {
     return(MatchingCharacters.First(pair => pair.Key == c).Value);
 }
 private bool IsMatchCloseCharacter(char c)
 {
     return(MatchingCharacters.Any(pair => pair.Value == c));
 }
 private bool IsMatchStartCharacter(char c)
 {
     return(MatchingCharacters.Any(pair => pair.Key == c));
 }
 private char GetMatchOpenCharacter(char c)
 {
     return(MatchingCharacters.First(pair => pair.Value == c).Key);
 }
Exemple #9
0
 protected virtual char GetMatchOpenCharacter(char c)
 {
     return(MatchingCharacters.First(pair => pair.Value == c).Key);
 }
Exemple #10
0
 protected virtual char GetMatchCloseCharacter(char c)
 {
     return(MatchingCharacters.First(pair => pair.Key == c).Value);
 }
Exemple #11
0
 protected virtual bool IsMatchCloseCharacter(char c)
 {
     return(MatchingCharacters.Any(pair => pair.Value == c));
 }
Exemple #12
0
 protected virtual bool IsMatchStartCharacter(char c)
 {
     return(MatchingCharacters.Any(pair => pair.Key == c));
 }
Exemple #13
0
 public override string ToString()
 {
     return($"({PositionA}, {AdvancesA}) ({PositionB}, {AdvancesB}); {MinBounds} <= B <= {MaxBounds}; Matching {string.Join(", ", MatchingCharacters.Select((item, i) => $"[{i}] = {string.Join("|", item.Select(r => $"{r.Data1}...{r.Data2}"))}"))}; Failing {string.Join(", ", FailingCharacters.Select((item, i) => $"[{i}] = {string.Join("|", item.Select(r => $"{r.Data1}...{r.Data2}"))}"))};");
 }