[antlr-interest] Modifying Java Source

Terence Parr parrt at cs.usfca.edu
Mon Aug 10 13:39:18 PDT 2009


do a replace not insert. get token index from '{' and '}'. label those  
tokens.
Ter
On Aug 10, 2009, at 12:38 PM, Ismet Ozalp wrote:

> Thanks again Terence.
>
> Ok I believe now I getting at least something correct
>
> i replaced the
> methodBody
>     :    block
>     ;
>
> With this
>
> methodBody
>     :    {
>             TokenRewriteStream input2 = (TokenRewriteStream) input;
>             input2.insertAfter(input.index(),"throw new  
> UnsupportedOperationException();");
>         }
>     ;
>
> and now i have throw new UnsupportedOperationException(); in methods  
> but how do i delete the existing codes in the methodBody?
>
> you said ask for { } how do i do that ? how can I find indexes of  
> { } in methodBody if I can find the index of them I can use replace  
> method and everything will be good.
>
> Regards,
> Ismet
>
>
> On Mon, Aug 10, 2009 at 8:01 PM, Terence Parr <parrt at cs.usfca.edu>  
> wrote:
> go to method definition in grammar. ask for tokens { and }. context  
> is your key not simply scanning for tokens.
> T
>
> On Aug 10, 2009, at 6:27 AM, Ismet Ozalp wrote:
>
>> First of all thank you all for your fast comments on the subject.
>>
>> Terence, after I created the tokenRewriteStream
>>
>> JavaLexer javaLexer = new JavaLexer(new ANTLRFileStream(file));
>> TokenRewriteStream tokenRewriteStream = new  
>> TokenRewriteStream(javaLexer);
>>
>> Are you suggesting me to find tokens between {} and replace them  
>> with the tokens I want?
>> In that case how can I detect class definition and inner class  
>> definitions because i don't want to replace them. Maybe I am not  
>> completely understanding
>> your suggestion. I feel like telling the grammar skip method  
>> definitions but yet i am not successful.  I am using antlr 3.1.3.  
>> Also TokenRewriteStream's delete(int from, int to) seems not  
>> deleting the tokens in it's token list? I am just calling  
>> tokenRewriteStream.delete(10,20) and the tokens are still there?  
>> Thank you very much...
>>
>> Regards,
>> Ismet
>>
>>
>> On Mon, Aug 10, 2009 at 8:31 AM, Terence Parr <parrt at cs.usfca.edu>  
>> wrote:
>> Hiya. Use the tokenrewrite stream and Java.g combo. add actions to  
>> replace between { } with new action. :)
>> Ter
>> On Aug 9, 2009, at 6:18 PM, Ismet Ozalp wrote:
>>
>>> Hello everybody,
>>>
>>> I am a newbie; I am trying to modify java sources. What I am  
>>> trying to do is
>>>
>>> clear the codes in the methods and change them with one line of code
>>>
>>> example method
>>>
>>>     public void delete(T t) {
>>>         PersistenceManager pm = PMF.get().getPersistenceManager();
>>>
>>>         try {
>>>             pm.deletePersistent(t);
>>>
>>>         } finally {
>>>             pm.close();
>>>         }
>>>
>>>     }
>>>
>>> changed method
>>>
>>>   public void delete(T t) {
>>>     throw new UnsupportedOperationException();
>>>   }
>>>
>>> So i need to modify the grammar some how to do this for methods in  
>>> the source file
>>> currently I am trying to do something with http://www.antlr.org/grammar/1152141644268/Java.g
>>> which is written by Terence Parr. But I am a little bit lost, if  
>>> anybody can point me to the right direction
>>> where I can find more information or examples about how to achieve  
>>> this, it would be great....
>>>
>>> Thank you very much
>>> Ismet
>>>
>>>
>>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>>> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>>
>>
>
>



More information about the antlr-interest mailing list