You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
from . import _config
if not _config.CARL_WITH_PARSER: raise ImportError("Parser is not available in the configured carl library! Did you configure carl with '-DBUILD_ADDONS=ON -DBUILD_ADDON_PARSER=ON'?")
from . import parse from .parse import *
class ParserError(Exception): """
Error which is meant to be raised when the parser throws an error. """
def __init__(self, message): self.message = message
def deserialize(input, package): """
:param input: :return: """
error = None try: res = package.parse.parse._deserialize(input) except RuntimeError as e: error = str(e) # ugly save and rethrow yields improved error messages in pytest. if error: raise ParserError(error + " when parsing '" + input + "'") res_type = res.get_type() if res_type == parse._ParserReturnType.Rational: return res.as_rational() elif res_type == parse._ParserReturnType.Variable: return res.as_variable() elif res_type == parse._ParserReturnType.Monomial: return res.as_monomial() elif res_type == parse._ParserReturnType.Term: return res.as_term() elif res_type == parse._ParserReturnType.Polynomial: return res.as_polynomial() elif res_type == parse._ParserReturnType.RationalFunction: return res.as_rational_function() elif res_type == parse._ParserReturnType.Constraint: return res.as_constraint() elif res_type == parse._ParserReturnType.Formula: return res.as_formula() assert False, "Internal error."
|