Source code for pycropml.transpiler.rules.pythonRules

# coding: utf8
from pycropml.transpiler.rules.generalRule import GeneralRule
from pycropml.transpiler.pseudo_tree import Node


[docs]def translateNotContains(node): return Node("simpleCall", op='not in', value=node.args, sequence=node.receiver, pseudo_type='Boolean')
[docs]def translateDictkeys(node): return Node("method_call", receiver=node.receiver, message=".keys()", args=[], pseudo_type=node.pseudo_type)
[docs]def translatePrint(node): return Node(type="ExprStatNode", expr=Node(type="call", function="print", args=node.args[0].elements))
[docs]def translateModulo(node): return Node(type="binary_op", op="%", left=node.args[0], right=node.args[1])
[docs]class PythonRules(GeneralRule): def __init__(self): GeneralRule.__init__(self) binary_op = {"and": "and", "or": "or", "not": "not", "<": "<", ">": ">", "==": "==", "+": "+", "-": "-", "*": "*", "/": "/", ">=": ">=", "<=": "<=", "!=": "!=", "%":"%" } unary_op = { 'not': 'not ', '+': '+', '-': '-', '~': '~' } types = { "int": "int", "float": "float", "bool": "bool", "list": "list", "tuple": "tuple", "str": "str", "dict": "dict", "datetime":"datetime" } functions = { 'math': { 'ln': 'log', 'log': 'log', 'tan': 'tan', 'sin': 'sin', 'cos': 'cos', 'asin': 'asin', 'acos': 'acos', 'atan': 'atan', 'sqrt': 'sqrt', 'ceil': 'ceil', 'round': 'round', 'exp': 'exp' }, 'io': { 'print': translatePrint, 'read': 'read', 'read_file': 'File.ReadAllText', 'write_file': 'File.WriteAllText' }, 'system': { 'min': 'min', 'max': 'max', 'abs': 'abs', 'pow': 'pow', 'modulo': translateModulo}, 'datetime':{ 'datetime': 'datetime' } } methods = { 'int': { 'float': 'float' }, 'float': { 'int': 'int' }, 'str': { 'int': 'int', 'find': '.index' }, 'list': { 'len': 'len', 'append': '.append', 'sum': 'sum', 'pop': '.pop', 'contains?': lambda node: Node("simpleCall", op='in', value=node.args, sequence=node.receiver, pseudo_type='Boolean'), 'not contains?': translateNotContains, 'index': '.index' }, 'datetime':{ 'datetime':'datetime', 'day':'day' }, 'array': { 'len': 'len', 'append': '.append' }, 'dict': { 'len': 'len', 'keys': translateDictkeys, 'get' : '.get' } }