[IronPython] Type analysis of expression

Christian Schmidt christian2.schmidt at gmx.de
Sun Oct 25 12:47:36 CET 2009


Hi Jeff,

> I'm going to assume that you have a way of determing the types of the
> input variables a, b, and c. 

Yes, all variables are strongly typed - they are loaded from a database.

> You can use the IronPython parser classes to convert the
> expressions into an AST; the tricky part is doing the actual
> inference.

When the DLR executes the expression's compiled code for the first time, 
it is compiled into assembly code. Repeated calls of the expression with 
the same input types will reuse the assembly code. So from this assembly 
code the type could be infered... But I have no glue how to get this 
information...

>>> Can you give some examples of expressions you need to infer?
>> arithmetic operations: a + b / c
>> functions: sqrt(a)
> 
> These are mostly straightforward - Python's type conversion rules for
> arithmetic operators are well-defined. Presumably, sqrt is defined in
> your code (or is just Math.sqrt) - thus the return type is the same as
> the input type.

Clearly this could all be implemented (type conversion rules, find 
function return types and arguments by reflection, ...), but the DLR is 
already doing it.





More information about the Ironpython-users mailing list