Example #1
0
        /// <summary>
        /// Auxiliary function to convert assignment value to its string representation.
        /// </summary>
        /// <param name="assignment"></param>
        /// <returns></returns>
        internal static string AssignmentToString(AssignmentEnum assignment)
        {
            switch (assignment)
            {
            case AssignmentEnum.C:
                return(":");

            case AssignmentEnum.CC:
                return("::");

            case AssignmentEnum.CCC:
                return(":::");

            case AssignmentEnum.E:
                return("=");

            case AssignmentEnum.EC:
                return("=:");

            case AssignmentEnum.ECC:
                return("=::");

            case AssignmentEnum.EE:
                return("==");

            case AssignmentEnum.CE:
                return(":=");
            }
            return("");
        }
Example #2
0
        private string GetValue(ITextSource input, AssignmentEnum assignment,
                                int valueQuotesType, Interval valueInterval, int valueIndent)
        {
            if (valueInterval == null)
            {
                if (assignment == AssignmentEnum.E || assignment == AssignmentEnum.EE)
                {
                    return(string.Empty);
                }
                return(null);
            }
            if (valueInterval.Begin.Index == -1)
            {
                return(string.Empty);
            }
            if (valueQuotesType == '\'' || valueQuotesType == '"')
            {
                var c = input.GetChar(valueInterval.End.Index);
                var missingValueQuote = valueQuotesType == '\'' && c != '\'' ||
                                        valueQuotesType == '"' && c != '"';
                if (!missingValueQuote)
                {
                    return(GetValueFromValueInterval(input, assignment, valueQuotesType,
                                                     valueInterval.Begin.Index + 1, valueInterval.End.Index - 1, valueIndent));
                }

                return(GetValueFromValueInterval(input, assignment, valueQuotesType,
                                                 valueInterval.Begin.Index + 1, valueInterval.End.Index, valueIndent));
            }
            return(GetValueFromValueInterval(input, assignment, valueQuotesType,
                                             valueInterval.Begin.Index, valueInterval.End.Index, valueIndent));
        }
Example #3
0
 public static bool IsObjectAssignment(this AssignmentEnum assignment)
 {
     switch (assignment)
     {
     case AssignmentEnum.C:
     case AssignmentEnum.CC:
     case AssignmentEnum.CCC:
         return(true);
     }
     return(false);
 }
Example #4
0
 /// <summary>
 /// Creates a new instance of <see cref="Argument"/>.
 /// </summary>
 /// <param name="name">Pair name.</param>
 /// <param name="assignment">Pair assignment.</param>
 /// <param name="value">Pair value.</param>
 /// <param name="nameInterval">Name <see cref="Interval"/>.</param>
 /// <param name="valueInterval">Value <see cref="Interval"/>.</param>
 /// <param name="assignmentInterval">Assignment <see cref="Interval"/>.</param>
 /// <param name="nameQuotesType">Name quotes type.</param>
 /// <param name="valueQuotesType">Value quotes type.</param>
 /// <param name="valueType">Type of value.</param>
 /// <param name="interpolationItems">List of interpolation objects.</param>
 /// <param name="valueIndent">Indent of value in the source code.</param>
 public Argument(string name           = null, AssignmentEnum assignment = AssignmentEnum.None, string value = null,
                 Interval nameInterval = null, Interval valueInterval    = null, Interval assignmentInterval = null,
                 int nameQuotesType    = 0, int valueQuotesType          = 0, ValueType valueType = ValueType.None, List <object> interpolationItems = null,
                 int valueIndent       = 0
                 ) : base(name, assignment, value)
 {
     ValueInterval      = valueInterval;
     AssignmentInterval = assignmentInterval;
     NameInterval       = nameInterval;
     NameQuotesType     = nameQuotesType;
     ValueQuotesType    = valueQuotesType;
     ValueType          = valueType;
     InterpolationItems = interpolationItems;
     ValueIndent        = valueIndent;
 }
Example #5
0
 /// <summary>
 /// Creates a new instance of <see cref="Parameter"/>.
 /// </summary>
 /// <param name="name">Pair name.</param>
 /// <param name="assignment">Pair assignment.</param>
 /// <param name="value">Pair value.</param>
 /// <param name="nameInterval">Name <see cref="Interval"/>.</param>
 /// <param name="valueInterval">Value <see cref="Interval"/>.</param>
 /// <param name="assignmentInterval">Assignment <see cref="Interval"/>.</param>
 /// <param name="nameQuotesType">Name quotes type.</param>
 /// <param name="valueQuotesType">Value quotes type.</param>
 /// <param name="valueType">Type of value.</param>
 /// <param name="interpolationItems">List of interpolation objects.</param>
 /// <param name="valueIndent">Indent of value in the source code.</param>
 /// <param name="isValueNode">True if node is associated with or has literal value.</param>
 public Parameter(string name           = null, AssignmentEnum assignment = AssignmentEnum.None, string value = null,
                  Interval nameInterval = null, Interval valueInterval    = null, Interval assignmentInterval = null,
                  int nameQuotesType    = 0, int valueQuotesType          = 0, ValueType valueType = ValueType.None, List <object> interpolationItems = null,
                  int valueIndent       = 0, bool isValueNode = false
                  ) : base(name, assignment, value)
 {
     ValueInterval      = valueInterval;
     AssignmentInterval = assignmentInterval;
     NameInterval       = nameInterval;
     NameQuotesType     = nameQuotesType;
     ValueQuotesType    = valueQuotesType;
     ValueType          = valueType;
     InterpolationItems = interpolationItems;
     ValueIndent        = valueIndent;
     IsValueNode        = isValueNode;
 }
Example #6
0
        private ValueType GetValueType(AssignmentEnum assignment, string value, int valueQuotesType)
        {
            switch (assignment)
            {
            case AssignmentEnum.CE:
                return(ValueType.PairValue);

            case AssignmentEnum.EC:
                return(ValueType.Concatenation);

            case AssignmentEnum.ECC:
                return(ValueType.LiteralChoice);

            case AssignmentEnum.C:
            case AssignmentEnum.CC:
            case AssignmentEnum.CCC:
                return(ValueType.None);
            }
            if (value == null)
            {
                return(ValueType.None);
            }

            if (valueQuotesType == '\'')
            {
                return(ValueType.SingleQuotedString);
            }
            if (valueQuotesType == '"')
            {
                return(ValueType.DoubleQuotedString);
            }
            if (assignment == AssignmentEnum.E)
            {
                return(GetJsonValueType(value, ValueType.FreeOpenString));
            }

            if (assignment == AssignmentEnum.EE)
            {
                return(GetJsonValueType(value, ValueType.OpenString));
            }
            return(ValueType.None);
        }
Example #7
0
        internal static Tuple <string, List <object> > GetValue(ITextSource input, AssignmentEnum assignment,
                                                                int valueQuotesType, Interval valueInterval, int valueIndent, CompilerContext context, Module module)
        {
            if (valueInterval == null)
            {
                if (assignment == AssignmentEnum.E || assignment == AssignmentEnum.EE)
                {
                    return(new Tuple <string, List <object> >(string.Empty, null));
                }
                return(new Tuple <string, List <object> >(null, null));
            }
            if (valueInterval.Begin.Index == -1)
            {
                return(new Tuple <string, List <object> >(string.Empty, null));
            }
            if (valueQuotesType == '\'')
            {
                if (!ValueIsMissingQuote(input, valueQuotesType, valueInterval))
                {
                    return(new Tuple <string, List <object> >(GetValueFromValueInterval(input, assignment,
                                                                                        valueQuotesType,
                                                                                        valueInterval.Begin.Index + 1, valueInterval.End.Index - 1, valueIndent), null));
                }

                return(new Tuple <string, List <object> >(GetValueFromValueInterval(input, assignment,
                                                                                    valueQuotesType,
                                                                                    valueInterval.Begin.Index + 1, valueInterval.End.Index, valueIndent), null));
            }
            if (valueQuotesType == '"')
            {
                var    ii    = GetInterpolationItems(input, valueInterval, context, module);
                string value = (string)(ii.Count == 1 && ii[0] is string?ii[0] : string.Empty);
                return(new Tuple <string, List <object> >(value, ii));
            }
            return(new Tuple <string, List <object> >(GetValueFromValueInterval(input, assignment,
                                                                                valueQuotesType,
                                                                                valueInterval.Begin.Index, valueInterval.End.Index, valueIndent), null));
        }
 /// <summary>
 /// Creates an instance of <see cref="NamespaceDefinition"/>.
 /// </summary>
 /// <param name="name">Namespace prefix.</param>
 /// <param name="assignment">Must be a literal assignment.</param>
 /// <param name="value">Namespace URI.</param>
 public NamespaceDefinition(string name = null, AssignmentEnum assignment = AssignmentEnum.None, string value = null) : base(name, assignment, value)
 {
 }
Example #9
0
        /// <inheritdoc />
        public Pair CreateMappedPair(ITextSource textSource, int nameQuotesType, Interval nameInterval,
                                     AssignmentEnum assignment,
                                     Interval assignmentInterval, int valueQuotesType, Interval valueInterval, int valueIndent)
        {
            IMappedPair pair;
            var         nameText = GetNameText(textSource, nameQuotesType, nameInterval);
            var         value    = GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent, _context, _module);

            if (nameQuotesType > 0)
            {
                pair = new Element
                       (
                    VerifyElementName(nameText, nameInterval, _module),
                    nameQuotesType: nameQuotesType,
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (nameText.StartsWith("@"))
            {
                var tuple = Element.GetNameAndNs(nameText.Substring(1), nameQuotesType);
                var ns    = string.IsNullOrEmpty(tuple.Item1) ? null : tuple.Item1;
                pair = new Attribute
                       (
                    VerifyName(tuple.Item2, nameInterval, _module),
                    ns,
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (nameText.StartsWith("!$"))
            {
                pair = new AliasDefinition
                       (
                    VerifyName(nameText.Substring(2), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (nameText.StartsWith("!#"))
            {
                pair = new NamespaceDefinition
                       (
                    VerifyNsName(nameText.Substring(2), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (nameText.StartsWith("!%"))
            {
                pair = new Parameter
                       (
                    VerifyNsName(nameText.Substring(2), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (nameText.StartsWith("!"))
            {
                pair = new Document
                       (
                    VerifyName(nameText.Substring(1), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (nameText.StartsWith("$"))
            {
                pair = new Alias
                       (
                    VerifyName(nameText.Substring(1), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (nameText.StartsWith("%"))
            {
                pair = new Argument
                       (
                    VerifyName(nameText.Substring(1), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (nameText.StartsWith("#"))
            {
                var tuple = Element.GetNameAndNs(nameText.Substring(1), nameQuotesType);
                var ns    = string.IsNullOrEmpty(tuple.Item1) ? null : tuple.Item1;

                if (ns == null)
                {
                    pair = new Scope
                           (
                        null,
                        VerifyScopeName(nameText.Substring(1), nameInterval, _module),
                        nameInterval: nameInterval,
                        assignment: assignment,
                        assignmentInterval: assignmentInterval,
                        value: value.Item1,
                        valueQuotesType: valueQuotesType,
                        valueInterval: valueInterval,
                        interpolationItems: value.Item2,
                        valueIndent: valueIndent,
                        valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                           );
                }
                else
                {
                    pair = new Scope
                           (
                        VerifyElementName(tuple.Item2, nameInterval, _module),
                        VerifyScopeName(ns, nameInterval, _module),
                        nameInterval: nameInterval,
                        assignment: assignment,
                        assignmentInterval: assignmentInterval,
                        value: value.Item1,
                        valueQuotesType: valueQuotesType,
                        valueInterval: valueInterval,
                        interpolationItems: value.Item2,
                        valueIndent: valueIndent,
                        valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                           );
                }
            }
            else
            {
                var tuple = Element.GetNameAndNs(nameText, nameQuotesType);
                var ns    = string.IsNullOrEmpty(tuple.Item1) ? null : tuple.Item1;

                pair = new Element
                       (
                    VerifyElementName(tuple.Item2, nameInterval, _module),
                    VerifyScopeName(ns, nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            return((Pair)pair);
        }
Example #10
0
        static string GetValueFromValueInterval(ITextSource charStream, AssignmentEnum assignment,
                                                int valueQuotesType, int begin, int end, int valueIndent)
        {
            var sb = new StringBuilder();
            //Splitting text. Getting array of text lines
            var lines = charStream.GetText(begin, end).Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);

            bool folded = lines.Length > 1 && assignment == AssignmentEnum.EE &&
                          (valueQuotesType == 0 || valueQuotesType == '"');

            var first                   = true;
            var firstEmptyLine          = true; //If true then previous line was not empty therefor newline shouldn't be added
            var checkIfFirstLineIsEmpty = true;

            foreach (var item in lines)
            {
                var line = TrimEndOfFoldedStringLine(item, folded);
                if (checkIfFirstLineIsEmpty) //ignoring first empty line for open strings
                {
                    checkIfFirstLineIsEmpty = false;
                    if (valueQuotesType == 0 && line == string.Empty)
                    {
                        first = false;
                        continue;
                    }
                }

                if (first)
                {
                    sb.Append(line);
                    first = false;
                    continue;
                } //adding first line without appending new line symbol

                if (line.Length <= valueIndent) //this is just empty line
                {
                    if (folded) //Folded string
                    {
                        if (firstEmptyLine)
                        {
                            firstEmptyLine = false;
                            continue; //Ignore first empty line for folded string
                        }
                    }
                    sb.AppendLine();
                    continue;
                }

                var lineIndent = line.TakeWhile(c => c == ' ' || c == '\t').Count();
                if (lineIndent < valueIndent)          // this is multiline string terminator === or indent mismatch
                {
                    line = line.Substring(lineIndent); //Removing indents
                    if (line.TrimEnd() == "===")
                    {
                        sb.AppendLine();
                    }
                    break; // this is multiline string terminator ===
                }

                line = line.Substring(valueIndent); //Removing indents
                if (sb.Length == 0)                 // If it is first line to be added just add it. No new line or spacing needed.
                {
                    sb.Append(line);
                    continue;
                }
                if (folded && firstEmptyLine)
                {
                    sb.Append(" ");
                }
                if (!folded || !firstEmptyLine)
                {
                    sb.AppendLine();
                }
                firstEmptyLine = true; //reseting the flag for folded string logic

                sb.Append(line);
            }
            return(sb.ToString());
        }
Example #11
0
 /// <inheritdoc />
 public AliasDefinition(string name, AssignmentEnum assignment, string value) : base(name, assignment, value)
 {
     SyncTime = DateTime.Now.Ticks;
 }
Example #12
0
 /// <summary>
 /// Creates an instance of <see cref="Element"/>.
 /// </summary>
 /// <param name="name">Element name.</param>
 /// <param name="nsPrefix">Namespace prefix.</param>
 /// <param name="assignment">Pair assignment.</param>
 /// <param name="value">Element value.</param>
 public Element(string name = null, string nsPrefix = null, AssignmentEnum assignment = AssignmentEnum.None, string value = null) : base(name, assignment, value)
 {
     _nsPrefix = nsPrefix;
 }
Example #13
0
 /// <summary>
 /// Creates an instance of the <see cref="Pair"/>.
 /// </summary>
 /// <param name="assignment"></param>
 protected Pair(AssignmentEnum assignment)
 {
     _assignment = assignment;
 }
Example #14
0
 /// <summary>
 /// Creates an instance of <see cref="Attribute"/>.
 /// </summary>
 /// <param name="name">Attribute name.</param>
 /// <param name="nsPrefix">Namespace prefix.</param>
 /// <param name="assignment">Pair assignment.</param>
 /// <param name="value">Attribute value.</param>
 public Attribute(string name, string nsPrefix, AssignmentEnum assignment, string value) : base(name, assignment, value)
 {
     _nsPrefix = nsPrefix;
 }
Example #15
0
 /// <summary>
 /// Creates an instance of the <see cref="Pair"/>.
 /// </summary>
 /// <param name="name">Pair name.</param>
 /// <param name="assignment"></param>
 /// <param name="value">Pair value.</param>
 protected Pair(string name, AssignmentEnum assignment, string value)
 {
     _name       = name;
     _assignment = assignment;
     _value      = value;
 }
Example #16
0
 protected Operator(OperatorType operatorType, AssignmentEnum assigment, int precedence)
 {
     OperatorType = operatorType;
     Assigment    = assigment;
     Precedence   = precedence;
 }
Example #17
0
 /// <summary>
 /// Creates an instance of the <see cref="Pair"/>.
 /// </summary>
 /// <param name="name">Pair name.</param>
 /// <param name="assignment"></param>
 protected Pair(string name, AssignmentEnum assignment)
 {
     _name       = name;
     _assignment = assignment;
 }
Example #18
0
        public Pair CreateMappedPair(ITextSource textSource, int nameQuotesType, Interval nameInterval,
                                     AssignmentEnum assignment,
                                     Interval assignmentInterval, int valueQuotesType, Interval valueInterval, int valueIndent)
        {
            var name = GetName(textSource, nameQuotesType, nameInterval);

            if (nameQuotesType > 0)
            {
                return(new Syntactik.DOM.Mapped.Element
                       (
                           name,
                           nameQuotesType: nameQuotesType,
                           nameInterval: nameInterval,
                           assignment: assignment,
                           assignmentInterval: assignmentInterval,
                           value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent),
                           valueQuotesType: valueQuotesType,
                           valueInterval: valueInterval,
                           interpolationItems: null,
                           valueIndent: valueIndent
                       ));
            }
            if (name.StartsWith("@"))
            {
                return(new Syntactik.DOM.Mapped.Attribute
                       (
                           name.Substring(1),
                           null,
                           nameInterval: nameInterval,
                           assignment: assignment,
                           assignmentInterval: assignmentInterval,
                           value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent),
                           valueQuotesType: valueQuotesType,
                           valueInterval: valueInterval,
                           interpolationItems: null,
                           valueIndent: valueIndent
                       ));
            }
            if (name.StartsWith("!$"))
            {
                return(new Syntactik.DOM.Mapped.AliasDefinition
                       (
                           name.Substring(2),
                           nameInterval: nameInterval,
                           assignment: assignment,
                           assignmentInterval: assignmentInterval,
                           value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent),
                           valueQuotesType: valueQuotesType,
                           valueInterval: valueInterval,
                           interpolationItems: null,
                           valueIndent: valueIndent
                       ));
            }
            if (name.StartsWith("!#"))
            {
                return(new Syntactik.DOM.Mapped.NamespaceDefinition
                       (
                           name.Substring(2),
                           nameInterval: nameInterval,
                           assignment: assignment,
                           assignmentInterval: assignmentInterval,
                           value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent),
                           valueQuotesType: valueQuotesType,
                           valueInterval: valueInterval,
                           interpolationItems: null,
                           valueIndent: valueIndent
                       ));
            }
            if (name.StartsWith("!%"))
            {
                return(new Syntactik.DOM.Mapped.Parameter
                       (
                           name.Substring(2),
                           nameInterval: nameInterval,
                           assignment: assignment,
                           assignmentInterval: assignmentInterval,
                           value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent),
                           valueQuotesType: valueQuotesType,
                           valueInterval: valueInterval,
                           interpolationItems: null,
                           valueIndent: valueIndent
                       ));
            }
            if (name.StartsWith("!"))
            {
                return(new Syntactik.DOM.Mapped.Document
                       (
                           name.Substring(1),
                           nameInterval: nameInterval,
                           assignment: assignment,
                           assignmentInterval: assignmentInterval,
                           value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent),
                           valueQuotesType: valueQuotesType,
                           valueInterval: valueInterval,
                           interpolationItems: null,
                           valueIndent: valueIndent
                       ));
            }
            if (name.StartsWith("$"))
            {
                return(new Syntactik.DOM.Mapped.Alias
                       (
                           name.Substring(1),
                           nameInterval: nameInterval,
                           assignment: assignment,
                           assignmentInterval: assignmentInterval,
                           value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent),
                           valueQuotesType: valueQuotesType,
                           valueInterval: valueInterval,
                           interpolationItems: null,
                           valueIndent: valueIndent
                       ));
            }
            if (name.StartsWith("%"))
            {
                return(new Syntactik.DOM.Mapped.Argument
                       (
                           name.Substring(1),
                           nameInterval: nameInterval,
                           assignment: assignment,
                           assignmentInterval: assignmentInterval,
                           value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent),
                           valueQuotesType: valueQuotesType,
                           valueInterval: valueInterval,
                           interpolationItems: null,
                           valueIndent: valueIndent
                       ));
            }
            if (name.StartsWith("#"))
            {
                return(new Syntactik.DOM.Mapped.Scope
                       (
                           nsPrefix: name.Substring(1),
                           nameInterval: nameInterval,
                           assignment: assignment,
                           assignmentInterval: assignmentInterval
                       ));
            }
            var tuple = Syntactik.DOM.Mapped.Element.GetNameAndNs(name, nameQuotesType);

            return(new Syntactik.DOM.Mapped.Element
                   (
                       tuple.Item2,
                       string.IsNullOrEmpty(tuple.Item1) ? null : tuple.Item1,
                       nameQuotesType: nameQuotesType,
                       nameInterval: nameInterval,
                       assignment: assignment,
                       assignmentInterval: assignmentInterval,
                       value: GetValue(textSource, assignment, valueQuotesType, valueInterval, valueIndent),
                       valueQuotesType: valueQuotesType,
                       valueInterval: valueInterval,
                       interpolationItems: null,
                       valueIndent: valueIndent
                   ));
        }
Example #19
0
 /// <summary>
 /// Creates an instance of <see cref="Entity"/>.
 /// </summary>
 /// <param name="name">Entity name.</param>
 /// <param name="assignment">Pair assignment.</param>
 /// <param name="value">Entity value.</param>
 protected Entity(string name, AssignmentEnum assignment, string value) : base(name, assignment, value)
 {
 }
Example #20
0
 public BinaryOperator(OperatorType operatorType, AssignmentEnum assigment, int precendence) :
     base(operatorType, assigment, precendence)
 {
 }
Example #21
0
 /// <summary>
 /// Creates a new instance of <see cref="AliasDefinition"/>.
 /// </summary>
 /// <param name="name">Pair name.</param>
 /// <param name="assignment">Pair assignment.</param>
 /// <param name="value">Pair value.</param>
 public AliasDefinition(string name, AssignmentEnum assignment, string value) : base(name, assignment, value)
 {
 }
Example #22
0
 /// <summary>
 /// Creates an instance of <see cref="ModuleMember"/>.
 /// </summary>
 /// <param name="name"></param>
 /// <param name="assignment"></param>
 /// <param name="value"></param>
 protected ModuleMember(string name = null, AssignmentEnum assignment = AssignmentEnum.None, string value = null) : base(name, assignment, value)
 {
 }
Example #23
0
 /// <summary>
 /// Creates an instance of the <see cref="Pair"/>.
 /// </summary>
 /// <param name="assignment"></param>
 /// <param name="value">Pair value.</param>
 protected Pair(AssignmentEnum assignment, string value)
 {
     _assignment = assignment;
     _value      = value;
 }
Example #24
0
 public FunctionOperator(OperatorType operatorType, AssignmentEnum assigment, int precendence) :
     base(operatorType, assigment, precendence)
 {
 }
Example #25
0
        /// <inheritdoc />
        public Pair CreateMappedPair(ITextSource textSource, int nameQuotesType, Interval nameInterval, AssignmentEnum assignment,
                                     Interval assignmentInterval, int valueQuotesType, Interval valueInterval, int valueIndent)
        {
            Pair pair;
            var  name  = PairFactoryForXml.GetNameText(textSource, nameQuotesType, nameInterval);
            var  value = PairFactoryForXml.GetValue(textSource, assignment, valueQuotesType, valueInterval,
                                                    valueIndent, _context, (Module)_module);

            if (nameQuotesType > 0)
            {
                if (assignment == AssignmentEnum.None)
                {
                    value = PairFactoryForXml.GetValue(textSource, assignment, nameQuotesType, nameInterval,
                                                       0, _context, (Module)_module);
                    valueQuotesType = nameQuotesType;
                }
                pair = new Element(
                    name,
                    nameQuotesType: nameQuotesType,
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                    );
            }
            else if (name.StartsWith("@"))
            {
                pair = new DOM.Mapped.Attribute(
                    name.Substring(1),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                    );
            }
            else if (name.StartsWith("!$"))
            {
                pair = new DOM.Mapped.AliasDefinition
                       (
                    VerifyName(name.Substring(2), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (name.StartsWith("!#"))
            {
                pair = new DOM.Mapped.NamespaceDefinition
                       (
                    VerifyNsName(name.Substring(2), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (name.StartsWith("!%"))
            {
                pair = new DOM.Mapped.Parameter
                       (
                    VerifyNsName(name.Substring(2), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (name.StartsWith("!"))
            {
                pair = new DOM.Mapped.Document
                       (
                    VerifyName(name.Substring(1), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (name.StartsWith("$"))
            {
                pair = new DOM.Mapped.Alias
                       (
                    VerifyName(name.Substring(1), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            else if (name.StartsWith("%"))
            {
                pair = new DOM.Mapped.Argument
                       (
                    VerifyName(name.Substring(1), nameInterval, _module),
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment, value.Item1, valueQuotesType)
                       );
            }
            //else if (name.StartsWith("#"))
            //{
            //    pair = new DOM.Mapped.Scope
            //    {
            //        NsPrefix = VerifyScopeName(name.Substring(1), nameInterval, _module),
            //        NameInterval = nameInterval,
            //        Assignment = assignment,
            //        AssignmentInterval = assignmentInterval
            //    };
            //    SetValueType((IMappedPair) pair, assignment, value.Item1, valueQuotesType);
            //}
            else
            {
                pair = new Element
                       (
                    name,
                    nameInterval: nameInterval,
                    assignment: assignment,
                    assignmentInterval: assignmentInterval,
                    value: value.Item1,
                    valueQuotesType: valueQuotesType,
                    valueInterval: valueInterval,
                    interpolationItems: value.Item2,
                    valueIndent: valueIndent,
                    valueType: GetValueType(assignment,
                                            (assignment == AssignmentEnum.None? PairFactoryForXml.GetValue(textSource, assignment, nameQuotesType, nameInterval,
                                                                                                           0, _context, (Module)_module).Item1:value.Item1),
                                            assignment == AssignmentEnum.None ? nameQuotesType: valueQuotesType)
                       );
            }

            return(pair);
        }