Kouhei Sutou
null+****@clear*****
Mon Jan 8 00:29:42 JST 2018
Kouhei Sutou 2018-01-08 00:29:42 +0900 (Mon, 08 Jan 2018) New Revision: f3c356c44bc9e834b35b7a422f4cacb4f2cc7dec https://github.com/groonga/groonga/commit/f3c356c44bc9e834b35b7a422f4cacb4f2cc7dec Message: Fix a bug that wrong quorum threshold may be reused in query syntax Modified files: lib/grn_ecmascript.c lib/grn_ecmascript.lemon Modified: lib/grn_ecmascript.c (+152 -146) =================================================================== --- lib/grn_ecmascript.c 2018-01-08 00:01:50 +0900 (9df72a96f) +++ lib/grn_ecmascript.c 2018-01-08 00:29:42 +0900 (063c97f5b) @@ -1539,200 +1539,206 @@ static void yy_reduce( GRN_INT32_POP(&efsi->similarity_threshold_stack, similarity_threshold); } break; + case GRN_OP_QUORUM : + { + int quorum_threshold; + GRN_INT32_POP(&efsi->quorum_threshold_stack, quorum_threshold); + } + break; default : break; } } -#line 1547 "grn_ecmascript.c" +#line 1553 "grn_ecmascript.c" break; case 8: /* query_element ::= BRACEL expression BRACER */ case 9: /* query_element ::= EVAL primary_expression */ yytestcase(yyruleno==9); -#line 105 "grn_ecmascript.lemon" +#line 111 "grn_ecmascript.lemon" { efsi->flags = efsi->default_flags; } -#line 1555 "grn_ecmascript.c" +#line 1561 "grn_ecmascript.c" break; case 10: /* expression ::= expression COMMA assignment_expression */ -#line 113 "grn_ecmascript.lemon" +#line 119 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_COMMA, 2); } -#line 1562 "grn_ecmascript.c" +#line 1568 "grn_ecmascript.c" break; case 11: /* assignment_expression ::= lefthand_side_expression ASSIGN assignment_expression */ -#line 118 "grn_ecmascript.lemon" +#line 124 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_ASSIGN, 2); } -#line 1569 "grn_ecmascript.c" +#line 1575 "grn_ecmascript.c" break; case 12: /* assignment_expression ::= lefthand_side_expression STAR_ASSIGN assignment_expression */ -#line 121 "grn_ecmascript.lemon" +#line 127 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_STAR_ASSIGN, 2); } -#line 1576 "grn_ecmascript.c" +#line 1582 "grn_ecmascript.c" break; case 13: /* assignment_expression ::= lefthand_side_expression SLASH_ASSIGN assignment_expression */ -#line 124 "grn_ecmascript.lemon" +#line 130 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SLASH_ASSIGN, 2); } -#line 1583 "grn_ecmascript.c" +#line 1589 "grn_ecmascript.c" break; case 14: /* assignment_expression ::= lefthand_side_expression MOD_ASSIGN assignment_expression */ -#line 127 "grn_ecmascript.lemon" +#line 133 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MOD_ASSIGN, 2); } -#line 1590 "grn_ecmascript.c" +#line 1596 "grn_ecmascript.c" break; case 15: /* assignment_expression ::= lefthand_side_expression PLUS_ASSIGN assignment_expression */ -#line 130 "grn_ecmascript.lemon" +#line 136 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_PLUS_ASSIGN, 2); } -#line 1597 "grn_ecmascript.c" +#line 1603 "grn_ecmascript.c" break; case 16: /* assignment_expression ::= lefthand_side_expression MINUS_ASSIGN assignment_expression */ -#line 133 "grn_ecmascript.lemon" +#line 139 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MINUS_ASSIGN, 2); } -#line 1604 "grn_ecmascript.c" +#line 1610 "grn_ecmascript.c" break; case 17: /* assignment_expression ::= lefthand_side_expression SHIFTL_ASSIGN assignment_expression */ -#line 136 "grn_ecmascript.lemon" +#line 142 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTL_ASSIGN, 2); } -#line 1611 "grn_ecmascript.c" +#line 1617 "grn_ecmascript.c" break; case 18: /* assignment_expression ::= lefthand_side_expression SHIFTR_ASSIGN assignment_expression */ -#line 139 "grn_ecmascript.lemon" +#line 145 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTR_ASSIGN, 2); } -#line 1618 "grn_ecmascript.c" +#line 1624 "grn_ecmascript.c" break; case 19: /* assignment_expression ::= lefthand_side_expression SHIFTRR_ASSIGN assignment_expression */ -#line 142 "grn_ecmascript.lemon" +#line 148 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTRR_ASSIGN, 2); } -#line 1625 "grn_ecmascript.c" +#line 1631 "grn_ecmascript.c" break; case 20: /* assignment_expression ::= lefthand_side_expression AND_ASSIGN assignment_expression */ -#line 145 "grn_ecmascript.lemon" +#line 151 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_AND_ASSIGN, 2); } -#line 1632 "grn_ecmascript.c" +#line 1638 "grn_ecmascript.c" break; case 21: /* assignment_expression ::= lefthand_side_expression XOR_ASSIGN assignment_expression */ -#line 148 "grn_ecmascript.lemon" +#line 154 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_XOR_ASSIGN, 2); } -#line 1639 "grn_ecmascript.c" +#line 1645 "grn_ecmascript.c" break; case 22: /* assignment_expression ::= lefthand_side_expression OR_ASSIGN assignment_expression */ -#line 151 "grn_ecmascript.lemon" +#line 157 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_OR_ASSIGN, 2); } -#line 1646 "grn_ecmascript.c" +#line 1652 "grn_ecmascript.c" break; case 23: /* conditional_expression ::= logical_or_expression QUESTION assignment_expression COLON assignment_expression */ -#line 156 "grn_ecmascript.lemon" +#line 162 "grn_ecmascript.lemon" { grn_expr *e = (grn_expr *)efsi->e; e->codes[yymsp[-3].minor.yy0].nargs = yymsp[-1].minor.yy0 - yymsp[-3].minor.yy0; e->codes[yymsp[-1].minor.yy0].nargs = e->codes_curr - yymsp[-1].minor.yy0 - 1; } -#line 1655 "grn_ecmascript.c" +#line 1661 "grn_ecmascript.c" break; case 27: /* bitwise_or_expression ::= bitwise_or_expression BITWISE_OR bitwise_xor_expression */ -#line 176 "grn_ecmascript.lemon" +#line 182 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_BITWISE_OR, 2); } -#line 1662 "grn_ecmascript.c" +#line 1668 "grn_ecmascript.c" break; case 28: /* bitwise_xor_expression ::= bitwise_xor_expression BITWISE_XOR bitwise_and_expression */ -#line 181 "grn_ecmascript.lemon" +#line 187 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_BITWISE_XOR, 2); } -#line 1669 "grn_ecmascript.c" +#line 1675 "grn_ecmascript.c" break; case 29: /* bitwise_and_expression ::= bitwise_and_expression BITWISE_AND equality_expression */ -#line 186 "grn_ecmascript.lemon" +#line 192 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_BITWISE_AND, 2); } -#line 1676 "grn_ecmascript.c" +#line 1682 "grn_ecmascript.c" break; case 30: /* equality_expression ::= equality_expression EQUAL relational_expression */ -#line 191 "grn_ecmascript.lemon" +#line 197 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_EQUAL, 2); } -#line 1683 "grn_ecmascript.c" +#line 1689 "grn_ecmascript.c" break; case 31: /* equality_expression ::= equality_expression NOT_EQUAL relational_expression */ -#line 194 "grn_ecmascript.lemon" +#line 200 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_NOT_EQUAL, 2); } -#line 1690 "grn_ecmascript.c" +#line 1696 "grn_ecmascript.c" break; case 32: /* relational_expression ::= relational_expression LESS shift_expression */ -#line 199 "grn_ecmascript.lemon" +#line 205 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_LESS, 2); } -#line 1697 "grn_ecmascript.c" +#line 1703 "grn_ecmascript.c" break; case 33: /* relational_expression ::= relational_expression GREATER shift_expression */ -#line 202 "grn_ecmascript.lemon" +#line 208 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_GREATER, 2); } -#line 1704 "grn_ecmascript.c" +#line 1710 "grn_ecmascript.c" break; case 34: /* relational_expression ::= relational_expression LESS_EQUAL shift_expression */ -#line 205 "grn_ecmascript.lemon" +#line 211 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_LESS_EQUAL, 2); } -#line 1711 "grn_ecmascript.c" +#line 1717 "grn_ecmascript.c" break; case 35: /* relational_expression ::= relational_expression GREATER_EQUAL shift_expression */ -#line 208 "grn_ecmascript.lemon" +#line 214 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_GREATER_EQUAL, 2); } -#line 1718 "grn_ecmascript.c" +#line 1724 "grn_ecmascript.c" break; case 36: /* relational_expression ::= relational_expression IN shift_expression */ -#line 211 "grn_ecmascript.lemon" +#line 217 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_IN, 2); } -#line 1725 "grn_ecmascript.c" +#line 1731 "grn_ecmascript.c" break; case 37: /* relational_expression ::= relational_expression MATCH shift_expression */ case 86: /* adjust_match_expression ::= IDENTIFIER MATCH STRING */ yytestcase(yyruleno==86); -#line 214 "grn_ecmascript.lemon" +#line 220 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MATCH, 2); } -#line 1733 "grn_ecmascript.c" +#line 1739 "grn_ecmascript.c" break; case 38: /* relational_expression ::= relational_expression NEAR shift_expression */ -#line 217 "grn_ecmascript.lemon" +#line 223 "grn_ecmascript.lemon" { { int max_interval; @@ -1742,31 +1748,31 @@ static void yy_reduce( } grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_NEAR, 3); } -#line 1746 "grn_ecmascript.c" +#line 1752 "grn_ecmascript.c" break; case 39: /* relational_expression ::= relational_expression NEAR2 shift_expression */ -#line 226 "grn_ecmascript.lemon" +#line 232 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_NEAR2, 2); } -#line 1753 "grn_ecmascript.c" +#line 1759 "grn_ecmascript.c" break; case 40: /* relational_expression ::= relational_expression SIMILAR shift_expression */ -#line 229 "grn_ecmascript.lemon" +#line 235 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SIMILAR, 2); } -#line 1760 "grn_ecmascript.c" +#line 1766 "grn_ecmascript.c" break; case 41: /* relational_expression ::= relational_expression TERM_EXTRACT shift_expression */ -#line 232 "grn_ecmascript.lemon" +#line 238 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_TERM_EXTRACT, 2); } -#line 1767 "grn_ecmascript.c" +#line 1773 "grn_ecmascript.c" break; case 42: /* relational_expression ::= relational_expression QUORUM shift_expression */ -#line 235 "grn_ecmascript.lemon" +#line 241 "grn_ecmascript.lemon" { { int quorum_threshold; @@ -1776,103 +1782,103 @@ static void yy_reduce( } grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_QUORUM, 3); } -#line 1780 "grn_ecmascript.c" +#line 1786 "grn_ecmascript.c" break; case 43: /* relational_expression ::= relational_expression LCP shift_expression */ -#line 244 "grn_ecmascript.lemon" +#line 250 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_LCP, 2); } -#line 1787 "grn_ecmascript.c" +#line 1793 "grn_ecmascript.c" break; case 44: /* relational_expression ::= relational_expression PREFIX shift_expression */ -#line 247 "grn_ecmascript.lemon" +#line 253 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_PREFIX, 2); } -#line 1794 "grn_ecmascript.c" +#line 1800 "grn_ecmascript.c" break; case 45: /* relational_expression ::= relational_expression SUFFIX shift_expression */ -#line 250 "grn_ecmascript.lemon" +#line 256 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SUFFIX, 2); } -#line 1801 "grn_ecmascript.c" +#line 1807 "grn_ecmascript.c" break; case 46: /* relational_expression ::= relational_expression REGEXP shift_expression */ -#line 253 "grn_ecmascript.lemon" +#line 259 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_REGEXP, 2); } -#line 1808 "grn_ecmascript.c" +#line 1814 "grn_ecmascript.c" break; case 47: /* shift_expression ::= shift_expression SHIFTL additive_expression */ -#line 258 "grn_ecmascript.lemon" +#line 264 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTL, 2); } -#line 1815 "grn_ecmascript.c" +#line 1821 "grn_ecmascript.c" break; case 48: /* shift_expression ::= shift_expression SHIFTR additive_expression */ -#line 261 "grn_ecmascript.lemon" +#line 267 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTR, 2); } -#line 1822 "grn_ecmascript.c" +#line 1828 "grn_ecmascript.c" break; case 49: /* shift_expression ::= shift_expression SHIFTRR additive_expression */ -#line 264 "grn_ecmascript.lemon" +#line 270 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SHIFTRR, 2); } -#line 1829 "grn_ecmascript.c" +#line 1835 "grn_ecmascript.c" break; case 50: /* additive_expression ::= additive_expression PLUS multiplicative_expression */ case 84: /* adjuster ::= adjuster PLUS adjust_expression */ yytestcase(yyruleno==84); -#line 269 "grn_ecmascript.lemon" +#line 275 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_PLUS, 2); } -#line 1837 "grn_ecmascript.c" +#line 1843 "grn_ecmascript.c" break; case 51: /* additive_expression ::= additive_expression MINUS multiplicative_expression */ -#line 272 "grn_ecmascript.lemon" +#line 278 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MINUS, 2); } -#line 1844 "grn_ecmascript.c" +#line 1850 "grn_ecmascript.c" break; case 52: /* multiplicative_expression ::= multiplicative_expression STAR unary_expression */ case 85: /* adjust_expression ::= adjust_match_expression STAR DECIMAL */ yytestcase(yyruleno==85); -#line 277 "grn_ecmascript.lemon" +#line 283 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_STAR, 2); } -#line 1852 "grn_ecmascript.c" +#line 1858 "grn_ecmascript.c" break; case 53: /* multiplicative_expression ::= multiplicative_expression SLASH unary_expression */ -#line 280 "grn_ecmascript.lemon" +#line 286 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_SLASH, 2); } -#line 1859 "grn_ecmascript.c" +#line 1865 "grn_ecmascript.c" break; case 54: /* multiplicative_expression ::= multiplicative_expression MOD unary_expression */ -#line 283 "grn_ecmascript.lemon" +#line 289 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MOD, 2); } -#line 1866 "grn_ecmascript.c" +#line 1872 "grn_ecmascript.c" break; case 55: /* unary_expression ::= DELETE unary_expression */ -#line 288 "grn_ecmascript.lemon" +#line 294 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_DELETE, 1); } -#line 1873 "grn_ecmascript.c" +#line 1879 "grn_ecmascript.c" break; case 56: /* unary_expression ::= INCR unary_expression */ -#line 291 "grn_ecmascript.lemon" +#line 297 "grn_ecmascript.lemon" { grn_ctx *ctx = efsi->ctx; grn_expr *e = (grn_expr *)(efsi->e); @@ -1890,10 +1896,10 @@ static void yy_reduce( grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_INCR, 1); } } -#line 1894 "grn_ecmascript.c" +#line 1900 "grn_ecmascript.c" break; case 57: /* unary_expression ::= DECR unary_expression */ -#line 308 "grn_ecmascript.lemon" +#line 314 "grn_ecmascript.lemon" { grn_ctx *ctx = efsi->ctx; grn_expr *e = (grn_expr *)(efsi->e); @@ -1911,66 +1917,66 @@ static void yy_reduce( grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_DECR, 1); } } -#line 1915 "grn_ecmascript.c" +#line 1921 "grn_ecmascript.c" break; case 58: /* unary_expression ::= PLUS unary_expression */ -#line 325 "grn_ecmascript.lemon" +#line 331 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_PLUS, 1); } -#line 1922 "grn_ecmascript.c" +#line 1928 "grn_ecmascript.c" break; case 59: /* unary_expression ::= MINUS unary_expression */ -#line 328 "grn_ecmascript.lemon" +#line 334 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_MINUS, 1); } -#line 1929 "grn_ecmascript.c" +#line 1935 "grn_ecmascript.c" break; case 60: /* unary_expression ::= NOT unary_expression */ -#line 331 "grn_ecmascript.lemon" +#line 337 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_NOT, 1); } -#line 1936 "grn_ecmascript.c" +#line 1942 "grn_ecmascript.c" break; case 61: /* unary_expression ::= BITWISE_NOT unary_expression */ -#line 334 "grn_ecmascript.lemon" +#line 340 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_BITWISE_NOT, 1); } -#line 1943 "grn_ecmascript.c" +#line 1949 "grn_ecmascript.c" break; case 62: /* unary_expression ::= ADJUST unary_expression */ -#line 337 "grn_ecmascript.lemon" +#line 343 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_ADJUST, 1); } -#line 1950 "grn_ecmascript.c" +#line 1956 "grn_ecmascript.c" break; case 63: /* unary_expression ::= EXACT unary_expression */ -#line 340 "grn_ecmascript.lemon" +#line 346 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_EXACT, 1); } -#line 1957 "grn_ecmascript.c" +#line 1963 "grn_ecmascript.c" break; case 64: /* unary_expression ::= PARTIAL unary_expression */ -#line 343 "grn_ecmascript.lemon" +#line 349 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_PARTIAL, 1); } -#line 1964 "grn_ecmascript.c" +#line 1970 "grn_ecmascript.c" break; case 65: /* unary_expression ::= UNSPLIT unary_expression */ -#line 346 "grn_ecmascript.lemon" +#line 352 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_UNSPLIT, 1); } -#line 1971 "grn_ecmascript.c" +#line 1977 "grn_ecmascript.c" break; case 66: /* postfix_expression ::= lefthand_side_expression INCR */ -#line 351 "grn_ecmascript.lemon" +#line 357 "grn_ecmascript.lemon" { grn_ctx *ctx = efsi->ctx; grn_expr *e = (grn_expr *)(efsi->e); @@ -1988,10 +1994,10 @@ static void yy_reduce( grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_INCR_POST, 1); } } -#line 1992 "grn_ecmascript.c" +#line 1998 "grn_ecmascript.c" break; case 67: /* postfix_expression ::= lefthand_side_expression DECR */ -#line 368 "grn_ecmascript.lemon" +#line 374 "grn_ecmascript.lemon" { grn_ctx *ctx = efsi->ctx; grn_expr *e = (grn_expr *)(efsi->e); @@ -2009,17 +2015,17 @@ static void yy_reduce( grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_DECR_POST, 1); } } -#line 2013 "grn_ecmascript.c" +#line 2019 "grn_ecmascript.c" break; case 68: /* call_expression ::= member_expression arguments */ -#line 389 "grn_ecmascript.lemon" +#line 395 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_CALL, yymsp[0].minor.yy0); } -#line 2020 "grn_ecmascript.c" +#line 2026 "grn_ecmascript.c" break; case 69: /* object_literal ::= BRACEL property_name_and_value_list BRACER */ -#line 417 "grn_ecmascript.lemon" +#line 423 "grn_ecmascript.lemon" { grn_ctx *ctx = efsi->ctx; grn_expr_take_obj(ctx, efsi->e, (grn_obj *)(efsi->object_literal)); @@ -2027,10 +2033,10 @@ static void yy_reduce( GRN_OP_PUSH, 1); efsi->object_literal = NULL; } -#line 2031 "grn_ecmascript.c" +#line 2037 "grn_ecmascript.c" break; case 70: /* property_name_and_value_list ::= */ -#line 425 "grn_ecmascript.lemon" +#line 431 "grn_ecmascript.lemon" { grn_ctx *ctx = efsi->ctx; @@ -2043,10 +2049,10 @@ static void yy_reduce( (int)(efsi->str_end - efsi->str), efsi->str); } } -#line 2047 "grn_ecmascript.c" +#line 2053 "grn_ecmascript.c" break; case 71: /* property_name_and_value ::= property_name COLON assignment_expression */ -#line 440 "grn_ecmascript.lemon" +#line 446 "grn_ecmascript.lemon" { grn_ctx *ctx = efsi->ctx; grn_expr *e = (grn_expr *)(efsi->e); @@ -2088,61 +2094,61 @@ static void yy_reduce( } } } -#line 2092 "grn_ecmascript.c" +#line 2098 "grn_ecmascript.c" break; case 72: /* member_expression_part ::= BRACKETL expression BRACKETR */ -#line 484 "grn_ecmascript.lemon" +#line 490 "grn_ecmascript.lemon" { grn_expr_append_op(efsi->ctx, efsi->e, GRN_OP_GET_MEMBER, 2); } -#line 2099 "grn_ecmascript.c" +#line 2105 "grn_ecmascript.c" break; case 73: /* arguments ::= PARENL argument_list PARENR */ -#line 489 "grn_ecmascript.lemon" +#line 495 "grn_ecmascript.lemon" { yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } -#line 2104 "grn_ecmascript.c" +#line 2110 "grn_ecmascript.c" break; case 74: /* argument_list ::= */ -#line 490 "grn_ecmascript.lemon" +#line 496 "grn_ecmascript.lemon" { yymsp[1].minor.yy0 = 0; } -#line 2109 "grn_ecmascript.c" +#line 2115 "grn_ecmascript.c" break; case 75: /* argument_list ::= assignment_expression */ -#line 491 "grn_ecmascript.lemon" +#line 497 "grn_ecmascript.lemon" { yymsp[0].minor.yy0 = 1; } -#line 2114 "grn_ecmascript.c" +#line 2120 "grn_ecmascript.c" break; case 76: /* argument_list ::= argument_list COMMA assignment_expression */ -#line 492 "grn_ecmascript.lemon" +#line 498 "grn_ecmascript.lemon" { yylhsminor.yy0 = yymsp[-2].minor.yy0 + 1; } -#line 2119 "grn_ecmascript.c" +#line 2125 "grn_ecmascript.c" yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 77: /* output_columns ::= */ -#line 494 "grn_ecmascript.lemon" +#line 500 "grn_ecmascript.lemon" { yymsp[1].minor.yy0 = 0; } -#line 2127 "grn_ecmascript.c" +#line 2133 "grn_ecmascript.c" break; case 78: /* output_columns ::= output_column */ -#line 497 "grn_ecmascript.lemon" +#line 503 "grn_ecmascript.lemon" { yylhsminor.yy0 = yymsp[0].minor.yy0; } -#line 2134 "grn_ecmascript.c" +#line 2140 "grn_ecmascript.c" yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 79: /* output_columns ::= output_columns COMMA */ -#line 502 "grn_ecmascript.lemon" +#line 508 "grn_ecmascript.lemon" { yylhsminor.yy0 = yymsp[-1].minor.yy0; } -#line 2142 "grn_ecmascript.c" +#line 2148 "grn_ecmascript.c" yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 80: /* output_columns ::= output_columns COMMA output_column */ -#line 507 "grn_ecmascript.lemon" +#line 513 "grn_ecmascript.lemon" { if (yymsp[-2].minor.yy0 == 0) { yylhsminor.yy0 = yymsp[0].minor.yy0; @@ -2155,11 +2161,11 @@ static void yy_reduce( yylhsminor.yy0 = 1; } } -#line 2159 "grn_ecmascript.c" +#line 2165 "grn_ecmascript.c" yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 81: /* output_column ::= STAR */ -#line 520 "grn_ecmascript.lemon" +#line 526 "grn_ecmascript.lemon" { grn_ctx *ctx = efsi->ctx; grn_obj *expr = efsi->e; @@ -2210,21 +2216,21 @@ static void yy_reduce( yymsp[0].minor.yy0 = 0; } } -#line 2214 "grn_ecmascript.c" +#line 2220 "grn_ecmascript.c" break; case 82: /* output_column ::= NONEXISTENT_COLUMN */ -#line 570 "grn_ecmascript.lemon" +#line 576 "grn_ecmascript.lemon" { yymsp[0].minor.yy0 = 0; } -#line 2221 "grn_ecmascript.c" +#line 2227 "grn_ecmascript.c" break; case 83: /* output_column ::= assignment_expression */ -#line 573 "grn_ecmascript.lemon" +#line 579 "grn_ecmascript.lemon" { yymsp[0].minor.yy0 = 1; } -#line 2228 "grn_ecmascript.c" +#line 2234 "grn_ecmascript.c" break; default: /* (87) input ::= query */ yytestcase(yyruleno==87); @@ -2363,7 +2369,7 @@ static void yy_syntax_error( } GRN_OBJ_FIN(ctx, &message); } -#line 2367 "grn_ecmascript.c" +#line 2373 "grn_ecmascript.c" /************ End %syntax_error code ******************************************/ grn_expr_parserARG_STORE; /* Suppress warning about unused %extra_argument variable */ } Modified: lib/grn_ecmascript.lemon (+6 -0) =================================================================== --- lib/grn_ecmascript.lemon 2018-01-08 00:01:50 +0900 (c116b1199) +++ lib/grn_ecmascript.lemon 2018-01-08 00:29:42 +0900 (73477338a) @@ -98,6 +98,12 @@ query_element ::= IDENTIFIER RELATIVE_OP query_element. { GRN_INT32_POP(&efsi->similarity_threshold_stack, similarity_threshold); } break; + case GRN_OP_QUORUM : + { + int quorum_threshold; + GRN_INT32_POP(&efsi->quorum_threshold_stack, quorum_threshold); + } + break; default : break; } -------------- next part -------------- HTML����������������������������... URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20180108/d1e8ed79/attachment-0001.htm