ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
23 июля
1221023
symbions (05.07.2022 17:56 - 06.07.2022 13:07, просмотров: 3702) Evgeny_CD
Тут вроде бы кто-то использовал SQLITE. 

Тут обнаружил такое:



/* ** Perform a reduce action and the shift that must immediately ** follow the reduce. */ static void yy_reduce( yyParser *yypParser, /* The parser */ unsigned int yyruleno /* Number of the rule by which to reduce */ ){ /* инициализация переменных и какой-то код */ switch( yyruleno ){


/* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* explain ::= EXPLAIN */ { pParse->explain = 1; } break; /* куча case */

Сосбтвенно вопрос по строке около case 174 - переменная переписывает сама себя - вроде бы по комментарию всё верно. Но в других местах с таким же коментарием переменная принимает всё-таки новое значение.

        case 174: /* likeop ::= LIKE_KW|MATCH */
{yymsp[0].minor.yy0=yymsp[0].minor.yy0;/*A-overwrites-X*/}
        break;
/* куча case */
        case 275: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
{
  yymsp[-7].minor.yy285 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy285, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy148, yymsp[-1].minor.yy243);
}
        break;
      default:
/* !Окончание switch и функции yy_reduce */


Есть другие case с комментарием /*A-overwrites-X*/ типа такого (всего 15 случаев):

      case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
{yymsp[0].minor.yy194 = yymsp[0].major; /*A-overwrites-X*/}
        break;
      case 107: /* fullname ::= nm dbnm */
{yymsp[-1].minor.yy185 = sqlite3SrcListAppend(pParse->db,0,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
        break;
      case 157: /* term ::= STRING */ yytestcase(yyruleno==157);
{spanExpr(&yymsp[0].minor.yy190,pParse,yymsp[0].major,yymsp[0].minor.yy0);/*A-overwrites-X*/}
        break;


Не с такликвались с тем, что поведение SQLITE не соответсвует описанию? Не может это быть следствием этой строки?

P.S. Откорректировал