Ejemplo n.º 1
0
void AbstractAligner::align_block(Block* block) const {
    TimeIncrementer ti(this);
    if (!alignment_needed(block)) {
        return;
    }
    Fragments fragments((block->begin()), block->end());
    Strings rows;
    BOOST_FOREACH (Fragment* f, fragments) {
        rows.push_back(f->str(/* gap */ 0));
    }
Ejemplo n.º 2
0
static void
genextend(graph *g, int n2, int *deg, int ne, boolean rigid, int xlb, int xub)
/* extend from n2 to n2+1 */
{
    int x,y,d;
    int *xorb,xc;
    int nx,i,j,imin,imax,dmax;
    int xlbx,xubx,n;
    graph gx[MAXN];
    int degx[MAXN];
    boolean rigidx;
    int dneed,need,nfeet,hideg,deg1,ft[MAXN],nfrag,frag[MAXN];

#ifdef INSTRUMENT
    boolean haschild;

    haschild = FALSE;
    ++nodes[n2];
    if (rigid) ++rigidnodes[n2];
#endif

    n = n1 + n2;
    nx = n2 + 1;
    dmax = deg[n-1];

    d = 0;
    dneed = mindeg1 - maxn2 + n2;
    need = 0;
    hideg = 0;
    deg1 = 0;
    for (i = 0; i < n1; ++i)
    {
        if (deg[i] == maxdeg1) d |= xbit[i];
        if (deg[i] <= dneed) need |= xbit[i];
        if (deg[i] >= 2) hideg |= xbit[i];
        if (deg[i] == 1) deg1 |= xbit[i];
    }

    if (xlb < XPOPCOUNT(need)) xlb = XPOPCOUNT(need);
    if (xlb > xub) return;

    imin = xstart[xlb];
    imax = xstart[xub+1];
    xorb = data[n2].xorb;

    if (nx == maxn2)
    {
        if (footfree)
        {
            nfeet = 0;
            for (j = 0; j < n2; ++j)
            {
                x = xval[j] & hideg;
                IFLE1BITS(x) ft[nfeet++] = xval[j] & deg1;
            }
        }
        if (cutfree) fragments(xval,n2,frag,&nfrag);

        for (i = imin; i < imax; ++i)
        {
            if (!rigid && xorb[i] != i) continue;
            x = xset[i];
            xc = xcard[i];
            if ((x & d) != 0) continue;
            if ((need & ~x) != 0) continue;

            if (simple)
            {
                for (j = n2; --j >= 0;)
                    if (x == xval[j]) break;
                if (j >= 0) continue;
            }
            if (maxcommon >= 0)
            {
                for (j = n2; --j >= 0;)
                {
                    y = x & xval[j];
                    if (XPOPCOUNT(y) > maxcommon) break;
                }
                if (j >= 0) continue;
            }
	    if (antichain)
	    {
		for (j = 0; j < n2; ++j)
		    if ((xval[j] & ~x) == 0) break;
		if (j < n2) continue;
	    }
            if (footfree)
            {
                y = x & (hideg | deg1);
                IFLE1BITS(y) continue;
                for (j = 0; j < nfeet; ++j)
                    if ((x & ft[j]) == 0) break;
                if (j < nfeet) continue;
            }
            if (cutfree)
            {
                y = x & (hideg | deg1);
                IFLE1BITS(y) continue;
                for (j = 0; j < nfrag; ++j)
                    if ((x & frag[j]) == 0) break;
                if (j < nfrag) continue;
            }

            xval[n2] = x;

            if (nx == nprune)
            {
                if (curres == 0) curres = mod;
#ifdef SPLITTEST
                --curres;
                ++splitcases;
                continue;
#else
                if (--curres != 0) continue;
#endif
            }
            if (accept2(g,n2,x,gx,deg,xc > dmax))
                if (!connec || isconnected(gx,n+1))
                {
                    ADDBIG(ecount[ne+xc],1);
#ifdef INSTRUMENT
                    haschild = TRUE;
#endif
                    (*outproc)(outfile,canonise ? gcan : gx,n1,n2+1);
                }
        }
    }
    else
    {
        for (i = imin; i < imax; ++i)
Ejemplo n.º 3
0
void handleIO() {
#ifdef FILE_IO
    std::string problem = "11557";
    std::ifstream inFile(problem + "_in.txt");
    std::streambuf *cinbuf = std::cin.rdbuf(); //save old buf
    std::cin.rdbuf(inFile.rdbuf()); //redirect std::cin to inFile!

    std::ofstream outFile(problem + "_out.txt");
    std::streambuf *coutbuf = std::cout.rdbuf();
    std::cout.rdbuf(outFile.rdbuf());
#endif

    int n = 0;

    while (std::cin >> n) {
        std::vector<code_fragment> fragments(n);
        std::vector<std::string> file_names(n);

        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        // n file names and n code fragments
        for (int i = 0; i < n; i++) {
            // input file name
            std::getline(std::cin, file_names[i]);
            // std::cout << "got file name " << file_names[i] << std::endl;

            // input code fragment
            std::string line;
            while (std::getline(std::cin, line) && line != "***END***") {
                std::string tline = reduce(line);
                if (tline.length() > 0)
                    fragments[i].push_back(tline);
            }
        }

        // input repo code fragment
        code_fragment repo_fragment;
        std::string line;
        while (std::getline(std::cin, line) && line != "***END***") {
            std::string tline = reduce(line);
            if (tline.length() > 0)
                repo_fragment.push_back(tline);
        }

        int maxLen = 0;
        std::vector<int> lc_match(n);
        // compare repo code fragment with each code fragment
        for (int i = 0; i < n; i++) {
            lc_match[i] = longest_common_substr(fragments[i], repo_fragment);
            maxLen = std::max(maxLen, lc_match[i]);
        }

        if (maxLen == 0)
            std::cout <<0<< std::endl;
        else {
            std::cout << maxLen;
            for (int i = 0; i < n; i++) {
                auto len_match = lc_match[i];
                if (len_match == maxLen)
                    std::cout << " " << file_names[i];
            }
            std::cout << std::endl;
        }
    }

#ifdef FILE_IO
    std::cin.rdbuf(cinbuf);
    inFile.close();
    std::cout.rdbuf(coutbuf);
    outFile.close();
#endif
}
Ejemplo n.º 4
0
void IOSCfgParser::rule_ext() {
	
	try {      // for error handling
		{
		switch ( LA(1)) {
		case IP:
		case WORD:
		{
			ip_protocols();
			hostaddr_ext();
			if ( inputState->guessing==0 ) {
#line 320 "iosacl.g"
				importer->SaveTmpAddrToSrc(); *dbg << "(src) ";
#line 935 "IOSCfgParser.cpp"
			}
			hostaddr_ext();
			if ( inputState->guessing==0 ) {
#line 321 "iosacl.g"
				importer->SaveTmpAddrToDst(); *dbg << "(dst) ";
#line 941 "IOSCfgParser.cpp"
			}
			{
			switch ( LA(1)) {
			case TIME_RANGE:
			{
				time_range();
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case LOG:
			case LOG_INPUT:
			case FRAGMENTS:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case FRAGMENTS:
			{
				fragments();
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case LOG:
			case LOG_INPUT:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case LOG:
			case LOG_INPUT:
			{
				log();
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			break;
		}
		case ICMP:
		{
			match(ICMP);
			if ( inputState->guessing==0 ) {
#line 327 "iosacl.g"
				
				importer->protocol = LT(0)->getText();
				*dbg << "protocol " << LT(0)->getText() << " ";
				
#line 1065 "IOSCfgParser.cpp"
			}
			hostaddr_ext();
			if ( inputState->guessing==0 ) {
#line 331 "iosacl.g"
				importer->SaveTmpAddrToSrc(); *dbg << "(src) ";
#line 1071 "IOSCfgParser.cpp"
			}
			hostaddr_ext();
			if ( inputState->guessing==0 ) {
#line 332 "iosacl.g"
				importer->SaveTmpAddrToDst(); *dbg << "(dst) ";
#line 1077 "IOSCfgParser.cpp"
			}
			{
			if ((LA(1) == WORD || LA(1) == INT_CONST) && (_tokenSet_4.member(LA(2)))) {
				icmp_spec();
			}
			else if ((_tokenSet_5.member(LA(1))) && (_tokenSet_6.member(LA(2)))) {
			}
			else {
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			
			}
			{
			switch ( LA(1)) {
			case TIME_RANGE:
			{
				time_range();
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case LOG:
			case LOG_INPUT:
			case FRAGMENTS:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case FRAGMENTS:
			{
				fragments();
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case LOG:
			case LOG_INPUT:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case LOG:
			case LOG_INPUT:
			{
				log();
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			break;
		}
		case TCP:
		case UDP:
		{
			{
			switch ( LA(1)) {
			case TCP:
			{
				match(TCP);
				break;
			}
			case UDP:
			{
				match(UDP);
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			if ( inputState->guessing==0 ) {
#line 339 "iosacl.g"
				
				importer->protocol = LT(0)->getText();
				*dbg << "protocol " << LT(0)->getText() << " ";
				
#line 1230 "IOSCfgParser.cpp"
			}
			hostaddr_ext();
			if ( inputState->guessing==0 ) {
#line 343 "iosacl.g"
				importer->SaveTmpAddrToSrc(); *dbg << "(src) ";
#line 1236 "IOSCfgParser.cpp"
			}
			{
			switch ( LA(1)) {
			case P_EQ:
			case P_GT:
			case P_LT:
			case P_NEQ:
			case P_RANGE:
			{
				xoperator();
				if ( inputState->guessing==0 ) {
#line 344 "iosacl.g"
					importer->SaveTmpPortToSrc();
#line 1250 "IOSCfgParser.cpp"
				}
				break;
			}
			case HOST:
			case IPV4:
			case ANY:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			hostaddr_ext();
			if ( inputState->guessing==0 ) {
#line 345 "iosacl.g"
				importer->SaveTmpAddrToDst(); *dbg << "(dst) ";
#line 1270 "IOSCfgParser.cpp"
			}
			{
			switch ( LA(1)) {
			case P_EQ:
			case P_GT:
			case P_LT:
			case P_NEQ:
			case P_RANGE:
			{
				xoperator();
				if ( inputState->guessing==0 ) {
#line 346 "iosacl.g"
					importer->SaveTmpPortToDst();
#line 1284 "IOSCfgParser.cpp"
				}
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case LOG:
			case LOG_INPUT:
			case ESTABLISHED:
			case FRAGMENTS:
			case TIME_RANGE:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case ESTABLISHED:
			{
				established();
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case LOG:
			case LOG_INPUT:
			case FRAGMENTS:
			case TIME_RANGE:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case TIME_RANGE:
			{
				time_range();
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case LOG:
			case LOG_INPUT:
			case FRAGMENTS:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case FRAGMENTS:
			{
				fragments();
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case LOG:
			case LOG_INPUT:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case LOG:
			case LOG_INPUT:
			{
				log();
				break;
			}
			case ANTLR_USE_NAMESPACE(antlr)Token::EOF_TYPE:
			case NEWLINE:
			case IP:
			case QUIT:
			case WORD:
			case CERTIFICATE:
			case IOSVERSION:
			case HOSTNAME:
			case ACCESS_LIST:
			case PERMIT:
			case DENY:
			case VLAN:
			case CONTROLLER:
			case INTRFACE:
			case DESCRIPTION:
			case REMARK:
			case SHUTDOWN:
			case EXIT:
			case LINE_COMMENT:
			{
				break;
			}
			default:
			{
				throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
			}
			}
			}
			break;
		}
		default:
		{
			throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
		}
		}
		}
		if ( inputState->guessing==0 ) {
#line 352 "iosacl.g"
			
			*dbg << std::endl;
			
#line 1484 "IOSCfgParser.cpp"
		}
	}
	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
		if( inputState->guessing == 0 ) {
			reportError(ex);
			recover(ex,_tokenSet_1);
		} else {
			throw;
		}
	}
}