diff --git a/lib/config/config_parser.yy b/lib/config/config_parser.yy index 54ffb43ccc4..b9f4dab9def 100644 --- a/lib/config/config_parser.yy +++ b/lib/config/config_parser.yy @@ -222,7 +222,7 @@ static void MakeRBinaryOp(Expression** result, Expression *left, Expression *rig %right '!' '~' %left '.' '(' '[' %right ';' ',' -%right T_NEWLINE +%right T_NEWLINE T_FOLLOWS %{ int yylex(YYSTYPE *lvalp, YYLTYPE *llocp, void *scanner); @@ -869,6 +869,27 @@ rterm_without_indexer: T_STRING $$ = new FunctionExpression("", *$3, $5, aexpr, DebugInfoRange(@1, @5)); delete $3; } + | identifier T_FOLLOWS rterm + { + DictExpression *aexpr = dynamic_cast($3); + if (aexpr) + aexpr->MakeInline(); + + std::vector args; + args.push_back($1); + free($1); + + $$ = new FunctionExpression("", args, new std::map(), $3, DebugInfoRange(@1, @3)); + } + | T_BINARY_OR identifier_items T_BINARY_OR T_FOLLOWS rterm + { + DictExpression *aexpr = dynamic_cast($5); + if (aexpr) + aexpr->MakeInline(); + + $$ = new FunctionExpression("", *$2, new std::map(), $5, DebugInfoRange(@1, @5)); + delete $2; + } ; target_type_specifier: /* empty */