//========================================================================================= 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); }
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]'"); }
//========================================================================================= 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); }