aboutsummaryrefslogtreecommitdiffstats
path: root/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java
diff options
context:
space:
mode:
Diffstat (limited to 'sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java')
-rw-r--r--sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java62
1 files changed, 35 insertions, 27 deletions
diff --git a/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java b/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java
index 9b35006..1d780d7 100644
--- a/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java
+++ b/sli/common/src/main/java/org/openecomp/sdnc/sli/SvcLogicBinaryExpression.java
@@ -102,40 +102,48 @@ public class SvcLogicBinaryExpression extends SvcLogicExpression {
sbuff.append(" ");
sbuff.append(operators.get(i));
sbuff.append(" ");
- sbuff.append(operands.get(i+1).toString());
+ if (i + 1 < operands.size()) {
+ sbuff.append(operands.get(i + 1).toString());
+ } else {
+ // expression incomplete; operand not bound yet
+ sbuff.append("?");
+ }
}
return(sbuff.toString());
}
- public String asParsedExpr()
- {
-
- List<SvcLogicExpression>operands = getOperands();
- StringBuffer sbuff = new StringBuffer();
- StringBuffer closeParens = new StringBuffer();
- int i = 0;
- for (OperatorType operator : operators)
- {
- sbuff.append("(");
- sbuff.append(operator.getText());
- sbuff.append(" ");
- sbuff.append(operands.get(i++).asParsedExpr());
- closeParens.append(")");
- }
- sbuff.append(" ");
- if (i < operands.size())
- {
- sbuff.append(operands.get(i).asParsedExpr());
- }
- else
- {
- sbuff.append("__MISSING_OPERAND__");
+ public String asParsedExpr() {
+
+ List<SvcLogicExpression> operands = getOperands();
+
+ if (operators.isEmpty()) {
+ return operands.get(0).asParsedExpr();
+ } else {
+ StringBuffer sbuff = new StringBuffer();
+ // operators in reverse order for left associativity
+ for (int i = operators.size() - 1; i >= 0; --i) {
+ sbuff.append("(");
+ sbuff.append(operators.get(i).getText());
+ sbuff.append(" ");
+ }
+ for (int i = 0; i < operators.size() + 1; ++i) {
+ if (i < operands.size()) {
+ sbuff.append(operands.get(i).asParsedExpr());
+ } else {
+ // expression incomplete; operand not bound yet
+ sbuff.append("?");
+ }
+ if (i != 0) {
+ sbuff.append(")");
+ }
+ if (i < operators.size()) {
+ sbuff.append(" ");
+ }
+ }
+ return sbuff.toString();
}
- sbuff.append(closeParens.toString());
- return(sbuff.toString());
-
}
}