SyntaxHighlighter

воскресенье, 3 июня 2012 г.

InteLib

InteLib - реализация EDSL лиспа на C++ (oh shi)
http://www.intelib.org/intro.html
LSymbol ISOMORPHIC("ISOMORPHIC");

 static LFunctionalSymbol DEFUN("DEFUN");
 static LFunctionalSymbol COND("COND");
 static LFunctionalSymbol ATOM("ATOM");
 static LFunctionalSymbol AND("AND");
 static LFunctionalSymbol CAR("CAR");
 static LFunctionalSymbol CDR("CDR");

 static LListConstructor L;

 void LispInit_isomorphic() {
   static LSymbol TREE1("TREE1");
   static LSymbol TREE2("TREE2");
   ////////////////////////////////////////////////
   //
   (L|DEFUN, ISOMORPHIC, (L|TREE1, TREE2),
     (L|COND, 
       (L|(L|ATOM, TREE1), (L|ATOM, TREE2)),
       (L|(L|ATOM, TREE2), NIL),
       (L|T, (L|AND,
         (L|ISOMORPHIC, (L|CAR, TREE1), 
                        (L|CAR, TREE2)),
         (L|ISOMORPHIC, (L|CDR, TREE1), 
                        (L|CDR, TREE2))
   )))).Evaluate();
   //
   ////////////////////////////////////////////////
 } 
 //      end of file

Комментариев нет:

Отправить комментарий