Friday, June 18, 2010

RefactoringNG

RefactoringNG is a flexible and powerful Java refactoring tool, implemented as NetBeans module. Refactoring rules are described as transformations of source abstract syntax trees to destination abstract syntax trees. For example, the rule that rewrites x = x + 1 to x++ is as follows:

 // x = x + 1 -> x++
 Assignment {
    Identifier [name: "x"],
    Binary [kind: PLUS] {
       Identifier [name: "x"],
       Literal [kind: INT_LITERAL, value: 1]
    }
 } ->
 Unary [kind: POSTFIX_INCREMENT] {
    Identifier [name: "x"]
 }
The names and structure of abstract syntax trees are the same as in Sun Java compiler. The tool uses Compiler Tree API (com.sun.*), the formal language model in the JDK API (javax.language.model.*), and NetBeans infrastructure. For example, if you have ever needed to replace the constructor call with a factory method or add an argument to each method call, you may appreciate how easily such tasks can be done with RefactoringNG:

Factory method

 // new Position(<args>) -> Position.create(<args>)
 NewClass {
    null,
    List<Tree>,
    Identifier [name: "Position"],
    List<Expression> [id: args],
    null
 } ->
 MethodInvocation {
    List<Tree> { },
    MemberSelect [identifier: "create"] {
       Identifier [name: "Position"]
    },
    List<Expression> [ref: args]
 }

Another argument

 // plus (<expr1>, <expr2>) -> plus (<expr1>, <expr2>, 5)
 MethodInvocation {
    List [size: 0],
    Identifier [name: "plus"],
    List<Expression> [id: args, size: 2]
 } ->
 MethodInvocation {
    List<Tree> [size: 0],
    Identifier [name: "plus"],
    List<Expression> {
       ListItems [ref: args],
       Literal [kind: INT_LITERAL, value: 5]
    }
 }
For more information, go to http://kenai.com/projects/refactoringng. For download, go to http://kenai.com/projects/refactoringng/downloads

6 comments:

Luc Duponcheel said...

looks like an interesting project to me Zdenek

it also looks somewhat similar to the jackpot project (I do not know if Oracle Labs is still supporting on it)

btw

I've looked at your parser code.
I am convinced that you would appreciate the power and elegance of Scala for writing parser code
(Scala has a powerful and elegant parser combinator library)

keep on doing the good work

Luc

Zdeněk Troníček said...

Hi Luc, good comment. It is similar to Jackpot and I hope it is superior.
As for the parser, I certainly will have a look at Scala way.

Enjoy your stay in Prague!

mmo25 said...

The year 2013, exactly where they will recommended your mission's "team-based racing,Inches interpersonal features along with visual information, all of these obtain because of from the kiosk video clip.
Cheap FIFA 15 Coins

buy FIFA 15 Coins

Della said...

seseorang harus mengasaskan dengan memilih meja yang mereka duga benar dan kemudian membudayakan diri secara berbagai siklus permainan.
asikqq
http://dewaqqq.club/
http://sumoqq.today/
interqq
pionpoker
bandar ceme terpercaya
betgratis
paito warna terlengkap
syair sgp

super hero said...

Misbah Digital Marketing is an excellent online marketing agency in Bangalore.Misbah Digital Marketing!
Misbah Digital Marketing! having certified professionals in Google Ads, Google Analytics and Bing Ads.

Misbah Digital Marketing!

Plumbing & HVAC Services San Diego said...

Compre documentos en línea, documentos originales y registrados.
Acerca de Permisodeespana, algunos dicen que somos los solucionadores de problemas, mientras que otros se refieren a nosotros como vendedores de soluciones. Contamos con cientos de clientes satisfechos a nivel mundial. Hacemos documentos falsos autorizados y aprobados como Permiso de Residencia Español, DNI, Pasaporte Español y Licencia de Conducir Española. Somos los fabricantes y proveedores de primer nivel de estos documentos, reconocidos a nivel mundial.

Comprar permiso de residencia,
permiso de residenciareal y falso en línea,
Compre licencia de conducir en línea,
Compre una licencia de conducir española falsa en línea,
Comprar tarjeta de identificación,
Licencia de conducir real y falsa,
Compre pasaporte real en línea,

Visit Here fpr more information. :- https://permisodeespana.com/licencia-de-conducir-espanola/
Address: 56 Guild Street, London, EC4A 3WU (UK)
Email: contact@permisodeespana.com
WhatsApp: +443455280186