Пример #1
0
def testInvalid():
    testValidGrammar = r"""
testValid
<toolset>
def noX(node):
    if node.value == 'x':
        message = "'x' is an invalid letter."
        (pattern,pos,source) = (node.pattern,node.start,node.source)
        raise Invalidation(message, pattern=pattern, source=source,pos=pos)
<definition>
    x       : "x"           : noX
    letter  : [a..z]        : noX
    text    : letter{4..6}
"""

    make_parser = makeParser(testValidGrammar)
    parser = make_parser()

    source = "abcxyz"
    # check 'x' not matched alone
    parser.x.test('x')
    # check 'x' not matched in sequence
    parser.letter.test(source, "findAll")
    # check repetition match stops on 'x'
    parser.test(source)
Пример #2
0
def testInvalid():
    testValidGrammar = r"""
testValid
<toolset>
def noX(node):
    if node.value == 'x':
        message = "'x' is an invalid letter."
        (pattern,pos,source) = (node.pattern,node.start,node.source)
        raise Invalidation(message, pattern=pattern, source=source,pos=pos)
<definition>
    x       : "x"           : noX
    letter  : [a..z]        : noX
    text    : letter{4..6}
"""

    make_parser = makeParser(testValidGrammar)
    parser = make_parser()

    source = "abcxyz"
    # check 'x' not matched alone
    parser.x.test('x')
    # check 'x' not matched in sequence
    parser.letter.test(source, "findAll")
    # check repetition match stops on 'x'
    parser.test(source)
Пример #3
0
def do():
    ''' write parser from grammar '''
    # get source grammar from command line argument
    try:
        grammar = file(arguments[1], 'r').read()
    except IndexError:
        message = ("\nCall Format:\n"
                   "\tpython gen.py grammar_file_name\n"
                   "or\n"
                   "\tpython gen.py grammar_file_name  parserFileName\n\n")
        write(message)
        end()
    # write parser into target file
    try:
        parserFile = file(arguments[2], 'w')
        makeParser(grammar, parserFile)
    except Exception:
        makeParser(grammar)
Пример #4
0
def do():
    ''' write parser from grammar '''
    # get source grammar from command line argument
    try:
        grammar = file(arguments[1], 'r').read()
    except IndexError:
        message = ("\nCall Format:\n"
                   "\tpython gen.py grammar_file_name\n"
                   "or\n"
                   "\tpython gen.py grammar_file_name  parserFileName\n\n"
                   )
        write(message)
        end()
    # write parser into target file
    try:
        parserFile = file(arguments[2], 'w')
        makeParser(grammar, parserFile)
    except Exception:
        makeParser(grammar)
Пример #5
0
def testGrammar():
    print("=== parser from grammar ===")
    grammar = r"""
testParser
<definition>
    w1 : "foo"
    w2 : "bar"
    ch : w1 / w2
"""
    make_parser = makeParser(grammar)
    parser = make_parser()
    print "parser       :", parser
    print "top pattern  :", parser.topPattern
    parser.test("barfoz")
Пример #6
0
def testGrammar():
    print ("=== parser from grammar ===")
    grammar = r"""
testParser
<definition>
    w1 : "foo"
    w2 : "bar"
    ch : w1 / w2
"""
    make_parser = makeParser(grammar)
    parser = make_parser()
    print "parser       :", parser
    print "top pattern  :", parser.topPattern
    parser.test("barfoz")
Пример #7
0
#~ grammar = """
#~ genTest
#~ <toolset>
#~ pass
#~ <definition>
#~ X	: 'x'
#~ XX	: X XXX			: join
#~ XXX	: XX / X		: @
#~ """
#~ parser = makeParser(grammar)
#~ source = r"""x xxx xxxxx"""
#~ parser.test(source,"findAll")
#~ end()

make_parser = makeParser(grammar)
parser = make_parser()

# test it
sources = """\
1
- 1.1
1.1 * -2
-3 + +4.4
-3 ++4.4
3 *-4.4
9*8*7*6*5
1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1
9+8+7+6+5
3*(2+1)
1*4 + 3*2
Пример #8
0
#~ grammar = """
#~ genTest
#~ <toolset>
#~ pass
#~ <definition>
#~ X	: 'x'
#~ XX	: X XXX			: join
#~ XXX	: XX / X		: @
#~ """
#~ parser = makeParser(grammar)
#~ source = r"""x xxx xxxxx"""
#~ parser.test(source,"findAll")
#~ end()

make_parser = makeParser(grammar)
parser = make_parser()

# test it
sources = """\
1
- 1.1
1.1 * -2
-3 + +4.4
-3 ++4.4
3 *-4.4
9*8*7*6*5
1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1
9+8+7+6+5
3*(2+1)
1*4 + 3*2