|
FUNCTION values_space_of (expr : generic_expression) : maths_space; LOCAL e_prefix : STRING := 'iso13584_expressions_schema.' ; typenames : SET OF STRING := TYPEOF ( expr ) ; END_LOCAL ; IF ( schema_prefix + 'maths_variable' ) IN typenames THEN RETURN ( expr \ maths_variable . values_space ) ; END_IF ; IF ( e_prefix + 'expression' ) IN typenames THEN IF ( e_prefix + 'numeric_expression' ) IN typenames THEN IF expr \ numeric_expression . is_int THEN IF ( e_prefix + 'int_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ int_literal . the_value ] ) ) ; ELSE RETURN ( the_integers ) ; END_IF ; ELSE IF ( e_prefix + 'real_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ real_literal . the_value ] ) ) ; ELSE RETURN ( the_reals ) ; END_IF ; END_IF ; END_IF ; IF ( e_prefix + 'boolean_expression' ) IN typenames THEN IF ( e_prefix + 'boolean_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ boolean_literal . the_value ] ) ) ; ELSE RETURN ( the_booleans ) ; END_IF ; END_IF ; IF ( e_prefix + 'string_expression' ) IN typenames THEN IF ( e_prefix + 'string_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ string_literal . the_value ] ) ) ; ELSE RETURN ( the_strings ) ; END_IF ; END_IF ; RETURN ( ? ) ; END_IF ; IF ( schema_prefix + 'maths_function' ) IN typenames THEN IF expression_is_constant ( expr ) THEN RETURN ( make_finite_space ( [ expr ] ) ) ; ELSE RETURN ( make_function_space ( sc_equal , expr \ maths_function . domain , sc_equal , expr \ maths_function . range ) ) ; END_IF ; END_IF ; IF ( schema_prefix + 'function_application' ) IN typenames THEN RETURN ( expr \ function_application . func . range ) ; END_IF ; IF ( schema_prefix + 'maths_space' ) IN typenames THEN IF expression_is_constant ( expr ) THEN RETURN ( make_finite_space ( [ expr ] ) ) ; ELSE RETURN ( make_elementary_space ( es_maths_spaces ) ) ; END_IF ; END_IF ; IF ( schema_prefix + 'dependent_variable_definition' ) IN typenames THEN RETURN ( values_space_of ( expr \ unary_generic_expression . operand ) ) ; END_IF ; IF ( schema_prefix + 'complex_number_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr ] ) ) ; END_IF ; IF ( schema_prefix + 'logical_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ logical_literal . lit_value ] ) ) ; END_IF ; IF ( schema_prefix + 'binary_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ binary_literal . lit_value ] ) ) ; END_IF ; IF ( schema_prefix + 'maths_enum_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ maths_enum_literal . lit_value ] ) ) ; END_IF ; IF ( schema_prefix + 'real_tuple_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ real_tuple_literal . lit_value ] ) ) ; END_IF ; IF ( schema_prefix + 'integer_tuple_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ integer_tuple_literal . lit_value ] ) ) ; END_IF ; IF ( schema_prefix + 'atom_based_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ atom_based_literal . lit_value ] ) ) ; END_IF ; IF ( schema_prefix + 'maths_tuple_literal' ) IN typenames THEN RETURN ( make_finite_space ( [ expr \ maths_tuple_literal . lit_value ] ) ) ; END_IF ; IF ( schema_prefix + 'partial_derivative_expression' ) IN typenames THEN RETURN ( drop_numeric_constraints ( values_space_of ( expr \ partial_derivative_expression . derivand ) ) ) ; END_IF ; IF ( schema_prefix + 'definite_integral_expression' ) IN typenames THEN RETURN ( drop_numeric_constraints ( values_space_of ( expr \ definite_integral_expression . integrand ) ) ) ; END_IF ; RETURN ( ? ) ; END_FUNCTION; -- values_space_of |
|
public class FValues_space_of public static Value run(SdaiContext _context, Value expr) |