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); }
public override void EnterRule_expression(CfgGramParser.Rule_expressionContext context) { var rule = new Rule(); rule.Name = RuleName; RulesStack.Push(rule); }