当前位置: 首页>>代码示例>>Python>>正文


Python FORA.prependMemberToCreateObjectExpression方法代码示例

本文整理汇总了Python中ufora.native.FORA.prependMemberToCreateObjectExpression方法的典型用法代码示例。如果您正苦于以下问题:Python FORA.prependMemberToCreateObjectExpression方法的具体用法?Python FORA.prependMemberToCreateObjectExpression怎么用?Python FORA.prependMemberToCreateObjectExpression使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ufora.native.FORA的用法示例。


在下文中一共展示了FORA.prependMemberToCreateObjectExpression方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: _getCreateObjectExpressionAndMemberToObjectIdMap

# 需要导入模块: from ufora.native import FORA [as 别名]
# 或者: from ufora.native.FORA import prependMemberToCreateObjectExpression [as 别名]
    def _getCreateObjectExpressionAndMemberToObjectIdMap(self,
                                                        objectIdToObjectDefinition,
                                                        stronglyConnectedComponent):
        naiveConvertedFunctions = dict()
        for objectId in stronglyConnectedComponent:
            objectDefinition = objectIdToObjectDefinition[objectId]

            if isinstance(objectDefinition, TypeDescription.ClassInstanceDescription):
                classDesc = objectIdToObjectDefinition[objectDefinition.classId]
                sourceFile = objectIdToObjectDefinition[classDesc.sourceFileId]
                lineNumber = classDesc.lineNumber
                raise pyfora.PythonToForaConversionError(
                    "Classes and instances cannot be mutually recursive",
                    trace=[{'path': sourceFile.path, 'line': lineNumber}]
                    )

            assert isinstance(
                objectDefinition,
                (TypeDescription.FunctionDefinition,
                 TypeDescription.ClassDefinition)), type(objectDefinition)

            naiveConvertedFunctions[objectId] = \
                self._convertPyClassOrFunctionDefinitionToForaFunctionExpression(
                    objectDefinition,
                    objectIdToObjectDefinition
                    )
        # at this point, naiveConvertedFunctions is a map: objectId -> functionExpr

        # renamedObjectMapping is a map: objectId -> varname,
        # where varname is (essentially) just the hash of the corresponding functionExpr
        renamedObjectMapping = self._computeRenamedObjectMapping(
            naiveConvertedFunctions
            )

        # replace the known free var chains in the strongly connected component
        # with the varnames coming from the renamedObjectMapping
        convertedFunctions = self._replaceKnownMemberChainsWithRenamedVariables(
            naiveConvertedFunctions,
            renamedObjectMapping,
            objectIdToObjectDefinition,
            stronglyConnectedComponent
            )

        createObjectExpression = empytObjectExpression

        for objectId, varname in sorted(renamedObjectMapping.items(), key=lambda p: p[1]):
            createObjectExpression = ForaNative.prependMemberToCreateObjectExpression(
                createObjectExpression,
                varname,
                convertedFunctions[objectId]
                )

        return createObjectExpression, renamedObjectMapping
开发者ID:Sandy4321,项目名称:ufora,代码行数:55,代码来源:NativeConverterAdaptor.py

示例2: getCreateObjectExpressionAndMemberToObjectIdMap

# 需要导入模块: from ufora.native import FORA [as 别名]
# 或者: from ufora.native.FORA import prependMemberToCreateObjectExpression [as 别名]
    def getCreateObjectExpressionAndMemberToObjectIdMap(self,
                                                        objectIdToObjectDefinition,
                                                        stronglyConnectedComponent):
        naiveConvertedFunctions = dict()
        for objectId in stronglyConnectedComponent:
            objectDefinition = objectIdToObjectDefinition[objectId]

            if isinstance(objectDefinition, TypeDescription.ClassInstanceDescription):
                classDesc = objectIdToObjectDefinition[objectDefinition.classId]
                sourceFile = objectIdToObjectDefinition[classDesc.sourceFileId]
                lineNumber = classDesc.lineNumber
                raise pyfora.PythonToForaConversionError(
                    "Classes and instances cannot be mutually recursive",
                    trace=[{'path': sourceFile.path, 'line': lineNumber}]
                    )

            assert isinstance(
                objectDefinition,
                (TypeDescription.FunctionDefinition,
                 TypeDescription.ClassDefinition)), type(objectDefinition)

            naiveConvertedFunctions[objectId] = \
                self.convertPyClassOrFunctionDefinitionToForaFunctionExpression(
                    objectDefinition,
                    objectIdToObjectDefinition
                    )

        renamedObjectMapping = self.computeRenamedObjectMapping(
            naiveConvertedFunctions
            )

        convertedFunctions = self.transformFunctions(
            naiveConvertedFunctions,
            renamedObjectMapping,
            objectIdToObjectDefinition,
            stronglyConnectedComponent
            )

        createObjectExpression = empytObjectExpression

        for objectId, functionExpression in convertedFunctions.iteritems():
            createObjectExpression = ForaNative.prependMemberToCreateObjectExpression(
                createObjectExpression,
                renamedObjectMapping[objectId],
                functionExpression
                )

        return createObjectExpression, renamedObjectMapping
开发者ID:vishnur,项目名称:ufora,代码行数:50,代码来源:Converter.py


注:本文中的ufora.native.FORA.prependMemberToCreateObjectExpression方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。