static int tryBackSlashNewLine( void ) { int nc; // CurrChar is '\\' and SrcFile->column is up to date Blank1Count = 0; Blank2Count = 0; Tab1Count = 0; nc = getTestCharFromFile(); if( CompFlags.extensions_enabled ) { while( nc == ' ' ) { ++Blank1Count; nc = getTestCharFromFile(); } while( nc == '\t' ) { ++Tab1Count; nc = getTestCharFromFile(); } while( nc == ' ' ) { ++Blank2Count; nc = getTestCharFromFile(); } } if( nc == '\r' ) { nc = getTestCharFromFile(); } if( nc == '\n' ) { if( CompFlags.scanning_cpp_comment && NestLevel == SkipLevel ) { CWarn1( WARN_SPLICE_IN_CPP_COMMENT, ERR_SPLICE_IN_CPP_COMMENT ); } if( CompFlags.cpp_output ) { /* 30-may-95 */ if( CompFlags.in_pragma ) { CppPrtChar( '\\' ); CppPrtChar( '\n' ); } else if( CompFlags.cpp_line_wanted ) { CppPrtChar( '\n' ); } } SrcFile->src_line_cnt++; SrcFile->src_loc.line++; SrcFileLoc = SrcFile->src_loc; // SrcFile->column = 0; return( GetNextChar() ); } LastChar = nc; NextChar = getCharAfterBackSlash; return( '\\' ); }
TOKEN ChkControl( void ) { int lines_skipped; ppctl_t old_ppctl; if( !CompFlags.doing_macro_expansion ) { if( CompFlags.cpp_output ) { PrintWhiteSpace = FALSE; } } while( CurrChar == '\n' ) { if( TBreak() ) { CErr1( ERR_BREAK_KEY_HIT ); CSuicide(); } lines_skipped = 0; old_ppctl = CompFlags.pre_processing; for( ; CurrChar != EOF_CHAR; ) { if( CompFlags.cpp_output ) { CppPrtChar( '\n' ); } NextChar(); if( CurrChar != PreProcChar ) { SkipAhead(); } if( CurrChar == EOF_CHAR ) break; if( CurrChar == PreProcChar ) { /* start of comp control line */ PPCTL_ENABLE_EOL(); PPCTL_DISABLE_MACROS(); PreProcStmt(); PPFlush2EOL(); CompFlags.pre_processing = old_ppctl; } else if( NestLevel != SkipLevel ) { PPCTL_ENABLE_EOL(); PPCTL_DISABLE_MACROS(); PPNextToken(); /* get into token mode */ PPFlush2EOL(); CompFlags.pre_processing = old_ppctl; } if( NestLevel == SkipLevel ) break; if( CurrChar == '\n' ) { lines_skipped = 1; } } if( CompFlags.cpp_output ) { if( lines_skipped ) { if( SrcFile != NULL ) { /* 14-may-92 */ EmitLine( SrcFile->src_loc.line, SrcFile->src_name ); } } } } // we have already skipped past all white space at the start of the line CurToken = T_WHITE_SPACE; // CurToken = ScanToken(); return( T_WHITE_SPACE ); }