Example #1
0
        private void MarkRule_GenerateAllMarksHandler(object sender, MarkRuleEventArgs e)
        {
            var path = e.GetRulesPath();

            if (_marks.ContainsKey(path) == false)
            {
                _marks.Add(path, ActionsDescription.TryParse("", ""));
            }
        }
Example #2
0
		private State OnMarkRule(State start, List<string> rulenames)
		{
			if (MarkRule != null)
			{
				var args = new MarkRuleEventArgs(start, rulenames);
				MarkRule(this, args);
				return args.Start;
			}
			return start;
		}
Example #3
0
		private void MarkRuleHandler(object sender, MarkRuleEventArgs e)
		{
			var path = e.GetRulesPath();

			ActionsDescription mark;
			if (_marks.TryGetValue(path, out mark) && mark.IsEmpty == false)
			{
				mark.UseCount++;

				foreach (var action in mark.Actions)
				{
					switch (action.Mark)
					{
						case Marks.Custom:
							e.Start = State.MarkCustom(e.Start, action.Args[0], action.Args[1], action.Args[2], action.Args[3]);
							break;
						case Marks.Const:
							e.Start.MarkConst(action.Args[0], action.Args[1], int.Parse(action.Args[2]));
							break;
						case Marks.Range:
							e.Start = State.MarkRange(e.Start, action.Args[0], int.Parse(action.Args[1]), int.Parse(action.Args[2]));
							break;
						case Marks.BeginRange:
							e.Start = State.MarkBeginRange(e.Start, action.Args[0], action.Args[1] == "AtBegin", int.Parse(action.Args[2]));
							break;
						case Marks.EndRange:
						case Marks.EndRangeIfInvalid:
							e.Start = State.MarkEndRange(e.Start, action.Mark, action.Args[0], action.Args[1] == "AtBegin", int.Parse(action.Args[2]));
							break;
						case Marks.ContinueRange:
							e.Start.MarkContinueRange(action.Args[0]);
							break;
						case Marks.Decimal:
							e.Start.MarkDecimal(action.Args[0], action.Args[1], action.Args[2]);
							break;
						case Marks.Hex:
							e.Start.MarkHex(action.Args[0], action.Args[1], action.Args[2]);
							break;
						case Marks.Count:
							e.Start.MarkCount(action.Args[0], int.Parse(action.Args[1]), int.Parse(action.Args[2]));
							break;
						case Marks.Bool:
						case Marks.BoolEx:
						case Marks.BoolExNot:
							e.Start.MarkBool(action.Mark, action.Args[0]);
							break;
						case Marks.ResetRange:
							e.Start.MarkReset(action.Args[0]);
							break;
						case Marks.ResetRangeIfInvalid:
							e.Start.MarkResetIfInvalid(action.Args[0]);
							break;
						//case Marks.Error:
						//    e.Start = State.MarkAlternativesAsError(e.Start);
						//    break;
						default:
							throw new Exception();
					}
				}
			}
		}
Example #4
0
		private void MarkRule_GenerateAllMarksHandler(object sender, MarkRuleEventArgs e)
		{
			var path = e.GetRulesPath();

			if (_marks.ContainsKey(path) == false)
				_marks.Add(path, ActionsDescription.TryParse("", ""));
		}
Example #5
0
        private void MarkRuleHandler(object sender, MarkRuleEventArgs e)
        {
            var path = e.GetRulesPath();

            ActionsDescription mark;

            if (_marks.TryGetValue(path, out mark) && mark.IsEmpty == false)
            {
                mark.UseCount++;

                foreach (var action in mark.Actions)
                {
                    switch (action.Mark)
                    {
                    case Marks.Custom:
                        e.Start = State.MarkCustom(e.Start, action.Args[0], action.Args[1], action.Args[2], action.Args[3]);
                        break;

                    case Marks.Const:
                        e.Start.MarkConst(action.Args[0], action.Args[1], int.Parse(action.Args[2]));
                        break;

                    case Marks.Range:
                        e.Start = State.MarkRange(e.Start, action.Args[0], int.Parse(action.Args[1]), int.Parse(action.Args[2]));
                        break;

                    case Marks.BeginRange:
                        e.Start = State.MarkBeginRange(e.Start, action.Args[0], action.Args[1] == "AtBegin", int.Parse(action.Args[2]));
                        break;

                    case Marks.EndRange:
                    case Marks.EndRangeIfInvalid:
                        e.Start = State.MarkEndRange(e.Start, action.Mark, action.Args[0], action.Args[1] == "AtBegin", int.Parse(action.Args[2]));
                        break;

                    case Marks.ContinueRange:
                        e.Start.MarkContinueRange(action.Args[0]);
                        break;

                    case Marks.Decimal:
                        e.Start.MarkDecimal(action.Args[0], action.Args[1], action.Args[2]);
                        break;

                    case Marks.Hex:
                        e.Start.MarkHex(action.Args[0], action.Args[1], action.Args[2]);
                        break;

                    case Marks.Count:
                        e.Start.MarkCount(action.Args[0], int.Parse(action.Args[1]), int.Parse(action.Args[2]));
                        break;

                    case Marks.Bool:
                    case Marks.BoolEx:
                    case Marks.BoolExNot:
                        e.Start.MarkBool(action.Mark, action.Args[0]);
                        break;

                    case Marks.ResetRange:
                        e.Start.MarkReset(action.Args[0]);
                        break;

                    case Marks.ResetRangeIfInvalid:
                        e.Start.MarkResetIfInvalid(action.Args[0]);
                        break;

                    //case Marks.Error:
                    //    e.Start = State.MarkAlternativesAsError(e.Start);
                    //    break;
                    default:
                        throw new Exception();
                    }
                }
            }
        }