コード例 #1
0
ファイル: Rule.cs プロジェクト: miyoku157/Cthulours
        void EvaluateAssignmentExpression(AssignmentExpression exp)
        {
            ConstantType val = EvaluateArithmeticExpression(exp.GetExpression());

            Variable variable;

            if (m_Context.GetState().GetVariable(exp.GetVariable().GetName().Value, out variable))
            {
                variable.SetValue(Variable.GetValueFromConstant(variable.GetVariableType(), val));
            }
        }
コード例 #2
0
ファイル: Rule.cs プロジェクト: miyoku157/Cthulours
        string GetAssignmentExpressionString(AssignmentExpression exp)
        {
            string retVal;

            string rhs          = GetArithmeticExpressionString(exp.GetExpression());
            string variableName = exp.GetVariable().GetName().Value;

            retVal = variableName + " = " + rhs;

            return(retVal);
        }
コード例 #3
0
ファイル: Rule.cs プロジェクト: miyoku157/Cthulours
        VariableType ValidateAssignmentExpression(AssignmentExpression assignment, out bool valid)
        {
            bool         expressionValid = true;
            VariableType returnType      = VariableType.INT;

            valid = true;

            VariableType varType        = (VariableType)assignment.GetVariable().GetType2().Value;
            VariableType expressionType = ValidateArithmeticExpression(assignment.GetExpression(), out expressionValid);

            bool typesValid = IsTypeCompatible(varType, expressionType, out returnType);

            valid = typesValid && expressionValid;

            return(returnType);
        }