- 001
- 002
- 003
- 004
- 005
- 006
- 007
- 008
- 009
- 010
- 011
- 012
- 013
- 014
- 015
- 016
- 017
- 018
- 019
- 020
- 021
- 022
- 023
- 024
- 025
- 026
- 027
- 028
- 029
- 030
- 031
- 032
- 033
- 034
- 035
- 036
- 037
- 038
- 039
- 040
- 041
- 042
- 043
- 044
- 045
- 046
- 047
- 048
- 049
- 050
- 051
- 052
- 053
- 054
- 055
- 056
- 057
- 058
- 059
- 060
- 061
- 062
- 063
- 064
- 065
- 066
- 067
- 068
- 069
- 070
- 071
- 072
- 073
- 074
- 075
- 076
- 077
- 078
- 079
- 080
- 081
- 082
- 083
- 084
- 085
- 086
- 087
- 088
- 089
- 090
- 091
- 092
- 093
- 094
- 095
- 096
- 097
- 098
- 099
- 100
// https://github.com/gcc-mirror/gcc/blob/b0c83d59f44bf677c8d74acae228acf32719acb3/libstdc%2B%2B-v3/include/bits/regex_compiler.tcc#L446
template<typename _TraitsT>
template<bool __icase, bool __collate>
bool
_Compiler<_TraitsT>::
_M_expression_term(pair<bool, _CharT>& __last_char,
_BracketMatcher<_TraitsT, __icase, __collate>& __matcher)
{
if (_M_match_token(_ScannerT::_S_token_bracket_end))
return false;
const auto __push_char = [&](_CharT __ch)
{
if (__last_char.first)
__matcher._M_add_char(__last_char.second);
else
__last_char.first = true;
__last_char.second = __ch;
};
const auto __flush = [&]
{
if (__last_char.first)
{
__matcher._M_add_char(__last_char.second);
__last_char.first = false;
}
};
if (_M_match_token(_ScannerT::_S_token_collsymbol))
{
auto __symbol = __matcher._M_add_collate_element(_M_value);
if (__symbol.size() == 1)
__push_char(__symbol[0]);
else
__flush();
}
else if (_M_match_token(_ScannerT::_S_token_equiv_class_name))
{
__flush();
__matcher._M_add_equivalence_class(_M_value);
}
else if (_M_match_token(_ScannerT::_S_token_char_class_name))
{
__flush();
__matcher._M_add_character_class(_M_value, false);
}
else if (_M_try_char())
__push_char(_M_value[0]);
// POSIX doesn't allow '-' as a start-range char (say [a-z--0]),
// except when the '-' is the first or last character in the bracket
// expression ([--0]). ECMAScript treats all '-' after a range as a
// normal character. Also see above, where _M_expression_term gets called.
//
// As a result, POSIX rejects [-----], but ECMAScript doesn't.
// Boost (1.57.0) always uses POSIX style even in its ECMAScript syntax.
// Clang (3.5) always uses ECMAScript style even in its POSIX syntax.
//
// It turns out that no one reads BNFs ;)
else if (_M_match_token(_ScannerT::_S_token_bracket_dash))
{
if (!__last_char.first)
{
if (!(_M_flags & regex_constants::ECMAScript))
{
if (_M_match_token(_ScannerT::_S_token_bracket_end))
{
__push_char('-');
return false;
}
__throw_regex_error(
regex_constants::error_range,
"Unexpected dash in bracket expression. For POSIX syntax, "
"a dash is not treated literally only when it is at "
"beginning or end.");
}
__push_char('-');
}
else
{
if (_M_try_char())
{
__matcher._M_make_range(__last_char.second, _M_value[0]);
__last_char.first = false;
}
else if (_M_match_token(_ScannerT::_S_token_bracket_dash))
{
__matcher._M_make_range(__last_char.second, '-');
__last_char.first = false;
}
else
{
if (_M_scanner._M_get_token()
!= _ScannerT::_S_token_bracket_end)
__throw_regex_error(
regex_constants::error_range,
"Character is expected after a dash.");
__push_char('-');
}
}
}
j123123 10.11.2021 20:29 # 0
awk, grep, egrep, ECMAScript... нахуя им столько вореантов регекспов в стандартной библиотеке?
guest6 10.11.2021 22:25 # 0
А JSON там есть с OAuth?
Soul_re@ver 10.11.2021 22:28 # 0
guest6 10.11.2021 22:31 # +1
guest6 10.11.2021 22:32 # −1
Soul_re@ver 10.11.2021 22:42 # 0
guest6 10.11.2021 22:45 # 0
Более миллиорда устройств по всему миру используют Джава.
Если вы не добавите поддержку Джава в свой язык, то скоро окажетесь на свалке истории!
Steve_Brown 11.11.2021 11:41 # 0
guest6 10.11.2021 20:33 # 0
j123123 10.11.2021 20:34 # 0
guest6 10.11.2021 20:37 # 0
Desktop 10.11.2021 20:43 # 0
JaneBurt 12.11.2021 10:51 # 0
Soul_re@ver 10.11.2021 21:46 # 0
Это из-за уёбищной системы хедеров, которые тупо копипастят текст, и ёбнутых макросов, которые просто производят полнотекстовую замену, не глядя на контекст.
Поэтому все имена, кроме тех, которые являются частью публичного интерфейса либы приходится именовать так, чтобы никакой питух легально их задефайнить не мог. А это оставляет джва варианта: подчёркивание+заглавная буква в начале, либо двойное подчёркивание.
guest6 10.11.2021 22:09 # 0
guest6 10.11.2021 22:14 # 0
bormand 11.11.2021 15:46 # 0
Вообще, если макросы называть капсом, а всё остальное не называть капсом, то проблем особо и нет. Весь твой код в неймспейсах, а макросы с префиксами. Главное чтобы все это соглашение соблюдали...
Надо добавить в стандарт такие правила: "макрос не капсом -- UB" и "не макрос капсом -- UB". И все будут счастливы.
К сожалению в стандартной либе уже куча макросов не капсом (((
guest6 11.11.2021 17:57 # 0
bormand 11.11.2021 17:59 # 0
guest6 11.11.2021 18:36 # 0
Вот правда исключения удобнее
bormand 11.11.2021 18:37 # 0
Тлен и безысходность.
guest6 11.11.2021 18:45 # 0
Я не должен вручную перекладывать говно из вызова в вызов.
Это я еще не позакрывал всё обратно
Так-то я за Either всякие
bormand 11.11.2021 19:00 # 0
А некоторые либы ещё любят возвращать ошибки при закрытии...
Кривой дизайн, имхо, но часто встречается.
ObeseYoung 11.11.2021 19:07 # 0
Steve_Brown 11.11.2021 19:13 # 0
bormand 11.11.2021 19:16 # 0
guest6 11.11.2021 19:37 # 0
Удобно если ты база данных
Steve_Brown 12.11.2021 11:32 # 0
bormand 12.11.2021 11:53 # 0
Вот только 99% кода полагается на деструктор в успешной ветке...
Soul_re@ver 11.11.2021 19:21 # 0
guest6 11.11.2021 19:33 # 0
а ха ха
https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/IOUtils.html#closeQuietly(java.io.Closea ble)
Steve_Brown 12.11.2021 11:26 # 0
It is only intended to simplify tidying up where normal processing has already failed and reporting close failure as well is not necessary or useful.
guest6 10.11.2021 22:11 # +3
серьезно
Ребята не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не Чикатило и даже не архивы спецслужб. Сюда лучше не лезть. Серьезно, любой из вас будет жалеть. Лучше закройте тему и забудьте что тут писалось. Я вполне понимаю что данным сообщением вызову дополнительный интерес, но хочу сразу предостеречь пытливых - стоп. Остальных просто не найдут.
HO9I6PbCKuu_neTyx 11.11.2021 10:12 # 0
guest6 11.11.2021 12:25 # 0
ASD_77 10.11.2021 22:34 # 0
guest6 10.11.2021 22:43 # 0
Steve_Brown 11.11.2021 19:14 # 0
nPOnOBeDHuK 12.11.2021 19:30 # 0
CBuHOKYP 12.11.2021 20:39 # 0
Нехуй было выкачивать сайт. За это нельзя не забанить.
Невольно вспоминаю соседку, которую выпиздили на днях. Спускала воду кубометрами.
MaaKut 12.11.2021 20:43 # 0
HE_OTBE4Au_YE6KY 12.11.2021 20:45 # 0
Soul_re@ver 12.11.2021 21:02 # 0
А подмес идёт из-за разницы давлений. Где-то у тебя горячая и холодная вода встречаются напрямую. Если открыть краны и заткнуть выход на смесителе такая ситуация возникнет, к примеру.
guest6 12.11.2021 21:12 # 0
bormand 12.11.2021 21:14 # 0
bormand 12.11.2021 21:13 # 0
Soul_re@ver 12.11.2021 21:20 # 0
bormand 12.11.2021 20:43 # 0
CHayT 12.11.2021 20:45 # 0
guest6 12.11.2021 20:48 # 0
bormand 12.11.2021 20:51 # +1
HE_OTBE4Au_YE6KY 12.11.2021 20:46 # 0
CHayT 12.11.2021 21:02 # 0
ASD_77 12.11.2021 03:20 # 0