public override void ProcessNode(PslOperatorUsageNode node) { string operatorSymbol = null; m_tierStateStack.Push(new PslInspectionTierState(PslContext.Inline, true)); switch (node.Operator.Specification) { // Mathematical operators case FunctionSpecification.Add: operatorSymbol = "+"; break; case FunctionSpecification.Subtract: operatorSymbol = "-"; break; case FunctionSpecification.Multiply: operatorSymbol = "*"; break; case FunctionSpecification.Divide: operatorSymbol = "/"; break; // Comparison operators case FunctionSpecification.Equals: operatorSymbol = "=="; break; case FunctionSpecification.NotEquals: operatorSymbol = "!="; break; case FunctionSpecification.GreaterThan: operatorSymbol = ">"; break; case FunctionSpecification.LessThan: operatorSymbol = "<"; break; case FunctionSpecification.GreaterThanOrEqualTo: operatorSymbol = ">="; break; case FunctionSpecification.LessThanOrEqualTo: operatorSymbol = "<="; break; // Logical operators case FunctionSpecification.And: operatorSymbol = "&&"; break; case FunctionSpecification.Or: operatorSymbol = "||"; break; case FunctionSpecification.Not: m_output.Append('!'); node.Operands[0].VisitThis(this); break; // Special operations case FunctionSpecification.Set: operatorSymbol = "="; break; case FunctionSpecification.ListGet: node.Operands[0].VisitThis(this); m_output.Append(OPEN_ARRAY_INDEXER); node.Operands[1].VisitThis(this); m_output.Append(CLOSE_ARRAY_INDEXER); break; default: throw new OnlyForDebuggingException("Unexpected operator usage."); } if (operatorSymbol != null) { List <NodeBase> operands = node.Operands; int lastOperandIndex = operands.Count - 1; for (int i = 0; i <= lastOperandIndex; i++) { operands[i].VisitThis(this); if (i != lastOperandIndex) { m_output.Append(SPACE); m_output.Append(operatorSymbol); m_output.Append(SPACE); } } } m_tierStateStack.Pop(); if (m_tierStateStack.Peek().Context != PslContext.Inline) { m_output.Append(STATEMENT_TERMINATOR); } }
public override void ProcessNode(PslOperatorUsageNode node) { }
public abstract void ProcessNode(PslOperatorUsageNode node);