view regexParser/test/ccMerge.cc @ 208:2ec95755238e

fix mergetest
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Sun, 27 Dec 2015 18:46:08 +0900
parents e5302c2f6e00
children 11b6332f0a42
line wrap: on
line source

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "regexParser.h"
#include "node.h"
#include "subsetConstraction.h"

void printCCTree(CharClassPtr cc) {
    if (cc->left != NULL) {
        printCCTree(cc->left);
    }

    printf("range : [%c-%c] NextState : %lu\n",(unsigned char)cc->cond.range.begin,(unsigned char)cc->cond.range.end, cc->nextState.bitContainer);

    if (cc->right != NULL) {
        printCCTree(cc->right);
    }
}

int main(int argc, char **argv)
{
    RegexInfo riRegex;
    NodePtr n = NULL;
    StatePtr s = NULL;
    TGValue tgv = createTGValue();
    for (int i = 1; i < argc; i++) {
        if (strcmp(argv[i],"-regex") == 0) {
            riRegex.ptr = (unsigned char*)argv[i+1]; i++;
            printf("regex : %s\n",riRegex.ptr);
            NodePtr nMerge = regex(&riRegex);
            StatePtr sMerge = createState(tgv,nMerge);
            setState(sMerge->cc,sMerge->bitState);
            if (s == NULL) {
                s = sMerge;
                n = nMerge;
                printCCTree(s->cc);
                continue;
            }
            CharClassPtr cc = mergeTransition(s,sMerge->cc);
            s->cc = cc;
            printCCTree(s->cc);
        }
    }
    return 0;
}