Tokenizer.ReadTokenInternal C# (CSharp) Method

ReadTokenInternal() private method

private ReadTokenInternal ( ) : Token
return Token
    private Token ReadTokenInternal() 
    {
      string tokenValue = "";
      if (Peek() == -1) 
      {
        return Token.EOF;
      };
      if (Probe("\x9") || Probe("\xA") || Probe("\xC") || Probe("\xD") || Probe(" ")) 
      {
        _tokenValue = "";
        return Token.S;
      } 
      else if (Probe("/*")) 
      {
        int ch = Peek();
        while (ch != -1) 
        {
          ReadChar();
          if (ch == '*' && Peek() == '/') 
          {
            ReadChar();
            break;
          }
          ch = Peek();
        }
        return Token.S;
      } 
      else if (Probe("<!--")) 
      {
        return Token.CDO;
      } 
      else if (Probe("-->")) 
      {
        return Token.CDC;
      } 
      else if (Probe("~=")) 
      {
        return Token.INCLUDES;
      } 
      else if (Probe("|=")) 
      {
        return Token.DASHMATCH;
      } 
      else if (ProbeString(ref tokenValue)) 
      {
        _tokenValue = tokenValue;
        return Token.STRING;
      } 
      else if (ProbeIdent(ref tokenValue)) 
      {
        _tokenValue = tokenValue;
        if (Probe("(")) 
        {
          return Token.FUNCTION;
        } 
        else 
        {
          return Token.IDENT;
        };
      } 
      else if (Probe("#") && ProbeName(ref tokenValue)) 
      {
        _tokenValue = tokenValue;
        return Token.HASH;
      } 
      else if (Probe("@import")) 
      {
        return Token.IMPORT_SYM;
      } 
      else if (Probe("@page")) 
      {
        return Token.PAGE_SYM;
      } 
      else if (Probe("@media")) 
      {
        return Token.MEDIA_SYM;
      } 
      else if (Probe("@font-face")) 
      {
        return Token.FONT_FACE_SYM;
      } 
      else if (Probe("@charset")) 
      {
        return Token.CHARSET_SYM;
      } 
      else if (Probe("@") && ProbeIdent(ref tokenValue)) 
      {
        _tokenValue = tokenValue;
        return Token.ATKEYWORD;
      } 
      else if (Probe("!") && SkipSpaces() && Probe("important")) 
      {
        return Token.IMPORTANT_SYM;
      } 
      else if (ProbeNumber(ref tokenValue)) 
      {
        _tokenValue = tokenValue;
        if (Probe("em")) 
        {
          _tokenValue = _tokenValue + "em";
          return Token.EMS;
        } 
        else if (Probe("ex")) 
        {
          _tokenValue = _tokenValue + "ex";
          return Token.EXS;
        } 
        else if (Probe("px")) 
        {
          _tokenValue = _tokenValue + "px";
          return Token.LENGTH;
        } 
        else if (Probe("cm")) 
        {
          _tokenValue = _tokenValue + "cm";
          return Token.LENGTH;
        } 
        else if (Probe("mm")) 
        {
          _tokenValue = _tokenValue + "mm";
          return Token.LENGTH;
        } 
        else if (Probe("in")) 
        {
          _tokenValue = _tokenValue + "in";
          return Token.LENGTH;
        } 
        else if (Probe("pt")) 
        {
          _tokenValue = _tokenValue + "pt";
          return Token.LENGTH;
        } 
        else if (Probe("pc")) 
        {
          _tokenValue = _tokenValue + "pc";
          return Token.LENGTH;
        } 
        else if (Probe("deg")) 
        {
          _tokenValue = _tokenValue + "deg";
          return Token.ANGLE;
        } 
        else if (Probe("rad")) 
        {
          _tokenValue = _tokenValue + "rad";
          return Token.ANGLE;
        } 
        else if (Probe("grad")) 
        {
          _tokenValue = _tokenValue + "grad";
          return Token.ANGLE;
        } 
        else if (Probe("ms")) 
        {
          _tokenValue = _tokenValue + "ms";
          return Token.TIME;
        } 
        else if (Probe("s")) 
        {
          _tokenValue = _tokenValue + "s";
          return Token.TIME;
        } 
        else if (Probe("hz")) 
        {
          _tokenValue = _tokenValue + "hz";
          return Token.FREQ;
        } 
        else if (Probe("khz")) 
        {
          _tokenValue = _tokenValue + "khz";
          return Token.FREQ;
        } 
        else if (Probe("%")) 
        {
          _tokenValue = _tokenValue + "%";
          return Token.PERCENTAGE;
        } 
        else if (ProbeIdent(ref tokenValue)) 
        {
          _tokenValue = _tokenValue + tokenValue;
          return Token.DIMEN;
        } 
        else 
        {
          return Token.NUMBER;
        }
      } 
      else if (Probe("url(")) 
      {
        SkipSpaces();
        if (ProbeString(ref tokenValue)) 
        {
          _tokenValue = tokenValue;
          return Token.URI;
        } 
        else if (ProbeURL(ref tokenValue)) 
        {
          _tokenValue = tokenValue;
          return Token.URI;
        } 
        else 
        {
          _tokenValue = ((char)ReadChar()).ToString();
          return Token.unrecognized;
        }
      } 
      else 
      {
        _tokenValue = ((char)ReadChar()).ToString();
        return Token.SYMBOL;
      }
    }
  }