Вот ответ user945711 , настроенный для NSView в OS X. Помимо NSView, не имеющего свойства .center
, кадр NSView не изменяется (вероятно, потому, что NSViews не имеют CALayer по умолчанию ), но исходное состояние CALayer изменяется при изменении привязки.
func setAnchorPoint(anchorPoint: NSPoint, view: NSView) {
guard let layer = view.layer else { return }
let oldOrigin = layer.frame.origin
layer.anchorPoint = anchorPoint
let newOrigin = layer.frame.origin
let transition = NSMakePoint(newOrigin.x - oldOrigin.x, newOrigin.y - oldOrigin.y)
layer.frame.origin = NSMakePoint(layer.frame.origin.x - transition.x, layer.frame.origin.y - transition.y)
}
Есть JlexPhp: https://github.com/wez/jlexphp/blob/master/jlex.php
Я не использовал его, но есть это: http://pear.php.net/package/php_parsergenerator , который создает анализатор PHP из лимона грамматики. Проект кажется неактивным, хотя.
Я также нашел этот проект: http://code.google.com/p/antlrphpruntime/ , который использует ANTLR . Снова неактивно, хотя.
было для некоторого времени искать такого рода вещей. После нахождения этого поста я попробовал Antlr PHP Runtime. Я могу сообщить, что он далеко не закончен. В сгенерированном коде есть несколько ошибок, где оригинальные классы выполнения Java не были должным образом переведены на PHP (вложенные декларации класса, используя '.' Вместо «.» При попытке доступа к оператору методов класса).
Сама рамок ANTLR довольно мощная (не может свидетельствовать о повышении эффективности сгенерированного кода). Особенно графический инструмент ANTLRWORKS позволяет легко создавать и отладки грамматики. Оно слишком плохо о версии PHP. Можно катиться, хотя. Лучшим решением может быть, чтобы проанализировать генерируемый класс времени выполнения ANTLR, выяснить, как это работает, и придумать легкий вес менее важной версии.