summaryrefslogtreecommitdiff
path: root/src/analysis/scan/grammar.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/scan/grammar.y')
-rw-r--r--src/analysis/scan/grammar.y135
1 files changed, 43 insertions, 92 deletions
diff --git a/src/analysis/scan/grammar.y b/src/analysis/scan/grammar.y
index 8298855..2d985a7 100644
--- a/src/analysis/scan/grammar.y
+++ b/src/analysis/scan/grammar.y
@@ -1356,15 +1356,17 @@ relational_expr : cexpression "<" cexpression
pattern_set : "them"
{
size_t __count;
- GSearchPattern **__patterns;
- size_t __i;
+ const GSearchPattern **__patterns;
__patterns = g_scan_rule_get_local_variables(*built_rule, NULL, &__count);
- $$ = g_scan_set_match_counter_new(__patterns, __count);
+ if (__patterns == NULL)
+ {
+ raise_error(_("No pattern found for \"them\""));
+ YYERROR;
+ }
- for (__i = 0; __i < __count; __i++)
- g_object_unref(G_OBJECT(__patterns[__i]));
+ $$ = g_scan_set_match_counter_new_shared(__patterns, __count);
free(__patterns);
@@ -1377,7 +1379,7 @@ relational_expr : cexpression "<" cexpression
pattern_set_items : BYTES_ID
{
- GSearchPattern *__pat;
+ const GSearchPattern *__pat;
__pat = g_scan_rule_get_local_variable(*built_rule, $1.data);
@@ -1397,20 +1399,17 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- $$ = g_scan_set_match_counter_new((GSearchPattern *[]) { __pat }, 1);
-
- g_object_unref(G_OBJECT(__pat));
+ $$ = g_scan_set_match_counter_new_shared((const GSearchPattern *[]) { __pat }, 1);
}
| BYTES_FUZZY_ID
{
size_t __count;
- GSearchPattern **__patterns;
- size_t __i;
+ const GSearchPattern **__patterns;
__patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count);
- if (__count == 0)
+ if (__patterns == NULL)
{
char *_msg;
int _ret;
@@ -1426,17 +1425,14 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- $$ = g_scan_set_match_counter_new(__patterns, __count);
-
- for (__i = 0; __i < __count; __i++)
- g_object_unref(G_OBJECT(__patterns[__i]));
+ $$ = g_scan_set_match_counter_new_shared(__patterns, __count);
free(__patterns);
}
| pattern_set_items "," BYTES_ID
{
- GSearchPattern *__pat;
+ const GSearchPattern *__pat;
GScanSetMatchCounter *__counter;
__pat = g_scan_rule_get_local_variable(*built_rule, $3.data);
@@ -1458,9 +1454,8 @@ relational_expr : cexpression "<" cexpression
}
__counter = G_SCAN_SET_MATCH_COUNTER($1);
- g_scan_set_match_counter_add_extra_patterns(__counter, (GSearchPattern *[]) { __pat }, 1);
-
- g_object_unref(G_OBJECT(__pat));
+ g_scan_set_match_counter_add_extra_shared_patterns(__counter,
+ (const GSearchPattern *[]) { __pat }, 1);
$$ = $1;
@@ -1468,13 +1463,12 @@ relational_expr : cexpression "<" cexpression
| pattern_set_items "," BYTES_FUZZY_ID
{
size_t __count;
- GSearchPattern **__patterns;
+ const GSearchPattern **__patterns;
GScanSetMatchCounter *__counter;
- size_t __i;
__patterns = g_scan_rule_get_local_variables(*built_rule, $3.data, &__count);
- if (__count == 0)
+ if (__patterns == NULL)
{
char *_msg;
int _ret;
@@ -1491,10 +1485,7 @@ relational_expr : cexpression "<" cexpression
}
__counter = G_SCAN_SET_MATCH_COUNTER($1);
- g_scan_set_match_counter_add_extra_patterns(__counter, __patterns, __count);
-
- for (__i = 0; __i < __count; __i++)
- g_object_unref(G_OBJECT(__patterns[__i]));
+ g_scan_set_match_counter_add_extra_shared_patterns(__counter, __patterns, __count);
free(__patterns);
@@ -1567,7 +1558,7 @@ relational_expr : cexpression "<" cexpression
_pattern_handler : BYTES_ID
{
- GSearchPattern *__pat;
+ const GSearchPattern *__pat;
__pat = g_scan_rule_get_local_variable(*built_rule, $1.data);
@@ -1587,22 +1578,17 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- else
- {
- $$ = g_scan_pattern_handler_new((GSearchPattern *[]) { __pat }, 1, SHT_RAW);
- g_object_unref(G_OBJECT(__pat));
- }
+ $$ = g_scan_pattern_handler_new_shared((const GSearchPattern *[]) { __pat }, 1, SHT_RAW);
}
| BYTES_FUZZY_ID
{
size_t __count;
- GSearchPattern **__patterns;
- size_t __i;
+ const GSearchPattern **__patterns;
__patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count);
- if (__count == 0)
+ if (__patterns == NULL)
{
char *_msg;
int _ret;
@@ -1618,17 +1604,14 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- $$ = g_scan_pattern_handler_new(__patterns, __count, SHT_RAW);
-
- for (__i = 0; __i < __count; __i++)
- g_object_unref(G_OBJECT(__patterns[__i]));
+ $$ = g_scan_pattern_handler_new_shared(__patterns, __count, SHT_RAW);
free(__patterns);
}
| BYTES_ID_COUNTER
{
- GSearchPattern *__pat;
+ const GSearchPattern *__pat;
__pat = g_scan_rule_get_local_variable(*built_rule, $1.data);
@@ -1648,22 +1631,17 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- else
- {
- $$ = g_scan_pattern_handler_new((GSearchPattern *[]) { __pat }, 1, SHT_COUNTER);
- g_object_unref(G_OBJECT(__pat));
- }
+ $$ = g_scan_pattern_handler_new_shared((const GSearchPattern *[]) { __pat }, 1, SHT_COUNTER);
}
| BYTES_FUZZY_ID_COUNTER
{
size_t __count;
- GSearchPattern **__patterns;
- size_t __i;
+ const GSearchPattern **__patterns;
__patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count);
- if (__count == 0)
+ if (__patterns == NULL)
{
char *_msg;
int _ret;
@@ -1679,17 +1657,14 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- $$ = g_scan_pattern_handler_new(__patterns, __count, SHT_COUNTER);
-
- for (__i = 0; __i < __count; __i++)
- g_object_unref(G_OBJECT(__patterns[__i]));
+ $$ = g_scan_pattern_handler_new_shared(__patterns, __count, SHT_COUNTER);
free(__patterns);
}
| BYTES_ID_START
{
- GSearchPattern *__pat;
+ const GSearchPattern *__pat;
__pat = g_scan_rule_get_local_variable(*built_rule, $1.data);
@@ -1709,22 +1684,17 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- else
- {
- $$ = g_scan_pattern_handler_new((GSearchPattern *[]) { __pat }, 1, SHT_START);
- g_object_unref(G_OBJECT(__pat));
- }
+ $$ = g_scan_pattern_handler_new_shared((const GSearchPattern *[]) { __pat }, 1, SHT_START);
}
| BYTES_FUZZY_ID_START
{
size_t __count;
- GSearchPattern **__patterns;
- size_t __i;
+ const GSearchPattern **__patterns;
__patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count);
- if (__count == 0)
+ if (__patterns == NULL)
{
char *_msg;
int _ret;
@@ -1740,17 +1710,14 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- $$ = g_scan_pattern_handler_new(__patterns, __count, SHT_START);
-
- for (__i = 0; __i < __count; __i++)
- g_object_unref(G_OBJECT(__patterns[__i]));
+ $$ = g_scan_pattern_handler_new_shared(__patterns, __count, SHT_START);
free(__patterns);
}
| BYTES_ID_LENGTH
{
- GSearchPattern *__pat;
+ const GSearchPattern *__pat;
__pat = g_scan_rule_get_local_variable(*built_rule, $1.data);
@@ -1770,22 +1737,17 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- else
- {
- $$ = g_scan_pattern_handler_new((GSearchPattern *[]) { __pat }, 1, SHT_LENGTH);
- g_object_unref(G_OBJECT(__pat));
- }
+ $$ = g_scan_pattern_handler_new_shared((const GSearchPattern *[]) { __pat }, 1, SHT_LENGTH);
}
| BYTES_FUZZY_ID_LENGTH
{
size_t __count;
- GSearchPattern **__patterns;
- size_t __i;
+ const GSearchPattern **__patterns;
__patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count);
- if (__count == 0)
+ if (__patterns == NULL)
{
char *_msg;
int _ret;
@@ -1801,17 +1763,14 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- $$ = g_scan_pattern_handler_new(__patterns, __count, SHT_LENGTH);
-
- for (__i = 0; __i < __count; __i++)
- g_object_unref(G_OBJECT(__patterns[__i]));
+ $$ = g_scan_pattern_handler_new_shared(__patterns, __count, SHT_LENGTH);
free(__patterns);
}
| BYTES_ID_END
{
- GSearchPattern *__pat;
+ const GSearchPattern *__pat;
__pat = g_scan_rule_get_local_variable(*built_rule, $1.data);
@@ -1831,22 +1790,17 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- else
- {
- $$ = g_scan_pattern_handler_new((GSearchPattern *[]) { __pat }, 1, SHT_END);
- g_object_unref(G_OBJECT(__pat));
- }
+ $$ = g_scan_pattern_handler_new_shared((const GSearchPattern *[]) { __pat }, 1, SHT_END);
}
| BYTES_FUZZY_ID_END
{
size_t __count;
- GSearchPattern **__patterns;
- size_t __i;
+ const GSearchPattern **__patterns;
__patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count);
- if (__count == 0)
+ if (__patterns == NULL)
{
char *_msg;
int _ret;
@@ -1862,10 +1816,7 @@ relational_expr : cexpression "<" cexpression
YYERROR;
}
- $$ = g_scan_pattern_handler_new(__patterns, __count, SHT_END);
-
- for (__i = 0; __i < __count; __i++)
- g_object_unref(G_OBJECT(__patterns[__i]));
+ $$ = g_scan_pattern_handler_new_shared(__patterns, __count, SHT_END);
free(__patterns);