Antlr4.Misc.CharSupport.GetStringFromGrammarStringLiteral C# (CSharp) Method

GetStringFromGrammarStringLiteral() public static method

public static GetStringFromGrammarStringLiteral ( string literal ) : string
literal string
return string
        public static string GetStringFromGrammarStringLiteral(string literal)
        {
            StringBuilder buf = new StringBuilder();
            int i = 1; // skip first quote
            int n = literal.Length - 1; // skip last quote
            while (i < n)
            { // scan all but last quote
                int end = i + 1;
                if (literal[i] == '\\')
                {
                    end = i + 2;
                    if (i + 1 < n && literal[i + 1] == 'u')
                    {
                        for (end = i + 2; end < i + 6; end++)
                        {
                            if (end > n)
                                return null; // invalid escape sequence.
                            char charAt = literal[end];
                            if (!char.IsDigit(charAt) && !(charAt >= 'a' && charAt <= 'f') && !(charAt >= 'A' && charAt <= 'F'))
                            {
                                return null; // invalid escape sequence.
                            }
                        }
                    }
                }
                if (end > n)
                    return null; // invalid escape sequence.

                string esc = literal.Substring(i, end - i);
                int c = GetCharValueFromCharInGrammarLiteral(esc);
                if (c == -1)
                {
                    return null; // invalid escape sequence.
                }
                else
                    buf.Append((char)c);
                i = end;
            }

            return buf.ToString();
        }