コード例 #1
0

def assignUsing(s):
    def assignPA(tokens):
        if s in tokens:
            tokens[tokens[s]] = tokens[0]
            del tokens[s]

    return assignPA


GROUP = (MARK + Group(
    ZeroOrMore((item + Optional(ATTRIBUTE)("attr")).setParseAction(
        assignUsing("attr")))) + (WORD("name") | UNMARK)).setParseAction(
            assignUsing("name"))
item << (NUMBER | FLOAT | STRING | BLOB | GROUP)

tests = """\
[ '10:1234567890' @name 25 @age +0.45 @percentage person:zed
[ [ "hello" 1 child root
[ "child" [ 200 '4:like' "I" "hello" things root
[ [ "data" [ 2 1 ] @numbers child root
[ [ 1 2 3 ] @test 4 5 6 root
""".splitlines()

for test in tests:
    if test:
        print(test)
        print(item.parseString(test).dump())
        print()
コード例 #2
0
def assignUsing(s):
    def assignPA(tokens):
        if s in tokens:
            tokens[tokens[s]] = tokens[0]
            del tokens[s]
    return assignPA
GROUP = (MARK + 
         Group( ZeroOrMore( 
                    (item + 
                     Optional(ATTRIBUTE)("attr")
                    ).setParseAction(assignUsing("attr"))
                )
               ) + 
         ( WORD("name") | UNMARK )
        ).setParseAction(assignUsing("name"))
item << (NUMBER | FLOAT | STRING | BLOB | GROUP )

tests = """\
[ '10:1234567890' @name 25 @age +0.45 @percentage person:zed
[ [ "hello" 1 child root
[ "child" [ 200 '4:like' "I" "hello" things root
[ [ "data" [ 2 1 ] @numbers child root
[ [ 1 2 3 ] @test 4 5 6 root
""".splitlines()

for test in tests:
    if test:
        print(test)
        print(item.parseString(test).dump())
        print()
コード例 #3
0
    a\u0062c
    a:b\c~2.0
    XY\u005a
    XY\u005A
    item:\ item:ABCD\
    \
    a\ or b    
    a\:b\-c
    a\:b\+c
    a\:b\-c\*
    a\:b\+c\*
    a\:b\-c\~
    a\:b\+c\~
    a:b\c~
    [ a\ TO a* ]
    """.splitlines()
    
allpass = True
for t in [_f for _f in map(str.strip,tests) if _f]:
    print(t)
    try:
        #~ expression.parseString(t,parseAll=True)
        print(expression.parseString(t,parseAll=True))
    except ParseException as pe:
        print(t)
        print(pe)
        allpass = False
    print()
    
print(("OK", "FAIL")[not allpass])