cjdrake / pyeda

Python EDA
BSD 2-Clause "Simplified" License
301 stars 55 forks source link

Error "maximum recursion depth exceeded while calling a Python object" while creating an expression using string #175

Open akashchavan15 opened 1 year ago

akashchavan15 commented 1 year ago

Hi,

I want to create a BDD for a 16-bit truth table. I am converting my string expression into an Expression using a function expr(obj, simplify=True) but I am getting maximum recursion depth exceeded error.

Here, is my error File "/usr/local/lib/python3.8/dist-packages/pyeda/boolalg/expr.py", line 221, in expr ast = pyeda.parsing.boolexpr.parse(obj) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 384, in parse expr = _expr(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 407, in _expr return _ite(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 412, in _ite s = _impl(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 429, in _impl p = _sumterm(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 448, in _sumterm xorterm = _xorterm(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 475, in _xorterm prodterm = _prodterm(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 502, in _prodterm factor = _factor(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 536, in _factor expr = _expr(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 407, in _expr return _ite(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 412, in _ite s = _impl(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 429, in _impl p = _sumterm(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 449, in _sumterm sumterm_prime = _sumterm_prime(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 462, in _sumterm_prime sumterm_prime = _sumterm_prime(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 462, in _sumterm_prime sumterm_prime = _sumterm_prime(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 462, in _sumterm_prime sumterm_prime = _sumterm_prime(lexer) [Previous line repeated 951 more times] File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 461, in _sumterm_prime xorterm = _xorterm(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 475, in _xorterm prodterm = _prodterm(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 503, in _prodterm prodterm_prime = _prodterm_prime(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 516, in _prodterm_prime prodterm_prime = _prodterm_prime(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 516, in _prodterm_prime prodterm_prime = _prodterm_prime(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 516, in _prodterm_prime prodterm_prime = _prodterm_prime(lexer) [Previous line repeated 10 more times] File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 515, in _prodterm_prime factor = _factor(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 533, in _factor return ('not', _factor(lexer)) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 580, in _factor return _variable(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 607, in _variable names = _names(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 625, in _names rest = _zom_name(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 632, in _zom_name tok = next(lexer) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/lex.py", line 81, in next return next(self.gtoks) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/lex.py", line 114, in _iter_tokens actions[idx](self, text) File "/usr/local/lib/python3.8/dist-packages/pyeda/parsing/boolexpr.py", line 149, in operator self.push_token(cls(text, self.lineno, self.offset)) File "", line 1, in new RecursionError: maximum recursion depth exceeded while calling a Python object

Please find the attached file for my expression. expression.docx

Can someone please give me some hints to fix this?

akashchavan15 commented 1 year ago

@cjdrake Could you please provide some comment on this?