Changeset 561 for trunk/src/xmlpatterns/parser/qquerytransformparser.cpp
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/xmlpatterns/parser/qquerytransformparser.cpp
r2 r561 2 2 ** 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 ** Contact: Qt Software Information (qt-info@nokia.com) 4 ** All rights reserved. 5 ** Contact: Nokia Corporation (qt-info@nokia.com) 5 6 ** 6 7 ** This file is part of the QtXmlPatterns module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 24 ** In addition, as a special exception, Nokia gives you certain additional 25 ** rights. These rights are described in the Nokia Qt LGPL Exception 26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 27 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** contact the sales department at qt-sales@nokia.com.36 ** If you have questions regarding the use of this file, please contact 37 ** Nokia at qt-info@nokia.com. 38 38 ** $QT_END_LICENSE$ 39 39 ** 40 40 ****************************************************************************/ 41 42 //43 // W A R N I N G44 // -------------45 //46 // This file is not part of the Qt API. It exists purely as an47 // implementation detail. This header file may change from version to48 // version without notice, or even be removed.49 //50 // We mean it.51 41 52 42 /* A Bison parser, made by GNU Bison 2.3a. */ … … 123 113 /* Line 164 of yacc.c. */ 124 114 #line 22 "querytransformparser.ypp" 125 126 /****************************************************************************127 **128 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).129 ** Contact: Qt Software Information (qt-info@nokia.com)130 **131 ** This file is part of the QtXmlPatterns module of the Qt Toolkit.132 **133 ** $QT_BEGIN_LICENSE:LGPL$134 ** Commercial Usage135 ** Licensees holding valid Qt Commercial licenses may use this file in136 ** accordance with the Qt Commercial License Agreement provided with the137 ** Software or, alternatively, in accordance with the terms contained in138 ** a written agreement between you and Nokia.139 **140 ** GNU Lesser General Public License Usage141 ** Alternatively, this file may be used under the terms of the GNU Lesser142 ** General Public License version 2.1 as published by the Free Software143 ** Foundation and appearing in the file LICENSE.LGPL included in the144 ** packaging of this file. Please review the following information to145 ** ensure the GNU Lesser General Public License version 2.1 requirements146 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.147 **148 ** In addition, as a special exception, Nokia gives you certain149 ** additional rights. These rights are described in the Nokia Qt LGPL150 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this151 ** package.152 **153 ** GNU General Public License Usage154 ** Alternatively, this file may be used under the terms of the GNU155 ** General Public License version 3.0 as published by the Free Software156 ** Foundation and appearing in the file LICENSE.GPL included in the157 ** packaging of this file. Please review the following information to158 ** ensure the GNU General Public License version 3.0 requirements will be159 ** met: http://www.gnu.org/copyleft/gpl.html.160 **161 ** If you are unsure which license is appropriate for your use, please162 ** contact the sales department at qt-sales@nokia.com.163 ** $QT_END_LICENSE$164 **165 ****************************************************************************/166 167 //168 // W A R N I N G169 // -------------170 //171 // This file is not part of the Qt API. It exists purely as an172 // implementation detail. This header file may change from version to173 // version without notice, or even be removed.174 //175 // We mean it.176 115 177 116 #include <limits> … … 301 240 302 241 /** 242 * @internal 243 * @relates QXmlQuery 244 */ 245 typedef QFlags<QXmlQuery::QueryLanguage> QueryLanguages; 246 247 /** 303 248 * @short Flags invalid expressions and declarations in the currently 304 249 * parsed language. 305 250 * 306 * Since this grammar is used for several languages: XQuery 1.0, XSL-T 2.0 and 307 * XPath 2.0 inside XSL-T, it is the union of all the constructs in these 251 * Since this grammar is used for several languages: XQuery 1.0, XSL-T 2.0, and 252 * XPath 2.0 inside XSL-T, and field and selector patterns in W3C XML Schema's 253 * identity constraints, it is the union of all the constructs in these 308 254 * languages. However, when dealing with each language individually, we 309 255 * regularly need to disallow some expressions, such as direct element … … 316 262 * used for internal purposes. 317 263 * 318 * Hence, this function is called from each expression and declaration w hich is319 * unavailable in XPath.264 * Hence, this function is called from each expression and declaration with @p 265 * allowedLanguages stating what languages it is allowed in. 320 266 * 321 267 * If @p isInternal is @c true, no error is raised. Otherwise, if the current 322 * language is not XQuery, an error is raised.268 * language is not in @p allowedLanguages, an error is raised. 323 269 */ 324 static void disallowedConstruct(const ParserContext *const parseInfo, 325 const YYLTYPE &sourceLocator, 326 const bool isInternal = false) 270 static void allowedIn(const QueryLanguages allowedLanguages, 271 const ParserContext *const parseInfo, 272 const YYLTYPE &sourceLocator, 273 const bool isInternal = false) 327 274 { 328 if(!isInternal && parseInfo->languageAccent != QXmlQuery::XQuery10) 329 { 330 parseInfo->staticContext->error(QtXmlPatterns::tr("A construct was encountered which only is allowed in XQuery."), 275 /* We treat XPath 2.0 as a subset of XSL-T 2.0, so if XPath 2.0 is allowed 276 * and XSL-T is the language, it's ok. */ 277 if(!isInternal && 278 (!allowedLanguages.testFlag(parseInfo->languageAccent) && !(allowedLanguages.testFlag(QXmlQuery::XPath20) && parseInfo->languageAccent == QXmlQuery::XSLT20))) 279 { 280 281 QString langName; 282 283 switch(parseInfo->languageAccent) 284 { 285 case QXmlQuery::XPath20: 286 langName = QLatin1String("XPath 2.0"); 287 break; 288 case QXmlQuery::XSLT20: 289 langName = QLatin1String("XSL-T 2.0"); 290 break; 291 case QXmlQuery::XQuery10: 292 langName = QLatin1String("XQuery 1.0"); 293 break; 294 case QXmlQuery::XmlSchema11IdentityConstraintSelector: 295 langName = QtXmlPatterns::tr("W3C XML Schema identity constraint selector"); 296 break; 297 case QXmlQuery::XmlSchema11IdentityConstraintField: 298 langName = QtXmlPatterns::tr("W3C XML Schema identity constraint field"); 299 break; 300 } 301 302 parseInfo->staticContext->error(QtXmlPatterns::tr("A construct was encountered " 303 "which is disallowed in the current language(%1).").arg(langName), 331 304 ReportContext::XPST0003, 332 305 fromYYLTYPE(sourceLocator, parseInfo)); … … 446 419 if(e) 447 420 { 448 parseInfo->staticContext->error(QtXmlPatterns::tr("A template byname %1 "421 parseInfo->staticContext->error(QtXmlPatterns::tr("A template with name %1 " 449 422 "has already been declared.") 450 423 .arg(formatKeyword(parseInfo->staticContext->namePool(), … … 910 883 const YYLTYPE &location) 911 884 { 912 parseInfo->staticContext->error(QtXmlPatterns::tr("No variable byname %1 exists")885 parseInfo->staticContext->error(QtXmlPatterns::tr("No variable with name %1 exists") 913 886 .arg(formatKeyword(parseInfo->staticContext->namePool(), variableName)), 914 887 ReportContext::XPST0008, fromYYLTYPE(location, parseInfo)); … … 1367 1340 1368 1341 /* Line 221 of yacc.c. */ 1369 #line 1 289"qquerytransformparser.cpp"1342 #line 1323 "qquerytransformparser.cpp" 1370 1343 1371 1344 #ifdef short … … 1851 1824 static const yytype_uint16 yyrline[] = 1852 1825 { 1853 0, 13 41, 1341, 1342, 1344, 1345, 1376, 1377, 1393, 1491,1854 1 493, 1499, 1501, 1508, 1514, 1520, 1527, 1530, 1534, 1538,1855 15 58, 1572, 1576, 1570, 1639, 1643, 1660, 1663, 1665, 1670,1856 1 671, 1675, 1676, 1680, 1684, 1688, 1690, 1691, 1693, 1695,1857 17 41, 1755, 1760, 1765, 1766, 1768, 1783, 1798, 1808, 1823,1858 18 27, 1832, 1846, 1850, 1855, 1869, 1874, 1879, 1884, 1889,1859 19 05, 1928, 1936, 1937, 1938, 1940, 1957, 1958, 1960, 1961,1860 19 63, 1964, 1966, 2021, 2025, 2031, 2034, 2039, 2053, 2057,1861 20 63, 2062, 2171, 2174, 2180, 2201, 2207, 2211, 2213, 2218,1862 22 28, 2229, 2234, 2235, 2244, 2314, 2325, 2326, 2330, 2335,1863 24 04, 2405, 2409, 2414, 2458, 2459, 2464, 2471, 2477, 2478,1864 2 479, 2480, 2481, 2482, 2488, 2493, 2499, 2502, 2507, 2513,1865 25 19, 2523, 2548, 2549, 2553, 2557, 2551, 2598, 2601, 2596,1866 26 17, 2618, 2619, 2622, 2626, 2634, 2633, 2647, 2646, 2655,1867 26 56, 2657, 2659, 2667, 2678, 2681, 2683, 2688, 2695, 2702,1868 27 08, 2728, 2733, 2739, 2742, 2744, 2745, 2752, 2758, 2762,1869 2 767, 2768, 2771, 2775, 2770, 2784, 2788, 2783, 2796, 2799,1870 28 03, 2798, 2812, 2816, 2811, 2824, 2826, 2854, 2853, 2865,1871 2 873, 2864, 2884, 2885, 2888, 2892, 2897, 2902, 2901, 2917,1872 29 22, 2923, 2928, 2929, 2934, 2935, 2936, 2937, 2939, 2940,1873 29 45, 2946, 2951, 2952, 2954, 2955, 2960, 2961, 2962, 2963,1874 2965, 2966, 2971, 2972, 2977, 2978, 2980, 2984, 2989, 2990,1875 2996, 2997, 3002, 3003, 3008, 3009, 3014, 3015, 3020, 3024,1876 30 29, 3030, 3031, 3033, 3038, 3039, 3040, 3041, 3042, 3043,1877 30 45, 3050, 3051, 3052, 3053, 3054, 3055, 3057, 3062, 3063,1878 3 064, 3066, 3080, 3081, 3082, 3084, 3100, 3104, 3109, 3110,1879 31 12, 3117, 3118, 3120, 3126, 3130, 3136, 3139, 3140, 3144,1880 3 153, 3158, 3162, 3163, 3168, 3167, 3182, 3189, 3188, 3203,1881 32 11, 3211, 3220, 3222, 3225, 3230, 3232, 3236, 3302, 3305,1882 33 11, 3314, 3323, 3327, 3331, 3336, 3337, 3342, 3343, 3346,1883 3 345, 3375, 3377, 3378, 3380, 3394, 3395, 3396, 3397, 3398,1884 3 399, 3400, 3401, 3402, 3403, 3404, 3405, 3408, 3407, 3417,1885 3 428, 3433, 3435, 3440, 3441, 3443, 3447, 3449, 3453, 3462,1886 3 468, 3469, 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481,1887 3 491, 3492, 3497, 3501, 3506, 3511, 3516, 3521, 3525, 3530,1888 3 535, 3540, 3569, 3573, 3580, 3582, 3586, 3588, 3589, 3590,1889 3 624, 3633, 3622, 3874, 3878, 3898, 3901, 3907, 3912, 3917,1890 3923, 3926, 3936, 3943, 3947, 3953, 3967, 3973, 3990, 3995,1891 4 008, 4009, 4010, 4011, 4012, 4013, 4014, 4016, 4024, 4023,1892 4 063, 4066, 4071, 4086, 4091, 4098, 4110, 4114, 4110, 4120,1893 4 122, 4126, 4128, 4143, 4147, 4156, 4161, 4165, 4171, 4174,1894 4 179, 4184, 4189, 4190, 4191, 4192, 4194, 4195, 4196, 4197,1895 4 202, 4238, 4239, 4240, 4241, 4242, 4243, 4244, 4246, 4251,1896 4 256, 4262, 4263, 4265, 4270, 4275, 4280, 4285, 4301, 4302,1897 4 304, 4309, 4314, 4318, 4330, 4343, 4353, 4358, 4363, 4368,1898 4 382, 4396, 4397, 4399, 4409, 4411, 4416, 4423, 4430, 4432,1899 4 434, 4435, 4437, 4441, 4446, 4447, 4449, 4455, 4457, 4459,1900 4 460, 4462, 44741826 0, 1375, 1375, 1376, 1378, 1379, 1410, 1411, 1427, 1525, 1827 1527, 1533, 1535, 1542, 1548, 1554, 1561, 1564, 1568, 1572, 1828 1592, 1606, 1610, 1604, 1673, 1677, 1694, 1697, 1699, 1704, 1829 1705, 1709, 1710, 1714, 1718, 1722, 1724, 1725, 1727, 1729, 1830 1775, 1789, 1794, 1799, 1800, 1802, 1817, 1832, 1842, 1857, 1831 1861, 1866, 1880, 1884, 1889, 1903, 1908, 1913, 1918, 1923, 1832 1939, 1962, 1970, 1971, 1972, 1974, 1991, 1992, 1994, 1995, 1833 1997, 1998, 2000, 2055, 2059, 2065, 2068, 2073, 2087, 2091, 1834 2097, 2096, 2205, 2208, 2214, 2235, 2241, 2245, 2247, 2252, 1835 2262, 2263, 2268, 2269, 2278, 2348, 2359, 2360, 2364, 2369, 1836 2438, 2439, 2443, 2448, 2492, 2493, 2498, 2505, 2511, 2512, 1837 2513, 2514, 2515, 2516, 2522, 2527, 2533, 2536, 2541, 2547, 1838 2553, 2557, 2582, 2583, 2587, 2591, 2585, 2632, 2635, 2630, 1839 2651, 2652, 2653, 2656, 2660, 2668, 2667, 2681, 2680, 2689, 1840 2690, 2691, 2693, 2701, 2712, 2715, 2717, 2722, 2729, 2736, 1841 2742, 2762, 2767, 2773, 2776, 2778, 2779, 2786, 2792, 2796, 1842 2801, 2802, 2805, 2809, 2804, 2819, 2823, 2818, 2831, 2834, 1843 2838, 2833, 2848, 2852, 2847, 2860, 2862, 2890, 2889, 2901, 1844 2909, 2900, 2920, 2921, 2924, 2928, 2933, 2938, 2937, 2953, 1845 2959, 2960, 2966, 2967, 2973, 2974, 2975, 2976, 2978, 2979, 1846 2985, 2986, 2992, 2993, 2995, 2996, 3002, 3003, 3004, 3005, 1847 3007, 3008, 3018, 3019, 3025, 3026, 3028, 3032, 3037, 3038, 1848 3045, 3046, 3052, 3053, 3059, 3060, 3066, 3067, 3073, 3077, 1849 3082, 3083, 3084, 3086, 3092, 3093, 3094, 3095, 3096, 3097, 1850 3099, 3104, 3105, 3106, 3107, 3108, 3109, 3111, 3116, 3117, 1851 3118, 3120, 3134, 3135, 3136, 3138, 3155, 3159, 3164, 3165, 1852 3167, 3172, 3173, 3175, 3181, 3185, 3191, 3194, 3195, 3199, 1853 3208, 3213, 3217, 3218, 3223, 3222, 3237, 3245, 3244, 3260, 1854 3268, 3268, 3277, 3279, 3282, 3287, 3289, 3293, 3359, 3362, 1855 3368, 3371, 3380, 3384, 3388, 3393, 3394, 3399, 3400, 3403, 1856 3402, 3432, 3434, 3435, 3437, 3481, 3482, 3483, 3484, 3485, 1857 3486, 3487, 3488, 3489, 3490, 3491, 3492, 3495, 3494, 3505, 1858 3516, 3521, 3523, 3528, 3529, 3534, 3538, 3540, 3544, 3553, 1859 3560, 3561, 3567, 3568, 3569, 3570, 3571, 3572, 3573, 3574, 1860 3584, 3585, 3590, 3595, 3601, 3607, 3612, 3617, 3622, 3628, 1861 3633, 3638, 3668, 3672, 3679, 3681, 3685, 3690, 3691, 3692, 1862 3726, 3735, 3724, 3976, 3980, 4000, 4003, 4009, 4014, 4019, 1863 4025, 4028, 4038, 4045, 4049, 4055, 4069, 4075, 4092, 4097, 1864 4110, 4111, 4112, 4113, 4114, 4115, 4116, 4118, 4126, 4125, 1865 4165, 4168, 4173, 4188, 4193, 4200, 4212, 4216, 4212, 4222, 1866 4224, 4228, 4230, 4245, 4249, 4258, 4263, 4267, 4273, 4276, 1867 4281, 4286, 4291, 4292, 4293, 4294, 4296, 4297, 4298, 4299, 1868 4304, 4340, 4341, 4342, 4343, 4344, 4345, 4346, 4348, 4353, 1869 4358, 4364, 4365, 4367, 4372, 4377, 4382, 4387, 4403, 4404, 1870 4406, 4411, 4416, 4420, 4432, 4445, 4455, 4460, 4465, 4470, 1871 4484, 4498, 4499, 4501, 4511, 4513, 4518, 4525, 4532, 4534, 1872 4536, 4537, 4539, 4543, 4548, 4549, 4551, 4557, 4559, 4561, 1873 4565, 4570, 4582 1901 1874 }; 1902 1875 #endif … … 3730 3703 case 5: 3731 3704 /* Line 1269 of yacc.c. */ 3732 #line 13 46"querytransformparser.ypp"3705 #line 1380 "querytransformparser.ypp" 3733 3706 { 3734 3707 … … 3764 3737 case 7: 3765 3738 /* Line 1269 of yacc.c. */ 3766 #line 1 378"querytransformparser.ypp"3739 #line 1412 "querytransformparser.ypp" 3767 3740 { 3768 3741 const QRegExp encNameRegExp(QLatin1String("[A-Za-z][A-Za-z0-9._\\-]*")); … … 3783 3756 case 8: 3784 3757 /* Line 1269 of yacc.c. */ 3785 #line 1 394"querytransformparser.ypp"3758 #line 1428 "querytransformparser.ypp" 3786 3759 { 3787 3760 /* In XSL-T, we can have dangling variable references, so resolve them … … 3884 3857 case 10: 3885 3858 /* Line 1269 of yacc.c. */ 3886 #line 1 494"querytransformparser.ypp"3859 #line 1528 "querytransformparser.ypp" 3887 3860 { 3888 3861 // TODO add to namespace context … … 3893 3866 case 12: 3894 3867 /* Line 1269 of yacc.c. */ 3895 #line 15 02"querytransformparser.ypp"3896 { 3897 disallowedConstruct(parseInfo, (yyloc));3868 #line 1536 "querytransformparser.ypp" 3869 { 3870 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 3898 3871 if(parseInfo->hasSecondPrologPart) 3899 3872 parseInfo->staticContext->error(QtXmlPatterns::tr("A default namespace declaration must occur before function, " … … 3904 3877 case 13: 3905 3878 /* Line 1269 of yacc.c. */ 3906 #line 15 09"querytransformparser.ypp"3879 #line 1543 "querytransformparser.ypp" 3907 3880 { 3908 3881 if(parseInfo->hasSecondPrologPart) … … 3914 3887 case 14: 3915 3888 /* Line 1269 of yacc.c. */ 3916 #line 15 15"querytransformparser.ypp"3889 #line 1549 "querytransformparser.ypp" 3917 3890 { 3918 3891 if(parseInfo->hasSecondPrologPart) … … 3924 3897 case 15: 3925 3898 /* Line 1269 of yacc.c. */ 3926 #line 15 21"querytransformparser.ypp"3927 { 3928 disallowedConstruct(parseInfo, (yyloc));3899 #line 1555 "querytransformparser.ypp" 3900 { 3901 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 3929 3902 if(parseInfo->hasSecondPrologPart) 3930 3903 parseInfo->staticContext->error(QtXmlPatterns::tr("Module imports must occur before function, " … … 3935 3908 case 17: 3936 3909 /* Line 1269 of yacc.c. */ 3937 #line 15 31"querytransformparser.ypp"3910 #line 1565 "querytransformparser.ypp" 3938 3911 { 3939 3912 parseInfo->hasSecondPrologPart = true; … … 3943 3916 case 18: 3944 3917 /* Line 1269 of yacc.c. */ 3945 #line 15 35"querytransformparser.ypp"3918 #line 1569 "querytransformparser.ypp" 3946 3919 { 3947 3920 parseInfo->hasSecondPrologPart = true; … … 3951 3924 case 19: 3952 3925 /* Line 1269 of yacc.c. */ 3953 #line 15 39"querytransformparser.ypp"3954 { 3955 disallowedConstruct(parseInfo, (yyloc));3926 #line 1573 "querytransformparser.ypp" 3927 { 3928 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 3956 3929 parseInfo->hasSecondPrologPart = true; 3957 3930 } … … 3960 3933 case 20: 3961 3934 /* Line 1269 of yacc.c. */ 3962 #line 15 62"querytransformparser.ypp"3935 #line 1596 "querytransformparser.ypp" 3963 3936 { 3964 3937 Template::Ptr temp(create(new Template(parseInfo->currentImportPrecedence, (yyvsp[(5) - (7)].sequenceType)), (yyloc), parseInfo)); … … 3973 3946 case 21: 3974 3947 /* Line 1269 of yacc.c. */ 3975 #line 1 572"querytransformparser.ypp"3948 #line 1606 "querytransformparser.ypp" 3976 3949 { 3977 3950 parseInfo->isParsingPattern = true; … … 3981 3954 case 22: 3982 3955 /* Line 1269 of yacc.c. */ 3983 #line 1 576"querytransformparser.ypp"3956 #line 1610 "querytransformparser.ypp" 3984 3957 { 3985 3958 parseInfo->isParsingPattern = false; … … 3989 3962 case 23: 3990 3963 /* Line 1269 of yacc.c. */ 3991 #line 1 585"querytransformparser.ypp"3964 #line 1619 "querytransformparser.ypp" 3992 3965 { 3993 3966 /* In this grammar branch, we're guaranteed to be a template rule, but … … 4046 4019 case 24: 4047 4020 /* Line 1269 of yacc.c. */ 4048 #line 16 39"querytransformparser.ypp"4021 #line 1673 "querytransformparser.ypp" 4049 4022 { 4050 4023 (yyval.enums.Double) = std::numeric_limits<xsDouble>::quiet_NaN(); … … 4054 4027 case 25: 4055 4028 /* Line 1269 of yacc.c. */ 4056 #line 16 44"querytransformparser.ypp"4029 #line 1678 "querytransformparser.ypp" 4057 4030 { 4058 4031 const AtomicValue::Ptr val(Decimal::fromLexical((yyvsp[(2) - (2)].sval))); 4059 4032 if(val->hasError()) 4060 4033 { 4061 parseInfo->staticContext->error(QtXmlPatterns::tr("The value of attribute %1 must of type %2, which %3 isn't.")4034 parseInfo->staticContext->error(QtXmlPatterns::tr("The value of attribute %1 must be of type %2, which %3 isn't.") 4062 4035 .arg(formatKeyword(QLatin1String("priority")), 4063 4036 formatType(parseInfo->staticContext->namePool(), BuiltinTypes::xsDecimal), … … 4073 4046 case 26: 4074 4047 /* Line 1269 of yacc.c. */ 4075 #line 16 60"querytransformparser.ypp"4048 #line 1694 "querytransformparser.ypp" 4076 4049 { 4077 4050 (yyval.qName) = QXmlName(); … … 4081 4054 case 28: 4082 4055 /* Line 1269 of yacc.c. */ 4083 #line 1 666"querytransformparser.ypp"4056 #line 1700 "querytransformparser.ypp" 4084 4057 { 4085 4058 (yyval.qName) = (yyvsp[(2) - (2)].qName); … … 4089 4062 case 30: 4090 4063 /* Line 1269 of yacc.c. */ 4091 #line 1 672"querytransformparser.ypp"4092 { 4093 disallowedConstruct(parseInfo, (yyloc));4064 #line 1706 "querytransformparser.ypp" 4065 { 4066 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 4094 4067 } 4095 4068 break; … … 4097 4070 case 32: 4098 4071 /* Line 1269 of yacc.c. */ 4099 #line 1 677"querytransformparser.ypp"4100 { 4101 disallowedConstruct(parseInfo, (yyloc));4072 #line 1711 "querytransformparser.ypp" 4073 { 4074 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 4102 4075 } 4103 4076 break; … … 4105 4078 case 33: 4106 4079 /* Line 1269 of yacc.c. */ 4107 #line 1 681"querytransformparser.ypp"4108 { 4109 disallowedConstruct(parseInfo, (yyloc));4080 #line 1715 "querytransformparser.ypp" 4081 { 4082 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 4110 4083 } 4111 4084 break; … … 4113 4086 case 34: 4114 4087 /* Line 1269 of yacc.c. */ 4115 #line 1 685"querytransformparser.ypp"4116 { 4117 disallowedConstruct(parseInfo, (yyloc));4088 #line 1719 "querytransformparser.ypp" 4089 { 4090 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 4118 4091 } 4119 4092 break; … … 4121 4094 case 39: 4122 4095 /* Line 1269 of yacc.c. */ 4123 #line 1 696"querytransformparser.ypp"4096 #line 1730 "querytransformparser.ypp" 4124 4097 { 4125 4098 if(!(yyvsp[(6) - (7)].enums.Bool)) 4126 disallowedConstruct(parseInfo, (yyloc));4099 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 4127 4100 4128 4101 if((yyvsp[(3) - (7)].sval) == QLatin1String("xmlns")) … … 4135 4108 { 4136 4109 parseInfo->staticContext->error(QtXmlPatterns::tr( 4137 "The prefix %1 can 4110 "The prefix %1 cannot be bound. By default, it is already bound " 4138 4111 "to the namespace %2.") 4139 4112 .arg(formatKeyword("xml")) … … 4170 4143 case 40: 4171 4144 /* Line 1269 of yacc.c. */ 4172 #line 17 42"querytransformparser.ypp"4145 #line 1776 "querytransformparser.ypp" 4173 4146 { 4174 4147 if(parseInfo->hasDeclaration(ParserContext::BoundarySpaceDecl)) … … 4187 4160 case 41: 4188 4161 /* Line 1269 of yacc.c. */ 4189 #line 17 56"querytransformparser.ypp"4162 #line 1790 "querytransformparser.ypp" 4190 4163 { 4191 4164 (yyval.enums.boundarySpacePolicy) = StaticContext::BSPStrip; … … 4195 4168 case 42: 4196 4169 /* Line 1269 of yacc.c. */ 4197 #line 17 61"querytransformparser.ypp"4170 #line 1795 "querytransformparser.ypp" 4198 4171 { 4199 4172 (yyval.enums.boundarySpacePolicy) = StaticContext::BSPPreserve; … … 4203 4176 case 45: 4204 4177 /* Line 1269 of yacc.c. */ 4205 #line 1 770"querytransformparser.ypp"4178 #line 1804 "querytransformparser.ypp" 4206 4179 { 4207 4180 if(parseInfo->hasDeclaration(ParserContext::DeclareDefaultElementNamespace)) … … 4220 4193 case 46: 4221 4194 /* Line 1269 of yacc.c. */ 4222 #line 1 785"querytransformparser.ypp"4195 #line 1819 "querytransformparser.ypp" 4223 4196 { 4224 4197 if(parseInfo->hasDeclaration(ParserContext::DeclareDefaultFunctionNamespace)) … … 4237 4210 case 47: 4238 4211 /* Line 1269 of yacc.c. */ 4239 #line 1 799"querytransformparser.ypp"4212 #line 1833 "querytransformparser.ypp" 4240 4213 { 4241 4214 if((yyvsp[(3) - (5)].qName).prefix() == StandardPrefixes::empty) … … 4250 4223 case 48: 4251 4224 /* Line 1269 of yacc.c. */ 4252 #line 18 09"querytransformparser.ypp"4253 { 4254 disallowedConstruct(parseInfo, (yyloc));4225 #line 1843 "querytransformparser.ypp" 4226 { 4227 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 4255 4228 if(parseInfo->hasDeclaration(ParserContext::OrderingModeDecl)) 4256 4229 { … … 4268 4241 case 49: 4269 4242 /* Line 1269 of yacc.c. */ 4270 #line 18 24"querytransformparser.ypp"4243 #line 1858 "querytransformparser.ypp" 4271 4244 { 4272 4245 (yyval.enums.orderingMode) = StaticContext::Ordered; … … 4276 4249 case 50: 4277 4250 /* Line 1269 of yacc.c. */ 4278 #line 18 28"querytransformparser.ypp"4251 #line 1862 "querytransformparser.ypp" 4279 4252 { 4280 4253 (yyval.enums.orderingMode) = StaticContext::Unordered; … … 4284 4257 case 51: 4285 4258 /* Line 1269 of yacc.c. */ 4286 #line 18 33"querytransformparser.ypp"4259 #line 1867 "querytransformparser.ypp" 4287 4260 { 4288 4261 if(parseInfo->hasDeclaration(ParserContext::EmptyOrderDecl)) … … 4301 4274 case 52: 4302 4275 /* Line 1269 of yacc.c. */ 4303 #line 18 47"querytransformparser.ypp"4276 #line 1881 "querytransformparser.ypp" 4304 4277 { 4305 4278 (yyval.enums.orderingEmptySequence) = StaticContext::Least; … … 4309 4282 case 53: 4310 4283 /* Line 1269 of yacc.c. */ 4311 #line 18 51"querytransformparser.ypp"4284 #line 1885 "querytransformparser.ypp" 4312 4285 { 4313 4286 (yyval.enums.orderingEmptySequence) = StaticContext::Greatest; … … 4317 4290 case 54: 4318 4291 /* Line 1269 of yacc.c. */ 4319 #line 18 57"querytransformparser.ypp"4292 #line 1891 "querytransformparser.ypp" 4320 4293 { 4321 4294 if(parseInfo->hasDeclaration(ParserContext::CopyNamespacesDecl)) … … 4333 4306 case 55: 4334 4307 /* Line 1269 of yacc.c. */ 4335 #line 1 870"querytransformparser.ypp"4308 #line 1904 "querytransformparser.ypp" 4336 4309 { 4337 4310 parseInfo->preserveNamespacesMode = true; … … 4341 4314 case 56: 4342 4315 /* Line 1269 of yacc.c. */ 4343 #line 1 875"querytransformparser.ypp"4316 #line 1909 "querytransformparser.ypp" 4344 4317 { 4345 4318 parseInfo->preserveNamespacesMode = false; … … 4349 4322 case 57: 4350 4323 /* Line 1269 of yacc.c. */ 4351 #line 1 880"querytransformparser.ypp"4324 #line 1914 "querytransformparser.ypp" 4352 4325 { 4353 4326 parseInfo->inheritNamespacesMode = true; … … 4357 4330 case 58: 4358 4331 /* Line 1269 of yacc.c. */ 4359 #line 1 885"querytransformparser.ypp"4332 #line 1919 "querytransformparser.ypp" 4360 4333 { 4361 4334 parseInfo->inheritNamespacesMode = false; … … 4365 4338 case 59: 4366 4339 /* Line 1269 of yacc.c. */ 4367 #line 1 890"querytransformparser.ypp"4340 #line 1924 "querytransformparser.ypp" 4368 4341 { 4369 4342 if(parseInfo->hasDeclaration(ParserContext::DefaultCollationDecl)) … … 4384 4357 case 60: 4385 4358 /* Line 1269 of yacc.c. */ 4386 #line 19 06"querytransformparser.ypp"4387 { 4388 disallowedConstruct(parseInfo, (yyloc), (yyvsp[(3) - (5)].enums.Bool));4359 #line 1940 "querytransformparser.ypp" 4360 { 4361 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XSLT20), parseInfo, (yyloc), (yyvsp[(3) - (5)].enums.Bool)); 4389 4362 if(parseInfo->hasDeclaration(ParserContext::BaseURIDecl)) 4390 4363 { … … 4410 4383 case 61: 4411 4384 /* Line 1269 of yacc.c. */ 4412 #line 19 29"querytransformparser.ypp"4385 #line 1963 "querytransformparser.ypp" 4413 4386 { 4414 4387 parseInfo->staticContext->error(QtXmlPatterns::tr("The Schema Import feature is not supported, " … … 4421 4394 case 65: 4422 4395 /* Line 1269 of yacc.c. */ 4423 #line 19 41"querytransformparser.ypp"4396 #line 1975 "querytransformparser.ypp" 4424 4397 { 4425 4398 if((yyvsp[(4) - (6)].sval).isEmpty()) … … 4441 4414 case 72: 4442 4415 /* Line 1269 of yacc.c. */ 4443 #line 1968"querytransformparser.ypp"4444 { 4445 disallowedConstruct(parseInfo, (yyloc), (yyvsp[(3) - (9)].enums.Bool));4416 #line 2002 "querytransformparser.ypp" 4417 { 4418 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc), (yyvsp[(3) - (9)].enums.Bool)); 4446 4419 if(variableByName((yyvsp[(5) - (9)].qName), parseInfo)) 4447 4420 { 4448 parseInfo->staticContext->error(QtXmlPatterns::tr("A variable byname %1 has already "4421 parseInfo->staticContext->error(QtXmlPatterns::tr("A variable with name %1 has already " 4449 4422 "been declared.") 4450 4423 .arg(formatKeyword(parseInfo->staticContext->namePool()->toLexical((yyvsp[(5) - (9)].qName)))), … … 4486 4459 { 4487 4460 parseInfo->staticContext->error(QtXmlPatterns::tr("No value is available for the external " 4488 "variable byname %1.")4461 "variable with name %1.") 4489 4462 .arg(formatKeyword(parseInfo->staticContext->namePool(), (yyvsp[(5) - (9)].qName))), 4490 4463 parseInfo->isXSLT() ? ReportContext::XTDE0050 : ReportContext::XPDY0002, … … 4498 4471 case 73: 4499 4472 /* Line 1269 of yacc.c. */ 4500 #line 20 22"querytransformparser.ypp"4473 #line 2056 "querytransformparser.ypp" 4501 4474 { 4502 4475 (yyval.expr).reset(); … … 4506 4479 case 74: 4507 4480 /* Line 1269 of yacc.c. */ 4508 #line 20 26"querytransformparser.ypp"4481 #line 2060 "querytransformparser.ypp" 4509 4482 { 4510 4483 (yyval.expr) = (yyvsp[(2) - (2)].expr); … … 4514 4487 case 75: 4515 4488 /* Line 1269 of yacc.c. */ 4516 #line 20 31"querytransformparser.ypp"4489 #line 2065 "querytransformparser.ypp" 4517 4490 { 4518 4491 (yyval.expr).reset(); … … 4522 4495 case 76: 4523 4496 /* Line 1269 of yacc.c. */ 4524 #line 20 35"querytransformparser.ypp"4497 #line 2069 "querytransformparser.ypp" 4525 4498 { 4526 4499 (yyval.expr) = (yyvsp[(2) - (2)].expr); … … 4530 4503 case 77: 4531 4504 /* Line 1269 of yacc.c. */ 4532 #line 20 40"querytransformparser.ypp"4505 #line 2074 "querytransformparser.ypp" 4533 4506 { 4534 4507 if(parseInfo->hasDeclaration(ParserContext::ConstructionDecl)) … … 4547 4520 case 78: 4548 4521 /* Line 1269 of yacc.c. */ 4549 #line 20 54"querytransformparser.ypp"4522 #line 2088 "querytransformparser.ypp" 4550 4523 { 4551 4524 (yyval.enums.constructionMode) = StaticContext::CMStrip; … … 4555 4528 case 79: 4556 4529 /* Line 1269 of yacc.c. */ 4557 #line 20 58"querytransformparser.ypp"4530 #line 2092 "querytransformparser.ypp" 4558 4531 { 4559 4532 (yyval.enums.constructionMode) = StaticContext::CMPreserve; … … 4563 4536 case 80: 4564 4537 /* Line 1269 of yacc.c. */ 4565 #line 20 63"querytransformparser.ypp"4538 #line 2097 "querytransformparser.ypp" 4566 4539 { 4567 4540 (yyval.enums.slot) = parseInfo->currentExpressionSlot() - (yyvsp[(6) - (7)].functionArguments).count(); … … 4571 4544 case 81: 4572 4545 /* Line 1269 of yacc.c. */ 4573 #line 2 067"querytransformparser.ypp"4546 #line 2101 "querytransformparser.ypp" 4574 4547 { 4575 4548 if(!(yyvsp[(3) - (11)].enums.Bool)) 4576 disallowedConstruct(parseInfo, (yyloc), (yyvsp[(3) - (11)].enums.Bool));4549 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc), (yyvsp[(3) - (11)].enums.Bool)); 4577 4550 4578 4551 /* If FunctionBody is null, it is 'external', otherwise the value is the body. */ … … 4678 4651 case 82: 4679 4652 /* Line 1269 of yacc.c. */ 4680 #line 2 171"querytransformparser.ypp"4653 #line 2205 "querytransformparser.ypp" 4681 4654 { 4682 4655 (yyval.functionArguments) = FunctionArgument::List(); … … 4686 4659 case 83: 4687 4660 /* Line 1269 of yacc.c. */ 4688 #line 2 175"querytransformparser.ypp"4661 #line 2209 "querytransformparser.ypp" 4689 4662 { 4690 4663 FunctionArgument::List l; … … 4696 4669 case 84: 4697 4670 /* Line 1269 of yacc.c. */ 4698 #line 2 181"querytransformparser.ypp"4671 #line 2215 "querytransformparser.ypp" 4699 4672 { 4700 4673 FunctionArgument::List::const_iterator it((yyvsp[(1) - (3)].functionArguments).constBegin()); … … 4705 4678 if((*it)->name() == (yyvsp[(3) - (3)].functionArgument)->name()) 4706 4679 { 4707 parseInfo->staticContext->error(QtXmlPatterns::tr("An argument byname %1 has already "4680 parseInfo->staticContext->error(QtXmlPatterns::tr("An argument with name %1 has already " 4708 4681 "been declared. Every argument name " 4709 4682 "must be unique.") … … 4720 4693 case 85: 4721 4694 /* Line 1269 of yacc.c. */ 4722 #line 22 02"querytransformparser.ypp"4695 #line 2236 "querytransformparser.ypp" 4723 4696 { 4724 4697 pushVariable((yyvsp[(2) - (3)].qName), (yyvsp[(3) - (3)].sequenceType), Expression::Ptr(), VariableDeclaration::FunctionArgument, (yyloc), parseInfo); … … 4729 4702 case 86: 4730 4703 /* Line 1269 of yacc.c. */ 4731 #line 22 08"querytransformparser.ypp"4704 #line 2242 "querytransformparser.ypp" 4732 4705 { 4733 4706 (yyval.expr).reset(); … … 4737 4710 case 88: 4738 4711 /* Line 1269 of yacc.c. */ 4739 #line 22 14"querytransformparser.ypp"4712 #line 2248 "querytransformparser.ypp" 4740 4713 { 4741 4714 (yyval.expr) = (yyvsp[(2) - (3)].expr); … … 4745 4718 case 91: 4746 4719 /* Line 1269 of yacc.c. */ 4747 #line 22 30"querytransformparser.ypp"4720 #line 2264 "querytransformparser.ypp" 4748 4721 { 4749 4722 (yyval.expr) = create(new CombineNodes((yyvsp[(1) - (3)].expr), CombineNodes::Union, (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); … … 4753 4726 case 93: 4754 4727 /* Line 1269 of yacc.c. */ 4755 #line 22 36"querytransformparser.ypp"4728 #line 2270 "querytransformparser.ypp" 4756 4729 { 4757 4730 /* We write this into a node test. The spec says, 5.5.3 The Meaning of a Pattern: … … 4766 4739 case 94: 4767 4740 /* Line 1269 of yacc.c. */ 4768 #line 22 45"querytransformparser.ypp"4741 #line 2279 "querytransformparser.ypp" 4769 4742 { 4770 4743 /* /axis::node-test … … 4840 4813 case 95: 4841 4814 /* Line 1269 of yacc.c. */ 4842 #line 23 15"querytransformparser.ypp"4815 #line 2349 "querytransformparser.ypp" 4843 4816 { 4844 4817 /* //axis::node-test … … 4855 4828 case 97: 4856 4829 /* Line 1269 of yacc.c. */ 4857 #line 23 27"querytransformparser.ypp"4830 #line 2361 "querytransformparser.ypp" 4858 4831 { 4859 4832 createIdPatternPath((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), QXmlNodeModelIndex::AxisParent, (yylsp[(2) - (3)]), parseInfo); … … 4863 4836 case 98: 4864 4837 /* Line 1269 of yacc.c. */ 4865 #line 23 31"querytransformparser.ypp"4838 #line 2365 "querytransformparser.ypp" 4866 4839 { 4867 4840 createIdPatternPath((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), QXmlNodeModelIndex::AxisAncestor, (yylsp[(2) - (3)]), parseInfo); … … 4871 4844 case 99: 4872 4845 /* Line 1269 of yacc.c. */ 4873 #line 23 36"querytransformparser.ypp"4846 #line 2370 "querytransformparser.ypp" 4874 4847 { 4875 4848 const Expression::List ands((yyvsp[(1) - (1)].expr)->operands()); … … 4943 4916 case 101: 4944 4917 /* Line 1269 of yacc.c. */ 4945 #line 24 06"querytransformparser.ypp"4918 #line 2440 "querytransformparser.ypp" 4946 4919 { 4947 4920 (yyval.expr) = createPatternPath((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), QXmlNodeModelIndex::AxisParent, (yylsp[(2) - (3)]), parseInfo); … … 4951 4924 case 102: 4952 4925 /* Line 1269 of yacc.c. */ 4953 #line 24 10"querytransformparser.ypp"4926 #line 2444 "querytransformparser.ypp" 4954 4927 { 4955 4928 (yyval.expr) = createPatternPath((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), QXmlNodeModelIndex::AxisAncestor, (yylsp[(2) - (3)]), parseInfo); … … 4959 4932 case 103: 4960 4933 /* Line 1269 of yacc.c. */ 4961 #line 24 15"querytransformparser.ypp"4934 #line 2449 "querytransformparser.ypp" 4962 4935 { 4963 4936 const Expression::Ptr expr(findAxisStep((yyvsp[(1) - (1)].expr))); … … 5006 4979 case 105: 5007 4980 /* Line 1269 of yacc.c. */ 5008 #line 24 60"querytransformparser.ypp"4981 #line 2494 "querytransformparser.ypp" 5009 4982 { 5010 4983 (yyval.expr) = create(new ExpressionSequence((yyvsp[(1) - (1)].expressionList)), (yyloc), parseInfo); … … 5014 4987 case 106: 5015 4988 /* Line 1269 of yacc.c. */ 5016 #line 24 65"querytransformparser.ypp"4989 #line 2499 "querytransformparser.ypp" 5017 4990 { 5018 4991 Expression::List l; … … 5025 4998 case 107: 5026 4999 /* Line 1269 of yacc.c. */ 5027 #line 2 472"querytransformparser.ypp"5000 #line 2506 "querytransformparser.ypp" 5028 5001 { 5029 5002 (yyvsp[(1) - (3)].expressionList).append((yyvsp[(3) - (3)].expr)); … … 5034 5007 case 113: 5035 5008 /* Line 1269 of yacc.c. */ 5036 #line 2 483"querytransformparser.ypp"5009 #line 2517 "querytransformparser.ypp" 5037 5010 { 5038 5011 (yyval.expr) = createDirAttributeValue((yyvsp[(3) - (4)].expressionList), parseInfo, (yyloc)); … … 5042 5015 case 114: 5043 5016 /* Line 1269 of yacc.c. */ 5044 #line 2 488"querytransformparser.ypp"5017 #line 2522 "querytransformparser.ypp" 5045 5018 { 5046 5019 QVector<QXmlName> result; … … 5052 5025 case 115: 5053 5026 /* Line 1269 of yacc.c. */ 5054 #line 2 494"querytransformparser.ypp"5027 #line 2528 "querytransformparser.ypp" 5055 5028 { 5056 5029 (yyval.qNameVector) = (yyvsp[(2) - (2)].qNameVector); … … 5060 5033 case 116: 5061 5034 /* Line 1269 of yacc.c. */ 5062 #line 2 499"querytransformparser.ypp"5035 #line 2533 "querytransformparser.ypp" 5063 5036 { 5064 5037 (yyval.qName) = QXmlName(StandardNamespaces::InternalXSLT, StandardLocalNames::Default); … … 5068 5041 case 117: 5069 5042 /* Line 1269 of yacc.c. */ 5070 #line 25 03"querytransformparser.ypp"5043 #line 2537 "querytransformparser.ypp" 5071 5044 { 5072 5045 (yyval.qName) = (yyvsp[(2) - (2)].qName); … … 5076 5049 case 118: 5077 5050 /* Line 1269 of yacc.c. */ 5078 #line 25 08"querytransformparser.ypp"5051 #line 2542 "querytransformparser.ypp" 5079 5052 { 5080 5053 QVector<QXmlName> result; … … 5086 5059 case 119: 5087 5060 /* Line 1269 of yacc.c. */ 5088 #line 25 14"querytransformparser.ypp"5061 #line 2548 "querytransformparser.ypp" 5089 5062 { 5090 5063 (yyvsp[(1) - (3)].qNameVector).append((yyvsp[(3) - (3)].qName)); … … 5095 5068 case 120: 5096 5069 /* Line 1269 of yacc.c. */ 5097 #line 25 20"querytransformparser.ypp"5070 #line 2554 "querytransformparser.ypp" 5098 5071 { 5099 5072 (yyval.qName) = (yyvsp[(1) - (1)].qName); … … 5103 5076 case 121: 5104 5077 /* Line 1269 of yacc.c. */ 5105 #line 25 24"querytransformparser.ypp"5078 #line 2558 "querytransformparser.ypp" 5106 5079 { 5107 5080 if((yyvsp[(1) - (1)].sval) == QLatin1String("#current")) … … 5130 5103 case 124: 5131 5104 /* Line 1269 of yacc.c. */ 5132 #line 25 53"querytransformparser.ypp"5105 #line 2587 "querytransformparser.ypp" 5133 5106 { 5134 5107 /* We're pushing the range variable here, not the positional. */ … … 5139 5112 case 125: 5140 5113 /* Line 1269 of yacc.c. */ 5141 #line 25 57"querytransformparser.ypp"5114 #line 2591 "querytransformparser.ypp" 5142 5115 { 5143 5116 /* It is ok this appears after PositionalVar, because currentRangeSlot() … … 5150 5123 case 126: 5151 5124 /* Line 1269 of yacc.c. */ 5152 #line 25 64"querytransformparser.ypp"5125 #line 2598 "querytransformparser.ypp" 5153 5126 { 5154 5127 Q_ASSERT((yyvsp[(7) - (10)].expr)); … … 5186 5159 case 127: 5187 5160 /* Line 1269 of yacc.c. */ 5188 #line 2 598"querytransformparser.ypp"5161 #line 2632 "querytransformparser.ypp" 5189 5162 { 5190 5163 pushVariable((yyvsp[(3) - (7)].qName), quantificationType((yyvsp[(4) - (7)].sequenceType)), (yyvsp[(7) - (7)].expr), VariableDeclaration::RangeVariable, (yyloc), parseInfo); … … 5194 5167 case 128: 5195 5168 /* Line 1269 of yacc.c. */ 5196 #line 26 01"querytransformparser.ypp"5169 #line 2635 "querytransformparser.ypp" 5197 5170 { 5198 5171 /* It is ok this appears after PositionalVar, because currentRangeSlot() … … 5205 5178 case 129: 5206 5179 /* Line 1269 of yacc.c. */ 5207 #line 26 08"querytransformparser.ypp"5180 #line 2642 "querytransformparser.ypp" 5208 5181 { 5209 5182 (yyval.expr) = create(new ForClause((yyvsp[(9) - (10)].enums.slot), (yyvsp[(7) - (10)].expr), (yyvsp[(10) - (10)].expr), (yyvsp[(5) - (10)].enums.slot)), (yyloc), parseInfo); … … 5218 5191 case 133: 5219 5192 /* Line 1269 of yacc.c. */ 5220 #line 26 22"querytransformparser.ypp"5193 #line 2656 "querytransformparser.ypp" 5221 5194 { 5222 5195 (yyval.enums.slot) = -1; … … 5226 5199 case 134: 5227 5200 /* Line 1269 of yacc.c. */ 5228 #line 26 27"querytransformparser.ypp"5201 #line 2661 "querytransformparser.ypp" 5229 5202 { 5230 5203 pushVariable((yyvsp[(3) - (3)].qName), CommonSequenceTypes::ExactlyOneInteger, Expression::Ptr(), … … 5236 5209 case 135: 5237 5210 /* Line 1269 of yacc.c. */ 5238 #line 26 34"querytransformparser.ypp"5211 #line 2668 "querytransformparser.ypp" 5239 5212 { 5240 5213 (yyval.expr) = pushVariable((yyvsp[(4) - (7)].qName), quantificationType((yyvsp[(5) - (7)].sequenceType)), (yyvsp[(7) - (7)].expr), VariableDeclaration::ExpressionVariable, (yyloc), parseInfo); … … 5244 5217 case 136: 5245 5218 /* Line 1269 of yacc.c. */ 5246 #line 26 38"querytransformparser.ypp"5247 { 5248 disallowedConstruct(parseInfo, (yyloc), (yyvsp[(2) - (9)].enums.Bool));5219 #line 2672 "querytransformparser.ypp" 5220 { 5221 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc), (yyvsp[(2) - (9)].enums.Bool)); 5249 5222 5250 5223 Q_ASSERT(parseInfo->variables.top()->name == (yyvsp[(4) - (9)].qName)); … … 5256 5229 case 137: 5257 5230 /* Line 1269 of yacc.c. */ 5258 #line 26 47"querytransformparser.ypp"5231 #line 2681 "querytransformparser.ypp" 5259 5232 { (yyval.expr) = pushVariable((yyvsp[(3) - (6)].qName), quantificationType((yyvsp[(4) - (6)].sequenceType)), (yyvsp[(6) - (6)].expr), VariableDeclaration::ExpressionVariable, (yyloc), parseInfo);} 5260 5233 break; … … 5262 5235 case 138: 5263 5236 /* Line 1269 of yacc.c. */ 5264 #line 26 49"querytransformparser.ypp"5237 #line 2683 "querytransformparser.ypp" 5265 5238 { 5266 5239 Q_ASSERT(parseInfo->variables.top()->name == (yyvsp[(3) - (8)].qName)); … … 5272 5245 case 142: 5273 5246 /* Line 1269 of yacc.c. */ 5274 #line 26 60"querytransformparser.ypp"5247 #line 2694 "querytransformparser.ypp" 5275 5248 { 5276 5249 if((yyvsp[(1) - (3)].orderSpecs).isEmpty()) … … 5283 5256 case 143: 5284 5257 /* Line 1269 of yacc.c. */ 5285 #line 2 668"querytransformparser.ypp"5258 #line 2702 "querytransformparser.ypp" 5286 5259 { 5287 5260 if((yyvsp[(3) - (5)].orderSpecs).isEmpty()) … … 5296 5269 case 144: 5297 5270 /* Line 1269 of yacc.c. */ 5298 #line 2 678"querytransformparser.ypp"5271 #line 2712 "querytransformparser.ypp" 5299 5272 { 5300 5273 (yyval.orderSpecs) = OrderSpecTransfer::List(); … … 5304 5277 case 146: 5305 5278 /* Line 1269 of yacc.c. */ 5306 #line 2 684"querytransformparser.ypp"5279 #line 2718 "querytransformparser.ypp" 5307 5280 { 5308 5281 (yyval.orderSpecs) = (yyvsp[(2) - (2)].orderSpecs); … … 5312 5285 case 147: 5313 5286 /* Line 1269 of yacc.c. */ 5314 #line 2 689"querytransformparser.ypp"5287 #line 2723 "querytransformparser.ypp" 5315 5288 { 5316 5289 OrderSpecTransfer::List list; … … 5323 5296 case 148: 5324 5297 /* Line 1269 of yacc.c. */ 5325 #line 2 696"querytransformparser.ypp"5298 #line 2730 "querytransformparser.ypp" 5326 5299 { 5327 5300 OrderSpecTransfer::List list; … … 5333 5306 case 149: 5334 5307 /* Line 1269 of yacc.c. */ 5335 #line 27 03"querytransformparser.ypp"5308 #line 2737 "querytransformparser.ypp" 5336 5309 { 5337 5310 (yyval.orderSpec) = OrderSpecTransfer((yyvsp[(1) - (4)].expr), OrderBy::OrderSpec((yyvsp[(2) - (4)].enums.sortDirection), (yyvsp[(3) - (4)].enums.orderingEmptySequence))); … … 5341 5314 case 150: 5342 5315 /* Line 1269 of yacc.c. */ 5343 #line 27 08"querytransformparser.ypp"5316 #line 2742 "querytransformparser.ypp" 5344 5317 { 5345 5318 /* Where does the specification state the default value is ascending? … … 5365 5338 case 151: 5366 5339 /* Line 1269 of yacc.c. */ 5367 #line 27 29"querytransformparser.ypp"5340 #line 2763 "querytransformparser.ypp" 5368 5341 { 5369 5342 (yyval.enums.sortDirection) = OrderBy::OrderSpec::Ascending; … … 5373 5346 case 152: 5374 5347 /* Line 1269 of yacc.c. */ 5375 #line 27 34"querytransformparser.ypp"5348 #line 2768 "querytransformparser.ypp" 5376 5349 { 5377 5350 (yyval.enums.sortDirection) = OrderBy::OrderSpec::Descending; … … 5381 5354 case 153: 5382 5355 /* Line 1269 of yacc.c. */ 5383 #line 27 39"querytransformparser.ypp"5356 #line 2773 "querytransformparser.ypp" 5384 5357 { 5385 5358 (yyval.enums.orderingEmptySequence) = parseInfo->staticContext->orderingEmptySequence(); … … 5389 5362 case 156: 5390 5363 /* Line 1269 of yacc.c. */ 5391 #line 27 46"querytransformparser.ypp"5364 #line 2780 "querytransformparser.ypp" 5392 5365 { 5393 5366 if(parseInfo->isXSLT()) … … 5400 5373 case 157: 5401 5374 /* Line 1269 of yacc.c. */ 5402 #line 27 53"querytransformparser.ypp"5375 #line 2787 "querytransformparser.ypp" 5403 5376 { 5404 5377 /* We do nothing. We don't use collations, and we have this non-terminal … … 5409 5382 case 158: 5410 5383 /* Line 1269 of yacc.c. */ 5411 #line 27 59"querytransformparser.ypp"5384 #line 2793 "querytransformparser.ypp" 5412 5385 { 5413 5386 parseInfo->orderStability.push(OrderBy::StableOrder); … … 5417 5390 case 159: 5418 5391 /* Line 1269 of yacc.c. */ 5419 #line 27 63"querytransformparser.ypp"5392 #line 2797 "querytransformparser.ypp" 5420 5393 { 5421 5394 parseInfo->orderStability.push(OrderBy::UnstableOrder); … … 5425 5398 case 162: 5426 5399 /* Line 1269 of yacc.c. */ 5427 #line 2 771"querytransformparser.ypp"5400 #line 2805 "querytransformparser.ypp" 5428 5401 { 5429 5402 pushVariable((yyvsp[(3) - (6)].qName), quantificationType((yyvsp[(4) - (6)].sequenceType)), (yyvsp[(6) - (6)].expr), … … 5434 5407 case 163: 5435 5408 /* Line 1269 of yacc.c. */ 5436 #line 2 775"querytransformparser.ypp"5409 #line 2809 "querytransformparser.ypp" 5437 5410 {(yyval.enums.slot) = parseInfo->staticContext->currentRangeSlot();} 5438 5411 break; … … 5440 5413 case 164: 5441 5414 /* Line 1269 of yacc.c. */ 5442 #line 2777 "querytransformparser.ypp" 5443 { 5415 #line 2811 "querytransformparser.ypp" 5416 { 5417 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5444 5418 (yyval.expr) = create(new QuantifiedExpression((yyvsp[(8) - (9)].enums.slot), 5445 5419 QuantifiedExpression::Some, (yyvsp[(6) - (9)].expr), (yyvsp[(9) - (9)].expr)), (yyloc), parseInfo); … … 5450 5424 case 165: 5451 5425 /* Line 1269 of yacc.c. */ 5452 #line 2 784"querytransformparser.ypp"5426 #line 2819 "querytransformparser.ypp" 5453 5427 { 5454 5428 (yyval.expr) = pushVariable((yyvsp[(3) - (6)].qName), quantificationType((yyvsp[(4) - (6)].sequenceType)), (yyvsp[(6) - (6)].expr), … … 5459 5433 case 166: 5460 5434 /* Line 1269 of yacc.c. */ 5461 #line 2 788"querytransformparser.ypp"5435 #line 2823 "querytransformparser.ypp" 5462 5436 {(yyval.enums.slot) = parseInfo->staticContext->currentRangeSlot();} 5463 5437 break; … … 5465 5439 case 167: 5466 5440 /* Line 1269 of yacc.c. */ 5467 #line 2 790"querytransformparser.ypp"5441 #line 2825 "querytransformparser.ypp" 5468 5442 { 5469 5443 (yyval.expr) = create(new QuantifiedExpression((yyvsp[(8) - (9)].enums.slot), … … 5475 5449 case 169: 5476 5450 /* Line 1269 of yacc.c. */ 5477 #line 2 799"querytransformparser.ypp"5451 #line 2834 "querytransformparser.ypp" 5478 5452 { 5479 5453 pushVariable((yyvsp[(3) - (6)].qName), quantificationType((yyvsp[(4) - (6)].sequenceType)), (yyvsp[(6) - (6)].expr), … … 5484 5458 case 170: 5485 5459 /* Line 1269 of yacc.c. */ 5486 #line 28 03"querytransformparser.ypp"5460 #line 2838 "querytransformparser.ypp" 5487 5461 {(yyval.enums.slot) = parseInfo->staticContext->currentRangeSlot();} 5488 5462 break; … … 5490 5464 case 171: 5491 5465 /* Line 1269 of yacc.c. */ 5492 #line 2805 "querytransformparser.ypp" 5493 { 5466 #line 2840 "querytransformparser.ypp" 5467 { 5468 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5494 5469 (yyval.expr) = create(new QuantifiedExpression((yyvsp[(8) - (9)].enums.slot), 5495 5470 QuantifiedExpression::Every, (yyvsp[(6) - (9)].expr), (yyvsp[(9) - (9)].expr)), (yyloc), parseInfo); … … 5500 5475 case 172: 5501 5476 /* Line 1269 of yacc.c. */ 5502 #line 28 12"querytransformparser.ypp"5477 #line 2848 "querytransformparser.ypp" 5503 5478 { 5504 5479 (yyval.expr) = pushVariable((yyvsp[(3) - (6)].qName), quantificationType((yyvsp[(4) - (6)].sequenceType)), (yyvsp[(6) - (6)].expr), … … 5509 5484 case 173: 5510 5485 /* Line 1269 of yacc.c. */ 5511 #line 28 16"querytransformparser.ypp"5486 #line 2852 "querytransformparser.ypp" 5512 5487 {(yyval.enums.slot) = parseInfo->staticContext->currentRangeSlot();} 5513 5488 break; … … 5515 5490 case 174: 5516 5491 /* Line 1269 of yacc.c. */ 5517 #line 28 18"querytransformparser.ypp"5492 #line 2854 "querytransformparser.ypp" 5518 5493 { 5519 5494 (yyval.expr) = create(new QuantifiedExpression((yyvsp[(8) - (9)].enums.slot), … … 5525 5500 case 176: 5526 5501 /* Line 1269 of yacc.c. */ 5527 #line 28 27"querytransformparser.ypp"5502 #line 2863 "querytransformparser.ypp" 5528 5503 { 5529 5504 (yyval.expr) = (yyvsp[(2) - (2)].expr); … … 5533 5508 case 177: 5534 5509 /* Line 1269 of yacc.c. */ 5535 #line 28 54"querytransformparser.ypp"5510 #line 2890 "querytransformparser.ypp" 5536 5511 { 5537 5512 parseInfo->typeswitchSource.push((yyvsp[(3) - (4)].expr)); … … 5541 5516 case 178: 5542 5517 /* Line 1269 of yacc.c. */ 5543 #line 28 58"querytransformparser.ypp"5544 { 5545 disallowedConstruct(parseInfo, (yyloc));5518 #line 2894 "querytransformparser.ypp" 5519 { 5520 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 5546 5521 parseInfo->typeswitchSource.pop(); 5547 5522 (yyval.expr) = (yyvsp[(6) - (6)].expr); … … 5551 5526 case 179: 5552 5527 /* Line 1269 of yacc.c. */ 5553 #line 2 865"querytransformparser.ypp"5528 #line 2901 "querytransformparser.ypp" 5554 5529 { 5555 5530 if(!(yyvsp[(2) - (3)].qName).isNull()) … … 5563 5538 case 180: 5564 5539 /* Line 1269 of yacc.c. */ 5565 #line 2 873"querytransformparser.ypp"5540 #line 2909 "querytransformparser.ypp" 5566 5541 { 5567 5542 /* The variable shouldn't be in-scope for other case branches. */ … … 5573 5548 case 181: 5574 5549 /* Line 1269 of yacc.c. */ 5575 #line 2 879"querytransformparser.ypp"5550 #line 2915 "querytransformparser.ypp" 5576 5551 { 5577 5552 const Expression::Ptr instanceOf(create(new InstanceOf(parseInfo->typeswitchSource.top(), (yyvsp[(3) - (8)].sequenceType)), (yyloc), parseInfo)); … … 5582 5557 case 184: 5583 5558 /* Line 1269 of yacc.c. */ 5584 #line 2 888"querytransformparser.ypp"5559 #line 2924 "querytransformparser.ypp" 5585 5560 { 5586 5561 (yyval.qName) = QXmlName(); … … 5590 5565 case 185: 5591 5566 /* Line 1269 of yacc.c. */ 5592 #line 2 893"querytransformparser.ypp"5567 #line 2929 "querytransformparser.ypp" 5593 5568 { 5594 5569 (yyval.qName) = (yyvsp[(2) - (3)].qName); … … 5598 5573 case 186: 5599 5574 /* Line 1269 of yacc.c. */ 5600 #line 2 898"querytransformparser.ypp"5575 #line 2934 "querytransformparser.ypp" 5601 5576 { 5602 5577 (yyval.expr) = (yyvsp[(3) - (3)].expr); … … 5606 5581 case 187: 5607 5582 /* Line 1269 of yacc.c. */ 5608 #line 29 02"querytransformparser.ypp"5583 #line 2938 "querytransformparser.ypp" 5609 5584 { 5610 5585 if(!(yyvsp[(3) - (3)].qName).isNull()) … … 5619 5594 case 188: 5620 5595 /* Line 1269 of yacc.c. */ 5621 #line 29 11"querytransformparser.ypp"5596 #line 2947 "querytransformparser.ypp" 5622 5597 { 5623 5598 if(!(yyvsp[(3) - (6)].qName).isNull()) … … 5629 5604 case 189: 5630 5605 /* Line 1269 of yacc.c. */ 5631 #line 2918 "querytransformparser.ypp" 5632 { 5606 #line 2954 "querytransformparser.ypp" 5607 { 5608 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5633 5609 (yyval.expr) = create(new IfThenClause((yyvsp[(3) - (8)].expr), (yyvsp[(6) - (8)].expr), (yyvsp[(8) - (8)].expr)), (yyloc), parseInfo); 5634 5610 } … … 5637 5613 case 191: 5638 5614 /* Line 1269 of yacc.c. */ 5639 #line 2924 "querytransformparser.ypp" 5640 { 5615 #line 2961 "querytransformparser.ypp" 5616 { 5617 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5641 5618 (yyval.expr) = create(new OrExpression((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); 5642 5619 } … … 5645 5622 case 193: 5646 5623 /* Line 1269 of yacc.c. */ 5647 #line 2930 "querytransformparser.ypp" 5648 { 5624 #line 2968 "querytransformparser.ypp" 5625 { 5626 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5649 5627 (yyval.expr) = create(new AndExpression((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); 5650 5628 } … … 5653 5631 case 199: 5654 5632 /* Line 1269 of yacc.c. */ 5655 #line 2941 "querytransformparser.ypp" 5656 { 5633 #line 2980 "querytransformparser.ypp" 5634 { 5635 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5657 5636 (yyval.expr) = create(new RangeExpression((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); 5658 5637 } … … 5661 5640 case 201: 5662 5641 /* Line 1269 of yacc.c. */ 5663 #line 2947 "querytransformparser.ypp" 5664 { 5642 #line 2987 "querytransformparser.ypp" 5643 { 5644 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5665 5645 (yyval.expr) = create(new ArithmeticExpression((yyvsp[(1) - (3)].expr), (yyvsp[(2) - (3)].enums.mathOperator), (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); 5666 5646 } … … 5669 5649 case 202: 5670 5650 /* Line 1269 of yacc.c. */ 5671 #line 29 51"querytransformparser.ypp"5651 #line 2992 "querytransformparser.ypp" 5672 5652 {(yyval.enums.mathOperator) = AtomicMathematician::Add;} 5673 5653 break; … … 5675 5655 case 203: 5676 5656 /* Line 1269 of yacc.c. */ 5677 #line 29 52"querytransformparser.ypp"5657 #line 2993 "querytransformparser.ypp" 5678 5658 {(yyval.enums.mathOperator) = AtomicMathematician::Substract;} 5679 5659 break; … … 5681 5661 case 205: 5682 5662 /* Line 1269 of yacc.c. */ 5683 #line 2956 "querytransformparser.ypp" 5684 { 5663 #line 2997 "querytransformparser.ypp" 5664 { 5665 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5685 5666 (yyval.expr) = create(new ArithmeticExpression((yyvsp[(1) - (3)].expr), (yyvsp[(2) - (3)].enums.mathOperator), (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); 5686 5667 } … … 5689 5670 case 206: 5690 5671 /* Line 1269 of yacc.c. */ 5691 #line 2960"querytransformparser.ypp"5672 #line 3002 "querytransformparser.ypp" 5692 5673 {(yyval.enums.mathOperator) = AtomicMathematician::Multiply;} 5693 5674 break; … … 5695 5676 case 207: 5696 5677 /* Line 1269 of yacc.c. */ 5697 #line 2961"querytransformparser.ypp"5678 #line 3003 "querytransformparser.ypp" 5698 5679 {(yyval.enums.mathOperator) = AtomicMathematician::Div;} 5699 5680 break; … … 5701 5682 case 208: 5702 5683 /* Line 1269 of yacc.c. */ 5703 #line 2962"querytransformparser.ypp"5684 #line 3004 "querytransformparser.ypp" 5704 5685 {(yyval.enums.mathOperator) = AtomicMathematician::IDiv;} 5705 5686 break; … … 5707 5688 case 209: 5708 5689 /* Line 1269 of yacc.c. */ 5709 #line 2963"querytransformparser.ypp"5690 #line 3005 "querytransformparser.ypp" 5710 5691 {(yyval.enums.mathOperator) = AtomicMathematician::Mod;} 5711 5692 break; … … 5713 5694 case 211: 5714 5695 /* Line 1269 of yacc.c. */ 5715 #line 2967 "querytransformparser.ypp" 5716 { 5696 #line 3009 "querytransformparser.ypp" 5697 { 5698 allowedIn(QueryLanguages(QXmlQuery::XQuery10 5699 | QXmlQuery::XPath20 5700 | QXmlQuery::XmlSchema11IdentityConstraintField 5701 | QXmlQuery::XmlSchema11IdentityConstraintSelector), 5702 parseInfo, (yyloc)); 5717 5703 (yyval.expr) = create(new CombineNodes((yyvsp[(1) - (3)].expr), CombineNodes::Union, (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); 5718 5704 } … … 5721 5707 case 213: 5722 5708 /* Line 1269 of yacc.c. */ 5723 #line 2973 "querytransformparser.ypp" 5724 { 5709 #line 3020 "querytransformparser.ypp" 5710 { 5711 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5725 5712 (yyval.expr) = create(new CombineNodes((yyvsp[(1) - (3)].expr), (yyvsp[(2) - (3)].enums.combinedNodeOp), (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); 5726 5713 } … … 5729 5716 case 216: 5730 5717 /* Line 1269 of yacc.c. */ 5731 #line 2981"querytransformparser.ypp"5718 #line 3029 "querytransformparser.ypp" 5732 5719 { 5733 5720 (yyval.enums.combinedNodeOp) = CombineNodes::Intersect; … … 5737 5724 case 217: 5738 5725 /* Line 1269 of yacc.c. */ 5739 #line 2985"querytransformparser.ypp"5726 #line 3033 "querytransformparser.ypp" 5740 5727 { 5741 5728 (yyval.enums.combinedNodeOp) = CombineNodes::Except; … … 5745 5732 case 219: 5746 5733 /* Line 1269 of yacc.c. */ 5747 #line 2991 "querytransformparser.ypp" 5748 { 5734 #line 3039 "querytransformparser.ypp" 5735 { 5736 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5749 5737 (yyval.expr) = create(new InstanceOf((yyvsp[(1) - (4)].expr), 5750 SequenceType::Ptr((yyvsp[(4) - (4)].sequenceType))), (yyloc), parseInfo);5738 SequenceType::Ptr((yyvsp[(4) - (4)].sequenceType))), (yyloc), parseInfo); 5751 5739 } 5752 5740 break; … … 5754 5742 case 221: 5755 5743 /* Line 1269 of yacc.c. */ 5756 #line 2998 "querytransformparser.ypp" 5757 { 5744 #line 3047 "querytransformparser.ypp" 5745 { 5746 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5758 5747 (yyval.expr) = create(new TreatAs((yyvsp[(1) - (4)].expr), (yyvsp[(4) - (4)].sequenceType)), (yyloc), parseInfo); 5759 5748 } … … 5762 5751 case 223: 5763 5752 /* Line 1269 of yacc.c. */ 5764 #line 3004 "querytransformparser.ypp" 5765 { 5753 #line 3054 "querytransformparser.ypp" 5754 { 5755 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5766 5756 (yyval.expr) = create(new CastableAs((yyvsp[(1) - (4)].expr), (yyvsp[(4) - (4)].sequenceType)), (yyloc), parseInfo); 5767 5757 } … … 5770 5760 case 225: 5771 5761 /* Line 1269 of yacc.c. */ 5772 #line 3010 "querytransformparser.ypp" 5773 { 5762 #line 3061 "querytransformparser.ypp" 5763 { 5764 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5774 5765 (yyval.expr) = create(new CastAs((yyvsp[(1) - (4)].expr), (yyvsp[(4) - (4)].sequenceType)), (yyloc), parseInfo); 5775 5766 } … … 5778 5769 case 227: 5779 5770 /* Line 1269 of yacc.c. */ 5780 #line 3016 "querytransformparser.ypp" 5781 { 5771 #line 3068 "querytransformparser.ypp" 5772 { 5773 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5782 5774 (yyval.expr) = create(new UnaryExpression((yyvsp[(1) - (2)].enums.mathOperator), (yyvsp[(2) - (2)].expr), parseInfo->staticContext), (yyloc), parseInfo); 5783 5775 } … … 5786 5778 case 228: 5787 5779 /* Line 1269 of yacc.c. */ 5788 #line 30 21"querytransformparser.ypp"5780 #line 3074 "querytransformparser.ypp" 5789 5781 { 5790 5782 (yyval.enums.mathOperator) = AtomicMathematician::Add; … … 5794 5786 case 229: 5795 5787 /* Line 1269 of yacc.c. */ 5796 #line 30 25"querytransformparser.ypp"5788 #line 3078 "querytransformparser.ypp" 5797 5789 { 5798 5790 (yyval.enums.mathOperator) = AtomicMathematician::Substract; … … 5802 5794 case 233: 5803 5795 /* Line 1269 of yacc.c. */ 5804 #line 3034 "querytransformparser.ypp" 5805 { 5796 #line 3087 "querytransformparser.ypp" 5797 { 5798 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 5806 5799 (yyval.expr) = create(new GeneralComparison((yyvsp[(1) - (3)].expr), (yyvsp[(2) - (3)].enums.valueOperator), (yyvsp[(3) - (3)].expr), parseInfo->isBackwardsCompat.top()), (yyloc), parseInfo); 5807 5800 } … … 5810 5803 case 234: 5811 5804 /* Line 1269 of yacc.c. */ 5812 #line 30 38"querytransformparser.ypp"5805 #line 3092 "querytransformparser.ypp" 5813 5806 {(yyval.enums.valueOperator) = AtomicComparator::OperatorEqual;} 5814 5807 break; … … 5816 5809 case 235: 5817 5810 /* Line 1269 of yacc.c. */ 5818 #line 30 39"querytransformparser.ypp"5811 #line 3093 "querytransformparser.ypp" 5819 5812 {(yyval.enums.valueOperator) = AtomicComparator::OperatorNotEqual;} 5820 5813 break; … … 5822 5815 case 236: 5823 5816 /* Line 1269 of yacc.c. */ 5824 #line 30 40"querytransformparser.ypp"5817 #line 3094 "querytransformparser.ypp" 5825 5818 {(yyval.enums.valueOperator) = AtomicComparator::OperatorGreaterOrEqual;} 5826 5819 break; … … 5828 5821 case 237: 5829 5822 /* Line 1269 of yacc.c. */ 5830 #line 30 41"querytransformparser.ypp"5823 #line 3095 "querytransformparser.ypp" 5831 5824 {(yyval.enums.valueOperator) = AtomicComparator::OperatorGreaterThan;} 5832 5825 break; … … 5834 5827 case 238: 5835 5828 /* Line 1269 of yacc.c. */ 5836 #line 30 42"querytransformparser.ypp"5829 #line 3096 "querytransformparser.ypp" 5837 5830 {(yyval.enums.valueOperator) = AtomicComparator::OperatorLessOrEqual;} 5838 5831 break; … … 5840 5833 case 239: 5841 5834 /* Line 1269 of yacc.c. */ 5842 #line 30 43"querytransformparser.ypp"5835 #line 3097 "querytransformparser.ypp" 5843 5836 {(yyval.enums.valueOperator) = AtomicComparator::OperatorLessThan;} 5844 5837 break; … … 5846 5839 case 240: 5847 5840 /* Line 1269 of yacc.c. */ 5848 #line 3 046"querytransformparser.ypp"5841 #line 3100 "querytransformparser.ypp" 5849 5842 { 5850 5843 (yyval.expr) = create(new ValueComparison((yyvsp[(1) - (3)].expr), (yyvsp[(2) - (3)].enums.valueOperator), (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); … … 5854 5847 case 241: 5855 5848 /* Line 1269 of yacc.c. */ 5856 #line 3 050"querytransformparser.ypp"5849 #line 3104 "querytransformparser.ypp" 5857 5850 {(yyval.enums.valueOperator) = AtomicComparator::OperatorEqual;} 5858 5851 break; … … 5860 5853 case 242: 5861 5854 /* Line 1269 of yacc.c. */ 5862 #line 3 051"querytransformparser.ypp"5855 #line 3105 "querytransformparser.ypp" 5863 5856 {(yyval.enums.valueOperator) = AtomicComparator::OperatorNotEqual;} 5864 5857 break; … … 5866 5859 case 243: 5867 5860 /* Line 1269 of yacc.c. */ 5868 #line 3 052"querytransformparser.ypp"5861 #line 3106 "querytransformparser.ypp" 5869 5862 {(yyval.enums.valueOperator) = AtomicComparator::OperatorGreaterOrEqual;} 5870 5863 break; … … 5872 5865 case 244: 5873 5866 /* Line 1269 of yacc.c. */ 5874 #line 3 053"querytransformparser.ypp"5867 #line 3107 "querytransformparser.ypp" 5875 5868 {(yyval.enums.valueOperator) = AtomicComparator::OperatorGreaterThan;} 5876 5869 break; … … 5878 5871 case 245: 5879 5872 /* Line 1269 of yacc.c. */ 5880 #line 3 054"querytransformparser.ypp"5873 #line 3108 "querytransformparser.ypp" 5881 5874 {(yyval.enums.valueOperator) = AtomicComparator::OperatorLessOrEqual;} 5882 5875 break; … … 5884 5877 case 246: 5885 5878 /* Line 1269 of yacc.c. */ 5886 #line 3 055"querytransformparser.ypp"5879 #line 3109 "querytransformparser.ypp" 5887 5880 {(yyval.enums.valueOperator) = AtomicComparator::OperatorLessThan;} 5888 5881 break; … … 5890 5883 case 247: 5891 5884 /* Line 1269 of yacc.c. */ 5892 #line 3 058"querytransformparser.ypp"5885 #line 3112 "querytransformparser.ypp" 5893 5886 { 5894 5887 (yyval.expr) = create(new NodeComparison((yyvsp[(1) - (3)].expr), (yyvsp[(2) - (3)].enums.nodeOperator), (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); … … 5898 5891 case 248: 5899 5892 /* Line 1269 of yacc.c. */ 5900 #line 3 062"querytransformparser.ypp"5893 #line 3116 "querytransformparser.ypp" 5901 5894 {(yyval.enums.nodeOperator) = QXmlNodeModelIndex::Is;} 5902 5895 break; … … 5904 5897 case 249: 5905 5898 /* Line 1269 of yacc.c. */ 5906 #line 3 063"querytransformparser.ypp"5899 #line 3117 "querytransformparser.ypp" 5907 5900 {(yyval.enums.nodeOperator) = QXmlNodeModelIndex::Precedes;} 5908 5901 break; … … 5910 5903 case 250: 5911 5904 /* Line 1269 of yacc.c. */ 5912 #line 3 064"querytransformparser.ypp"5905 #line 3118 "querytransformparser.ypp" 5913 5906 {(yyval.enums.nodeOperator) = QXmlNodeModelIndex::Follows;} 5914 5907 break; … … 5916 5909 case 251: 5917 5910 /* Line 1269 of yacc.c. */ 5918 #line 3 067"querytransformparser.ypp"5919 { 5920 disallowedConstruct(parseInfo, (yyloc));5911 #line 3121 "querytransformparser.ypp" 5912 { 5913 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 5921 5914 parseInfo->staticContext->error(QtXmlPatterns::tr("The Schema Validation Feature is not supported. " 5922 5915 "Hence, %1-expressions may not be used.") … … 5931 5924 case 252: 5932 5925 /* Line 1269 of yacc.c. */ 5933 #line 3 080"querytransformparser.ypp"5926 #line 3134 "querytransformparser.ypp" 5934 5927 {(yyval.enums.validationMode) = Validate::Strict;} 5935 5928 break; … … 5937 5930 case 253: 5938 5931 /* Line 1269 of yacc.c. */ 5939 #line 3 081"querytransformparser.ypp"5932 #line 3135 "querytransformparser.ypp" 5940 5933 {(yyval.enums.validationMode) = Validate::Strict;} 5941 5934 break; … … 5943 5936 case 254: 5944 5937 /* Line 1269 of yacc.c. */ 5945 #line 3 082"querytransformparser.ypp"5938 #line 3136 "querytransformparser.ypp" 5946 5939 {(yyval.enums.validationMode) = Validate::Lax;} 5947 5940 break; … … 5949 5942 case 255: 5950 5943 /* Line 1269 of yacc.c. */ 5951 #line 3085 "querytransformparser.ypp" 5952 { 5944 #line 3139 "querytransformparser.ypp" 5945 { 5946 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 5953 5947 /* We don't support any pragmas, so we only do the 5954 5948 * necessary validation and use the fallback expression. */ … … 5968 5962 case 256: 5969 5963 /* Line 1269 of yacc.c. */ 5970 #line 31 01"querytransformparser.ypp"5964 #line 3156 "querytransformparser.ypp" 5971 5965 { 5972 5966 (yyval.expr).reset(); … … 5976 5970 case 257: 5977 5971 /* Line 1269 of yacc.c. */ 5978 #line 31 05"querytransformparser.ypp"5972 #line 3160 "querytransformparser.ypp" 5979 5973 { 5980 5974 (yyval.expr) = (yyvsp[(2) - (3)].expr); … … 5984 5978 case 260: 5985 5979 /* Line 1269 of yacc.c. */ 5986 #line 31 13"querytransformparser.ypp"5987 { 5988 disallowedConstruct(parseInfo, (yyloc));5980 #line 3168 "querytransformparser.ypp" 5981 { 5982 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 5989 5983 } 5990 5984 break; … … 5992 5986 case 263: 5993 5987 /* Line 1269 of yacc.c. */ 5994 #line 31 21"querytransformparser.ypp"5988 #line 3176 "querytransformparser.ypp" 5995 5989 { 5996 5990 /* This is "/step". That is, fn:root(self::node()) treat as document-node()/RelativePathExpr. */ … … 6001 5995 case 264: 6002 5996 /* Line 1269 of yacc.c. */ 6003 #line 31 27"querytransformparser.ypp"5997 #line 3182 "querytransformparser.ypp" 6004 5998 { 6005 5999 (yyval.expr) = createSlashSlashPath(createRootExpression(parseInfo, (yyloc)), (yyvsp[(2) - (2)].expr), (yyloc), parseInfo); … … 6009 6003 case 265: 6010 6004 /* Line 1269 of yacc.c. */ 6011 #line 31 31"querytransformparser.ypp"6005 #line 3186 "querytransformparser.ypp" 6012 6006 { 6013 6007 /* This is "/". That is, fn:root(self::node()) treat as document-node(). */ … … 6018 6012 case 268: 6019 6013 /* Line 1269 of yacc.c. */ 6020 #line 31 41"querytransformparser.ypp"6014 #line 3196 "querytransformparser.ypp" 6021 6015 { 6022 6016 (yyval.expr) = create(new Path((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), (yyvsp[(2) - (3)].enums.pathKind)), (yyloc), parseInfo); … … 6026 6020 case 269: 6027 6021 /* Line 1269 of yacc.c. */ 6028 #line 3 145"querytransformparser.ypp"6022 #line 3200 "querytransformparser.ypp" 6029 6023 { 6030 6024 const Expression::Ptr orderBy(createReturnOrderBy((yyvsp[(4) - (7)].orderSpecs), (yyvsp[(6) - (7)].expr), parseInfo->orderStability.pop(), (yyloc), parseInfo)); … … 6039 6033 case 270: 6040 6034 /* Line 1269 of yacc.c. */ 6041 #line 3 154"querytransformparser.ypp"6035 #line 3209 "querytransformparser.ypp" 6042 6036 { 6043 6037 (yyval.expr) = createSlashSlashPath((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), (yyloc), parseInfo); … … 6047 6041 case 271: 6048 6042 /* Line 1269 of yacc.c. */ 6049 #line 3 159"querytransformparser.ypp"6043 #line 3214 "querytransformparser.ypp" 6050 6044 { 6051 6045 (yyval.expr) = NodeSortExpression::wrapAround((yyvsp[(1) - (1)].expr), parseInfo->staticContext); … … 6055 6049 case 273: 6056 6050 /* Line 1269 of yacc.c. */ 6057 #line 3 164"querytransformparser.ypp"6051 #line 3219 "querytransformparser.ypp" 6058 6052 { 6059 6053 (yyval.expr) = create(new CurrentItemStore((yyvsp[(2) - (2)].expr)), (yyloc), parseInfo); … … 6063 6057 case 274: 6064 6058 /* Line 1269 of yacc.c. */ 6065 #line 3 168"querytransformparser.ypp"6059 #line 3223 "querytransformparser.ypp" 6066 6060 { 6067 6061 const xsDouble version = (yyvsp[(1) - (1)].sval).toDouble(); … … 6075 6069 case 275: 6076 6070 /* Line 1269 of yacc.c. */ 6077 #line 3 176"querytransformparser.ypp"6071 #line 3231 "querytransformparser.ypp" 6078 6072 { 6079 6073 if((yyvsp[(2) - (3)].enums.Double) < 2) … … 6086 6080 case 276: 6087 6081 /* Line 1269 of yacc.c. */ 6088 #line 3183 "querytransformparser.ypp" 6089 { 6082 #line 3238 "querytransformparser.ypp" 6083 { 6084 allowedIn(QXmlQuery::XSLT20, parseInfo, (yyloc)); 6090 6085 Q_ASSERT(!(yyvsp[(2) - (5)].sval).isEmpty()); 6091 6086 (yyval.expr) = create(new StaticBaseURIStore((yyvsp[(2) - (5)].sval), (yyvsp[(4) - (5)].expr)), (yyloc), parseInfo); … … 6095 6090 case 277: 6096 6091 /* Line 1269 of yacc.c. */ 6097 #line 3189 "querytransformparser.ypp" 6098 { 6092 #line 3245 "querytransformparser.ypp" 6093 { 6094 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XSLT20), parseInfo, (yyloc)); 6099 6095 parseInfo->resolvers.push(parseInfo->staticContext->namespaceBindings()); 6100 6096 const NamespaceResolver::Ptr resolver(new DelegatingNamespaceResolver(parseInfo->staticContext->namespaceBindings())); … … 6108 6104 case 278: 6109 6105 /* Line 1269 of yacc.c. */ 6110 #line 3 199"querytransformparser.ypp"6106 #line 3256 "querytransformparser.ypp" 6111 6107 { 6112 6108 parseInfo->staticContext->setNamespaceBindings(parseInfo->resolvers.pop()); … … 6117 6113 case 279: 6118 6114 /* Line 1269 of yacc.c. */ 6119 #line 32 04"querytransformparser.ypp"6115 #line 3261 "querytransformparser.ypp" 6120 6116 { 6121 6117 (yyval.expr) = create(new CallTemplate((yyvsp[(2) - (5)].qName), parseInfo->templateWithParams), (yyloc), parseInfo); … … 6127 6123 case 280: 6128 6124 /* Line 1269 of yacc.c. */ 6129 #line 32 11"querytransformparser.ypp"6125 #line 3268 "querytransformparser.ypp" 6130 6126 { 6131 6127 parseInfo->startParsingWithParam(); … … 6135 6131 case 281: 6136 6132 /* Line 1269 of yacc.c. */ 6137 #line 32 15"querytransformparser.ypp"6133 #line 3272 "querytransformparser.ypp" 6138 6134 { 6139 6135 parseInfo->endParsingWithParam(); … … 6143 6139 case 282: 6144 6140 /* Line 1269 of yacc.c. */ 6145 #line 32 20"querytransformparser.ypp"6141 #line 3277 "querytransformparser.ypp" 6146 6142 { 6147 6143 } … … 6150 6146 case 283: 6151 6147 /* Line 1269 of yacc.c. */ 6152 #line 32 23"querytransformparser.ypp"6148 #line 3280 "querytransformparser.ypp" 6153 6149 { 6154 6150 } … … 6157 6153 case 284: 6158 6154 /* Line 1269 of yacc.c. */ 6159 #line 32 26"querytransformparser.ypp"6155 #line 3283 "querytransformparser.ypp" 6160 6156 { 6161 6157 } … … 6164 6160 case 285: 6165 6161 /* Line 1269 of yacc.c. */ 6166 #line 32 30"querytransformparser.ypp"6162 #line 3287 "querytransformparser.ypp" 6167 6163 { 6168 6164 } … … 6171 6167 case 286: 6172 6168 /* Line 1269 of yacc.c. */ 6173 #line 32 33"querytransformparser.ypp"6169 #line 3290 "querytransformparser.ypp" 6174 6170 { 6175 6171 } … … 6178 6174 case 287: 6179 6175 /* Line 1269 of yacc.c. */ 6180 #line 32 37"querytransformparser.ypp"6176 #line 3294 "querytransformparser.ypp" 6181 6177 { 6182 6178 /* Note, this grammar rule is invoked for @c xsl:param @em and @c … … 6246 6242 case 288: 6247 6243 /* Line 1269 of yacc.c. */ 6248 #line 33 02"querytransformparser.ypp"6244 #line 3359 "querytransformparser.ypp" 6249 6245 { 6250 6246 (yyval.enums.Bool) = false; … … 6254 6250 case 289: 6255 6251 /* Line 1269 of yacc.c. */ 6256 #line 33 06"querytransformparser.ypp"6252 #line 3363 "querytransformparser.ypp" 6257 6253 { 6258 6254 (yyval.enums.Bool) = true; … … 6262 6258 case 290: 6263 6259 /* Line 1269 of yacc.c. */ 6264 #line 33 11"querytransformparser.ypp"6260 #line 3368 "querytransformparser.ypp" 6265 6261 { 6266 6262 (yyval.expr) = Expression::Ptr(); … … 6270 6266 case 291: 6271 6267 /* Line 1269 of yacc.c. */ 6272 #line 33 15"querytransformparser.ypp"6268 #line 3372 "querytransformparser.ypp" 6273 6269 { 6274 6270 (yyval.expr) = (yyvsp[(2) - (2)].expr); … … 6278 6274 case 292: 6279 6275 /* Line 1269 of yacc.c. */ 6280 #line 33 24"querytransformparser.ypp"6276 #line 3381 "querytransformparser.ypp" 6281 6277 { 6282 6278 (yyval.enums.pathKind) = Path::RegularPath; … … 6286 6282 case 293: 6287 6283 /* Line 1269 of yacc.c. */ 6288 #line 33 28"querytransformparser.ypp"6284 #line 3385 "querytransformparser.ypp" 6289 6285 { 6290 6286 (yyval.enums.pathKind) = Path::XSLTForEach; … … 6294 6290 case 294: 6295 6291 /* Line 1269 of yacc.c. */ 6296 #line 33 32"querytransformparser.ypp"6292 #line 3389 "querytransformparser.ypp" 6297 6293 { 6298 6294 (yyval.enums.pathKind) = Path::ForApplyTemplate; … … 6302 6298 case 296: 6303 6299 /* Line 1269 of yacc.c. */ 6304 #line 33 38"querytransformparser.ypp"6300 #line 3395 "querytransformparser.ypp" 6305 6301 { 6306 6302 (yyval.expr) = create(GenericPredicate::create((yyvsp[(1) - (4)].expr), (yyvsp[(3) - (4)].expr), parseInfo->staticContext, fromYYLTYPE((yyloc), parseInfo)), (yyloc), parseInfo); … … 6310 6306 case 299: 6311 6307 /* Line 1269 of yacc.c. */ 6312 #line 3 346"querytransformparser.ypp"6308 #line 3403 "querytransformparser.ypp" 6313 6309 { 6314 6310 if((yyvsp[(1) - (1)].enums.axis) == QXmlNodeModelIndex::AxisAttribute) … … 6319 6315 case 300: 6320 6316 /* Line 1269 of yacc.c. */ 6321 #line 3 351"querytransformparser.ypp"6317 #line 3408 "querytransformparser.ypp" 6322 6318 { 6323 6319 if((yyvsp[(3) - (3)].itemType)) … … 6348 6344 case 304: 6349 6345 /* Line 1269 of yacc.c. */ 6350 #line 3 381"querytransformparser.ypp"6346 #line 3438 "querytransformparser.ypp" 6351 6347 { 6352 6348 if((yyvsp[(1) - (2)].enums.axis) == QXmlNodeModelIndex::AxisNamespace) … … 6360 6356 else 6361 6357 (yyval.enums.axis) = (yyvsp[(1) - (2)].enums.axis); 6358 6359 switch((yyvsp[(1) - (2)].enums.axis)) 6360 { 6361 case QXmlNodeModelIndex::AxisAttribute: 6362 { 6363 allowedIn(QueryLanguages( QXmlQuery::XPath20 6364 | QXmlQuery::XQuery10 6365 | QXmlQuery::XmlSchema11IdentityConstraintField 6366 | QXmlQuery::XSLT20), 6367 parseInfo, (yyloc)); 6368 break; 6369 } 6370 case QXmlNodeModelIndex::AxisChild: 6371 { 6372 allowedIn(QueryLanguages( QXmlQuery::XPath20 6373 | QXmlQuery::XQuery10 6374 | QXmlQuery::XmlSchema11IdentityConstraintField 6375 | QXmlQuery::XmlSchema11IdentityConstraintSelector 6376 | QXmlQuery::XSLT20), 6377 parseInfo, (yyloc)); 6378 break; 6379 } 6380 default: 6381 { 6382 allowedIn(QueryLanguages( QXmlQuery::XPath20 6383 | QXmlQuery::XQuery10 6384 | QXmlQuery::XSLT20), 6385 parseInfo, (yyloc)); 6386 } 6387 } 6362 6388 } 6363 6389 break; … … 6365 6391 case 305: 6366 6392 /* Line 1269 of yacc.c. */ 6367 #line 3 394"querytransformparser.ypp"6393 #line 3481 "querytransformparser.ypp" 6368 6394 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisAncestorOrSelf ;} 6369 6395 break; … … 6371 6397 case 306: 6372 6398 /* Line 1269 of yacc.c. */ 6373 #line 3 395"querytransformparser.ypp"6399 #line 3482 "querytransformparser.ypp" 6374 6400 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisAncestor ;} 6375 6401 break; … … 6377 6403 case 307: 6378 6404 /* Line 1269 of yacc.c. */ 6379 #line 3 396"querytransformparser.ypp"6405 #line 3483 "querytransformparser.ypp" 6380 6406 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisAttribute ;} 6381 6407 break; … … 6383 6409 case 308: 6384 6410 /* Line 1269 of yacc.c. */ 6385 #line 3 397"querytransformparser.ypp"6411 #line 3484 "querytransformparser.ypp" 6386 6412 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisChild ;} 6387 6413 break; … … 6389 6415 case 309: 6390 6416 /* Line 1269 of yacc.c. */ 6391 #line 3 398"querytransformparser.ypp"6417 #line 3485 "querytransformparser.ypp" 6392 6418 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisDescendantOrSelf;} 6393 6419 break; … … 6395 6421 case 310: 6396 6422 /* Line 1269 of yacc.c. */ 6397 #line 3 399"querytransformparser.ypp"6423 #line 3486 "querytransformparser.ypp" 6398 6424 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisDescendant ;} 6399 6425 break; … … 6401 6427 case 311: 6402 6428 /* Line 1269 of yacc.c. */ 6403 #line 34 00"querytransformparser.ypp"6429 #line 3487 "querytransformparser.ypp" 6404 6430 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisFollowing ;} 6405 6431 break; … … 6407 6433 case 312: 6408 6434 /* Line 1269 of yacc.c. */ 6409 #line 34 01"querytransformparser.ypp"6435 #line 3488 "querytransformparser.ypp" 6410 6436 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisPreceding ;} 6411 6437 break; … … 6413 6439 case 313: 6414 6440 /* Line 1269 of yacc.c. */ 6415 #line 34 02"querytransformparser.ypp"6441 #line 3489 "querytransformparser.ypp" 6416 6442 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisFollowingSibling;} 6417 6443 break; … … 6419 6445 case 314: 6420 6446 /* Line 1269 of yacc.c. */ 6421 #line 34 03"querytransformparser.ypp"6447 #line 3490 "querytransformparser.ypp" 6422 6448 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisPrecedingSibling;} 6423 6449 break; … … 6425 6451 case 315: 6426 6452 /* Line 1269 of yacc.c. */ 6427 #line 34 04"querytransformparser.ypp"6453 #line 3491 "querytransformparser.ypp" 6428 6454 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisParent ;} 6429 6455 break; … … 6431 6457 case 316: 6432 6458 /* Line 1269 of yacc.c. */ 6433 #line 34 05"querytransformparser.ypp"6459 #line 3492 "querytransformparser.ypp" 6434 6460 {(yyval.enums.axis) = QXmlNodeModelIndex::AxisSelf ;} 6435 6461 break; … … 6437 6463 case 317: 6438 6464 /* Line 1269 of yacc.c. */ 6439 #line 34 08"querytransformparser.ypp"6465 #line 3495 "querytransformparser.ypp" 6440 6466 { 6441 6467 parseInfo->nodeTestSource = BuiltinTypes::attribute; … … 6445 6471 case 318: 6446 6472 /* Line 1269 of yacc.c. */ 6447 #line 3412 "querytransformparser.ypp" 6448 { 6473 #line 3499 "querytransformparser.ypp" 6474 { 6475 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XSLT20 | QXmlQuery::XmlSchema11IdentityConstraintField), parseInfo, (yyloc)); 6449 6476 (yyval.expr) = create(new AxisStep(QXmlNodeModelIndex::AxisAttribute, (yyvsp[(3) - (3)].itemType)), (yyloc), parseInfo); 6450 6477 … … 6455 6482 case 319: 6456 6483 /* Line 1269 of yacc.c. */ 6457 #line 3 418"querytransformparser.ypp"6484 #line 3506 "querytransformparser.ypp" 6458 6485 { 6459 6486 ItemType::Ptr nodeTest; … … 6470 6497 case 320: 6471 6498 /* Line 1269 of yacc.c. */ 6472 #line 3 429"querytransformparser.ypp"6499 #line 3517 "querytransformparser.ypp" 6473 6500 { 6474 6501 (yyval.expr) = create(new AxisStep(QXmlNodeModelIndex::AxisAttribute, (yyvsp[(1) - (1)].itemType)), (yyloc), parseInfo); … … 6478 6505 case 322: 6479 6506 /* Line 1269 of yacc.c. */ 6480 #line 3 436"querytransformparser.ypp"6507 #line 3524 "querytransformparser.ypp" 6481 6508 { 6482 6509 (yyval.expr) = create(new AxisStep(QXmlNodeModelIndex::AxisParent, BuiltinTypes::node), (yyloc), parseInfo); … … 6484 6511 break; 6485 6512 6513 case 324: 6514 /* Line 1269 of yacc.c. */ 6515 #line 3530 "querytransformparser.ypp" 6516 { 6517 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 6518 } 6519 break; 6520 6486 6521 case 325: 6487 6522 /* Line 1269 of yacc.c. */ 6488 #line 3 444"querytransformparser.ypp"6523 #line 3535 "querytransformparser.ypp" 6489 6524 { 6490 6525 (yyval.itemType) = QNameTest::create(parseInfo->nodeTestSource, (yyvsp[(1) - (1)].qName)); … … 6494 6529 case 327: 6495 6530 /* Line 1269 of yacc.c. */ 6496 #line 3 450"querytransformparser.ypp"6531 #line 3541 "querytransformparser.ypp" 6497 6532 { 6498 6533 (yyval.itemType) = parseInfo->nodeTestSource; … … 6502 6537 case 328: 6503 6538 /* Line 1269 of yacc.c. */ 6504 #line 3 454"querytransformparser.ypp"6539 #line 3545 "querytransformparser.ypp" 6505 6540 { 6506 6541 const NamePool::Ptr np(parseInfo->staticContext->namePool()); … … 6515 6550 case 329: 6516 6551 /* Line 1269 of yacc.c. */ 6517 #line 3463 "querytransformparser.ypp" 6518 { 6552 #line 3554 "querytransformparser.ypp" 6553 { 6554 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 6519 6555 const QXmlName::LocalNameCode c = parseInfo->staticContext->namePool()->allocateLocalName((yyvsp[(1) - (1)].sval)); 6520 6556 (yyval.itemType) = LocalNameTest::create(parseInfo->nodeTestSource, c); … … 6524 6560 case 331: 6525 6561 /* Line 1269 of yacc.c. */ 6526 #line 3470 "querytransformparser.ypp" 6527 { 6562 #line 3562 "querytransformparser.ypp" 6563 { 6564 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 6528 6565 (yyval.expr) = create(GenericPredicate::create((yyvsp[(1) - (4)].expr), (yyvsp[(3) - (4)].expr), parseInfo->staticContext, fromYYLTYPE((yylsp[(4) - (4)]), parseInfo)), (yyloc), parseInfo); 6529 6566 } … … 6532 6569 case 339: 6533 6570 /* Line 1269 of yacc.c. */ 6534 #line 3 482"querytransformparser.ypp"6571 #line 3575 "querytransformparser.ypp" 6535 6572 { 6536 6573 (yyval.expr) = create(new ApplyTemplate(parseInfo->modeFor((yyvsp[(2) - (5)].qName)), … … 6545 6582 case 341: 6546 6583 /* Line 1269 of yacc.c. */ 6547 #line 3 493"querytransformparser.ypp"6584 #line 3586 "querytransformparser.ypp" 6548 6585 { 6549 6586 (yyval.expr) = create(new Literal(AtomicString::fromValue((yyvsp[(1) - (1)].sval))), (yyloc), parseInfo); … … 6553 6590 case 342: 6554 6591 /* Line 1269 of yacc.c. */ 6555 #line 3498 "querytransformparser.ypp" 6556 { 6592 #line 3591 "querytransformparser.ypp" 6593 { 6594 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 6557 6595 (yyval.expr) = createNumericLiteral<Double>((yyvsp[(1) - (1)].sval), (yyloc), parseInfo); 6558 6596 } … … 6561 6599 case 343: 6562 6600 /* Line 1269 of yacc.c. */ 6563 #line 3502 "querytransformparser.ypp" 6564 { 6601 #line 3596 "querytransformparser.ypp" 6602 { 6603 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 6565 6604 (yyval.expr) = createNumericLiteral<Numeric>((yyvsp[(1) - (1)].sval), (yyloc), parseInfo); 6566 6605 } … … 6569 6608 case 344: 6570 6609 /* Line 1269 of yacc.c. */ 6571 #line 3507 "querytransformparser.ypp" 6572 { 6610 #line 3602 "querytransformparser.ypp" 6611 { 6612 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 6573 6613 (yyval.expr) = resolveVariable((yyvsp[(2) - (2)].qName), (yyloc), parseInfo, false); 6574 6614 } … … 6577 6617 case 345: 6578 6618 /* Line 1269 of yacc.c. */ 6579 #line 3 512"querytransformparser.ypp"6619 #line 3608 "querytransformparser.ypp" 6580 6620 { 6581 6621 /* See: http://www.w3.org/TR/xpath20/#id-variables */ … … 6586 6626 case 346: 6587 6627 /* Line 1269 of yacc.c. */ 6588 #line 3 517"querytransformparser.ypp"6628 #line 3613 "querytransformparser.ypp" 6589 6629 { 6590 6630 (yyval.qName) = (yyvsp[(1) - (1)].qName); … … 6594 6634 case 347: 6595 6635 /* Line 1269 of yacc.c. */ 6596 #line 3522 "querytransformparser.ypp" 6597 { 6636 #line 3618 "querytransformparser.ypp" 6637 { 6638 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 6598 6639 (yyval.expr) = (yyvsp[(2) - (3)].expr); 6599 6640 } … … 6602 6643 case 348: 6603 6644 /* Line 1269 of yacc.c. */ 6604 #line 3526 "querytransformparser.ypp" 6605 { 6645 #line 3623 "querytransformparser.ypp" 6646 { 6647 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 6606 6648 (yyval.expr) = create(new EmptySequence, (yyloc), parseInfo); 6607 6649 } … … 6610 6652 case 349: 6611 6653 /* Line 1269 of yacc.c. */ 6612 #line 3 531"querytransformparser.ypp"6654 #line 3629 "querytransformparser.ypp" 6613 6655 { 6614 6656 (yyval.expr) = create(new ContextItem(), (yyloc), parseInfo); … … 6618 6660 case 350: 6619 6661 /* Line 1269 of yacc.c. */ 6620 #line 3 536"querytransformparser.ypp"6662 #line 3634 "querytransformparser.ypp" 6621 6663 { 6622 6664 (yyval.expr) = (yyvsp[(2) - (2)].expr); … … 6626 6668 case 351: 6627 6669 /* Line 1269 of yacc.c. */ 6628 #line 3541 "querytransformparser.ypp" 6629 { 6670 #line 3639 "querytransformparser.ypp" 6671 { 6672 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 6630 6673 if(XPathHelper::isReservedNamespace((yyvsp[(1) - (4)].qName).namespaceURI()) || (yyvsp[(1) - (4)].qName).namespaceURI() == StandardNamespaces::InternalXSLT) 6631 6674 { /* We got a call to a builtin function. */ … … 6640 6683 else 6641 6684 { 6642 parseInfo->staticContext->error(QtXmlPatterns::tr("No function byname %1 is available.")6685 parseInfo->staticContext->error(QtXmlPatterns::tr("No function with name %1 is available.") 6643 6686 .arg(formatKeyword(parseInfo->staticContext->namePool(), (yyvsp[(1) - (4)].qName))), 6644 6687 ReportContext::XPST0017, fromYYLTYPE((yyloc), parseInfo)); … … 6657 6700 case 352: 6658 6701 /* Line 1269 of yacc.c. */ 6659 #line 3 569"querytransformparser.ypp"6702 #line 3668 "querytransformparser.ypp" 6660 6703 { 6661 6704 (yyval.expressionList) = Expression::List(); … … 6665 6708 case 353: 6666 6709 /* Line 1269 of yacc.c. */ 6667 #line 3 574"querytransformparser.ypp"6710 #line 3673 "querytransformparser.ypp" 6668 6711 { 6669 6712 Expression::List list; … … 6675 6718 case 355: 6676 6719 /* Line 1269 of yacc.c. */ 6677 #line 3 583"querytransformparser.ypp"6678 { 6679 disallowedConstruct(parseInfo, (yyloc));6720 #line 3682 "querytransformparser.ypp" 6721 { 6722 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc)); 6680 6723 } 6681 6724 break; … … 6683 6726 case 360: 6684 6727 /* Line 1269 of yacc.c. */ 6685 #line 3 624"querytransformparser.ypp"6728 #line 3726 "querytransformparser.ypp" 6686 6729 { 6687 6730 (yyval.enums.tokenizerPosition) = parseInfo->tokenizer->commenceScanOnly(); … … 6692 6735 case 361: 6693 6736 /* Line 1269 of yacc.c. */ 6694 #line 3 633"querytransformparser.ypp"6737 #line 3735 "querytransformparser.ypp" 6695 6738 { 6696 6739 ++parseInfo->elementConstructorDepth; … … 6840 6883 case 362: 6841 6884 /* Line 1269 of yacc.c. */ 6842 #line 3 779"querytransformparser.ypp"6885 #line 3881 "querytransformparser.ypp" 6843 6886 { 6844 6887 /* We add the content constructor after the attribute constructors. This might result … … 6890 6933 if(declaredAttributes.contains(att)) 6891 6934 { 6892 parseInfo->staticContext->error(QtXmlPatterns::tr("An attribute byname %1 has already appeared on this element.")6935 parseInfo->staticContext->error(QtXmlPatterns::tr("An attribute with name %1 has already appeared on this element.") 6893 6936 .arg(formatKeyword(parseInfo->staticContext->namePool(), att)), 6894 6937 ReportContext::XQST0040, fromYYLTYPE((yyloc), parseInfo)); … … 6939 6982 case 363: 6940 6983 /* Line 1269 of yacc.c. */ 6941 #line 3 875"querytransformparser.ypp"6984 #line 3977 "querytransformparser.ypp" 6942 6985 { 6943 6986 (yyval.expr) = create(new EmptySequence(), (yyloc), parseInfo); … … 6947 6990 case 364: 6948 6991 /* Line 1269 of yacc.c. */ 6949 #line 3 879"querytransformparser.ypp"6992 #line 3981 "querytransformparser.ypp" 6950 6993 { 6951 6994 if(!(yyvsp[(4) - (5)].qName).isLexicallyEqual(parseInfo->tagStack.top())) … … 6969 7012 case 365: 6970 7013 /* Line 1269 of yacc.c. */ 6971 #line 3898"querytransformparser.ypp"7014 #line 4000 "querytransformparser.ypp" 6972 7015 { 6973 7016 (yyval.attributeHolders) = AttributeHolderVector(); … … 6977 7020 case 366: 6978 7021 /* Line 1269 of yacc.c. */ 6979 #line 3902"querytransformparser.ypp"7022 #line 4004 "querytransformparser.ypp" 6980 7023 { 6981 7024 (yyvsp[(1) - (2)].attributeHolders).append((yyvsp[(2) - (2)].attributeHolder)); … … 6986 7029 case 367: 6987 7030 /* Line 1269 of yacc.c. */ 6988 #line 3908"querytransformparser.ypp"7031 #line 4010 "querytransformparser.ypp" 6989 7032 { 6990 7033 (yyval.attributeHolder) = qMakePair((yyvsp[(1) - (3)].sval), (yyvsp[(3) - (3)].expr)); … … 6994 7037 case 368: 6995 7038 /* Line 1269 of yacc.c. */ 6996 #line 3913"querytransformparser.ypp"7039 #line 4015 "querytransformparser.ypp" 6997 7040 { 6998 7041 (yyval.expr) = createDirAttributeValue((yyvsp[(2) - (3)].expressionList), parseInfo, (yyloc)); … … 7002 7045 case 369: 7003 7046 /* Line 1269 of yacc.c. */ 7004 #line 3918"querytransformparser.ypp"7047 #line 4020 "querytransformparser.ypp" 7005 7048 { 7006 7049 (yyval.expr) = createDirAttributeValue((yyvsp[(2) - (3)].expressionList), parseInfo, (yyloc)); … … 7010 7053 case 370: 7011 7054 /* Line 1269 of yacc.c. */ 7012 #line 3923"querytransformparser.ypp"7055 #line 4025 "querytransformparser.ypp" 7013 7056 { 7014 7057 (yyval.expressionList) = Expression::List(); … … 7018 7061 case 371: 7019 7062 /* Line 1269 of yacc.c. */ 7020 #line 3927"querytransformparser.ypp"7063 #line 4029 "querytransformparser.ypp" 7021 7064 { 7022 7065 Expression::Ptr content((yyvsp[(1) - (2)].expr)); … … 7032 7075 case 372: 7033 7076 /* Line 1269 of yacc.c. */ 7034 #line 3937"querytransformparser.ypp"7077 #line 4039 "querytransformparser.ypp" 7035 7078 { 7036 7079 (yyvsp[(2) - (2)].expressionList).prepend(create(new Literal(AtomicString::fromValue((yyvsp[(1) - (2)].sval))), (yyloc), parseInfo)); … … 7041 7084 case 373: 7042 7085 /* Line 1269 of yacc.c. */ 7043 #line 3943"querytransformparser.ypp"7086 #line 4045 "querytransformparser.ypp" 7044 7087 { 7045 7088 (yyval.expressionList) = Expression::List(); … … 7050 7093 case 374: 7051 7094 /* Line 1269 of yacc.c. */ 7052 #line 3948"querytransformparser.ypp"7095 #line 4050 "querytransformparser.ypp" 7053 7096 { 7054 7097 (yyvsp[(1) - (2)].expressionList).append((yyvsp[(2) - (2)].expr)); … … 7060 7103 case 375: 7061 7104 /* Line 1269 of yacc.c. */ 7062 #line 3954"querytransformparser.ypp"7105 #line 4056 "querytransformparser.ypp" 7063 7106 { 7064 7107 if(parseInfo->staticContext->boundarySpacePolicy() == StaticContext::BSPStrip && … … 7078 7121 case 376: 7079 7122 /* Line 1269 of yacc.c. */ 7080 #line 3968"querytransformparser.ypp"7123 #line 4070 "querytransformparser.ypp" 7081 7124 { 7082 7125 (yyvsp[(1) - (2)].expressionList).append(create(new TextNodeConstructor(create(new Literal(AtomicString::fromValue((yyvsp[(2) - (2)].sval))), (yyloc), parseInfo)), (yyloc), parseInfo)); … … 7088 7131 case 377: 7089 7132 /* Line 1269 of yacc.c. */ 7090 #line 3974"querytransformparser.ypp"7133 #line 4076 "querytransformparser.ypp" 7091 7134 { 7092 7135 /* We insert a text node constructor that send an empty text node between … … 7108 7151 case 378: 7109 7152 /* Line 1269 of yacc.c. */ 7110 #line 3991"querytransformparser.ypp"7153 #line 4093 "querytransformparser.ypp" 7111 7154 { 7112 7155 (yyval.expr) = create(new CommentConstructor(create(new Literal(AtomicString::fromValue((yyvsp[(2) - (2)].sval))), (yyloc), parseInfo)), (yyloc), parseInfo); … … 7116 7159 case 379: 7117 7160 /* Line 1269 of yacc.c. */ 7118 #line 3996"querytransformparser.ypp"7161 #line 4098 "querytransformparser.ypp" 7119 7162 { 7120 7163 const ReflectYYLTYPE ryy((yyloc), parseInfo); … … 7132 7175 case 387: 7133 7176 /* Line 1269 of yacc.c. */ 7134 #line 4 017"querytransformparser.ypp"7135 { 7136 disallowedConstruct(parseInfo, (yyloc), (yyvsp[(2) - (3)].enums.Bool));7177 #line 4119 "querytransformparser.ypp" 7178 { 7179 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc), (yyvsp[(2) - (3)].enums.Bool)); 7137 7180 7138 7181 (yyval.expr) = create(new DocumentConstructor((yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); … … 7142 7185 case 388: 7143 7186 /* Line 1269 of yacc.c. */ 7144 #line 4 024"querytransformparser.ypp"7187 #line 4126 "querytransformparser.ypp" 7145 7188 { 7146 7189 /* This value is incremented before the action below is executed. */ … … 7151 7194 case 389: 7152 7195 /* Line 1269 of yacc.c. */ 7153 #line 4 029"querytransformparser.ypp"7196 #line 4131 "querytransformparser.ypp" 7154 7197 { 7155 7198 Q_ASSERT(5); 7156 disallowedConstruct(parseInfo, (yyloc), (yyvsp[(2) - (5)].enums.Bool));7199 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc), (yyvsp[(2) - (5)].enums.Bool)); 7157 7200 7158 7201 Expression::Ptr effExpr; … … 7188 7231 case 390: 7189 7232 /* Line 1269 of yacc.c. */ 7190 #line 4 063"querytransformparser.ypp"7233 #line 4165 "querytransformparser.ypp" 7191 7234 { 7192 7235 (yyval.enums.Bool) = false; … … 7196 7239 case 391: 7197 7240 /* Line 1269 of yacc.c. */ 7198 #line 4 067"querytransformparser.ypp"7241 #line 4169 "querytransformparser.ypp" 7199 7242 { 7200 7243 (yyval.enums.Bool) = true; … … 7204 7247 case 392: 7205 7248 /* Line 1269 of yacc.c. */ 7206 #line 4 075"querytransformparser.ypp"7207 { 7208 disallowedConstruct(parseInfo, (yyloc), (yyvsp[(2) - (4)].enums.Bool));7249 #line 4177 "querytransformparser.ypp" 7250 { 7251 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc), (yyvsp[(2) - (4)].enums.Bool)); 7209 7252 7210 7253 const Expression::Ptr name(create(new AttributeNameValidator((yyvsp[(3) - (4)].expr)), (yyloc), parseInfo)); … … 7219 7262 case 393: 7220 7263 /* Line 1269 of yacc.c. */ 7221 #line 4 087"querytransformparser.ypp"7264 #line 4189 "querytransformparser.ypp" 7222 7265 { 7223 7266 (yyval.expr) = create(new TextNodeConstructor(createSimpleContent((yyvsp[(3) - (3)].expr), (yyloc), parseInfo)), (yyloc), parseInfo); … … 7227 7270 case 394: 7228 7271 /* Line 1269 of yacc.c. */ 7229 #line 4 092"querytransformparser.ypp"7230 { 7231 disallowedConstruct(parseInfo, (yyloc), (yyvsp[(2) - (3)].enums.Bool));7272 #line 4194 "querytransformparser.ypp" 7273 { 7274 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc), (yyvsp[(2) - (3)].enums.Bool)); 7232 7275 7233 7276 (yyval.expr) = create(new CommentConstructor(createSimpleContent((yyvsp[(3) - (3)].expr), (yyloc), parseInfo)), (yyloc), parseInfo); … … 7237 7280 case 395: 7238 7281 /* Line 1269 of yacc.c. */ 7239 #line 4 099"querytransformparser.ypp"7240 { 7241 disallowedConstruct(parseInfo, (yyloc), (yyvsp[(2) - (3)].expr));7282 #line 4201 "querytransformparser.ypp" 7283 { 7284 allowedIn(QXmlQuery::XQuery10, parseInfo, (yyloc), (yyvsp[(2) - (3)].expr)); 7242 7285 7243 7286 if((yyvsp[(3) - (3)].expr)) … … 7252 7295 case 396: 7253 7296 /* Line 1269 of yacc.c. */ 7254 #line 4 110"querytransformparser.ypp"7297 #line 4212 "querytransformparser.ypp" 7255 7298 { 7256 7299 parseInfo->nodeTestSource = BuiltinTypes::attribute; … … 7260 7303 case 397: 7261 7304 /* Line 1269 of yacc.c. */ 7262 #line 4 114"querytransformparser.ypp"7305 #line 4216 "querytransformparser.ypp" 7263 7306 { 7264 7307 parseInfo->restoreNodeTestSource(); … … 7268 7311 case 398: 7269 7312 /* Line 1269 of yacc.c. */ 7270 #line 4 117"querytransformparser.ypp"7313 #line 4219 "querytransformparser.ypp" 7271 7314 { 7272 7315 (yyval.expr) = create(new Literal(toItem(QNameValue::fromValue(parseInfo->staticContext->namePool(), (yyvsp[(2) - (3)].qName)))), (yyloc), parseInfo); … … 7276 7319 case 400: 7277 7320 /* Line 1269 of yacc.c. */ 7278 #line 4 123"querytransformparser.ypp"7321 #line 4225 "querytransformparser.ypp" 7279 7322 { 7280 7323 (yyval.expr) = create(new Literal(toItem(QNameValue::fromValue(parseInfo->staticContext->namePool(), (yyvsp[(1) - (1)].qName)))), (yyloc), parseInfo); … … 7284 7327 case 402: 7285 7328 /* Line 1269 of yacc.c. */ 7286 #line 4 129"querytransformparser.ypp"7329 #line 4231 "querytransformparser.ypp" 7287 7330 { 7288 7331 if(BuiltinTypes::xsQName->xdtTypeMatches((yyvsp[(1) - (1)].expr)->staticType()->itemType())) … … 7299 7342 case 403: 7300 7343 /* Line 1269 of yacc.c. */ 7301 #line 4 144"querytransformparser.ypp"7344 #line 4246 "querytransformparser.ypp" 7302 7345 { 7303 7346 (yyval.expr) = create(new NCNameConstructor(create(new Literal(AtomicString::fromValue((yyvsp[(1) - (1)].sval))), (yyloc), parseInfo)), (yyloc), parseInfo); … … 7307 7350 case 404: 7308 7351 /* Line 1269 of yacc.c. */ 7309 #line 4 148"querytransformparser.ypp"7352 #line 4250 "querytransformparser.ypp" 7310 7353 { 7311 7354 (yyval.expr) = create(new NCNameConstructor((yyvsp[(1) - (1)].expr)), (yyloc), parseInfo); … … 7315 7358 case 405: 7316 7359 /* Line 1269 of yacc.c. */ 7317 #line 4 157"querytransformparser.ypp"7360 #line 4259 "querytransformparser.ypp" 7318 7361 { 7319 7362 (yyval.expr) = create(new ComputedNamespaceConstructor((yyvsp[(2) - (3)].expr), (yyvsp[(3) - (3)].expr)), (yyloc), parseInfo); … … 7323 7366 case 406: 7324 7367 /* Line 1269 of yacc.c. */ 7325 #line 4 162"querytransformparser.ypp"7368 #line 4264 "querytransformparser.ypp" 7326 7369 { 7327 7370 (yyval.sequenceType) = makeGenericSequenceType((yyvsp[(1) - (1)].itemType), Cardinality::exactlyOne()); … … 7331 7374 case 407: 7332 7375 /* Line 1269 of yacc.c. */ 7333 #line 4 166"querytransformparser.ypp"7376 #line 4268 "querytransformparser.ypp" 7334 7377 { 7335 7378 (yyval.sequenceType) = makeGenericSequenceType((yyvsp[(1) - (2)].itemType), Cardinality::zeroOrOne()); … … 7339 7382 case 408: 7340 7383 /* Line 1269 of yacc.c. */ 7341 #line 4 171"querytransformparser.ypp"7384 #line 4273 "querytransformparser.ypp" 7342 7385 { 7343 7386 (yyval.sequenceType) = CommonSequenceTypes::ZeroOrMoreItems; … … 7347 7390 case 409: 7348 7391 /* Line 1269 of yacc.c. */ 7349 #line 4 175"querytransformparser.ypp"7392 #line 4277 "querytransformparser.ypp" 7350 7393 { 7351 7394 (yyval.sequenceType) = (yyvsp[(2) - (2)].sequenceType); … … 7355 7398 case 410: 7356 7399 /* Line 1269 of yacc.c. */ 7357 #line 4 180"querytransformparser.ypp"7400 #line 4282 "querytransformparser.ypp" 7358 7401 { 7359 7402 (yyval.sequenceType) = makeGenericSequenceType((yyvsp[(1) - (2)].itemType), (yyvsp[(2) - (2)].cardinality)); … … 7363 7406 case 411: 7364 7407 /* Line 1269 of yacc.c. */ 7365 #line 4 185"querytransformparser.ypp"7408 #line 4287 "querytransformparser.ypp" 7366 7409 { 7367 7410 (yyval.sequenceType) = CommonSequenceTypes::Empty; … … 7371 7414 case 412: 7372 7415 /* Line 1269 of yacc.c. */ 7373 #line 4 189"querytransformparser.ypp"7416 #line 4291 "querytransformparser.ypp" 7374 7417 {(yyval.cardinality) = Cardinality::exactlyOne();} 7375 7418 break; … … 7377 7420 case 413: 7378 7421 /* Line 1269 of yacc.c. */ 7379 #line 4 190"querytransformparser.ypp"7422 #line 4292 "querytransformparser.ypp" 7380 7423 {(yyval.cardinality) = Cardinality::oneOrMore();} 7381 7424 break; … … 7383 7426 case 414: 7384 7427 /* Line 1269 of yacc.c. */ 7385 #line 4 191"querytransformparser.ypp"7428 #line 4293 "querytransformparser.ypp" 7386 7429 {(yyval.cardinality) = Cardinality::zeroOrMore();} 7387 7430 break; … … 7389 7432 case 415: 7390 7433 /* Line 1269 of yacc.c. */ 7391 #line 4 192"querytransformparser.ypp"7434 #line 4294 "querytransformparser.ypp" 7392 7435 {(yyval.cardinality) = Cardinality::zeroOrOne();} 7393 7436 break; … … 7395 7438 case 419: 7396 7439 /* Line 1269 of yacc.c. */ 7397 #line 4 198"querytransformparser.ypp"7440 #line 4300 "querytransformparser.ypp" 7398 7441 { 7399 7442 (yyval.itemType) = BuiltinTypes::item; … … 7403 7446 case 420: 7404 7447 /* Line 1269 of yacc.c. */ 7405 #line 4 203"querytransformparser.ypp"7448 #line 4305 "querytransformparser.ypp" 7406 7449 { 7407 7450 const SchemaType::Ptr t(parseInfo->staticContext->schemaDefinitions()->createSchemaType((yyvsp[(1) - (1)].qName))); … … 7439 7482 case 428: 7440 7483 /* Line 1269 of yacc.c. */ 7441 #line 4 247"querytransformparser.ypp"7484 #line 4349 "querytransformparser.ypp" 7442 7485 { 7443 7486 (yyval.itemType) = BuiltinTypes::node; … … 7447 7490 case 429: 7448 7491 /* Line 1269 of yacc.c. */ 7449 #line 4 252"querytransformparser.ypp"7492 #line 4354 "querytransformparser.ypp" 7450 7493 { 7451 7494 (yyval.itemType) = BuiltinTypes::document; … … 7455 7498 case 430: 7456 7499 /* Line 1269 of yacc.c. */ 7457 #line 4 257"querytransformparser.ypp"7500 #line 4359 "querytransformparser.ypp" 7458 7501 { 7459 7502 // TODO support for document element testing … … 7464 7507 case 433: 7465 7508 /* Line 1269 of yacc.c. */ 7466 #line 4 266"querytransformparser.ypp"7509 #line 4368 "querytransformparser.ypp" 7467 7510 { 7468 7511 (yyval.itemType) = BuiltinTypes::text; … … 7472 7515 case 434: 7473 7516 /* Line 1269 of yacc.c. */ 7474 #line 4 271"querytransformparser.ypp"7517 #line 4373 "querytransformparser.ypp" 7475 7518 { 7476 7519 (yyval.itemType) = BuiltinTypes::comment; … … 7480 7523 case 435: 7481 7524 /* Line 1269 of yacc.c. */ 7482 #line 4 276"querytransformparser.ypp"7525 #line 4378 "querytransformparser.ypp" 7483 7526 { 7484 7527 (yyval.itemType) = BuiltinTypes::pi; … … 7488 7531 case 436: 7489 7532 /* Line 1269 of yacc.c. */ 7490 #line 4 281"querytransformparser.ypp"7533 #line 4383 "querytransformparser.ypp" 7491 7534 { 7492 7535 (yyval.itemType) = LocalNameTest::create(BuiltinTypes::pi, parseInfo->staticContext->namePool()->allocateLocalName((yyvsp[(3) - (4)].sval))); … … 7496 7539 case 437: 7497 7540 /* Line 1269 of yacc.c. */ 7498 #line 4 286"querytransformparser.ypp"7541 #line 4388 "querytransformparser.ypp" 7499 7542 { 7500 7543 if(QXmlUtils::isNCName((yyvsp[(3) - (4)].sval))) … … 7515 7558 case 440: 7516 7559 /* Line 1269 of yacc.c. */ 7517 #line 4 305"querytransformparser.ypp"7560 #line 4407 "querytransformparser.ypp" 7518 7561 { 7519 7562 (yyval.itemType) = BuiltinTypes::attribute; … … 7523 7566 case 441: 7524 7567 /* Line 1269 of yacc.c. */ 7525 #line 4 310"querytransformparser.ypp"7568 #line 4412 "querytransformparser.ypp" 7526 7569 { 7527 7570 (yyval.itemType) = BuiltinTypes::attribute; … … 7531 7574 case 442: 7532 7575 /* Line 1269 of yacc.c. */ 7533 #line 4 315"querytransformparser.ypp"7576 #line 4417 "querytransformparser.ypp" 7534 7577 { 7535 7578 (yyval.itemType) = QNameTest::create(BuiltinTypes::attribute, (yyvsp[(3) - (4)].qName)); … … 7539 7582 case 443: 7540 7583 /* Line 1269 of yacc.c. */ 7541 #line 4 319"querytransformparser.ypp"7584 #line 4421 "querytransformparser.ypp" 7542 7585 { 7543 7586 const SchemaType::Ptr t(parseInfo->staticContext->schemaDefinitions()->createSchemaType((yyvsp[(5) - (6)].qName))); … … 7555 7598 case 444: 7556 7599 /* Line 1269 of yacc.c. */ 7557 #line 4 331"querytransformparser.ypp"7600 #line 4433 "querytransformparser.ypp" 7558 7601 { 7559 7602 const SchemaType::Ptr t(parseInfo->staticContext->schemaDefinitions()->createSchemaType((yyvsp[(5) - (6)].qName))); … … 7571 7614 case 445: 7572 7615 /* Line 1269 of yacc.c. */ 7573 #line 4 344"querytransformparser.ypp"7616 #line 4446 "querytransformparser.ypp" 7574 7617 { 7575 7618 parseInfo->staticContext->error(QtXmlPatterns::tr("%1 is not in the in-scope attribute " … … 7584 7627 case 446: 7585 7628 /* Line 1269 of yacc.c. */ 7586 #line 4 354"querytransformparser.ypp"7629 #line 4456 "querytransformparser.ypp" 7587 7630 { 7588 7631 (yyval.itemType) = BuiltinTypes::element; … … 7592 7635 case 447: 7593 7636 /* Line 1269 of yacc.c. */ 7594 #line 4 359"querytransformparser.ypp"7637 #line 4461 "querytransformparser.ypp" 7595 7638 { 7596 7639 (yyval.itemType) = BuiltinTypes::element; … … 7600 7643 case 448: 7601 7644 /* Line 1269 of yacc.c. */ 7602 #line 4 364"querytransformparser.ypp"7645 #line 4466 "querytransformparser.ypp" 7603 7646 { 7604 7647 (yyval.itemType) = QNameTest::create(BuiltinTypes::element, (yyvsp[(3) - (4)].qName)); … … 7608 7651 case 449: 7609 7652 /* Line 1269 of yacc.c. */ 7610 #line 4 369"querytransformparser.ypp"7653 #line 4471 "querytransformparser.ypp" 7611 7654 { 7612 7655 const SchemaType::Ptr t(parseInfo->staticContext->schemaDefinitions()->createSchemaType((yyvsp[(5) - (7)].qName))); … … 7625 7668 case 450: 7626 7669 /* Line 1269 of yacc.c. */ 7627 #line 4 383"querytransformparser.ypp"7670 #line 4485 "querytransformparser.ypp" 7628 7671 { 7629 7672 const SchemaType::Ptr t(parseInfo->staticContext->schemaDefinitions()->createSchemaType((yyvsp[(5) - (7)].qName))); … … 7642 7685 case 453: 7643 7686 /* Line 1269 of yacc.c. */ 7644 #line 4 400"querytransformparser.ypp"7687 #line 4502 "querytransformparser.ypp" 7645 7688 { 7646 7689 parseInfo->staticContext->error(QtXmlPatterns::tr("%1 is not in the in-scope attribute " … … 7655 7698 case 455: 7656 7699 /* Line 1269 of yacc.c. */ 7657 #line 4 412"querytransformparser.ypp"7700 #line 4514 "querytransformparser.ypp" 7658 7701 { 7659 7702 (yyval.qName) = parseInfo->staticContext->namePool()->allocateQName(StandardNamespaces::empty, (yyvsp[(1) - (1)].sval)); … … 7663 7706 case 457: 7664 7707 /* Line 1269 of yacc.c. */ 7665 #line 4 424"querytransformparser.ypp"7708 #line 4526 "querytransformparser.ypp" 7666 7709 { 7667 7710 if(parseInfo->nodeTestSource == BuiltinTypes::element) … … 7674 7717 case 462: 7675 7718 /* Line 1269 of yacc.c. */ 7676 #line 4 438"querytransformparser.ypp"7719 #line 4540 "querytransformparser.ypp" 7677 7720 { 7678 7721 (yyval.qName) = parseInfo->staticContext->namePool()->allocateQName(parseInfo->staticContext->defaultFunctionNamespace(), (yyvsp[(1) - (1)].sval)); … … 7682 7725 case 463: 7683 7726 /* Line 1269 of yacc.c. */ 7684 #line 4 442"querytransformparser.ypp"7727 #line 4544 "querytransformparser.ypp" 7685 7728 { 7686 7729 (yyval.qName) = parseInfo->staticContext->namePool()->allocateQName(StandardNamespaces::InternalXSLT, (yyvsp[(2) - (2)].sval)); … … 7690 7733 case 466: 7691 7734 /* Line 1269 of yacc.c. */ 7692 #line 4 450"querytransformparser.ypp"7735 #line 4552 "querytransformparser.ypp" 7693 7736 { 7694 7737 parseInfo->staticContext->error(QtXmlPatterns::tr("The name of an extension expression must be in " … … 7698 7741 break; 7699 7742 7743 case 469: 7744 /* Line 1269 of yacc.c. */ 7745 #line 4562 "querytransformparser.ypp" 7746 { 7747 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 7748 } 7749 break; 7750 7751 case 470: 7752 /* Line 1269 of yacc.c. */ 7753 #line 4566 "querytransformparser.ypp" 7754 { 7755 allowedIn(QueryLanguages(QXmlQuery::XQuery10 | QXmlQuery::XPath20), parseInfo, (yyloc)); 7756 } 7757 break; 7758 7700 7759 case 471: 7701 7760 /* Line 1269 of yacc.c. */ 7702 #line 4 463"querytransformparser.ypp"7761 #line 4571 "querytransformparser.ypp" 7703 7762 { 7704 7763 … … 7716 7775 case 472: 7717 7776 /* Line 1269 of yacc.c. */ 7718 #line 4 475"querytransformparser.ypp"7777 #line 4583 "querytransformparser.ypp" 7719 7778 { 7720 7779 (yyval.qName) = parseInfo->staticContext->namePool()->fromClarkName((yyvsp[(1) - (1)].sval)); … … 7724 7783 7725 7784 /* Line 1269 of yacc.c. */ 7726 #line 7 643 "qquerytransformparser.cpp"7785 #line 7763 "qquerytransformparser.cpp" 7727 7786 default: break; 7728 7787 } … … 7942 8001 7943 8002 /* Line 1486 of yacc.c. */ 7944 #line 4 479"querytransformparser.ypp"8003 #line 4587 "querytransformparser.ypp" 7945 8004 7946 8005
Note:
See TracChangeset
for help on using the changeset viewer.