public override List <GeneralError> VisitRule([NotNull] WordLangParser.RuleContext context) { var errs = new List <GeneralError>(); var conditions = context.conditions(); if (conditions.ChildCount == 0) { errs.Add(context.NewError("Missing the Conditions header")); } else { errs.AddRange(Visit(conditions)); } var outcomes = context.outcomes(); if (outcomes.ChildCount == 0) { errs.Add(context.NewError("Missing the Outcomes header")); } else { errs.AddRange(Visit(outcomes)); } return(errs); }
public override string VisitRule([NotNull] WordLangParser.RuleContext context) { var title = Visit(context.ruleTitle()); var displayAs = Visit(context.displayAs()); var conditions = Visit(context.conditions()); var dialogs = Visit(context.dialogs()); var outcomes = Visit(context.outcomes()); return($"{{\"name\":{title},\"displayAs\":{displayAs},\"conditions\":{conditions},\"dialog\":{dialogs},\"outcomes\":{outcomes}}}"); }
public override string VisitRule([NotNull] WordLangParser.RuleContext context) { var title = Visit(context.ruleTitle()); var displayAs = Visit(context.displayAs()); var conditions = Visit(context.conditions()); var dialogs = Visit(context.dialogs()); var outcomes = Visit(context.outcomes()); return($"(rule title=[{title}] displayAs=[{displayAs}] conditions=[{conditions}] dialogs=[{dialogs}] outcomes=[{outcomes}])"); }
public override AST.RuleTree VisitRule([NotNull] WordLangParser.RuleContext context) { var rule = new AST.Rule(); var titleContext = context.ruleTitle(); rule.Title = new AST.FieldString() { Value = titleContext.text().NAME().CombineTokens(), StartIndex = titleContext.text().NAME().First().Symbol.StartIndex, StopIndex = titleContext.text().NAME().Last().Symbol.StopIndex }; var displayAsCtx = context.displayAs().text(); if (displayAsCtx != null) { rule.DisplayAs = new AST.FieldString() { Value = displayAsCtx.NAME().CombineTokens(), StartIndex = displayAsCtx.Start.StartIndex, StopIndex = displayAsCtx.Stop.StopIndex }; } else { rule.DisplayAs = new AST.FieldString() { Value = "", StartIndex = context.displayAs().Start.StartIndex, StopIndex = context.displayAs().Stop.StopIndex }; } rule.Conditions = context.conditions().booleanExpr() .Select(ctx => Visit(ctx)) .OfType <AST.Condition>() .ToList(); rule.Dialogs = context.dialogs().dialogLine() .Select(ctx => Visit(ctx)) .OfType <AST.Dialog>() .ToList(); rule.Outcomes = context.outcomes().singleOutcome() .Select(ctx => Visit(ctx)) .OfType <AST.Outcome>() .ToList(); return(rule); }