コード例 #1
0
        //=========================================================================================
        internal override ParserSpecification CreateParserSpecification(ScannerSpecification scannerSpecification)
        {
            var oSpec = new ParserSpecification();

            oSpec.AddRule("Tag", "lt?separator? id?tagName? {id?attribute? eq?separator? attrValue?attributeValue?} gt?separator?");
            oSpec.AddRule("Comment", "comment?comments?");
            oSpec.AddRule("Cdata", "cdata?cdata?");
            return(oSpec);
        }
コード例 #2
0
        //=========================================================================================
        internal virtual ParserSpecification CreateParserSpecification(ScannerSpecification scannerSpecification)
        {
            ///Создание спецификации для парсера ПО УМОЛЧАНИЮ.
            ///По умолчанию все правила состоят из одного токена.
            var oSpec = new ParserSpecification();

            Dictionary <string, string> ruleNames = new Dictionary <string, string>();

            ///Найдем все упоминающиеся имена токенов и включим
            foreach (var oState in scannerSpecification.States)
            {
                string sTokenName = oState.ResultTokenName;
                if (!string.IsNullOrEmpty(sTokenName) && !ruleNames.ContainsKey(sTokenName))
                {
                    oSpec.AddRule(sTokenName, sTokenName);
                    ruleNames.Add(sTokenName, sTokenName);
                }
            }
            return(oSpec);
        }