Ejemplo n.º 1
0
        public SpanDefinition()
        {
            KeywordsList  = new PatternListList(this);
            OperatorsList = new PatternListList(this);

            Style = new TextStyle.TextStyle();
            KeywordsList.Parent      = this;
            KeywordsList.IsKeyword   = true;
            OperatorsList.Parent     = this;
            OperatorsList.IsOperator = true;
            ScopePatterns            = new ScopeList(this);
        }
Ejemplo n.º 2
0
        private ScanResult_Word GetNextComplexWord(String Text, Segment CurrentSegment, int StartPositon)
        {
            if (StartPositon >= Text.Length)
            {
                return(new ScanResult_Word());
            }

            ScanResult_Word Result = new ScanResult_Word();

            int CurrentPosition = 0;

            //look for keywords


            PatternListList keywordsList = CurrentSegment.BlockType.KeywordsList;

            PatternList List = null;

            for (int i = 0; i < keywordsList.Count; i++)
            {
                List = keywordsList[i];

                PatternCollection complexPatterns = List.ComplexPatterns;

                Pattern Word = null;

                for (int j = 0; j < complexPatterns.Count; j++)
                {
                    Word = complexPatterns[j];

                    PatternScanResult psr = Word.IndexIn(Text, StartPositon, false, Separators);
                    CurrentPosition = psr.Index;
                    if ((CurrentPosition < Result.Position || Result.HasContent == false) && psr.Token != "")
                    {
                        Result.HasContent = true;
                        Result.Position   = CurrentPosition;
                        Result.Token      = psr.Token;
                        Result.Pattern    = Word;
                        Result.ParentList = List;

                        if (List.NormalizeCase)
                        {
                            if (!Word.IsComplex)
                            {
                                Result.Token = Word.StringPattern;
                            }
                        }
                    }
                }
            }

            //look for operators

            PatternListList pattList = CurrentSegment.BlockType.OperatorsList;


            PatternList patternList = null;

            for (int i = 0; i < pattList.Count; i++)
            {
                patternList = pattList[i];

                PatternCollection complexPatterns = patternList.ComplexPatterns;

                for (int j = 0; j < complexPatterns.Count; j++)
                {
                    Pattern Word = complexPatterns[j];

                    PatternScanResult psr = Word.IndexIn(Text, StartPositon, false, Separators);

                    CurrentPosition = psr.Index;

                    if ((CurrentPosition < Result.Position || Result.HasContent == false) && psr.Token != "")
                    {
                        Result.HasContent = true;
                        Result.Position   = CurrentPosition;
                        Result.Token      = psr.Token;
                        Result.Pattern    = Word;
                        Result.ParentList = patternList;

                        if (patternList.NormalizeCase)
                        {
                            if (!Word.IsComplex)
                            {
                                Result.Token = Word.StringPattern;
                            }
                        }
                    }
                }
            }

            if (Result.HasContent)
            {
                return(Result);
            }
            else
            {
                return(new ScanResult_Word());
            }
        }