mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-10-01 20:17:42 +03:00
ng: split NGWrapper into NGHolder, ExpressionInfo
We now use NGHolder for all graph information, while other expression properties (report, flag information, etc) go in new class ExpressionInfo.
This commit is contained in:
committed by
Matthew Barr
parent
fadfab6d8c
commit
5dfae12a62
@@ -159,13 +159,15 @@ public:
|
||||
ConstructLiteralVisitor::~ConstructLiteralVisitor() {}
|
||||
|
||||
/** \brief True if the literal expression \a expr could be added to Rose. */
|
||||
bool shortcutLiteral(NG &ng, const ParsedExpression &expr) {
|
||||
assert(expr.component);
|
||||
bool shortcutLiteral(NG &ng, const ParsedExpression &pe) {
|
||||
assert(pe.component);
|
||||
|
||||
if (!ng.cc.grey.allowLiteral) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const auto &expr = pe.expr;
|
||||
|
||||
// XXX: don't shortcut literals with extended params (yet)
|
||||
if (expr.min_offset || expr.max_offset != MAX_OFFSET || expr.min_length ||
|
||||
expr.edit_distance) {
|
||||
@@ -175,8 +177,8 @@ bool shortcutLiteral(NG &ng, const ParsedExpression &expr) {
|
||||
|
||||
ConstructLiteralVisitor vis;
|
||||
try {
|
||||
assert(expr.component);
|
||||
expr.component->accept(vis);
|
||||
assert(pe.component);
|
||||
pe.component->accept(vis);
|
||||
assert(vis.repeat_stack.empty());
|
||||
} catch (const ConstructLiteralVisitor::NotLiteral&) {
|
||||
DEBUG_PRINTF("not a literal\n");
|
||||
@@ -196,7 +198,8 @@ bool shortcutLiteral(NG &ng, const ParsedExpression &expr) {
|
||||
}
|
||||
|
||||
DEBUG_PRINTF("constructed literal %s\n", dumpString(lit).c_str());
|
||||
return ng.addLiteral(lit, expr.index, expr.id, expr.highlander, expr.som);
|
||||
return ng.addLiteral(lit, expr.index, expr.report, expr.highlander,
|
||||
expr.som);
|
||||
}
|
||||
|
||||
} // namespace ue2
|
||||
|
Reference in New Issue
Block a user