синтаксический анализ — принтер парсера Php с функцией максимальной длины строки

Интересно, существует ли симпатичный принтер для php-парсера, который способен обеспечить желаемую максимальную длину строки?

(Это кажется довольно простым для реализации в некоторых базовых случаях (список элементов массива, список аргументов функции), но это начинает озадачивать переменными выражениями и т. Д.)

-3

Решение

Насколько я знаю, не существует симпатичного принтера для PHP-Parser это учитывает правильный запас.

Там есть стандартный симпатичный принтер самого PHP-парсера.

Там также есть PSR-2 симпатичный принтер сделано для PHP-парсера.

DIY

Если этого недостаточно, вам придется написать симпатичный принтер самостоятельно.

ИМХО, это не должно быть трудно. Вы можете просто переносить, когда узел превышает правое поле и отступать 4 пробела (или что вы используете). Затем вы можете начать оптимизировать такие вещи, как определения массивов и тому подобное.

4

Другие решения

Извините за задержку с ответом. Вы могли бы использовать Фронт PHP тоже. Отступы выполняются для всех вложений операторов, 2 пробела на вложенность.

Возможен индивидуальный отступ. И это доступно в Фронт PHP.

Парсер и симпатичный принтер также тестируются вместе, используя тестовые файлы исходник-дистрибутив PHP.

Каждый тестовый файл анализируется, печатается и снова печатается.

Правильность этого обхода проверяется путем выполнения различий между двумя проанализированными и двумя симпатично распечатанными файлами.

Однако я получил рекомендацию использовать Стандартный как это имеет много особенностей. Имеет переменные выражения и функции выражений массива. Где, как и в PHP, все еще есть некоторые ошибки, доступные для использования массивов.

Стандартный довольно принтер: (Переменные выражения & Array)

 public function pExpr_Variable(Expr\Variable $node) {
if ($node->name instanceof Expr) {
return '${' . $this->p($node->name) . '}';
} else {
return '$' . $node->name;
}
}

public function pExpr_Array(Expr\Array_ $node) {
return 'array(' . $this->pCommaSeparated($node->items) . ')';
}
1