Custom-изация синтаксиса ЯП
От: wat3rs  
Дата: 06.12.09 23:10
Оценка: 1 (1) +1
У всех людей вкусы разные. Одни любят do-end, другие — фигурные скобочки. Одни любят писать object.method() , а другие — object method. А также Nil vs null и т.д.

Было бы классно иметь возможность настроить синтаксис языка программирования под себя. Я знаю, что из всех языков в этом направлении продвинулись лиспы (common lisp / scheme), в основном за счёт практически полного отсутствия этого синтаксиса

Но, как я понимаю, и для лиспа есть нерешаемые средствами языка задачи. Например, насколько проблематично реализовать поддержку инфиксной нотации? (я знаю, что есть макрос prefix->infix, так что задача вроде решаема). А использование квадратных скобочек для списков? Индентации как в питоне — чтобы меньше скобочек надо было ставить? Brackets for lists и принудительную индентацию, как я понимаю, никак нельзя сделать средствами языка, т.е. для этого нужен некий внешний преобразователь.

В идеале я вижу custom syntax так: Джон использует свой синтаксис, а Джим — свой. IDE должна позволять Джону посмотреть код Джима, автоматически преобразуя его в джоновый (и наоборот). Т.е. если Джон предпочитает писать null, а Джим — nil, то когда Джон открывает файл, созданный Джимом, программа должна заменить все nil на null.

Тогда можно сделать такую утилиту std-to-john : она будет брать на вход обычный файл с исходниками на некотором языке и конвертить его в синтаксис Джона для этого языка. А чтобы скомпилировать джонов код, будет утилита john-to-std, которая будет делать то же самое, но наоборот. Нужна ещё будет утилита , которая будет преобразовывать сообщения об ошибках так, чтобы , например, заменялся номер строки и столбца.

Я думаю, это теоретически реализуемо, однако никогда о таком не слышал. А очень хотелось бы. Во многих языках мне не нравятся те или иные стилистические решения, и, думаю, я не одинок. Было бы прекрасно иметь такой инструмент, который, например, позволил бы писать поменьше скобок и запятых в языках типа python-a, а то мне после знакомства с хаскелем очень лень стало писать эти "лишние" знаки

Кто что слышал о подобном, расскажите плиз. И если взяться за создание таких утилит, можно ли тогда будет гарантировать адекватность сообщений об ошибках (компиляции и run-time)? Какие ещё проблемы могут возникнуть?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.