comparison src/regexp_nfa.c @ 26962:85866e069c24 v8.2.4010

patch 8.2.4010: error messages are spread out Commit: https://github.com/vim/vim/commit/9d00e4a8146862c17ed429dc6b1b43349acb2b5f Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jan 5 17:49:15 2022 +0000 patch 8.2.4010: error messages are spread out Problem: Error messages are spread out. Solution: Move more error messages to errors.h.
author Bram Moolenaar <Bram@vim.org>
date Wed, 05 Jan 2022 19:00:06 +0100
parents d92e0d85923f
children ac75c145f0a9
comparison
equal deleted inserted replaced
26961:33c0467b3c52 26962:85866e069c24
240 NFA_HEX, NFA_NHEX, NFA_OCTAL, NFA_NOCTAL, 240 NFA_HEX, NFA_NHEX, NFA_OCTAL, NFA_NOCTAL,
241 NFA_WORD, NFA_NWORD, NFA_HEAD, NFA_NHEAD, 241 NFA_WORD, NFA_NWORD, NFA_HEAD, NFA_NHEAD,
242 NFA_ALPHA, NFA_NALPHA, NFA_LOWER, NFA_NLOWER, 242 NFA_ALPHA, NFA_NALPHA, NFA_LOWER, NFA_NLOWER,
243 NFA_UPPER, NFA_NUPPER 243 NFA_UPPER, NFA_NUPPER
244 }; 244 };
245
246 static char_u e_nul_found[] = N_("E865: (NFA) Regexp end encountered prematurely");
247 static char_u e_misplaced[] = N_("E866: (NFA regexp) Misplaced %c");
248 static char_u e_ill_char_class[] = N_("E877: (NFA regexp) Invalid character class: %d");
249 static char_u e_value_too_large[] = N_("E951: \\% value too large");
250 245
251 // Variables only used in nfa_regcomp() and descendants. 246 // Variables only used in nfa_regcomp() and descendants.
252 static int nfa_re_flags; // re_flags passed to nfa_regcomp() 247 static int nfa_re_flags; // re_flags passed to nfa_regcomp()
253 static int *post_start; // holds the postfix form of r.e. 248 static int *post_start; // holds the postfix form of r.e.
254 static int *post_end; 249 static int *post_end;
1375 1370
1376 c = getchr(); 1371 c = getchr();
1377 switch (c) 1372 switch (c)
1378 { 1373 {
1379 case NUL: 1374 case NUL:
1380 EMSG_RET_FAIL(_(e_nul_found)); 1375 EMSG_RET_FAIL(_(e_nfa_regexp_end_encountered_prematurely));
1381 1376
1382 case Magic('^'): 1377 case Magic('^'):
1383 EMIT(NFA_BOL); 1378 EMIT(NFA_BOL);
1384 break; 1379 break;
1385 1380
1399 break; 1394 break;
1400 1395
1401 case Magic('_'): 1396 case Magic('_'):
1402 c = no_Magic(getchr()); 1397 c = no_Magic(getchr());
1403 if (c == NUL) 1398 if (c == NUL)
1404 EMSG_RET_FAIL(_(e_nul_found)); 1399 EMSG_RET_FAIL(_(e_nfa_regexp_end_encountered_prematurely));
1405 1400
1406 if (c == '^') // "\_^" is start-of-line 1401 if (c == '^') // "\_^" is start-of-line
1407 { 1402 {
1408 EMIT(NFA_BOL); 1403 EMIT(NFA_BOL);
1409 break; 1404 break;
1459 p = vim_strchr(classchars, no_Magic(c)); 1454 p = vim_strchr(classchars, no_Magic(c));
1460 if (p == NULL) 1455 if (p == NULL)
1461 { 1456 {
1462 if (extra == NFA_ADD_NL) 1457 if (extra == NFA_ADD_NL)
1463 { 1458 {
1464 semsg(_(e_ill_char_class), c); 1459 semsg(_(e_nfa_regexp_invalid_character_class_nr), c);
1465 rc_did_emsg = TRUE; 1460 rc_did_emsg = TRUE;
1466 return FAIL; 1461 return FAIL;
1467 } 1462 }
1468 siemsg("INTERNAL: Unknown character class char: %d", c); 1463 siemsg("INTERNAL: Unknown character class char: %d", c);
1469 return FAIL; 1464 return FAIL;
1504 break; 1499 break;
1505 1500
1506 case Magic('|'): 1501 case Magic('|'):
1507 case Magic('&'): 1502 case Magic('&'):
1508 case Magic(')'): 1503 case Magic(')'):
1509 semsg(_(e_misplaced), no_Magic(c)); 1504 semsg(_(e_nfa_regexp_misplaced_chr), no_Magic(c));
1510 return FAIL; 1505 return FAIL;
1511 1506
1512 case Magic('='): 1507 case Magic('='):
1513 case Magic('?'): 1508 case Magic('?'):
1514 case Magic('+'): 1509 case Magic('+'):
1515 case Magic('@'): 1510 case Magic('@'):
1516 case Magic('*'): 1511 case Magic('*'):
1517 case Magic('{'): 1512 case Magic('{'):
1518 // these should follow an atom, not form an atom 1513 // these should follow an atom, not form an atom
1519 semsg(_(e_misplaced), no_Magic(c)); 1514 semsg(_(e_nfa_regexp_misplaced_chr), no_Magic(c));
1520 return FAIL; 1515 return FAIL;
1521 1516
1522 case Magic('~'): 1517 case Magic('~'):
1523 { 1518 {
1524 char_u *lp; 1519 char_u *lp;
1600 return FAIL; // cascaded error 1595 return FAIL; // cascaded error
1601 re_has_z = REX_SET; 1596 re_has_z = REX_SET;
1602 break; 1597 break;
1603 #endif 1598 #endif
1604 default: 1599 default:
1605 semsg(_("E867: (NFA) Unknown operator '\\z%c'"), 1600 semsg(_(e_nfa_unknown_operator_z_chr), no_Magic(c));
1606 no_Magic(c));
1607 return FAIL; 1601 return FAIL;
1608 } 1602 }
1609 break; 1603 break;
1610 1604
1611 case Magic('%'): 1605 case Magic('%'):
1723 tmp = n * 10 + (c - '0'); 1717 tmp = n * 10 + (c - '0');
1724 1718
1725 if (tmp < n) 1719 if (tmp < n)
1726 { 1720 {
1727 // overflow. 1721 // overflow.
1728 emsg(_(e_value_too_large)); 1722 emsg(_(e_percent_value_too_large));
1729 return FAIL; 1723 return FAIL;
1730 } 1724 }
1731 n = tmp; 1725 n = tmp;
1732 c = getchr(); 1726 c = getchr();
1733 } 1727 }
1771 cmp == '>' ? NFA_VCOL_GT : NFA_VCOL); 1765 cmp == '>' ? NFA_VCOL_GT : NFA_VCOL);
1772 limit = INT_MAX / MB_MAXBYTES; 1766 limit = INT_MAX / MB_MAXBYTES;
1773 } 1767 }
1774 if (n >= limit) 1768 if (n >= limit)
1775 { 1769 {
1776 emsg(_(e_value_too_large)); 1770 emsg(_(e_percent_value_too_large));
1777 return FAIL; 1771 return FAIL;
1778 } 1772 }
1779 EMIT((int)n); 1773 EMIT((int)n);
1780 break; 1774 break;
1781 } 1775 }
1786 cmp == '>' ? NFA_MARK_GT : NFA_MARK); 1780 cmp == '>' ? NFA_MARK_GT : NFA_MARK);
1787 EMIT(getchr()); 1781 EMIT(getchr());
1788 break; 1782 break;
1789 } 1783 }
1790 } 1784 }
1791 semsg(_("E867: (NFA) Unknown operator '\\%%%c'"), 1785 semsg(_(e_nfa_unknown_operator_percent_chr), no_Magic(c));
1792 no_Magic(c));
1793 return FAIL; 1786 return FAIL;
1794 } 1787 }
1795 break; 1788 break;
1796 1789
1797 case Magic('['): 1790 case Magic('['):
1945 { 1938 {
1946 result = nfa_emit_equi_class(equiclass); 1939 result = nfa_emit_equi_class(equiclass);
1947 if (result == FAIL) 1940 if (result == FAIL)
1948 { 1941 {
1949 // should never happen 1942 // should never happen
1950 EMSG_RET_FAIL(_("E868: Error building NFA with equivalence class!")); 1943 EMSG_RET_FAIL(_(e_error_building_nfa_with_equivalence_class));
1951 } 1944 }
1952 continue; 1945 continue;
1953 } 1946 }
1954 // Try collating class like [. .] 1947 // Try collating class like [. .]
1955 if (collclass != 0) 1948 if (collclass != 0)
2271 i = NFA_PREV_ATOM_LIKE_PATTERN; 2264 i = NFA_PREV_ATOM_LIKE_PATTERN;
2272 break; 2265 break;
2273 } 2266 }
2274 if (i == 0) 2267 if (i == 0)
2275 { 2268 {
2276 semsg(_("E869: (NFA) Unknown operator '\\@%c'"), op); 2269 semsg(_(e_nfa_unknown_operator_at_chr), op);
2277 return FAIL; 2270 return FAIL;
2278 } 2271 }
2279 EMIT(i); 2272 EMIT(i);
2280 if (i == NFA_PREV_ATOM_JUST_BEFORE 2273 if (i == NFA_PREV_ATOM_JUST_BEFORE
2281 || i == NFA_PREV_ATOM_JUST_BEFORE_NEG) 2274 || i == NFA_PREV_ATOM_JUST_BEFORE_NEG)
5123 return OK; 5116 return OK;
5124 break; 5117 break;
5125 5118
5126 default: 5119 default:
5127 // should not be here :P 5120 // should not be here :P
5128 siemsg(_(e_ill_char_class), class); 5121 siemsg(_(e_nfa_regexp_invalid_character_class_nr), class);
5129 return FAIL; 5122 return FAIL;
5130 } 5123 }
5131 return FAIL; 5124 return FAIL;
5132 } 5125 }
5133 5126