Пример #1
0
        public override void ExitRule_expression(CfgGramParser.Rule_expressionContext context)
        {
            var rule = RulesStack.Pop();

            rule.Template       = Template;
            rule.ExtensionType  = ExtensionType;
            rule.ExtensionQuery = ExtensionQuery;

            if (rule.Template == null && rule.Items.Any(x => x.HasLocalName))
            {
                var templItems = new List <TemplateItemBase>();
                foreach (var item in rule.Items.Where(x => x.HasLocalName))
                {
                    var propMame = string.Join(
                        string.Empty,
                        item.LocalName
                        .Split('_')
                        .Select(x => x.First().ToString().ToUpper() + x.Substring(1)
                                )
                        );
                    templItems.Add(new TemplateItem <(string, string)>(propMame, (item.LocalName, null), TemplateValueType.NameRef));
                }
                rule.Template = new Template(templItems);
            }

            ExtensionType  = null;
            ExtensionQuery = null;
            Grammar.AddRule(rule);
        }
Пример #2
0
        public override void EnterRule_expression(CfgGramParser.Rule_expressionContext context)
        {
            var rule = new Rule();

            rule.Name = RuleName;
            RulesStack.Push(rule);
        }