Esempio n. 1
0
        public void ParseDeclaration(Dictionary <string, ActionsDescription> descriptions)
        {
            _varibalesTree = new VariableTreeItem("root");

            foreach (var descr in descriptions)
            {
                if (descr.Value.Actions != null)
                {
                    foreach (var action1 in descr.Value.Actions)
                    {
                        var item = _varibalesTree.GetItem(action1.Args[0]);

                        var mark = new MarkImpl()
                        {
                            Mark = action1.Mark,
                            Name = action1.Args[0],
                        };

                        if (action1.Mark == Marks.Const)
                        {
                            mark.Value = action1.Args[1];
                        }

                        item.AddVariable(mark);

                        if (action1.Mark == Marks.BeginRange)
                        {
                            item.AddVariable(
                                new MarkImpl()
                            {
                                Mark = Marks.EndRange,
                                Name = action1.Args[0],
                            });
                        }
                    }
                }
            }
        }
Esempio n. 2
0
		public void ParseDeclaration(Dictionary<string, ActionsDescription> descriptions)
		{
			_varibalesTree = new VariableTreeItem("root");

			foreach (var descr in descriptions)
			{
				if (descr.Value.Actions != null)
				{
					foreach (var action1 in descr.Value.Actions)
					{
						var item = _varibalesTree.GetItem(action1.Args[0]);

						var mark = new MarkImpl()
						{
							Mark = action1.Mark,
							Name = action1.Args[0],
						};

						if (action1.Mark == Marks.Const)
							mark.Value = action1.Args[1];

						item.AddVariable(mark);

						if (action1.Mark == Marks.BeginRange)
						{
							item.AddVariable(
								new MarkImpl()
								{
									Mark = Marks.EndRange,
									Name = action1.Args[0],
								});
						}
					}
				}
			}
		}
Esempio n. 3
0
		public void MarkBool(Marks mark, string name)
		{
			var mark2 = new MarkImpl()
			{
				Mark = mark,
				Name = name,
			};

			var end1 = FindEnd();
			end1.AddMark(mark2);

			//var end2 = new State()
			//{
			//    Mark = mark,
			//    Name = name,
			//};

			//var end1 = FindEnd();
			//end1.Transition.Add(Epsilon, end2);
		}
Esempio n. 4
0
		public void MarkCount(string name, int max, int default1)
		{
			var mark = new MarkImpl();
			mark.Mark = Marks.Count;
			mark.Name = name;
			mark.Max = max;
			mark.Default = default1.ToString();

			var end1 = FindEnd();
			end1.AddMark(mark);

			//var end2 = new State();
			////end2.CountName = name;
			////end2.CountMax = max;
			//end2.Mark = Marks.Count;
			//end2.Name = name;
			//end2.Max = max;
			//end2.Default = default1;

			//var end1 = FindEnd();
			//end1.Transition.Add(Epsilon, end2);
		}
Esempio n. 5
0
		protected void MarkNext(string name, Marks markType, int offset)
		{
			var proccessed = new HashSet<State>();
			var eclosure = Eclosure();
			var end = FindEnd();

			foreach (var first in eclosure)
			{
				foreach (var pair in first.Transition)
				{
					if (pair.Key != null)
					{
						var next = pair.Value;
						if (proccessed.Contains(next) == false)
						{
							proccessed.Add(next);

							var mark = new MarkImpl()
							{
								Name = name,
								Mark = markType,
								Offset = offset,
							};

							next.AddMark(mark);

							//var mark = new State(Epsilon, next)
							//{
							//    Name = name,
							//    Mark = markType,
							//    Offset = offset,
							//};

							//next.Transition.Add(Epsilon, mark);
						}
					}
				}
			}

			end.Transition.Add(Epsilon, new State());
		}
Esempio n. 6
0
		private Dictionary<int, IMark> ReadMarks(XmlReader reader)
		{
			var marks = new Dictionary<int, IMark>();

			reader.ReadStartElement("Marks");
			reader.MoveToElement();

			while (reader.IsStartElement("Mark"))
			{
				int index = XmlConvert.ToInt32(reader.GetAttribute("id"));

				var mark = new MarkImpl()
				{
					Mark = (Marks)Enum.Parse(typeof(Marks), reader.GetAttribute("mark")),
					Name = reader.GetAttribute("name"),
					Priority = XmlConvert.ToInt32(reader.GetAttribute("priority")),
					Value = reader.GetAttribute("value"),
					Max = XmlConvert.ToInt32(reader.GetAttribute("max")),
					Default = reader.GetAttribute("default"),
					Offset = XmlConvert.ToInt32(reader.GetAttribute("offset")),
					Type = reader.GetAttribute("type"),
				};

				marks.Add(index, mark);

				reader.Read();
				reader.MoveToElement();
			}

			reader.ReadEndElement();

			return marks;
		}