Určitě by měl jít použít AntLR. Gramatika pro Javu už je hotová, netřeba ji 
vymýšlet znova.

A nedávno jsem narazil ještě na tohle, to by mohlo být ještě jednodušší než 
AntLR
http://code.google.com/p/javaparser/wiki/UsingThisParser

Tom

> -----Original Message-----
> From: konference-boun...@java.cz 
> [mailto:konference-boun...@java.cz] On Behalf Of Dusan Zatkovsky
> Sent: Wednesday, April 14, 2010 1:05 PM
> To: konference@java.cz
> Subject: Parsovanie .java zdrojakov cestou najmensieho odporu
> 
> Ahoj.
> 
> Maintainujem qtjambi/maven plugin a stojim pred rozhodnutim 
> ci/a/alebo cim parsovat javovske zdrojaky. V principe mi ide 
> o extrakciu textov k prekladu ( pokial niekto pouziva 
> qt/qtjambi, ide mi o nahradu toolu "lupdate" ).
> 
> Priklad:
> 
> public class MainClass extends SomeObject {
> 
>       public void someMethod() {
> 
>               String s1 = tr("string1");
>               String s2 = QApplication.translate("MyContext", 
> "string2");
>               String s3 = 
> QCoreApplication.translate("MyContext", "string3", 5);
>               //String s4 = 
> QApplication.translate("MyContext", "string4", 5);
>               String s5 = QApplication.translate(
>                       "MyContext",
>                       "string5",
>                       7);
> 
>               /*
>               String s6 = tr("commented");
>               */
> 
>       }
> 
>       class InnerClass {
>               void anotherMethod() {
>                       String s6 = tr("string6");
>               }
>       }
> 
> }
> 
> 
> Z tohoto zdrojaku potrebujem vyextrahovat parameter pre tr() 
> a prve dva parametre pre QApplication.translate() a 
> QCoreApplication.translate().
> 
> Dalej v pripade tr() potrebujem vediet meno class-y ( 
> MainClass ), pripadne aj rodicovskej classy (MainClass.InnerClass).
> 
> Samozrejme k tomu spravne handlovat zakomentovane casti kodu 
> a viacriadkove statementy.
> 
> Vysledkom tohoto extraktu by bolo cosi podobne tomuto:
> 
> MainClass,string1
> MyContext,string2
> MyContext,string3
> MyContext,string5
> MainClass.InnerClass,string6
> 
> 
> Mam niekolko moznosti:
> - regexp ( primitivne, nezistim meno classy )
> - nejaky vlastny tokenizer ( dlhsi cas vyvoja )
> - zneuzit cosi existujuce ... ?
> 
> 
> Ako by ste na to sli vy?
> 
> Dik
> 
> --
> Dusan
> 
> 
> ... tykajte mi
> 

Odpovedet emailem