Nice.  Yeah, too bad Java is getting so complicated and yet they  
haven't made array slicing.
Ter
On May 20, 2008, at 1:32 PM, Benjamin Niemann wrote:

> On Tue, May 20, 2008 at 6:50 PM, Terence Parr <[EMAIL PROTECTED]>  
> wrote:
>>
>> On May 20, 2008, at 3:53 AM, Benjamin Niemann wrote:
>>> Usually I stayed very close to the Java implementation when  
>>> porting it
>>> to Python. IIRC this is one of the cases where my version looked  
>>> very
>>> different from Java, because Python has a much more powerful built- 
>>> in
>>> support for lists. There are a few occasions where I boiled down 30
>>> lines of Java code to 2 or 3 Python lines ;)
>>
>> Sweet...is thereAn obvious java v python example you can show?
>
> Mmm.. let's see..
>
> http://fisheye2.cenqua.com/browse/antlr/runtime/Java/src/org/antlr/runtime/tree/BaseTree.java?r=4921#l204
> vs.
> http://fisheye2.cenqua.com/browse/antlr/runtime/Python/antlr3/tree.py?r=4914#l800
>
> The comparison is not entirely fair (and it was just 20 lines, not
> 30..), because your version does some extra optimization by
> overwriting as many array indeces as possible. But that could be done
> without manual iterations as well by using the slice operator, e.g.
>
> for (int j=0; j<numNewChildren; j++) {
>  children.set(startChildIndex+j, newChildren.get(j));
> }
>
> would looks something like
>
> children[startChildIndex:startChildIndex+numNewChildren] =
> newChildren[0:numNewChildren]
>
> And scanning through the code, I've just seen numerous places that
> could be written much more elegant and/or efficient, but I just did a
> mostly 1:1 conversion to get things done.
>
> -Ben

_______________________________________________
antlr-dev mailing list
[email protected]
http://www.antlr.org:8080/mailman/listinfo/antlr-dev

Reply via email to