mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-11-17 01:41:51 +03:00
variableScope
This commit is contained in:
@@ -109,20 +109,20 @@ void ComponentAlternation::append(unique_ptr<Component> component) {
|
||||
vector<PositionInfo> ComponentAlternation::first() const {
|
||||
// firsts come from all our subcomponents in position order. This will
|
||||
// maintain left-to-right priority order.
|
||||
vector<PositionInfo> firsts, subfirsts;
|
||||
vector<PositionInfo> firsts;
|
||||
|
||||
for (const auto &c : children) {
|
||||
subfirsts = c->first();
|
||||
vector<PositionInfo> subfirsts = c->first();
|
||||
firsts.insert(firsts.end(), subfirsts.begin(), subfirsts.end());
|
||||
}
|
||||
return firsts;
|
||||
}
|
||||
|
||||
vector<PositionInfo> ComponentAlternation::last() const {
|
||||
vector<PositionInfo> lasts, sublasts;
|
||||
vector<PositionInfo> lasts;
|
||||
|
||||
for (const auto &c : children) {
|
||||
sublasts = c->last();
|
||||
vector<PositionInfo> sublasts = c->last();
|
||||
lasts.insert(lasts.end(), sublasts.begin(), sublasts.end());
|
||||
}
|
||||
return lasts;
|
||||
|
||||
@@ -157,10 +157,10 @@ void ComponentSequence::finalize() {
|
||||
}
|
||||
|
||||
vector<PositionInfo> ComponentSequence::first() const {
|
||||
vector<PositionInfo> firsts, subfirsts;
|
||||
vector<PositionInfo> firsts;
|
||||
|
||||
for (const auto &c : children) {
|
||||
subfirsts = c->first();
|
||||
vector<PositionInfo> subfirsts = c->first();
|
||||
replaceEpsilons(firsts, subfirsts);
|
||||
if (!c->empty()) {
|
||||
break;
|
||||
@@ -229,12 +229,12 @@ void applyEpsilonVisits(vector<PositionInfo> &lasts,
|
||||
}
|
||||
|
||||
vector<PositionInfo> ComponentSequence::last() const {
|
||||
vector<PositionInfo> lasts, sublasts;
|
||||
vector<PositionInfo> lasts;
|
||||
vector<eps_info> visits(1);
|
||||
|
||||
auto i = children.rbegin(), e = children.rend();
|
||||
for (; i != e; ++i) {
|
||||
sublasts = (*i)->last();
|
||||
vector<PositionInfo> sublasts = (*i)->last();
|
||||
applyEpsilonVisits(sublasts, visits);
|
||||
lasts.insert(lasts.end(), sublasts.begin(), sublasts.end());
|
||||
if ((*i)->empty()) {
|
||||
|
||||
@@ -260,14 +260,14 @@ void ParsedLogical::parseLogicalCombination(unsigned id, const char *logical,
|
||||
u32 ekey, u64a min_offset,
|
||||
u64a max_offset) {
|
||||
u32 ckey = getCombKey(id);
|
||||
vector<LogicalOperator> op_stack;
|
||||
vector<u32> subid_stack;
|
||||
u32 lkey_start = INVALID_LKEY; // logical operation's lkey
|
||||
u32 paren = 0; // parentheses
|
||||
u32 digit = (u32)-1; // digit start offset, invalid offset is -1
|
||||
u32 subid = (u32)-1;
|
||||
u32 i;
|
||||
try {
|
||||
vector<LogicalOperator> op_stack;
|
||||
u32 paren = 0; // parentheses
|
||||
for (i = 0; logical[i]; i++) {
|
||||
if (isdigit(logical[i])) {
|
||||
if (digit == (u32)-1) { // new digit start
|
||||
|
||||
Reference in New Issue
Block a user