FUNCTION Is_int_expr
(arg : Numeric_expression) : BOOLEAN;
LOCAL i: INTEGER; END_LOCAL;
IF 'EXPRESSION_ARM.INT_LITERAL' IN TYPEOF(arg) THEN RETURN (TRUE); END_IF; IF 'EXPRESSION_ARM.REAL_LITERAL' IN TYPEOF(arg) THEN RETURN (FALSE); END_IF; IF 'EXPRESSION_ARM.INT_NUMERIC_VARIABLE' IN TYPEOF(arg) THEN RETURN (TRUE); END_IF; IF 'EXPRESSION_ARM.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg) THEN RETURN (FALSE); END_IF; IF 'NUMERIC_FUNCTION_ARM.ABS_FUNCTION' IN TYPEOF(arg) THEN RETURN (Is_int_expr(arg\Unary_numeric_expression.operand)); END_IF; IF 'NUMERIC_FUNCTION.MINUS_FUNCTION' IN TYPEOF(arg) THEN RETURN (Is_int_expr(arg\Unary_numeric_expression.operand)); END_IF; IF ('NUMERIC_FUNCTION_ARM.SIN_FUNCTION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.COS_FUNCTION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.TAN_FUNCTION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.ASIN_FUNCTION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.ACOS_FUNCTION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.Atan_function' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.EXP_FUNCTION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.LOG_FUNCTION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.LOG2_FUNCTION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.LOG10_FUNCTION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.SQUARE_ROOT_FUNCTION' IN TYPEOF(arg)) THEN RETURN (FALSE); END_IF; IF ('EXPRESSION_ARM.PLUS_EXPRESSION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.MULT_EXPRESSION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.MAXIMUM_FUNCTION' IN TYPEOF(arg)) OR ('NUMERIC_FUNCTION_ARM.MINIMUM_FUNCTION' IN TYPEOF(arg)) THEN REPEAT i :=1 TO SIZEOF ( arg\Multiple_arity_numeric_expression.operands); IF NOT Is_int_expr(arg\Multiple_arity_numeric_expression.operands[i]) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE); END_IF; IF ('EXPRESSION_ARM.MINUS_EXPRESSION' IN TYPEOF(arg)) OR ('EXPRESSION_ARM.POWER_EXPRESSION' IN TYPEOF(arg)) THEN RETURN (Is_int_expr(arg\Binary_numeric_expression.operands[1]) AND Is_int_expr(arg\Binary_numeric_expression.operands[2])); END_IF; IF ('EXPRESSION_ARM.DIV_EXPRESSION' IN TYPEOF(arg)) OR ('EXPRESSION_ARM.MOD_EXPRESSION' IN TYPEOF(arg)) THEN RETURN(TRUE); END_IF; IF 'EXPRESSION_ARM.SLASH_EXPRESSION' IN TYPEOF(arg) THEN RETURN (FALSE); END_IF; IF 'NUMERIC_FUNCTION_ARM.LENGTH_FUNCTION' IN TYPEOF(arg) THEN RETURN (TRUE); END_IF; IF 'NUMERIC_FUNCTION_ARM.VALUE_FUNCTION' IN TYPEOF(arg) THEN IF 'NUMERIC_FUNCTION_ARM.INT_VALUE_FUNCTION' IN TYPEOF(arg) THEN RETURN (TRUE); ELSE RETURN (FALSE); END_IF; END_IF; IF 'NUMERIC_FUNCTION_ARM.INTEGER_DEFINED_FUNCTION' IN TYPEOF(arg) THEN RETURN(TRUE) ; END_IF; IF'NUMERIC_FUNCTION_ARM.REAL_DEFINED_FUNCTION' IN TYPEOF(arg) THEN RETURN(FALSE) ; END_IF ; IF 'EXPRESSION_ARM.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF(arg) THEN RETURN(FALSE) ; END_IF ; IF 'EXPRESSION_ARM.STRING_DEFINED_FUNCTION' IN TYPEOF(arg) THEN RETURN (FALSE) ; END_IF ;
RETURN (FALSE); END_FUNCTION; -- Is_int_expr
|