public override ExecutionContext VisitDecouper(Cosmos.DecouperContext context) { //split detected if (context.separateur != null) { var source = expressionVisitor.Visit(context.source); var separator = expressionVisitor.Visit(context.separateur); if (source != null && separator != null) { var split = source.ToString().Split(separator.ToString()); for (var index = 0; index < split.Length; index++) { var part = split[index]; //Allocate a special variable for result var variable = $"##decoupage.{index + 1}".AsCosmosVariable(part.AsCosmosString()); parser.Variables[variable.Name] = variable; } } else { throw new WrongTypeException("Un découpage doit être réalisé sur des caractères"); } } return(null); }
/// <summary> /// Visit a parse tree produced by <see cref="Cosmos.decouper"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitDecouper([NotNull] Cosmos.DecouperContext context) { return(VisitChildren(context)); }
/// <summary> /// Exit a parse tree produced by <see cref="Cosmos.decouper"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitDecouper([NotNull] Cosmos.DecouperContext context) { }