예제 #1
0
        public override void ProcessNode(PslFunctionUsageNode node)
        {
            Function callee = node.Function;

            if (m_tierStateStack.Peek().ReturnExpected&& callee.ReturnType == (short)IntegralValueType.Void)
            {
                throw new OnlyForDebuggingException("Return value expected from a function returning void.");
            }

            m_output.Append(callee.FullName);
            m_output.Append(OPEN_BRACKET);
            m_tierStateStack.Push(new PslInspectionTierState(PslContext.Inline, true));

            List <NodeBase> arguments         = node.Arguments;
            int             lastArgumentIndex = arguments.Count - 1;

            for (int i = 0; i <= lastArgumentIndex; i++)
            {
                arguments[i].VisitThis(this);

                if (i != lastArgumentIndex)
                {
                    m_output.Append(PARAMETER_DELIMITER);
                }
            }

            m_tierStateStack.Pop();
            m_output.Append(CLOSE_BRACKET);

            if (m_tierStateStack.Peek().Context != PslContext.Inline)
            {
                m_output.Append(STATEMENT_TERMINATOR);
            }
        }
예제 #2
0
 public override void ProcessNode(PslFunctionUsageNode node)
 {
 }
예제 #3
0
 public abstract void ProcessNode(PslFunctionUsageNode node);