X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Ffrontend%2Fgrammar.y;fp=src%2Ffrontend%2Fgrammar.y;h=187f3599c08e2514596bd5046d653c8f03c26842;hp=2872bcf447fdeacb561aae754b9c85420a3fddc7;hb=d688b764f6ebf7609c79c4726d68c2e72da5ebf7;hpb=9935ca9e91f79b4f5ee6e9a7f94912b7992e8858 diff --git a/src/frontend/grammar.y b/src/frontend/grammar.y index 2872bcf..187f359 100644 --- a/src/frontend/grammar.y +++ b/src/frontend/grammar.y @@ -161,7 +161,7 @@ sdb_fe_yyerrorf(YYLTYPE *lval, sdb_fe_yyscan_t scanner, const char *fmt, ...); %type matcher compare_matcher -%type expression +%type expression object_expression %type object_type object_type_plural %type iterable @@ -516,6 +516,25 @@ expression: sdb_object_deref(SDB_OBJ($3)); $3 = NULL; } | + object_expression + { + $$ = $1; + } + | + data + { + $$ = sdb_store_expr_constvalue(&$1); + sdb_data_free_datum(&$1); + } + ; + +object_expression: + object_type '.' object_expression + { + $$ = sdb_store_expr_typed($1, $3); + sdb_object_deref(SDB_OBJ($3)); + } + | field { $$ = sdb_store_expr_fieldvalue($1); @@ -526,12 +545,6 @@ expression: $$ = sdb_store_expr_attrvalue($3); free($3); $3 = NULL; } - | - data - { - $$ = sdb_store_expr_constvalue(&$1); - sdb_data_free_datum(&$1); - } ; object_type: