summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Braun <syn@sceen.net>2006-05-30 10:05:30 +0000
committerRichard Braun <syn@sceen.net>2006-05-30 10:05:30 +0000
commitb77fec789b66c2611d2a9b1cdcb607d0865e32c2 (patch)
treef5f1677e5a70a233db47932c99b34661ff037586
parent54a8ca2fbee6ab6df9d3427f6642cf461d29e935 (diff)
Fixed bug in subexpressions parsing.
-rw-r--r--mtxexpression.cc21
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;