Пример #1
0
        //=========================================================================================
        protected override List <BaseElement> CreateElements()
        {
            var       elements    = new List <BaseElement>();
            TextStyle oBoundStyle = new TextStyle("Brackets", Color.Blue);

            {
                ///CDATA
                BoundedElement oBlock = new BoundedElement(new TextStyle("CDATA", Color.Gray), oBoundStyle, "<![CDATA[", "]]>");
                elements.Add(oBlock);
            }
            {
                ///комментарии
                BoundedElement oBlock = new BoundedElement(new TextStyle("Comment", Color.Green), oBoundStyle, "<!--", "-->");
                elements.Add(oBlock);
            }

            {
                ///закрывающие теги
                BoundedElement oBlock = new BoundedElement(new TextStyle("Tag", Color.Black), oBoundStyle, "</", ">");
                elements.Add(oBlock);
            }

            {
                ///Простые теги в угловых скобках
                BoundedElement oBlock = new BoundedElement(new TextStyle("Tag", Color.Black), oBoundStyle, "<", ">");
                elements.Add(oBlock);
            }
            return(elements);
        }
Пример #2
0
        public void BoundedElements()
        {
            ///Задаем настройки
            TextStyle         oStyle       = new TextStyle("String", Color.Red);
            BoundedElement    oStringConst = new BoundedElement(oStyle, "'", "'", "''");
            NonSyntaxSettings oSettings    = new NonSyntaxSettings();

            oSettings.Elements.Add(oStringConst);

            ///Образец текста
            string        sText = "seLect 'xx ''xx[x]'";
            List <string> lines = this.GetLines(sText);

            ///Разбираем
            SyntaxParser oParser = new SyntaxParser(oSettings, 4);
            List <Token> tokens  = oParser.Parse(lines);

            ///Проверяем
            Token oToken;

            oToken = tokens[1];
            Assert.AreEqual(oToken.Style.Name, "String");
            Assert.AreEqual(oToken.Text, "'xx ''xx[x]'");
        }
Пример #3
0
        //=========================================================================================
        protected override List <BaseElement> CreateElements()
        {
            var elements = new List <BaseElement>();
            //Идентификаторы в квадратных скобках
            var            oStyle   = this.GetStyleByName(S_IDENTIFIER);
            BoundedElement oGroupId = new BoundedElement(oStyle, "[", "]");

            elements.Add(oGroupId);

            //Однострочные комментарии
            oStyle = this.GetStyleByName(S_SINGLE_COMMENT);
            BoundedElement oGroupComment = new BoundedElement(oStyle, "--", "");

            elements.Add(oGroupComment);

            //Многострочные комментарии
            oStyle = this.GetStyleByName(S_MULTI_COMMENT);
            BoundedElement oGroupComment2 = new BoundedElement(oStyle, "/*", "*/");

            elements.Add(oGroupComment2);

            //Unicode'овые строковые константы
            TextStyle      oStringTextStyle = this.GetStyleByName(S_STRINGS);
            BoundedElement oGroupString     = new BoundedElement(oStringTextStyle, "N'", "'");

            elements.Add(oGroupString);

            //Строковые константы
            BoundedElement oGroupString2 = new BoundedElement(oStringTextStyle, "'", "'");

            elements.Add(oGroupString2);

            //Ключевые слова первого эшелона
            oStyle = this.GetStyleByName(S_KEYWORDS_1);
            FixedListElement oGroupKw1 = new FixedListElement(oStyle);

            oGroupKw1.Keywords.AddRange(new string[]
            {
                "SELECT", "CREATE", "PARTITION", "FUNCTION", "AS", "RANGE", "FOR", "VALUES", "GO",
                "SCHEME", "TO", "COLLATE", "ALTER", "NEXT", "USED", "SPLIT", "MERGE",
                "TABLE", "WITH", "ALLOW_PAGE_LOCKS", "ALLOW_ROW_LOCKS", "ON", "PRIMARY", "KEY", "CLUSTERED",
                "CHECK", "NOCHECK", "ADD", "DEFAULT", "SWITCH", "DROP", "CONSTRAINT",
                "UNIQUE", "NONCLUSTERED", "INDEX", "IF", "WHERE", "FROM",
                "BEGIN", "COMMIT", "TRANSACTION", "USE", "SPATIAL", "COLUMNSTORE",
                "CONTAINS", "MEMORY_OPTIMIZED_DATA", "HASH", "BUCKET_COUNT", "MEMORY_OPTIMIZED", "DURABILITY",
                "SNAPSHOT", "NATIVE_COMPILATION", "ATOMIC"
            });
            elements.Add(oGroupKw1);

            //Дополнительные ключевые слова
            oStyle = this.GetStyleByName(S_KEYWORDS_2);
            FixedListElement oGroupKw2 = new FixedListElement(oStyle);

            oGroupKw2.Keywords.AddRange(new string[]
            {
                "RIGHT", "LEFT", "NULL", "NOT", "OR", "AND", "IS", "EXISTS"
            });
            elements.Add(oGroupKw2);

            //Дополнительные ключевые слова
            oStyle = this.GetStyleByName(S_SYS_FUNCTION);
            FixedListElement oGroupSysFuncs = new FixedListElement(oStyle);

            oGroupSysFuncs.Keywords.AddRange(new string[]
            {
                "GETDATE", "MONTH", "YEAR", "DAY", "DATEDIFF", "DATEADD", "LEN",
                "OBJECT_ID"
            });
            elements.Add(oGroupSysFuncs);
            return(elements);
        }