diff options
author | Richard Braun <syn@sceen.net> | 2006-05-30 10:05:30 +0000 |
---|---|---|
committer | Richard Braun <syn@sceen.net> | 2006-05-30 10:05:30 +0000 |
commit | b77fec789b66c2611d2a9b1cdcb607d0865e32c2 (patch) | |
tree | f5f1677e5a70a233db47932c99b34661ff037586 | |
parent | 54a8ca2fbee6ab6df9d3427f6642cf461d29e935 (diff) |
Fixed bug in subexpressions parsing.
-rw-r--r-- | mtxexpression.cc | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/mtxexpression.cc b/mtxexpression.cc index 3c39ae2..a6bc695 100644 --- a/mtxexpression.cc +++ b/mtxexpression.cc @@ -87,19 +87,6 @@ MtxExpression::MtxExpression(MtxLanguage *language, this->language = language; this->silent = silent; - if (lexical_elements.size() > 1) - while (lexical_elements[0] == "(") - { - if (lexical_elements.back() == ")") - { - lexical_elements.erase(lexical_elements.begin()); - lexical_elements.erase(lexical_elements.end() - 1); - } - - else - break; - } - if (lexical_elements.size() == 1) { string element; @@ -231,6 +218,14 @@ MtxExpression::MtxExpression(MtxLanguage *language, expressions.push_back(new MtxExpression(language, second_operand)); } + else if (lexical_elements.size() > 1 && lexical_elements.back() == ")") + { + lexical_elements.erase(lexical_elements.begin()); + lexical_elements.erase(lexical_elements.end() - 1); + expressions.push_back(new MtxExpression(language, lexical_elements)); + function = MTXEXPRESSION_FUNCTION_NULL; + } + else if (lexical_elements[0] == "[" && lexical_elements.back() == "]") { MtxRational *rational, *rationals; |