/*Punctuation*/ {/*WhiteSpace*/
        /*Identifier*/ static /*WhiteSpace*/ /*Identifier*/ IEnumerable /*Punctuation*/ </*Identifier*/ Token /*Punctuation*/> /*WhiteSpace*/ /*Identifier*/ GetTokens/*Punctuation*/ (/*Identifier*/ string /*WhiteSpace*/ /*Identifier*/ inputText /*Punctuation*/)                                                                                                 /*WhiteSpace*/
        /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                             /*WhiteSpace*/
            /*Identifier*/ var /*WhiteSpace*/ /*Identifier*/ regex /*WhiteSpace*/ /*Punctuation*/      = /*WhiteSpace*/ /*Identifier*/ new /*WhiteSpace*/ /*Identifier*/ Regex/*Punctuation*/ (/*String*/ @"
                (?<Identifier>[a-zA-Z_][a-zA-Z_0-9]*)|
                (?<Number>[0-9]+)|
                (?<String>@""(""""|[^""])*"")|
                (?<Punctuation>\.|\(|\)|{|}|\[|\]|;|=>|<|>|,|:|!=|\+|=|-)|
                (?<WhiteSpace>[ \t\r\n]+)|
                (?<Comment>(//)(.+?)(?=[\n\r])|(/\*(.|\n)*?\*/))
                " /*Punctuation*/, /*WhiteSpace*/ /*Identifier*/ RegexOptions /*Punctuation*/./*Identifier*/ IgnorePatternWhitespace /*Punctuation*/) /*Punctuation*/;                                                                                                                                                                                                /*WhiteSpace*/
            /*Identifier*/ var /*WhiteSpace*/ /*Identifier*/ matches /*WhiteSpace*/ /*Punctuation*/    = /*WhiteSpace*/ /*Identifier*/ regex /*Punctuation*/./*Identifier*/ GetMatch/*Punctuation*/ (/*Identifier*/ inputText /*Punctuation*/) /*Punctuation*/; /*Comment*/                                                                                           //COMM/*WhiteSpace*/
            /*Identifier*/ int /*WhiteSpace*/ /*Identifier*/ indexMatch /*WhiteSpace*/ /*Punctuation*/ = /*WhiteSpace*/ /*Number*/ 0 /*Punctuation*/;                                                                                                                                                                                                                 /*WhiteSpace*/

            /*Identifier*/ foreach /*WhiteSpace*/ /*Punctuation*/ (/*Identifier*/ var /*WhiteSpace*/ /*Identifier*/ match /*WhiteSpace*/ /*Identifier*/ in /*WhiteSpace*/ /*Identifier*/ matches /*Punctuation*/)                                                                                                                                                     /*WhiteSpace*/
            /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                         /*WhiteSpace*/
                /*Identifier*/ if /*WhiteSpace*/ /*Punctuation*/ (/*Identifier*/ indexMatch /*WhiteSpace*/ /*Punctuation*/ != /*WhiteSpace*/ /*Identifier*/ match /*Punctuation*/./*Identifier*/ Index /*Punctuation*/)                                                                                                                                               /*WhiteSpace*/
                /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                     /*WhiteSpace*/
                    /*Identifier*/ throw/*WhiteSpace*/ /*Identifier*/ new /*WhiteSpace*/ /*Identifier*/ Exception/*Punctuation*/ (/*String*/ @"пропущен токен" /*Punctuation*/) /*Punctuation*/;                                                                                                                                                                      /*WhiteSpace*/
                    /*Punctuation*/ }/*WhiteSpace*/
                /*Identifier*/ indexMatch /*WhiteSpace*/ /*Punctuation*/ = /*WhiteSpace*/ /*Identifier*/ match /*Punctuation*/./*Identifier*/ Index /*Punctuation*/ + /*WhiteSpace*/ /*Identifier*/ match /*Punctuation*/./*Identifier*/ Length /*Punctuation*/;                                                                                                      /*WhiteSpace*/
                /*Identifier*/ if /*WhiteSpace*/ /*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Groups /*Punctuation*/[/*String*/ @"Identifier" /*Punctuation*/] /*Punctuation*/./*Identifier*/ Success /*Punctuation*/)                                                                                                                        /*WhiteSpace*/
                /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                     /*WhiteSpace*/
                    /*Identifier*/ yield /*WhiteSpace*/ /*Identifier*/ return /*WhiteSpace*/ /*Identifier*/ (new /*WhiteSpace*/ /*Identifier*/ Token/*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Value /*Punctuation*/, /*WhiteSpace*/ /*Identifier*/ TokenType /*Punctuation*/./*Identifier*/ Identifier /*Punctuation*/) /*Punctuation*/);  /*WhiteSpace*/
                    /*Punctuation*/ }/*WhiteSpace*/
                /*Identifier*/ else /*WhiteSpace*/ /*Identifier*/ if /*WhiteSpace*/ /*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Groups /*Punctuation*/[/*String*/ @"Number" /*Punctuation*/] /*Punctuation*/./*Identifier*/ Success /*Punctuation*/)                                                                                         /*WhiteSpace*/
                /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                     /*WhiteSpace*/
                    /*Identifier*/ yield /*WhiteSpace*/ /*Identifier*/ return /*WhiteSpace*/ /*Identifier*/ (new /*WhiteSpace*/ /*Identifier*/ Token/*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Value /*Punctuation*/, /*WhiteSpace*/ /*Identifier*/ TokenType /*Punctuation*/./*Identifier*/ Number /*Punctuation*/) /*Punctuation*/);      /*WhiteSpace*/
                    /*Punctuation*/ }/*WhiteSpace*/
                /*Identifier*/ else /*WhiteSpace*/ /*Identifier*/ if /*WhiteSpace*/ /*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Groups /*Punctuation*/[/*String*/ @"String" /*Punctuation*/] /*Punctuation*/./*Identifier*/ Success /*Punctuation*/)                                                                                         /*WhiteSpace*/
                /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                     /*WhiteSpace*/
                    /*Identifier*/ yield /*WhiteSpace*/ /*Identifier*/ return /*WhiteSpace*/ /*Identifier*/ (new /*WhiteSpace*/ /*Identifier*/ Token/*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Value /*Punctuation*/, /*WhiteSpace*/ /*Identifier*/ TokenType /*Punctuation*/./*Identifier*/ String /*Punctuation*/) /*Punctuation*/);      /*WhiteSpace*/
                    /*Punctuation*/ }/*WhiteSpace*/
                /*Identifier*/ else /*WhiteSpace*/ /*Identifier*/ if /*WhiteSpace*/ /*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Groups /*Punctuation*/[/*String*/ @"Punctuation" /*Punctuation*/] /*Punctuation*/./*Identifier*/ Success /*Punctuation*/)                                                                                    /*WhiteSpace*/
                /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                     /*WhiteSpace*/
                    /*Identifier*/ yield /*WhiteSpace*/ /*Identifier*/ return /*WhiteSpace*/ /*Identifier*/ (new /*WhiteSpace*/ /*Identifier*/ Token/*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Value /*Punctuation*/, /*WhiteSpace*/ /*Identifier*/ TokenType /*Punctuation*/./*Identifier*/ Punctuation /*Punctuation*/) /*Punctuation*/); /*WhiteSpace*/
                    /*Punctuation*/ }/*WhiteSpace*/
                /*Identifier*/ else /*WhiteSpace*/ /*Identifier*/ if /*WhiteSpace*/ /*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Groups /*Punctuation*/[/*String*/ @"WhiteSpace" /*Punctuation*/] /*Punctuation*/./*Identifier*/ Success /*Punctuation*/)                                                                                     /*WhiteSpace*/
                /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                     /*WhiteSpace*/
                    /*Identifier*/ yield /*WhiteSpace*/ /*Identifier*/ return /*WhiteSpace*/ /*Identifier*/ (new /*WhiteSpace*/ /*Identifier*/ Token/*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Value /*Punctuation*/, /*WhiteSpace*/ /*Identifier*/ TokenType /*Punctuation*/./*Identifier*/ WhiteSpace /*Punctuation*/) /*Punctuation*/);  /*WhiteSpace*/
                    /*Punctuation*/ }/*WhiteSpace*/
                /*Identifier*/ else /*WhiteSpace*/ /*Identifier*/ if /*WhiteSpace*/ /*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Groups /*Punctuation*/[/*String*/ @"Comment" /*Punctuation*/] /*Punctuation*/./*Identifier*/ Success /*Punctuation*/)                                                                                        /*WhiteSpace*/
                /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                     /*WhiteSpace*/
                    /*Identifier*/ yield /*WhiteSpace*/ /*Identifier*/ return /*WhiteSpace*/ /*Identifier*/ (new /*WhiteSpace*/ /*Identifier*/ Token/*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Value /*Punctuation*/, /*WhiteSpace*/ /*Identifier*/ TokenType /*Punctuation*/./*Identifier*/ Comment /*Punctuation*/) /*Punctuation*/);     /*WhiteSpace*/
                    /*Punctuation*/ }/*WhiteSpace*/
                /*Punctuation*/ }/*WhiteSpace*/
            /*Identifier*/ if /*WhiteSpace*/ /*Punctuation*/ (/*Identifier*/ indexMatch /*WhiteSpace*/ /*Punctuation*/ != /*WhiteSpace*/ /*Identifier*/ inputText /*Punctuation*/./*Identifier*/ Length /*Punctuation*/)  /*WhiteSpace*/
            /*Punctuation*/ {                                                                                                                                                                                             /*WhiteSpace*/
                /*Identifier*/ throw/*WhiteSpace*/ /*Identifier*/ new /*WhiteSpace*/ /*Identifier*/ Exception/*Punctuation*/ (/*String*/ @"входной текст отличается от результирующего" /*Punctuation*/) /*Punctuation*/; /*WhiteSpace*/
                /*Punctuation*/ }/*WhiteSpace*/
            /*Punctuation*/ }/*WhiteSpace*/
            /*Punctuation*/ }/*WhiteSpace*/

        /*Identifier*/ static /*WhiteSpace*/ /*Identifier*/ void /*WhiteSpace*/ /*Identifier*/ _Main/*Punctuation*/ (/*Identifier*/ string /*Punctuation*/[] /*Punctuation*/ /*WhiteSpace*/ /*Identifier*/ args /*Punctuation*/)                                                                                                                                                                       /*WhiteSpace*/
        /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                                                              /*WhiteSpace*/
            /*Identifier*/ string /*WhiteSpace*/ /*Identifier*/ regex /*WhiteSpace*/ /*Punctuation*/ = /*WhiteSpace*/ /*Identifier*/ File /*Punctuation*/./*Identifier*/ ReadAllText/*Punctuation*/ (/*String*/ @"../../RegExpression.txt" /*Punctuation*/) /*Punctuation*/;                                                                                                                           /*WhiteSpace*/
            /*Identifier*/ string /*WhiteSpace*/ /*Identifier*/ text /*WhiteSpace*/ /*Punctuation*/  = /*WhiteSpace*/ /*Identifier*/ File /*Punctuation*/./*Identifier*/ ReadAllText/*Punctuation*/ (/*String*/ @"../../InputTextFile.txt" /*Punctuation*/) /*Punctuation*/;                                                                                                                           /*WhiteSpace*/
            /*Identifier*/ List /*Punctuation*/ </*Identifier*/ string /*Punctuation*/> /*WhiteSpace*/ /*Identifier*/ output /*WhiteSpace*/ /*Punctuation*/ = /*WhiteSpace*/ /*Identifier*/ new /*WhiteSpace*/ /*Identifier*/ List/*Punctuation*/ </*Identifier*/ string /*Punctuation*/> /*Punctuation*/ (/*Punctuation*/) /*Punctuation*/;                                                           /*WhiteSpace*/

            /*Identifier*/ output /*Punctuation*/./*Identifier*/ Add/*Punctuation*/ (/*Identifier*/ EscapeCsvValue/*Punctuation*/ (/*String*/ @"Номер" /*Punctuation*/) /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/ /*String*/ @";"                                                                                                                                                                /*WhiteSpace*/
                                                                                     /*Punctuation*/ + /*WhiteSpace*/ /*Identifier*/ EscapeCsvValue/*Punctuation*/ (/*String*/ @"Группа 1" /*Punctuation*/) /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/ /*String*/ @";"                                                                                                                            /*WhiteSpace*/
                                                                                     /*Punctuation*/ + /*WhiteSpace*/ /*Identifier*/ EscapeCsvValue/*Punctuation*/ (/*String*/ @"Группа 2" /*Punctuation*/) /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/ /*String*/ @";"                                                                                                                            /*WhiteSpace*/
                                                                                     /*Punctuation*/ + /*WhiteSpace*/ /*Identifier*/ EscapeCsvValue/*Punctuation*/ (/*String*/ @"Группа 3" /*Punctuation*/) /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/ /*String*/ @";"                                                                                                                            /*WhiteSpace*/
                                                                                     /*Punctuation*/ + /*WhiteSpace*/ /*Identifier*/ EscapeCsvValue/*Punctuation*/ (/*String*/ @"Группа 4" /*Punctuation*/) /*Punctuation*/) /*Punctuation*/;                                                                                                                                                          /*WhiteSpace*/
            /*Identifier*/ var /*WhiteSpace*/ /*Identifier*/ rx /*WhiteSpace*/ /*Punctuation*/ = /*WhiteSpace*/ /*Identifier*/ new /*WhiteSpace*/ /*Identifier*/ Regex/*Punctuation*/ (/*Identifier*/ regex /*Punctuation*/) /*Punctuation*/;                                                                                                                                                          /*WhiteSpace*/
            /*Identifier*/ int /*WhiteSpace*/ /*Identifier*/ i /*WhiteSpace*/ /*Punctuation*/  = /*WhiteSpace*/ /*Number*/ 0 /*Punctuation*/;                                                                                                                                                                                                                                                          /*WhiteSpace*/

            /*Identifier*/ foreach /*WhiteSpace*/ /*Punctuation*/ (/*Identifier*/ Match /*WhiteSpace*/ /*Identifier*/ match /*WhiteSpace*/ /*Identifier*/ in /*WhiteSpace*/ /*Identifier*/ rx /*Punctuation*/./*Identifier*/ Matches/*Punctuation*/ (/*Identifier*/ text /*Punctuation*/) /*Punctuation*/)                                                                                             /*WhiteSpace*/
            /*Punctuation*/ {                                                                                                                                                                                                                                                                                                                                                                          /*WhiteSpace*/
                /*Identifier*/ output /*Punctuation*/./*Identifier*/ Add/*Punctuation*/ (/*Identifier*/ EscapeCsvValue/*Punctuation*/ (/*String*/ @"строка " /*Punctuation*/) /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/ /*Punctuation*/ +/*Punctuation*/ +/*Identifier*/ i /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/ /*String*/ @";" /*WhiteSpace*/ /*Punctuation*/ +                      /*WhiteSpace*/
                                                                                         /*Identifier*/ EscapeCsvValue/*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Groups /*Punctuation*/[/*Number*/ 1 /*Punctuation*/] /*Punctuation*/./*Identifier*/ Value /*Punctuation*/) /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/ /*String*/ @";" /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/
                                                                                         /*Identifier*/ EscapeCsvValue/*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Groups /*Punctuation*/[/*Number*/ 2 /*Punctuation*/] /*Punctuation*/./*Identifier*/ Value /*Punctuation*/) /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/ /*String*/ @";" /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/
                                                                                         /*Identifier*/ EscapeCsvValue/*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Groups /*Punctuation*/[/*Number*/ 3 /*Punctuation*/] /*Punctuation*/./*Identifier*/ Value /*Punctuation*/) /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/ /*String*/ @";" /*WhiteSpace*/ /*Punctuation*/ + /*WhiteSpace*/
                                                                                         /*Identifier*/ EscapeCsvValue/*Punctuation*/ (/*Identifier*/ match /*Punctuation*/./*Identifier*/ Groups /*Punctuation*/[/*Number*/ 4 /*Punctuation*/] /*Punctuation*/./*Identifier*/ Value /*Punctuation*/) /*Punctuation*/) /*Punctuation*/;                                                                /*WhiteSpace*/
                /*Punctuation*/ }/*WhiteSpace*/
            /*Identifier*/ File /*Punctuation*/./*Identifier*/ WriteAllLines/*Punctuation*/ (/*String*/ @"..\..\OutputTextFile.csv" /*Punctuation*/, /*WhiteSpace*/ /*Identifier*/ output /*Punctuation*/, /*WhiteSpace*/ /*Identifier*/ Encoding /*Punctuation*/./*Identifier*/ Default /*Punctuation*/) /*Punctuation*/;                                                                             /*WhiteSpace*/
            /*Punctuation*/ }/*WhiteSpace*/