Esempio n. 1
0
        public void AddListSite(string junctionName, ProbeOrientation orientation, ProbeFunction function, Point location)
        {
            var newPoint = new ProbeSite {
                JunctionName = junctionName, Orientation = orientation.ToString(), Function = function.ToDescription(), Position = location
            };

            ExistingData.Add(newPoint);
            dataGridView1.Rows.Add(newPoint.JunctionName, newPoint.Position.X + "," + newPoint.Position.Y, newPoint.Function, 0, 0, 0, newPoint.TopWidth, newPoint.BottomWidth, newPoint.Area);
            GetFirstCorner();
        }
        public void Probe(List <Token> tokens)
        {
            var listStack = new Stack <List <Token> >();

            listStack.Push(tokens);

            while (listStack.Count > 0)
            {
                var currentTokens = listStack.Pop();
                for (int i = 0; i < currentTokens.Count; i++)
                {
                    var token = currentTokens[i];
                    if (token is CollectionToken collection)
                    {
                        listStack.Push(collection.Children);
                    }

                    switch (token.Type)
                    {
                    case TokenType.Function:
                        ProbeFunction?.Invoke((FunctionToken)token);
                        break;

                    case TokenType.Name:
                        ProbeReference?.Invoke((ValueToken)token);
                        break;

                    case TokenType.Operator:
                    {
                        var left  = i > 0 ? currentTokens[i - 1] : default;
                        var right = i + 1 < currentTokens.Count ? currentTokens[i + 1] : default;
                        ProbeOperator?.Invoke((ValueToken)token, left, right);
                        break;
                    }
                    }
                }
            }
        }