//保留 //is( $r->insert(' ')->insert(' ')->dump(), // '[\\x07 {\\x05=>[\\x05] \\x06=>[\\x06]}]', 'dump pretty node' //); is($rt->_dump(['a', chr(7), 'b']), '[a \\x07 b]', 'dump pretty'); is($rt->_combine('?=', ['c', 'a', 'b']), '(?=[abc])', '_combine c a b'); is($rt->_combine('?=', ['c', 'ab', 'de']), '(?=ab|de|c)', '_combine c ab de'); is($rt->_combine('?=', ['in', 'og']), '(?=in|og)', '_combine in og'); is($rt->_combine('?=', ['in', 'og', 'j', 'k', 'l']), '(?=[jkl]|in|og)', '_combine in og j k l'); is($rt->_combine('?=', ['in', 'og', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']), '(?=\\d|in|og)', '_combine in og 0 1 ... 9'); is_deeply($rt->_unrev_path([['x1' => ['x1', 'z\\d'], '' => 0]], $context), [['z\\d' => ['z\\d', 'x1'], '' => 0]], 'node(* metachar)'); is_deeply($rt->_unrev_path([['x' => ['x', '\\d'], '' => 0]], $context), [['\\d' => ['\\d', 'x'], '' => 0]], 'node(* metachar) 2'); is_deeply($rt->_unrev_path([['ab', 'cd', 'ef'], ['x1' => ['x1', 'y2', 'z\\d'], 'mx' => [['mx', 'us', 'ca']]]], $context), [['z\\d' => ['z\\d', 'y2', 'x1'], 'ca' => [['ca', 'us', 'mx']]], ['ef', 'cd', 'ab']], 'path(node)'); //{ // my $r = $r; is_deeply($r->lexstr('ab'), ['a', 'b'], "lexstr('ab')"); is_deeply($r->lexstr('a\\,b'), ['a', ',', 'b'], "lexstr('a\\,b')"); //} //eval { // my $ra = $r; // $ra->Default_Lexer( qr/\d+/ ); //}; //like( $@, // qr/^Cannot pass a Regexp::Assemble to Default_Lexer at \S+ line \d+/m, // 'Default_Lexer die' //); $r = new Regexp_Assemble(); is_deeply($r->_fastlex('ab+c{2,4}'), ['a', 'b+', 'c{2,4}'], '_fastlex reg plus min-max'); //my $x; is_deeply($x = $r->_fastlex('\\d+\\s{3,4}?\\Qa+\\E\\lL\\uu\\Ufoo\\E\\Lbar\\x40'), ['\\d+', '\\s{3,4}?', 'a', '\\+', 'l', 'U', 'F', 'O', 'O', 'b', 'a', 'r', '@'], '_fastlex backslash'); is_deeply($x = $r->_fastlex('\\Q\\L\\Ua+\\E\\Ub?\\Ec'), ['a', '\\+', 'B?', 'c'], '_fastlex in and out of quotemeta');