Image

Imagelexicore wrote in Imageru_java

JavaScript Code Model

Всем привет.

Я для своих нужно написал JavaScript Code Model (JSCM), модель кода для языка JavaScript.



При помощи JSCM можно программно создавать JavaScript-код в виде объектной модели - и затем его сериализировать, анализировать или видоизменять. Ниже пример кода, который создаёт функцию factorial:

  1. // Instantiate the code model  
  2. JSCodeModel codeModel = new CodeModelImpl();  
  3. // Create the program  
  4. JSProgram program = codeModel.program();  
  5. // Add a function declaration  
  6. JSFunctionDeclaration factorial = program  
  7.     .functionDeclaration("factorial");  
  8. // Add a function parameter  
  9. JSVariable x = factorial.parameter("x");  
  10. // Create an integer literal  
  11. JSDecimalIntegerLiteral one = codeModel.integer(1);  
  12. // Add a return statement to the function body  
  13. factorial.getBody()._return(  
  14.     x.le(one).cond(  
  15.         one,  
  16.         x.mul(factorial.getFunctionExpression().i()  
  17.             .args(x.minus(one)))));  
  18.   
  19. // Write the program code to the System.out  
  20. new CodeWriter(System.out).program(program);  


Выдаёт результат вида:

  1. function factorial(x) {  
  2.   return x <= 1 ? 1 : x * factorial(x - 1);  
  3. }  


См. заодно:

Generating JavaScript Code with JavaScript Code Model



Лицензия BSD, страница проекта вот, код на SourceForge.
Если кому пригодится, буду рад.