beeware / voc

A transpiler that converts Python code into Java bytecode

Home Page:http://beeware.org/voc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Maps reserved Java keywords to Python built-in function/method call

BPYap opened this issue · comments

Some built-in methods in Python has names that conflict with reserved keyword in Java. One example is Python's generator throw method vs Java's throw syntax.

The current approach is by renaming the method to something else in Java implementation and adding checks to convert the name during Attribute node traversal in ast.py. In the case of generator throw method, the check below is added in visit_Attribute:

if node.attr == "throw":
    node.attr = "throw_"  # refer org.python.types.Generator._throw

The throw will be converted to throw_ method name defined in Generator.java during transpilation.

As you can see, it is not very 'scalable', plus it lacks mechanism to standardize naming convention for converted name.

I spoken with @freakboy3742 just now and he suggested to have a dictionary to store mappings of reserved Java syntax to standardized Python's call name so that the transpiler can refer to it during transpilation.

Closing this. This can be achieved by defining name field in @org.python.Method decorator.
See https://voc.readthedocs.io/en/latest/reference/signatures.html