dfilter: Remove STTYPE_RANGE_NODE

STTYPE_RANGE_NODE is just a lexical token, it is
not used withi the syntax tree so remove it.
This commit is contained in:
João Valverde 2022-06-25 14:20:21 +01:00
parent aaff0d21ae
commit efbe699756
5 changed files with 15 additions and 47 deletions

View File

@ -380,13 +380,25 @@ slice(R) ::= entity(E) LBRACKET range_node_list(L) RBRACKET.
range_node_list(L) ::= RANGE_NODE(N).
{
L = g_slist_append(NULL, stnode_steal_data(N));
char *err_msg = NULL;
drange_node *rn = drange_node_from_str(stnode_token(N), &err_msg);
if (err_msg != NULL) {
FAIL(dfw, N, "%s", err_msg);
g_free(err_msg);
}
L = g_slist_append(NULL, rn);
stnode_free(N);
}
range_node_list(L) ::= range_node_list(P) COMMA RANGE_NODE(N).
{
L = g_slist_append(P, stnode_steal_data(N));
char *err_msg = NULL;
drange_node *rn = drange_node_from_str(stnode_token(N), &err_msg);
if (err_msg != NULL) {
FAIL(dfw, N, "%s", err_msg);
g_free(err_msg);
}
L = g_slist_append(P, rn);
stnode_free(N);
}

View File

@ -84,7 +84,6 @@ static int set_lval_str(df_scanner_state_t *state, int token, const char *token_
static int set_lval_quoted_string(df_scanner_state_t *state, int token, GString *quoted_string);
static int set_lval_charconst(df_scanner_state_t *state, int token, GString *quoted_string);
static int set_lval_range_node(df_scanner_state_t *state, int token, const char *token_value);
static int set_lval_field(df_scanner_state_t *state, int token, const char *token_value);
#define simple(token) (update_location(yyextra, yytext), set_lval_simple(yyextra, token, yytext, STTYPE_UNINITIALIZED))
@ -223,7 +222,7 @@ hyphen-bytes {hex2}(-{hex2})+
<RANGE>[^],]+ {
update_location(yyextra, yytext);
return set_lval_range_node(yyextra, TOKEN_RANGE_NODE, yytext);
return set_lval_simple(yyextra, TOKEN_RANGE_NODE, yytext, STTYPE_UNINITIALIZED);
}
<RANGE>"," {
@ -582,23 +581,6 @@ set_lval_field(df_scanner_state_t *state, int token, const char *token_value)
return token;
}
static int
set_lval_range_node(df_scanner_state_t *state, int token, const char *token_value)
{
ws_assert(token == TOKEN_RANGE_NODE);
char *err = NULL;
drange_node *range;
range = drange_node_from_str(token_value, &err);
if (err != NULL) {
dfilter_fail(state->dfw, &state->location, "%s", err);
g_free(err);
return SCAN_FAILED;
}
stnode_init(df_lval, STTYPE_RANGE_NODE, range, g_strdup(token_value), &state->location);
return token;
}
static gboolean
append_escaped_char(df_scanner_state_t *state, GString *str, char c)
{

View File

@ -541,7 +541,6 @@ check_exists(dfwork_t *dfw, stnode_t *st_arg1)
case STTYPE_TEST:
case STTYPE_FVALUE:
case STTYPE_PCRE:
case STTYPE_RANGE_NODE:
ws_assert_not_reached();
}
}

View File

@ -87,21 +87,6 @@ out:
return ws_strdup_printf("'\\x%02lx'", num);
}
static void
range_node_free(void *data)
{
/* If the data was not claimed with stnode_steal_data(), free it. */
if (data) {
drange_node_free(data);
}
}
static char *
range_node_tostr(const void *data, gboolean pretty _U_)
{
return drange_node_tostr(data);
}
ftenum_t
sttype_pointer_ftenum(stnode_t *node)
{
@ -144,19 +129,10 @@ sttype_register_pointer(void)
NULL,
charconst_tostr
};
static sttype_t range_node_type = {
STTYPE_RANGE_NODE,
"RANGE_NODE",
NULL,
range_node_free,
NULL,
range_node_tostr
};
sttype_register(&fvalue_type);
sttype_register(&pcre_type);
sttype_register(&charconst_type);
sttype_register(&range_node_type);
}
/*

View File

@ -31,7 +31,6 @@ typedef enum {
STTYPE_FIELD,
STTYPE_FVALUE,
STTYPE_SLICE,
STTYPE_RANGE_NODE,
STTYPE_FUNCTION,
STTYPE_SET,
STTYPE_PCRE,