コード例 #1
0
ファイル: Call.cs プロジェクト: fakoor/ERTMSFormalSpecs
        /// <summary>
        ///     Adds an expression as a parameter
        /// </summary>
        /// <param name="designator">the name of the actual parameter</param>
        /// <param name="expression">the actual parameter value</param>
        public void AddActualParameter(Designator designator, Expression expression)
        {
            if (designator == null)
            {
                ActualParameters.Add(expression);
            }
            else
            {
                bool found = false;
                foreach (KeyValuePair <Designator, Expression> pair in NamedActualParameters)
                {
                    if (pair.Key.Image == designator.Image)
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    NamedActualParameters[designator] = expression;
                }
                else
                {
                    AddError("Actual parameter " + designator.Image + " is bound twice", RuleChecksEnum.ExecutionFailed);
                }
            }

            expression.Enclosing = this;
        }
コード例 #2
0
        public static FuncCallStatement Find(string str)
        {
            var match = Is.MatchesAll(str);

            if (match == null)
            {
                return(null);
            }

            var operandValue = Value.Find(match.Groups["FuncCallStatement_OperandValue"].ToString().Trim());
            var funcValue    = Value.Find(match.Groups["FuncCallStatement_FuncValue"].ToString().Trim());
            var parameters   = ActualParameters.Find(match.Groups["FuncCallStatement_ActualParameters"].ToString());

            if ((operandValue == null && funcValue == null) || parameters == null)
            {
                return(null);
            }

            return(new FuncCallStatement()
            {
                str = str,
                operandValue = operandValue,
                funcName = new LocalVaribleName(match.Groups["FuncCallStatement_FuncName"].ToString()),
                funcValue = funcValue,
                parameters = parameters
            });
        }
コード例 #3
0
        /// <summary>
        /// Adds an expression as a parameter
        /// </summary>
        /// <param name="name">the name of the actual parameter</param>
        /// <param name="expression">the actual parameter value</param>
        public void AddActualParameter(string name, Expression expression)
        {
            if (name == null)
            {
                ActualParameters.Add(expression);
            }
            else
            {
                if (!NamedActualParameters.ContainsKey(name))
                {
                    NamedActualParameters[name] = expression;
                }
                else
                {
                    AddError("Actual parameter " + name + " is bound twice");
                }
            }

            expression.Enclosing = this;
        }
コード例 #4
0
 public ASTFunctionCall(Token token, string functionName, IEnumerable <ASTNode> actualParameters)
 {
     FunctionName = functionName;
     Token        = token;
     ActualParameters.AddRange(actualParameters);
 }
コード例 #5
0
 public ProcedureCall()
 {
     ActualParameters = new ActualParameters();
 }
コード例 #6
0
 public FunctionCallExpression()
 {
     ActualParameters = new ActualParameters();
 }