mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-11-17 01:41:51 +03:00
Merge branch 'develop' into wip-isildur-g-cppcheck-47-48-58
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;
|
||||
|
||||
@@ -320,7 +320,7 @@ void ComponentRepeat::wireRepeats(GlushkovBuildState &bs) {
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_PRINTF("wiring up %d optional repeats\n", copies - m_min);
|
||||
DEBUG_PRINTF("wiring up %u optional repeats\n", copies - m_min);
|
||||
for (u32 rep = MAX(m_min, 1); rep < copies; rep++) {
|
||||
vector<PositionInfo> lasts = m_lasts[rep - 1];
|
||||
if (rep != m_min) {
|
||||
|
||||
@@ -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
|
||||
@@ -284,7 +284,7 @@ void ParsedLogical::parseLogicalCombination(unsigned id, const char *logical,
|
||||
if (logical[i] == '(') {
|
||||
paren += 1;
|
||||
} else if (logical[i] == ')') {
|
||||
if (paren <= 0) {
|
||||
if (paren == 0) {
|
||||
throw LocatedParseError("Not enough left parentheses");
|
||||
}
|
||||
paren -= 1;
|
||||
|
||||
Reference in New Issue
Block a user