Подробности

[В начало]

Проблема в стандарте № 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 допустимыми.

[В начало]