diff --git a/src/frontend/grammar.y b/src/frontend/grammar.y
index ac899e3708212fe78b928fe6977fb86c6d5cfb2b..31b71a0eba7665b94de03bd47c50a0cd989ff24e 100644 (file)
--- a/src/frontend/grammar.y
+++ b/src/frontend/grammar.y
#define MODE_TO_STRING(m) \
(((m) == SDB_PARSE_DEFAULT) ? "statement" \
: ((m) == SDB_PARSE_COND) ? "condition" \
- : ((m) == SDB_PARSE_EXPR) ? "expression" \
+ : ((m) == SDB_PARSE_ARITH) ? "arithmetic expression" \
: "UNKNOWN")
%}
%token HOST_T HOSTS_T SERVICE_T SERVICES_T METRIC_T METRICS_T
%token ATTRIBUTE_T ATTRIBUTES_T
-%token NAME_T LAST_UPDATE_T AGE_T INTERVAL_T BACKEND_T
+%token NAME_T LAST_UPDATE_T AGE_T INTERVAL_T BACKEND_T VALUE_T
%token LAST UPDATE
expression
{
/* only accepted in expression parse mode */
- if (! (parser_mode & SDB_PARSE_EXPR)) {
+ if (! (parser_mode & SDB_PARSE_ARITH)) {
sdb_fe_yyerrorf(&yylloc, scanner,
YY_("syntax error, unexpected expression, "
"expecting %s"), MODE_TO_STRING(parser_mode));
INTERVAL_T { $$ = SDB_FIELD_INTERVAL; }
|
BACKEND_T { $$ = SDB_FIELD_BACKEND; }
+ |
+ VALUE_T { $$ = SDB_FIELD_VALUE; }
;
cmp:
sdb_store_matcher_t *m, *tmp = NULL;
assert(cb);
- m = cb(iter, expr);
+ m = cb(NULL, expr);
if (type == MATCHER_ANY)
tmp = sdb_store_any_matcher(iter, m);
else if (type == MATCHER_ALL)