public override void ExitString_value_ml([NotNull] MalinaParser.String_value_mlContext context)
        {
            var parent     = (IValueNode)_nodeStack.Peek();
            var open_value = context.OPEN_STRING_ML();

            if (open_value != null)
            {
                var token = (MalinaToken)open_value.Payload;
                parent.ValueInterval = new Interval(token.StartIndex, token.StopIndex);
                parent.ValueIndent   = token.TokenIndent;
                ((DOM.IValueNode)parent).ValueType = ValueType.OpenString;
                return;
            }

            var free_open_value = context.FREE_OPEN_STRING_ML();

            if (free_open_value != null)
            {
                var token = (MalinaToken)free_open_value.Payload;
                parent.ValueInterval = new Interval(token.StartIndex, token.StopIndex);
                parent.ValueIndent   = token.TokenIndent;
                ((DOM.IValueNode)parent).ValueType = ValueType.FreeOpenString;
                return;
            }

            var dqs_ml = context.DQS_ML();

            if (dqs_ml != null)
            {
                var token = (MalinaToken)dqs_ml.Payload;
                parent.ValueInterval = new Interval(token.StartIndex + 1, token.StopIndex - 1);
                parent.ValueIndent   = token.TokenIndent;
                ((DOM.IValueNode)parent).ValueType = ValueType.DoubleQuotedString;
                return;
            }

            var sqs_ml = context.sqs_ml();

            if (sqs_ml != null)
            {
                SetInterpolationItems(parent, sqs_ml.children);

                //Set ValueInterval
                var stopIndex = ((CommonToken)sqs_ml.Stop).Type == MalinaLexer.SQS_END ? ((CommonToken)sqs_ml.Stop).StopIndex - 1: ((CommonToken)sqs_ml.Stop).StopIndex;
                parent.ValueInterval = new Interval(((CommonToken)sqs_ml.Start).StartIndex + 1, stopIndex);

                //Set Indent
                parent.ValueIndent = ((MalinaToken)sqs_ml.children[0].Payload).TokenIndent;

                //Set Value type to SingleQuotedString
                ((DOM.IValueNode)parent).ValueType = ValueType.SingleQuotedString;
            }
        }
Example #2
0
 public override void ExitString_value_ml(MalinaParser.String_value_mlContext context)
 {
     base.ExitString_value_ml(context);
     SendInterpolationAliasesAndParametersToNameresolver();
 }