Trees | Indices | Help |
---|
|
1 from xml.sax import handler 2 3 from Martel import * 4 from Martel import Parser, optimize, Expression 57 format = Group(None, Group("test", Str("A"))) 8 assert format.name is None 9 format2 = optimize.optimize(format) 10 assert format.name is None # must not affect original expressions 11 assert format2.name == "test" # got rid of top level 12 assert format2.expression.string == "A"1315 format = Group("test", Group(None, Str("A"))) 16 format = optimize.optimize(format) 17 assert format.name == "test" 18 assert format.expression.string == "A"1921 format = optimize.optimize(Rep1(Group(None, Str("A")))) 22 assert format.expression.string == "A"2325 format = optimize.optimize(Group(None, Group(None, Group(None, Str("A"))))) 26 assert format.string == "A"2729 format = optimize.optimize(Group(None, Str("A")) + \ 30 Group("B", Str("B")) + \ 31 Group(None, Str("C"))) 32 assert format.expressions[0].string == "A" 33 assert format.expressions[1].expression.string == "B" 34 assert format.expressions[2].string == "C"35 3941 format = optimize.optimize(Str("A") + Str("B") + Str("C") + Str("D")) 42 assert format.string == "ABCD"43 4749 # Shows that subexpressions are combined first 50 format = optimize.optimize(Str("A") + (Str("B") + Str("C"))) 51 assert format.string == "ABC"52 56 60 6466 format = optimize.optimize(Expression.Any("A") + \ 67 Expression.Any("B") + \ 68 Expression.Any("C") + \ 69 ((Expression.Any("D") + \ 70 Expression.Any("E")) + \ 71 Expression.Any("F"))) 72 assert format.string == "ABCDEF"7375 format = optimize.optimize(Str("A") + Expression.Any("B", invert = 1)) 76 assert isinstance(format, Expression.Seq)77 81 8587 format = optimize.optimize(Str("A") + Expression.Literal("B", invert = 1)) 88 assert isinstance(format, Expression.Seq)8991 format = optimize.optimize( 92 Group(None, Group(None, Str("A") + Str("B")) + Str("C")) + \ 93 Group(None, Str("D") + Expression.Any("E") + \ 94 Group(None, Str("FG") + Str("H")) + Group(None, Str("I")))) 95 assert format.string == "ABCDEFGHI"9698 exp = Re("This is a test") 99 assert isinstance(exp, Expression.Seq) 100 assert exp.expressions[0].char == "T" 101 assert exp.expressions[-1].char == "t" 102 format = optimize.optimize(exp) 103 assert format.string == "This is a test"104 115 116118 parser = exp.make_parser() 119 err = GetErrorPos() 120 parser.setErrorHandler(err) 121 parser.parseString(text) 122 return err.pos123 124126 test_format = Group("full_format", 127 Rep(Group("a_record", 128 Str("A") + Opt(Str("B")) + Str("\n"))) + \ 129 Str("Z")) 130 131 text = "A\nAC\nAB\nZ" 132 pos = check_error_pos(text, test_format) 133 assert pos == 0 134 135 format = select_names(test_format, ()) 136 format = optimize.optimize(format) 137 pos = check_error_pos(text, format) 138 assert pos == 2139 161 162 if __name__ == "__main__": 163 test() 164
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Thu Dec 25 10:44:18 2008 | http://epydoc.sourceforge.net |