mirror of
git://sourceware.org/git/glibc.git
synced 2025-02-11 12:50:58 +08:00
02f3550c8b
Update. 2004-12-13 Paolo Bonzini <bonzini@gnu.org> Separate parsing and creation of the NFA. Avoided recursion on the (very unbalanced) parse tree. [BZ #611] * posix/regcomp.c (struct subexp_optimize, analyze_tree, calc_epsdest, re_dfa_add_tree_node, mark_opt_subexp_iter): Removed. (optimize_subexps, duplicate_tree, calc_first, calc_next, mark_opt_subexp): Rewritten. (preorder, postorder, lower_subexps, lower_subexp, link_nfa_nodes, create_token_tree, free_tree, free_token): New. (analyze): Accept a regex_t *. Invoke the passes via the preorder and postorder generic visitors. Do not initialize the fields in the re_dfa_t that represent the transitions. (free_dfa_content): Use free_token. (re_compile_internal): Analyze before UTF-8 optimizations. Do not include optimization of subexpressions. (create_initial_state): Fetch the DFA node index from the first node's bin_tree_t *. (optimize_utf8): Abort on unexpected nodes, including OP_DUP_QUESTION. Return on COMPLEX_BRACKET. (duplicate_node_closure): Fix comment. (duplicate_node): Do not initialize the fields in the re_dfa_t that represent the transitions. (calc_eclosure, calc_inveclosure): Do not handle OP_DELETED_SUBEXP. (create_tree): Remove final argument. All callers adjusted. Rewritten to use create_token_tree. (parse_reg_exp, parse_branch, parse_expression, parse_bracket_exp, build_charclass_op): Use create_tree or create_token_tree instead of re_dfa_add_tree_node. (parse_dup_op): Likewise. Also free the tree using free_tree for "<re>{0}", and lower OP_DUP_QUESTION to OP_ALT: "a?" is equivalent to "a|". Adjust invocation of mark_opt_subexp. (parse_sub_exp): Create a single SUBEXP node. * posix/regex_internal.c (re_dfa_add_node): Remove last parameter, always perform as if it was 1. Do not initialize OPT_SUBEXP and DUPLICATED, and initialize the DFA fields representing the transitions. * posix/regex_internal.h (re_dfa_add_node): Adjust prototype. (re_token_type_t): Move OP_DUP_PLUS and OP_DUP_QUESTION to the tokens section. Add a tree-only code SUBEXP. Remove OP_DELETED_SUBEXP. (bin_tree_t): Include a full re_token_t for TOKEN. Turn FIRST and NEXT into pointers to trees. Remove ECLOSURE. 2004-12-28 Paolo Bonzini <bonzini@gnu.org > [BZ #605] * posix/regcomp.c (parse_bracket_exp): Do not modify DFA nodes that were already created. * posix/regex_internal.c (re_dfa_add_node): Set accept_mb field in the token if needed. (create_ci_newstate, create_cd_newstate): Set accept_mb field from the tokens' field. * posix/regex_internal.h (re_token_t): Add accept_mb field. (ACCEPT_MB_NODE): Removed. * posix/regexec.c (proceed_next_node, transit_states_mb, build_sifted_states, check_arrival_add_next_nodes): Use accept_mb instead of ACCEPT_MB_NODE. |
||
---|---|---|
.. | ||
bits | ||
glob | ||
rxspencer | ||
sys | ||
.cvsignore | ||
annexc.c | ||
BOOST.tests | ||
bsd-getpgrp.c | ||
bug-ga1.c | ||
bug-ga2.c | ||
bug-glob1.c | ||
bug-glob2.c | ||
bug-regex1.c | ||
bug-regex2.c | ||
bug-regex3.c | ||
bug-regex4.c | ||
bug-regex5.c | ||
bug-regex6.c | ||
bug-regex7.c | ||
bug-regex8.c | ||
bug-regex9.c | ||
bug-regex10.c | ||
bug-regex11.c | ||
bug-regex12.c | ||
bug-regex13.c | ||
bug-regex14.c | ||
bug-regex15.c | ||
bug-regex16.c | ||
bug-regex17.c | ||
bug-regex18.c | ||
bug-regex19.c | ||
bug-regex20.c | ||
bug-regex21.c | ||
bug-regex22.c | ||
bug-regex23.c | ||
bug-regex24.c | ||
confstr.c | ||
cpio.h | ||
Depend | ||
execl.c | ||
execle.c | ||
execlp.c | ||
execv.c | ||
execvp.c | ||
fnmatch_loop.c | ||
fnmatch.c | ||
fnmatch.h | ||
getconf.c | ||
getopt1.c | ||
getopt_init.c | ||
getopt_int.h | ||
getopt.c | ||
getopt.h | ||
glob.h | ||
globtest.c | ||
globtest.sh | ||
Makefile | ||
PCRE.tests | ||
ptestcases.h | ||
PTESTS | ||
PTESTS2C.sed | ||
re_comp.h | ||
regcomp.c | ||
regex_internal.c | ||
regex_internal.h | ||
regex.c | ||
regex.h | ||
regexbug1.c | ||
regexec.c | ||
runptests.c | ||
runtests.c | ||
sched.h | ||
spawn_faction_addclose.c | ||
spawn_faction_adddup2.c | ||
spawn_faction_addopen.c | ||
spawn_faction_destroy.c | ||
spawn_faction_init.c | ||
spawn_int.h | ||
spawn.c | ||
spawn.h | ||
spawnattr_destroy.c | ||
spawnattr_getdefault.c | ||
spawnattr_getflags.c | ||
spawnattr_getpgroup.c | ||
spawnattr_getschedparam.c | ||
spawnattr_getschedpolicy.c | ||
spawnattr_getsigmask.c | ||
spawnattr_init.c | ||
spawnattr_setdefault.c | ||
spawnattr_setflags.c | ||
spawnattr_setpgroup.c | ||
spawnattr_setschedparam.c | ||
spawnattr_setschedpolicy.c | ||
spawnattr_setsigmask.c | ||
spawnp.c | ||
tar.h | ||
test-vfork.c | ||
testcases.h | ||
testfnm.c | ||
TESTS | ||
TESTS2C.sed | ||
transbug.c | ||
tst-boost.c | ||
tst-chmod.c | ||
tst-dir.c | ||
tst-exec.c | ||
tst-fnmatch.c | ||
tst-fnmatch.input | ||
tst-fork.c | ||
tst-getaddrinfo2.c | ||
tst-getaddrinfo.c | ||
tst-getconf.sh | ||
tst-getlogin.c | ||
tst-gnuglob.c | ||
tst-mmap.c | ||
tst-nanosleep.c | ||
tst-nice.c | ||
tst-pcre.c | ||
tst-preadwrite64.c | ||
tst-preadwrite.c | ||
tst-regex2.c | ||
tst-regex.c | ||
tst-regexloc.c | ||
tst-rxspencer.c | ||
tst-spawn.c | ||
tst-sysconf.c | ||
tst-truncate64.c | ||
tst-truncate.c | ||
tst-vfork1.c | ||
tst-vfork2.c | ||
tst-waitid.c | ||
tstgetopt.c | ||
unistd.h | ||
Versions | ||
wait.h | ||
wordexp-test.c | ||
wordexp-tst.sh | ||
wordexp.h |