⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syntaxhighliter_cpp.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    QChar lastChar;    for (;;) {	QChar c = string->at( i )->c;	if ( lastWasBackSlash ) {	    input = InputSep;	} else {	    switch ( c ) {	    case '*':		input = InputAsterix;		break;	    case '/':		input = InputSlash;		break;	    case '(': case '[': case '{':		input = InputParen;		if ( state == StateStandard ||		     state == StateNumber ||		     state == StatePreProcessor ||		     state == StateCCommentEnd2 ||		     state == StateCCommentEnd1 ||		     state == StateString2End ||		     state == StateStringEnd )		    paragData->parenList << Paren( Paren::Open, c, i );		break;	    case ')': case ']': case '}':		input = InputParen;		if ( state == StateStandard ||		     state == StateNumber ||		     state == StatePreProcessor ||		     state == StateCCommentEnd2 ||		     state == StateCCommentEnd1 ||		     state == StateString2End ||		     state == StateStringEnd )		    paragData->parenList << Paren( Paren::Closed, c, i );		break;	    case '#':		input = InputHash;		break;	    case '"':		input = InputQuotation;		break;	    case '\'':		input = InputApostrophe;		break;	    case ' ':		input = InputSpace;		break;	    case '1': case '2': case '3': case '4': case '5':	    case '6': case '7': case '8': case '9': case '0':		if ( alphabeth.find( lastChar ) != -1 &&		     ( mathChars.find( lastChar ) == -1 || numbers.find( string->at( i - 1 )->c ) == -1 ) ) {		    input = InputAlpha;		} else {		    if ( input == InputAlpha && numbers.find( lastChar ) != -1 )			input = InputAlpha;		    else			input = InputNumber;		}		break;	    case ':': {		input = InputAlpha;		QChar nextChar = ' ';		if ( i < string->length() - 1 )		    nextChar = string->at( i + 1 )->c;		if ( state == StateStandard && !questionMark && lastChar != ':' && nextChar != ':' ) {		    for ( int j = 0; j < i; ++j ) {			if ( string->at( j )->format() == formatStandard )			    string->setFormat( j, 1, formatLabel, FALSE );		    }		}	    } break;	    default: {		if ( !questionMark && c == '?' )		    questionMark = TRUE;		if ( c.isLetter() || c == '_' )		    input = InputAlpha;		else		    input = InputSep;	    } break;	    }	}	lastWasBackSlash = !lastWasBackSlash && c == '\\';	if ( input == InputAlpha )	    buffer += c;    	state = table[ state ][ input ];	switch ( state ) {	case StateStandard: {	    int len = buffer.length();	    string->setFormat( i, 1, formatStandard, FALSE );	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    if ( buffer.length() > 0 && input != InputAlpha ) {		if ( buffer[ 0 ] == 'Q' ) {		    string->setFormat( i - buffer.length(), buffer.length(), formatType, FALSE );		} else {		    QMap<int, QMap<QString, int > >::Iterator it = wordMap->find( len );		    if ( it != wordMap->end() ) {			QMap<QString, int >::Iterator it2 = ( *it ).find( buffer );			if ( it2 != ( *it ).end() )			    string->setFormat( i - buffer.length(), buffer.length(), format( ( *it2 ) ), FALSE );		    }		}		buffer = QString::null;	    }	} break;	case StateCommentStart1:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = TRUE;	    buffer = QString::null;	    break;	case StateCCommentStart2:	    string->setFormat( i - 1, 2, formatComment, FALSE );	    makeLastStandard = FALSE;	    buffer = QString::null;	    break;	case StateCppCommentStart2:	    string->setFormat( i - 1, 2, formatComment, FALSE );	    makeLastStandard = FALSE;	    buffer = QString::null;	    break;	case StateCComment:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatComment, FALSE );	    buffer = QString::null;	    break;	case StateCppComment:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatComment, FALSE );	    buffer = QString::null;	    break;	case StateCCommentEnd1:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatComment, FALSE );	    buffer = QString::null;	    break;	case StateCCommentEnd2:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatComment, FALSE );	    buffer = QString::null;	    break;	case StateStringStart:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatStandard, FALSE );	    buffer = QString::null;	    break;	case StateString:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatString, FALSE );	    buffer = QString::null;	    break;	case StateStringEnd:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatStandard, FALSE );	    buffer = QString::null;	    break;	case StateString2Start:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatStandard, FALSE );	    buffer = QString::null;	    break;	case StateString2:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatString, FALSE );	    buffer = QString::null;	    break;	case StateString2End:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatStandard, FALSE );	    buffer = QString::null;	    break;	case StateNumber:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatNumber, FALSE );	    buffer = QString::null;	    break;	case StatePreProcessor:	    if ( makeLastStandard )		string->setFormat( i - 1, 1, formatStandard, FALSE );	    makeLastStandard = FALSE;	    string->setFormat( i, 1, formatPreProcessor, FALSE );	    buffer = QString::null;	    break;	}	lastChar = c;	i++;	if ( i >= string->length() )	    break;    }    string->setExtraData( paragData );    int oldEndState = string->endState();    if ( state == StateCComment ||	 state == StateCCommentEnd1 ) {	string->setEndState( StateCComment );    } else if ( state == StateString ) {	string->setEndState( StateString );    } else if ( state == StateString2 ) {	string->setEndState( StateString2 );    } else {	string->setEndState( StateStandard );    }    string->setFirstPreProcess( FALSE );    QTextParagraph *p = string->next();    if ( (!!oldEndState || !!string->endState()) && oldEndState != string->endState() &&	 invalidate && p && !p->firstPreProcess() && p->endState() != -1 ) {	while ( p ) {	    if ( p->endState() == -1 )		return;	    p->setEndState( -1 );	    p = p->next();	}    }}QTextFormat *SyntaxHighlighter_CPP::format( int id ){    if ( lastFormatId == id  && lastFormat )	return lastFormat;    QTextFormat *f = formats[ id ];    lastFormat = f ? f : formats[ 0 ];    lastFormatId = id;    return lastFormat;}void SyntaxHighlighter_CPP::addFormat( int id, QTextFormat *f ){    formats.insert( id, f );}void SyntaxHighlighter_CPP::removeFormat( int id ){    formats.remove( id );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -