Example #1
0
def test_assemble(symops, symops_sec):
    """Test, which checks correctness of function parser.assemble, 
    which reverses what parser.Parser does"""
    for nr, symop in enumerate(symops):
        #reverting parsing result
        back = parser.assemble(parser.Parser(symop))
        assert any([ back == symops[nr], back == symops_sec[nr]])
Example #2
0
def invert_symop(symb):
    """ 'x,y,z' --> '-x,-y,-z'"""
    issymbol = lambda s: re.compile(r"[A-Za-z]+").search(s)
    isnumber = lambda s: re.compile(r"[+-]?\d+[./]?(\d+)?").search(s)
    iszero = lambda s: re.compile(r"[+-]*0").search(s)

    minus = "-"
    plus = "+"
    parsed_list = parser.Parser(symb)
    def invert_symbol(symb):
        """x -> -x"""
        if iszero(symb):
            return "0"
        if issymbol(symb):
            return symb
        if isnumber(symb):
            if minus in symb:
                return symb[1:]
            if plus in symb:
                return "-{}".format(symb[1:])
            else:
                return "-{}".format(symb)

    def invert_line(line):
        return map(invert_symbol, line)

    
    return parser.assemble(map(invert_line, parser.Parser(symb)))