Tools.Literal.Resolve C# (CSharp) Method

Resolve() public method

public Resolve ( ) : CSymbol
return CSymbol
        public override CSymbol Resolve()
        {
            // to the first occurrence
            int n = yytext.Length;
            string ns ="";
            for (int p=1;p+1<n;p++) // fix \ escapes
                if (yytext[p] == '\\')
                {
                    if (p+1<n)
                        p++;
                    if (yytext[p]>='0' && yytext[p]<='7')
                    {
                        int v;
                        for (v = yytext[p++]-'0';p<n && yytext[p]>='0' && yytext[p]<='7';p++)
                            v=v*8+yytext[p]-'0';
                        ns += (char)v;
                    }
                    else
                        switch(yytext[p])
                        {
                            case 'n' : ns += '\n'; break;
                            case 't' : ns += '\t'; break;
                            case 'r' : ns += '\r'; break;
                            default:   ns += yytext[p]; break;
                        }
                }
                else
                    ns += yytext[p];
            yytext = ns;
            CSymbol ob = (CSymbol)m_parser.m_symbols.literals[yytext];
            if (ob!=null)
                return ob;
            m_yynum = ++m_parser.LastSymbol;
            m_parser.m_symbols.literals[yytext] = this;
            m_parser.m_symbols.symbolInfo[m_yynum] = new ParsingInfo(yytext,m_yynum);
            return this;
        }