Есть устойчивое желание создать высокоуровневый (проблемно-ориентированный) язык для спец. области.
Поясню: Есть CAD с набором «низкоуровневых» языков автоматизации (cshell, tcl, perl, python, lisp).
Они в данном случае «низкоуровневые» так как типовые действия выглядят примерно так. Например надо на всех слоях определенного типа увеличить все фигуры circle с 12мм до 16мм.
CAD_command set_layer_filter параметры слоев
CAD_command select_layers_by_filter
LAYERS=`CAD_command get_selection_list`
foreach layer ($LAYERS)
CAD_command activate_layer $layer
CAD_command set_object_filter type=circle size=12mm
CAD_command select_obj_by_filter
SELECTED=`CAD_command get_selection_list'
if ($#SELECTED > 0) then
CAD_command resize_selections size=16mm
endif
CAD_command deactivate_layer $layer
end
А хочется писать так:
foreach layers($type_of_layer) do
CAD.resize circle from=12mm to=16mm
end
И вот такая короткая запись должна развернуться в предыдущую подробную. Вопрос как такое писать? Согласен на lisp.
Вобщем достаточно будет если подскажете литературу и ключевые слова.