parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

BAD_NONWHITESPACE_CHARACTER_IN_EXPLICIT_RESULT_MODE

G_Z 08.12.2015 01:39 / 08.12.2015 01:50

Вот уже десять лет как есть полезная, но странная штука — локальный result.
Все эти годы лично я, натыкаясь на прекрасную возможность использования этой штуки для генерации вывода без пробельных символов, раз за разом наступал на грабли с непробельными символами.
Требование к исключению которых, на мой взгляд, ломает всю логику этой удобной возможности.

Зачем именно так — неведомо, и из нескольких пояснений PAFа яснее не становится.
Хотя когда-то сам находил taint-объяснения.

Хочу собрать строку из кусочков, будь то SQL-запрос или URL.
Хочу использовать удобное форматирование и комментарии.
@print[a;b;c][result]
^if(){/$a}
/
^if(){
	$b/
}{
	/$b
}
^if(){:$c}
И получить на выходе монолитную строку без пробельных символов.
Да ещё и не писать $result[] вокруг результата, что тоже удобно.

Но нет, BAD_NONWHITESPACE_CHARACTER_IN_EXPLICIT_RESULT_MODE и начинаются костыли, после которых уже и не рад, что решил использовать [result].
@print[a;b;c][result]
$slash[/]
$colon[:]

^if(){${slash}$a}
$slash
^if(){
	${b}$slash
}{
	${slash}$b
}
^if(){${colon}$c}
Либо
@print[a;b;c]
$result[
	^if(){/$a}
	/
	^if(){
		$b/
	}{
		/$b
	}
	^if(){:$c}
]
$result[^result.match[\s+;g;]]
и тогда вообще неясно, зачем [result] нужен.

Зачем оно работает вот так?
Почему нельзя в [result]-режиме просто выкидывать пробельные символы и разрешить писать всё, что хочется?
«Жизнь — боль»?