Подробности
[В начало]
Проблема в стандарте № S0557
Краткое описание
Неполное описание кода ошибки REG_BADRPT
Подробное описание
Описание функции regcomp() не чётко определяет, когда REG_BADRPT должно быть получено в качестве возвращаемого значения.
Описание кода ошибки:
REG_BADRPT
'?', '*', or '+' not preceded by valid regular expression.
('?', '*', or '+' не предваряется правильным регулярным выражением)
Это описание может быть проинтерпретировано несколькими способами (см. примеры).
Примеры:
1) В следующих примерах регулярное выражение, предшествующее ‘*’, неправильно (regular expression preceding '*' is not valid), и при этом может быть возвращён другой год ошибки, нежели REG_BADRPT:
• (a\{2,1\})*
• )*
• (()a*
2) В следующих примерах регулярное выражение, предшествующее ‘*’ правильно, но добавление ‘*’ делает выражение неправильным:
• исходное правильное выражение: “a*”, - но “a**” уже не правильно
• исходное правильное выражение: “a\{3,4\}”, - но “a\{3,4\}*” уже не правильно
Не ясно, в каких случаях, должен быть возвращён код ошибки REG_BADRPT: ни в одном из приведённых выше, в каком-то из них, в обоих или в каких-то ещё случаях. Возникает неопределённость.
)*
(()a*
2) В следующих примерах регулярное выражение, предшествующее ‘*’, ‘+’, или ‘?’ правильно, но добавление ‘*’, ‘+’, или ‘?’ делает выражение неправильным:
a**
a\{3,4\}*
Не ясно, в каких случаях, должен быть возвращён код ошибки REG_BADRPT: ни в одном из приведённых выше, в каком-то из них, в обоих или в каких-то ещё случаях.
Возникает неопределённость.
Раздел стандарта
The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition (SUS 3.0), Chapter 9. Regular Expressions, the description of the regcomp() function.
Способы устранения
Чётко определить, являются ли первая и вторая интерпретации описания кода ошибки REG_BADRPT допустимыми.
[В начало]