|
@@ -562,6 +562,8 @@ static void eclsyntaxerror(HqlGram * parser, const char * s, short yystate, int
|
|
|
%left OR
|
|
|
%left AND
|
|
|
|
|
|
+%left reduceAttrib
|
|
|
+
|
|
|
%left ORDER UNICODEORDER
|
|
|
%left SHIFTL SHIFTR
|
|
|
%left '+' '-'
|
|
@@ -576,6 +578,7 @@ static void eclsyntaxerror(HqlGram * parser, const char * s, short yystate, int
|
|
|
%left '['
|
|
|
%left HIGHEST_PRECEDENCE
|
|
|
|
|
|
+
|
|
|
%%
|
|
|
|
|
|
//================================== begin of syntax section ==========================
|
|
@@ -3806,19 +3809,20 @@ attrib
|
|
|
parser->reportWarning(WRN_OBSOLETED_SYNTAX,$1.pos,"Syntax obsoleted; use alternative: id = '<string constant>'");
|
|
|
$$.setExpr(createAttribute($1.getId()->lower(), createConstant(*$3.getId())));
|
|
|
}
|
|
|
- | knownOrUnknownId EQ const
|
|
|
+ | knownOrUnknownId EQ expr %prec reduceAttrib
|
|
|
{
|
|
|
- $$.setExpr(createAttribute($1.getId()->lower(), $3.getExpr()), $1);
|
|
|
+ //NOTE %prec is there to prevent a s/r error from the "SERVICE : attrib" production
|
|
|
+ $$.setExpr(createExprAttribute($1.getId()->lower(), $3.getExpr()), $1);
|
|
|
}
|
|
|
| knownOrUnknownId
|
|
|
{ $$.setExpr(createAttribute($1.getId()->lower())); }
|
|
|
- | knownOrUnknownId '(' const ')'
|
|
|
+ | knownOrUnknownId '(' expr ')'
|
|
|
{
|
|
|
- $$.setExpr(createAttribute($1.getId()->lower(), $3.getExpr()), $1);
|
|
|
+ $$.setExpr(createExprAttribute($1.getId()->lower(), $3.getExpr()), $1);
|
|
|
}
|
|
|
- | knownOrUnknownId '(' const ',' const ')'
|
|
|
+ | knownOrUnknownId '(' expr ',' expr ')'
|
|
|
{
|
|
|
- $$.setExpr(createAttribute($1.getId()->lower(), $3.getExpr(), $5.getExpr()), $1);
|
|
|
+ $$.setExpr(createExprAttribute($1.getId()->lower(), $3.getExpr(), $5.getExpr()), $1);
|
|
|
}
|
|
|
;
|
|
|
|