public override Node VisitQuestion([NotNull] QuestionContext context)
        {
            var questionNode = new QuestionNode(context.Start, context.LABEL().ToString());

            if (context.style() != null)
            {
                questionNode.AddChild(Visit(context.style()));
            }

            return(questionNode);
        }
        public override Node VisitQuestion(QuestionContext context)
        {
            var expressionNode = Visit(context.expression());
            var question       = new QuestionNode(context.Start,
                                                  context.STRING().GetText().Replace("\"", string.Empty),
                                                  context.LABEL().GetText(),
                                                  expressionNode != null,
                                                  QLTypeConverter.FromStringTypeToQLType(context.type().GetText()));

            question.AddChild(expressionNode);

            return(question);
        }
Example #3
0
        public override Node Visit(QuestionNode question)
        {
            var questionNode = new QuestionNode(question.Token, question.Description, question.Label, question.IsEvaluated, question.Type);

            foreach (var expression in question.ChildNodes)
            {
                var evaluatedNode = expression.Accept(this) as LiteralNode;
                _memory.AssignValue(question.Label, _valueFactory.CreateValueFromString(evaluatedNode.Value, question.Type));
                questionNode.AddChild(evaluatedNode);
            }

            if (!questionNode.ChildNodes.Any())
            {
                IValue memoryValue;
                if (!_memory.TryRetrieveValue(question.Label, out memoryValue))
                {
                    memoryValue = _valueFactory.CreateDefaultValue(question.Type);
                }

                questionNode.ChildNodes.Add(new LiteralNode(question.Token, memoryValue.ToString(), question.Type));
            }

            return(questionNode);
        }