private RegexExpression Expression()
        {
            RegexExpression exp = null;

            switch (_currentToken.TokenType)
            {
            case RegexTokenType.LeftParenthesis:
                Match(RegexTokenType.LeftParenthesis);
                var statement = ExpressionSeq();
                Match(RegexTokenType.RightParenthesis);
                exp = new GroupExpression(statement);
                break;

            default:
                exp = Char();
                break;
            }

            exp.Quantifier = Quantifier();

            return(exp);
        }
        private RegexExpression Expression()
        {
            RegexExpression exp = null;
            switch (_currentToken.TokenType)
            {
                case RegexTokenType.LeftParenthesis:
                    Match(RegexTokenType.LeftParenthesis);
                    var statement = ExpressionSeq();
                    Match(RegexTokenType.RightParenthesis);
                    exp = new GroupExpression(statement);
                    break;
                default:
                    exp = Char();
                    break;
            }

            exp.Quantifier = Quantifier();

            return exp;
        }