render accept ":"

This commit is contained in:
lafrite 2014-01-19 18:32:32 +01:00 committed by Lafrite
parent 52ee73c340
commit 5799d9a48d

View File

@ -14,7 +14,11 @@ class Render(object):
Those three dictionnaries while define how a postfix expression will be transform into a string. Those three dictionnaries while define how a postfix expression will be transform into a string.
""" """
<<<<<<< HEAD
PRIORITY = {"^": 4,"*" : 3, "/": 3, ":": 3, "+": 2, "-":2, "(": 1} PRIORITY = {"^": 4,"*" : 3, "/": 3, ":": 3, "+": 2, "-":2, "(": 1}
=======
PRIORITY = {"*" : 3, "/": 3, ":": 3, "+": 2, "-":2, "(": 1}
>>>>>>> render accept ":"
def __init__(self, op_infix = {}, op_postfix = {}, other = {}, join = " ", type_render = {int: str, Fraction: str, FormalExp: str}): def __init__(self, op_infix = {}, op_postfix = {}, other = {}, join = " ", type_render = {int: str, Fraction: str, FormalExp: str}):
"""Initiate the render """Initiate the render
@ -202,6 +206,53 @@ class flist(list):
pass pass
# ------------------------
# A console render
txt_infix = {"+": "+", "-": "-", "*": "*", "/" : "/", ":": ":"}
txt_postfix = {}
txt_other = {"(": "(", ")": ")"}
txt_render = Render(txt_infix, txt_postfix, txt_other)
# ------------------------
# A infix to postfix list convertor
p2i_infix = {"+": "+", "-": "-", "*": "*", "/" : "/", ":":":"}
p2i_postfix = {}
p2i_other = {"(": "(", ")": ")"}
post2in_fix = Render(p2i_infix, p2i_postfix, p2i_other, join = False)
# ------------------------
# A latex render
def texSlash(op1, op2):
if not Render.isNumerande(op1) and op1[0] == "(" and op1[-1] == ")":
op1 = op1[1:-1]
if not Render.isNumerande(op2) and op2[0] == "(" and op2[-1] == ")":
op2 = op2[1:-1]
return ["\\frac{" , op1 , "}{" , op2 , "}"]
def texFrac(frac):
return ["\\frac{" , str(frac._num) , "}{" , str(frac._denom) , "}"]
tex_infix = {"+": " + ", "-": " - ", "*": " \\times ", ":": ":"}
tex_postfix = {"/": texSlash}
tex_other = {"(": "(", ")": ")"}
tex_type_render = {int: str, Fraction: texFrac, FormalExp: str}
tex_render = Render(tex_infix, tex_postfix, tex_other, type_render = tex_type_render)
if __name__ == '__main__':
exp = [2, 5, '+', 1, '-', 3, 4, '*', ':']
print(txt_render(exp))
exp = [2, 5, '+', 1, '-', 3, 4, '*', '/', 3, 5, '/', ':']
print(tex_render(exp))
exp = [2, 5, '+', 1, '-', 3, 4, '*', '/', 3, '+']
print(post2in_fix(exp))
# ----------------------------- # -----------------------------
# Reglages pour 'vim' # Reglages pour 'vim'