def convert_atom()

in src/latex2sympy2_extended/latex2sympy2.py [0:0]


    def convert_atom(self, atom):
        if atom.atom_expr():
            return self.convert_atom_expr(atom.atom_expr())
        elif atom.SYMBOL():
            s = atom.SYMBOL().getText().replace("\\$", "").replace("\\%", "")
            if s == "\\infty":
                return sympy.oo
            else:
                raise Exception("Unrecognized symbol")
        elif atom.number_subexpr():
            # We just ignore the subexpr right now
            s = atom.number_subexpr().NUMBER().getText()
            number = self.parse_number(s)
            return number
        elif atom.E_NOTATION():
            s = atom.E_NOTATION().getText()
            return self.parse_number(s)
        elif atom.E_NOTATION_E():
            return self.create_symbol('E')
        elif atom.DIFFERENTIAL():
            diff_var = self.get_differential_var(atom.DIFFERENTIAL())
            return sympy.Symbol('d' + diff_var.name, real=self.is_real)
        elif atom.VARIABLE():
            text = atom.VARIABLE().getText()
            is_percent = text.endswith("\\%")
            trim_amount = 3 if is_percent else 1
            atom_text = text[10:]
            atom_text = atom_text[0:len(atom_text) - trim_amount]

            # Hynek: I don't think we want this to happen
            # replace the variable for already known variable values
            # if atom_text in self.var:
            #     symbol = self.var[atom_text]
            # else:
            symbol = self.create_symbol(atom_text)

            if is_percent:
                return convert_to_pct(symbol)

            # return the symbol
            return symbol

        elif atom.PERCENT_NUMBER():
            text = atom.PERCENT_NUMBER().getText().replace("\\%", "").replace("%", "").replace(",", "")
            number = self.parse_number(text)
            percent = sympy.Mul(number, Rational(1, 100), evaluate=False)
            return percent