def cheesyPoofs():
    cbi = RuleBuilder()
    import sys
    text = open(sys.argv[1]).read()
    tokenList = EBNFLex.lexExp(text)
    tokenSource = Parser.ListTokenSource(tokenList)
    r = Parser.Parse(EBNFGrammar, tokenSource, cbi)

    import copy
    import time
    cbi2 = copy.deepcopy(cbi)

    print 'grammar loaded, removing dup rules'
    import Common
    t, nt = Common.siftTokens(cbi2.ruleList)
    beg = time.time()
    f = makeCores(cbi2.ruleList)
    end = time.time()

    print
    print 'new fasioned way:', end - beg, len(f)
    #for i in f:
    #    print i

    beg = time.time()
    cbi.removeDupes()
    end = time.time()

    print
    print 'old fasioned way:', end-beg, len(cbi.ruleList)
def cheesyPoofs():
    cbi = RuleBuilder()
    import sys
    text = open(sys.argv[1]).read()
    tokenList = EBNFLex.lexExp(text)
    tokenSource = Parser.ListTokenSource(tokenList)
    r = Parser.Parse(EBNFGrammar, tokenSource, cbi)

    import copy
    import time
    cbi2 = copy.deepcopy(cbi)

    print 'grammar loaded, removing dup rules'
    import Common
    t, nt = Common.siftTokens(cbi2.ruleList)
    beg = time.time()
    f = makeCores(cbi2.ruleList)
    end = time.time()

    print
    print 'new fasioned way:', end - beg, len(f)
    #for i in f:
    #    print i

    beg = time.time()
    cbi.removeDupes()
    end = time.time()

    print
    print 'old fasioned way:', end - beg, len(cbi.ruleList)
def loadGrammar(text, status = 1):
    if status:
        print 'loading grammar'
    cbi = RuleBuilder()
    tokenList = EBNFLex.lexExp(text)
    tokenSource = Parser.ListTokenSource(tokenList)
    r = Parser.Parse(EBNFGrammar, tokenSource, cbi)
    if status:
        print 'cleaning up generated rules'

    rules = makeCores(cbi.ruleList)
    for i in range(len(rules)):
        rules[i].ruleNumber = i

    return trim(rules)
def loadGrammar(text, status=1):
    if status:
        print 'loading grammar'
    cbi = RuleBuilder()
    tokenList = EBNFLex.lexExp(text)
    tokenSource = Parser.ListTokenSource(tokenList)
    r = Parser.Parse(EBNFGrammar, tokenSource, cbi)
    if status:
        print 'cleaning up generated rules'

    rules = makeCores(cbi.ruleList)
    for i in range(len(rules)):
        rules[i].ruleNumber = i

    return trim(rules)