Мой голос, простой немой - но тогда я играю только с Java ...
Но любой класс наследует от класса Object, насколько мне известно ...
Рассматривая сложность lexing и парсинга, я не знаю, хотел ли я кодировать все это вручную. ANTLR не то, что трудно к погрузке и я думаю, что это - изучение Уэртинга на основе Вашей проблемы. , Если Вы используете грамматику синтаксического анализа для создания и абстрактное синтаксическое дерево из входа, ее довольно легкое, чтобы затем обработать тот AST с древовидной грамматикой. Древовидная грамматика могла легко обработать выполнение процесса, который Вы описали.
Вы найдете ANTLR во многих местах включая Eclipse, Groovy и Grails для запуска. Категорическая Ссылка ANTLR даже делает это довольно простым для набирания скорость на основном справедливо быстро.
у меня был проект, который должен был обработать сгенерированный текст запроса некоторого пользователя ранее в этом году. Я запустил вниз путь для ручной обработки его, но это быстро стало подавляющим. Я взял пару дней для подъема скорости на ANTLR и имел начальную версию моей грамматики и процессора, работающего через несколько дней. Последующие изменения и корректировки требований уничтожили бы любую пользовательскую версию, но потребовали бы относительно небольшого усилия корректироваться, после того как у меня были грамматики ANTLR и выполнение.
Удачи!
Первый раз, когда я слышал о DSL, был от Jetbrains, создателя Идеи IntellJ.
у Них есть этот инструмент: MPS (Система Метапрограммирования)
При вызове того "естественного языка" Вы вводите в заблуждение себя. Это - все еще язык программирования, просто тот, который пытается подражать естественному языку - и я подозреваю, что это перестанет работать, после того как Вы входите в детали реализации. Для создания в однозначном необходимо будет поместить ограничения на синтаксис, который смутит пользователей, которые велись думать, что они пишут по-английски.
Преимущество DSL (или должен быть, во всяком случае) то, что это просто и ясно, все же мощно в отношении проблемной области. Имитация естественного языка является вопросом второстепенной важности и может на самом деле быть контрпродуктивной к тем основным целям.
Если кто-то будет слишком глуп или испытает недостаток в способности к официально строгим взглядам, что это требуется для программирования, то язык программирования, который имитирует естественный, волшебно не превратит их в программиста.
То, когда КОБОЛ был изобретен, некоторые люди серьезно полагали, что в течение 10 лет будет нулевой спрос на профессиональных программистов, так как КОБОЛ "был похож на английский" и любого, кому было нужно программное обеспечение, могло записать это самого. И все мы знаем, как это удавалось.
Вы могли бы хотеть рассмотреть Xtext, который внутренне использует ANTLR и делает некоторые хорошие вещи как автоматическая генерация редактора для Вашего DSL.
Вы могли бы найти этот многослойный ряд блога, который я сделал при использовании Antlr, чтобы быть полезным как начальная точка. Это использует Antlr 2, таким образом, некоторый материал будет отличаться для Antlr 3:
http://tech.puredanger.com/2007/01/13/implementing-a-scripting-language-with-antlr-part-1-lexer/
презентации/статьи Mark Volkman Antlr довольно полезны также:
http://www.ociweb.com/mark/programming/ANTLR3.html
я буду второй предложение о Категорической книге ANTLR, которая также превосходна.
"Одно довольно четкое приложение этого, по крайней мере, для меня, должно было бы позволить тестерам приложения, создают "сценарии тестирования" на естественном языке и затем разбирают предложения в классы, который использует JUnit для проверки на поведения приложения"
О чем Вы говорите, здесь точно походит на инструмент, FitNesse. Точно как Вы описываете, клиенты пишут приемочным испытаниям "сценарии" на некотором языке, который makese обнаруживают им и системам сборки программистов, которые делают тестовую передачу. Даже реализация, о которой Вы говорите, состоит в значительной степени точно в том, как FitNesse работает - словарь, используемый в сценариях, связывается для формирования имен функций и т.д., так, чтобы платформа FitNesse знала что функцию звонить.
Так или иначе проверьте его :)