Ejemplo n.º 1
0
        public CsdlSyntax(string syntaxText)
        {
            if (string.IsNullOrWhiteSpace(syntaxText))
            {
                throw new ArgumentNullException(nameof(syntaxText));
            }

            SyntaxText = syntaxText;
            syntaxText = syntaxText.Trim();

            // Parse anchor (direction)
            if (syntaxText[0] == ANCHOR_TOKEN)
            {
                RightToLeftParsing = false;
                syntaxText         = syntaxText.TrimStart(ANCHOR_TOKEN);
            }
            else if (syntaxText[syntaxText.Length - 1] == ANCHOR_TOKEN)
            {
                RightToLeftParsing = true;
                syntaxText         = syntaxText.TrimEnd(ANCHOR_TOKEN);
            }

            // Check for perfect match
            if (syntaxText.Length > 0 &&
                syntaxText[0] == PERFECT_MATCH_START &&
                syntaxText[syntaxText.Length - 1] == PERFECT_MATCH_END)
            {
                PerfectMatchOnly = true;
                syntaxText       = syntaxText.TrimStart(PERFECT_MATCH_START).TrimEnd(PERFECT_MATCH_END);
            }

            Tokens = CsdlToken.GetTokensFromPattern(syntaxText.Trim());
        }