예제 #1
0
        public override object VisitAnswer_set(DLV2Parser.Answer_setContext context)
        {
            answerSets.AddAnswerSet();

            if (context.cost() != null && !context.cost().IsEmpty)
            {
                costs = new Dictionary <int, int>();
                string[] FirstCost = context.cost().COST_LABEL().GetText().Split(' ')[1].Split('@');

                costs[Int32.Parse(FirstCost[1])] = Int32.Parse(FirstCost[0]);
            }

            if (costs != null)
            {
                foreach (KeyValuePair <int, int> entry in costs)
                {
                    answerSets.StoreCost(entry.Key, entry.Value);
                }
            }

            return(VisitChildren(context));
        }
        public override object VisitModel(ClingoParser.ModelContext context)
        {
            string cost = context.NEW_LINE().GetText().Trim();

            if (cost.Length > 1)
            {
                string[] tokens = cost.Split(' ');
                int      levels = tokens.Length - 1;

                for (int i = 1; i < tokens.Length; i++)
                {
                    answerSets.StoreCost(levels--, Int32.Parse(tokens[i]));
                }
            }

            return(VisitChildren(context));
        }
예제 #3
0
        public override object VisitLevel(DLVHEXParser.LevelContext context)
        {
            answerSets.StoreCost(Int32.Parse(context.INTEGER()[1].GetText()), Int32.Parse(context.INTEGER()[0].GetText()));

            return(null);
        }
        public override object VisitCost_level(DLVParser.Cost_levelContext context)
        {
            answerSets.StoreCost(Int32.Parse(context.INTEGER_CONSTANT()[1].GetText()), Int32.Parse(context.INTEGER_CONSTANT()[0].GetText()));

            return(null);
        }