Что такое хороший, простой скриптовый язык для встраивания в макропроцессор - PullRequest
2 голосов
/ 04 июля 2011

Я хочу написать макропроцессор. До сих пор я сделал очень простой набросок того, как это должно выглядеть, и пришел к выводу, что изобретать совершенно новый язык не будет хорошей идеей, но я должен повторно использовать существующие концепции. Пока что мой набросок - это что-то вроде irb с неким текстовым синтаксисом и функциями, но я не уверен, что мне следует использовать в качестве заменителя рубина. Язык должен быть простым, но мощным. Я не хочу писать в нем ОС, но она должна быть менее «сырой», чем, например, до нашей эры или вперед. Меня не волнует время исполнения вообще. Встраивание не должно быть слишком сложным, и было бы хорошо, если бы сам язык был стабильным.

До сих пор я рассматривал это:

  • Lua - Он должен легко обрабатывать текст. У Луа даже нет while(c=getchar()){}. Я скептик.
  • awk - просто, обработка текста проста, но никогда не предназначена для встраивания
  • perl - путь сложный, стабильный, но кажется почти мертвым.
  • python - Значительные пробелы; они не будут мешать встроенным определениям функций?
  • groovy / nice / java - Трудно / невозможно вставить? Также способ тяжелым.
  • javascript - Действительно нравится (кроме DOM), но есть ли стабильная / встраиваемая реализация? Я не хочу возиться с API каждые 2 недели, когда появляется новая версия v8. Как я уже сказал, меня не волнует время исполнения.

Я действительно не нашел плюсов / минусов за

  • ю
  • лукавство / схема
  • TCL

Обновление: Язык должен иметь такие функции, как определение функций, загрузка библиотеки или регулярные выражения (циклы также были бы очень хорошими) Я не хочу использовать традиционный макроязык, такой как M4, потому что я хочу писать в более процедурном (или, возможно, функциональном) стиле. У макроязыков есть свои плюсы, но мне нужен совершенно новый способ мышления о проблеме, которая трудна, особенно для начинающих. Моя цель - использовать лучшее из обоих миров.

1 Ответ

2 голосов
/ 05 июля 2011

Учитывая, что TCL предназначен для обработки строк и массивов и предназначен для встраивания, это может показаться очевидным выбором.

У Luatex есть определенные последователи. Предположительно они нашли способ заставить его работать для обработки текста, так что вы можете посмотреть на это.

Схема (включая guile) также очень хороша для написания сценариев; в качестве альтернативы вы можете посмотреть, есть ли способ встроить процессор elisp (embed xemacs?), который, в конце концов, полностью связан с обработкой текста.

...