public override object VisitStringArguments(CryslGrammarParser.StringArgumentsContext context)
        {
            Constraints finalConstraints = new Constraints();

            if (context.IMPLIES() == null)
            {
                Constraints Constraints = BuildStringConstraintsObject(context);
                finalConstraints = Constraints;
            }

            if (context.IMPLIES() != null)
            {
                Constraints primaryConstraints = BuildStringConstraintsObject(context);

                Constraints additionalConstraints = (Constraints)Visit(context.constraint());

                AdditionalConstraints addConstraints = new AdditionalConstraints();
                addConstraints.Object_Varname_Additional_Constraint = additionalConstraints.Object_Varname;
                addConstraints.Additional_Constraints_List          = additionalConstraints.Constraints_List;

                primaryConstraints.Additional_constraints = addConstraints;

                finalConstraints = primaryConstraints;
            }
            return(finalConstraints);
        }
        private Constraints BuildStringConstraintsObject(CryslGrammarParser.StringArgumentsContext context)
        {
            Constraints   constraints     = new Constraints();
            List <string> constraintsList = new List <string>();

            foreach (var varName in context.VARNAME())
            {
                //If Primary Constraint
                if (varName.Symbol.TokenIndex < context.IN().Symbol.TokenIndex)
                {
                    constraints.Object_Varname = varName.GetText();
                }

                //Primary Constraint List
                else if (varName.Symbol.TokenIndex > context.OFB().Symbol.TokenIndex&& varName.Symbol.TokenIndex < context.CFB().Symbol.TokenIndex)
                {
                    constraintsList.Add(varName.GetText());
                }
            }

            constraints.Constraints_List = constraintsList;
            return(constraints);
        }
Beispiel #3
0
 /// <summary>
 /// Visit a parse tree produced by the <c>StringArguments</c>
 /// labeled alternative in <see cref="CryslGrammarParser.constraint"/>.
 /// <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 VisitStringArguments([NotNull] CryslGrammarParser.StringArgumentsContext context)
 {
     return(VisitChildren(context));
 }