]> granicus.if.org Git - re2c/commit
Don't copy <*> regexps for each condition.
authorUlya Trofimovich <skvadrik@gmail.com>
Sat, 16 May 2015 11:01:58 +0000 (12:01 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Sat, 16 May 2015 11:01:58 +0000 (12:01 +0100)
commitd1ebc4435226d18c18b49aa11e84c145d74ff6a3
tree71e13f6c24b47ec9e96e743d31d72ecdb8e7422a
parentebea1d58ff72b562ec2765b89eb4f716f0d39ea8
Don't copy <*> regexps for each condition.

There're two major things to care about in this situation:
1. <*> rules must have the lowest priority: in order to guarantee
   it, we re-iterate <*> regexps after all other rules have been
   parsed and fix <*> regexps priority.
2. <*> regexps must be compiled to instrictions separately for each
   condition: this is guaranteed by assigning them
   're2c::RegExp::PRIVATE' attribute.

Note that 're2c::RuleOp::accept' member stores rule priority.
These priorities don't have to be consecutive, only the right order
must be maintained. Later on in 're2c::DFA::prepare' they result in
consecutive 'yyaccept' values.
re2c/bootstrap/parser.cc
re2c/doc/re2c.ad.in
re2c/src/dfa/actions.cc
re2c/src/dfa/re.h
re2c/src/parse/parser.ypp
re2c/src/parse/token.h