Упор на Java.
Java Syntactic Extender (JSE) http://people.csail.mit.edu/jrb/jse/ http://jse.sourceforge.net/examples/index.html макропроцессор. преобразует .jse файлы в .java с помощью спец java классов. использует преобразования синтаксического дерева разбора. code quotes. SQLJ http://www.sqlj.org/ препроцессор. синтаксическое расширение java для работы с SQL. Проверяет коррестность запросов и типов на этапе компиляции. Немного похожая функциональность есть в стандарте jdbc4 (sql в аннотациях), но там нет проверок при компиляции. JastAdd http://jastadd.cs.lth.se/web/ Java-based compiler compiler system. используют: Jast Extensible Java Compiler (JastAddJ) support Java 1.4, 1.5 модульность доп проверки Java non-null types tools Вычисление метрик кода PicoJava простой ОО язык OJ, OpenJava http://openjava.sourceforge.net/ Metaobject Protocol for Java Class-Based Macro System for Java генерирует класы в runtime. не развивается (последний релиз 2001г) XLR: Extensible Language and Runtime http://xlr.sourceforge.net/ простой язык с возможностями расширения синтаксиса. своя виртуальная машина. MPS, Meta Programming System http://www.jetbrains.com/mps/ набор инструментов для создания языков предметной области и связи их с IDE Idea (редакторы, дополнение кода, навигация, сквозной сефакторинг и пр). свободно доступен по EAP. исходный код закрыт. (набирают студентов в Питере для стажерства) ANTLR, ANother Tool for Language Recognition http://antlr.org/ аналог JavaCC, LL(k) GUI - ANTLR Works, ANTLR Studio (аналоги редактора граматик MPS) JavaCC, Java Compiler Compiler, The Java Parser Generator https://javacc.dev.java.net/ LL(k) Scala http://www.scala-lang.org/ Объектно-функциональный статически-типизируемый язык. Компилируется в java и dotnet. Расширяемость за счет "синтаксического сахара" и замыканий: object method subject {..} == object.method(subject)(closure) Groovy, JSR241 http://groovy.codehaus.org/ диманический язык, с компиляцией в JVM. Часто используется для расширения основной программы. есть реализация MOP - meta object protocol, позволяющая легко создавать миниязыки: http://www.ibm.com/developerworks/ru/library/j-pg09205/index.html?ca=drs-ru (по моему это должен уметь любой динамический язык :)) Nemerle http://nemerle.org/ объектно-функциональный статически-типизируемый язык. Компилируется в dotnet. типо-безопасные "гигиеничные" макросы и квази-цитирование. Lisp самый расширяемый язык по многим источникам.
Links:
http://en.wikipedia.org/wiki/Extensible_programming
http://feeds.feedburner.com/~r/robjsoftwaredotorg/~3/195098913/growable-language-manifesto.html
No comments:
Post a Comment