public override object VisitIntArguments(CryslGrammarParser.IntArgumentsContext context) { Constraints finalConstraints = new Constraints(); if (context.IMPLIES() == null) { Constraints Constraints = BuildIntConstraintsObject(context); finalConstraints = Constraints; } if (context.IMPLIES() != null) { Constraints primaryConstraints = BuildIntConstraintsObject(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 BuildIntConstraintsObject(CryslGrammarParser.IntArgumentsContext context) { Constraints constraints = new Constraints(); List <string> constraintsList = new List <string>(); //If Primary Constraint if (context.VARNAME().Symbol.TokenIndex < context.IN().Symbol.TokenIndex) { constraints.Object_Varname = context.VARNAME().GetText(); } StringBuilder constraintsBuilder = new StringBuilder(); foreach (var digit in context.DIGIT()) { //Primary Constraint List if (digit.Symbol.TokenIndex > context.OFB().Symbol.TokenIndex&& digit.Symbol.TokenIndex < context.CFB().Symbol.TokenIndex) { constraintsBuilder.Append(digit.GetText()); //Add comma between digits foreach (var comma in context.COMMA()) { int tokenDifference = comma.Symbol.TokenIndex - digit.Symbol.TokenIndex; if (tokenDifference == 1) { constraintsBuilder.Append(comma.GetText()); } } } } var constraintBuilderString = constraintsBuilder.ToString(); var splitArray = constraintBuilderString.Split(','); constraintsList = constraintsBuilder.ToString().Split(',').ToList(); constraints.Constraints_List = constraintsList; return(constraints); }
/// <summary> /// Visit a parse tree produced by the <c>IntArguments</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 VisitIntArguments([NotNull] CryslGrammarParser.IntArgumentsContext context) { return(VisitChildren(context)); }