When converting an existing code base I found that else-if apparently is not supported. Here's an example:
public static void main(String[] args) {
int a = 0;
if (a == 1) {
System.out.println("a=1");
} else if (a == 2) {
System.out.println("a=2");
}
}
which fails with the output
$ j2py HelloWorld.java
Traceback (most recent call last):
File "/usr/local/bin/j2py", line 258, in <module>
sys.exit(runMain(configScript(sys.argv[1:])))
File "/usr/local/bin/j2py", line 57, in runMain
return runOneOrMany(options)
File "/usr/local/bin/j2py", line 82, in runOneOrMany
return runTransform(options)
File "/usr/local/bin/j2py", line 134, in runTransform
module.walk(tree)
File "/usr/local/lib/python2.7/dist-packages/java2python/compiler/visitor.py", line 86, in walk
visitor.walk(child, memo)
File "/usr/local/lib/python2.7/dist-packages/java2python/compiler/visitor.py", line 86, in walk
visitor.walk(child, memo)
File "/usr/local/lib/python2.7/dist-packages/java2python/compiler/visitor.py", line 86, in walk
visitor.walk(child, memo)
File "/usr/local/lib/python2.7/dist-packages/java2python/compiler/visitor.py", line 86, in walk
visitor.walk(child, memo)
File "/usr/local/lib/python2.7/dist-packages/java2python/compiler/visitor.py", line 86, in walk
visitor.walk(child, memo)
File "/usr/local/lib/python2.7/dist-packages/java2python/compiler/visitor.py", line 83, in walk
visitor = self.accept(tree, memo)
File "/usr/local/lib/python2.7/dist-packages/java2python/compiler/visitor.py", line 43, in accept
return call(node, memo)
File "/usr/local/lib/python2.7/dist-packages/java2python/compiler/visitor.py", line 474, in acceptIf
nextNode = nextNode.children[2]
With the obvious workaround of separating the if statements, the conversion is successful:
public static void main(String[] args) {
int a = 0;
if (a == 1) {
System.out.println("a=1");
}
if (a == 2) {
System.out.println("a=2");
}
}
converts to
#!/usr/bin/env python
""" generated source for module HelloWorld """
class HelloWorld(object):
""" generated source for class HelloWorld """
@classmethod
def main(cls, args):
""" generated source for method main """
a = 0
if a == 1:
print "a=1"
if a == 2:
print "a=2"
if __name__ == '__main__':
import sys
HelloWorld.main(sys.argv)
When converting an existing code base I found that else-if apparently is not supported. Here's an example:
which fails with the output
With the obvious workaround of separating the if statements, the conversion is successful:
converts to