Boo.Lang.Parser.BooLexer.mML_COMMENT C# (CSharp) Method

mML_COMMENT() protected method

protected mML_COMMENT ( bool _createToken ) : void
_createToken bool
return void
        protected void mML_COMMENT(bool _createToken)
        {
            int _ttype; IToken _token=null; int _begin=text.Length;
            _ttype = ML_COMMENT;

            match("/*");
            {    // ( ... )*
            for (;;)
            {
                if (((cached_LA1=='*') && ((cached_LA2 >= '\u0003' && cached_LA2 <= '\ufffe')) && ((LA(3) >= '\u0003' && LA(3) <= '\ufffe')))&&( LA(2) != '/' ))
                {
                    match('*');
                }
                else {
                    bool synPredMatched803 = false;
                    if (((cached_LA1=='/') && (cached_LA2=='*') && ((LA(3) >= '\u0003' && LA(3) <= '\ufffe'))))
                    {
                        int _m803 = mark();
                        synPredMatched803 = true;
                        inputState.guessing++;
                        try {
                            {
                                match("/*");
                            }
                        }
                        catch (RecognitionException)
                        {
                            synPredMatched803 = false;
                        }
                        rewind(_m803);
                        inputState.guessing--;
                    }
                    if ( synPredMatched803 )
                    {
                        mML_COMMENT(false);
                    }
                    else if ((tokenSet_3_.member(cached_LA1)) && ((cached_LA2 >= '\u0003' && cached_LA2 <= '\ufffe')) && ((LA(3) >= '\u0003' && LA(3) <= '\ufffe'))) {
                        {
                            match(tokenSet_3_);
                        }
                    }
                    else if ((cached_LA1=='\n'||cached_LA1=='\r')) {
                        mNEWLINE(false);
                    }
                    else
                    {
                        goto _loop805_breakloop;
                    }
                    }
                }
            _loop805_breakloop:				;
            }    // ( ... )*
            match("*/");
            if (0==inputState.guessing)
            {

                        if (!_preserveComments)
                            _ttype = Token.SKIP;

            }
            if (_createToken && (null == _token) && (_ttype != Token.SKIP))
            {
                _token = makeToken(_ttype);
                _token.setText(text.ToString(_begin, text.Length-_begin));
            }
            returnToken_ = _token;
        }