Files
mercury/tests/hard_coded/parse_number_from_string.exp3
Julien Fischer 8a6756d307 Update expected outputs for hard_coded/parse_number_from_string.
The expected outputs for the Java and C# grades were not updated after commit
ac57c2f70.

tests/hard_coded/parse_number_from_string.exp[23]:
     Update the expected outputs for this test for Java and C# grades.

tests/hard_coded/parse_number_from_string.m:
     Document what the expected outputs are for.
2025-10-01 16:31:40 +10:00

114 lines
8.4 KiB
Plaintext

Valid decimal literals:
read_term("0.") = functor(integer(base_10, i(0, []), signed, size_word), [], context("", 1))
read_term("-0.") = functor(integer(base_10, i(0, []), signed, size_word), [], context("", 1))
read_term("00.") = functor(integer(base_10, i(0, []), signed, size_word), [], context("", 1))
read_term("0_0.") = functor(integer(base_10, i(0, []), signed, size_word), [], context("", 1))
read_term("10.") = functor(integer(base_10, i(1, [10]), signed, size_word), [], context("", 1))
read_term("-10.") = functor(integer(base_10, i(-1, [-10]), signed, size_word), [], context("", 1))
read_term("1_0.") = functor(integer(base_10, i(1, [10]), signed, size_word), [], context("", 1))
read_term("-1_0.") = functor(integer(base_10, i(-1, [-10]), signed, size_word), [], context("", 1))
read_term("01.") = functor(integer(base_10, i(1, [1]), signed, size_word), [], context("", 1))
read_term("0_1.") = functor(integer(base_10, i(1, [1]), signed, size_word), [], context("", 1))
read_term("1_000_000_000_000_000_000_000.") = functor(integer(base_10, i(5, [13877, 12907, 7261, 14976, 0]), signed, size_word), [], context("", 1))
read_term("-1_000_000_000_000_000_000_000.") = functor(integer(base_10, i(-5, [-13877, -12907, -7261, -14976, 0]), signed, size_word), [], context("", 1))
Invalid decimal literals:
read_term("123_.") = Syntax error: an underscore should separate two digits; it should not appear just before a decimal point.
read_term("-123_.") = Syntax error: an underscore should separate two digits; it should not appear just before a decimal point.
read_term("-_123") = Syntax error at end-of-file: expected an operator, or `.'.
Valid binary literals:
read_term("0b0.") = functor(integer(base_2, i(0, []), signed, size_word), [], context("", 1))
read_term("-0b0.") = functor(integer(base_2, i(0, []), signed, size_word), [], context("", 1))
read_term("0b_1.") = functor(integer(base_2, i(1, [1]), signed, size_word), [], context("", 1))
read_term("-0b_1.") = functor(integer(base_2, i(-1, [-1]), signed, size_word), [], context("", 1))
read_term("0b_1000_100.") = functor(integer(base_2, i(1, [68]), signed, size_word), [], context("", 1))
read_term("-0b_1000_100.") = functor(integer(base_2, i(-1, [-68]), signed, size_word), [], context("", 1))
Invalid binary literals:
read_term("0b.") = Syntax error: 0b is not followed by binary digits.
read_term("-0b.") = Syntax error: 0b is not followed by binary digits.
read_term("0b_.") = Syntax error: 0b is not followed by binary digits.
read_term("-0b_.") = Syntax error: 0b is not followed by binary digits.
read_term("0b11_.") = Syntax error: a binary literal cannot end with an underscore.
read_term("-0b11_.") = Syntax error: a binary literal cannot end with an underscore.
Valid octal literals:
read_term("0o77.") = functor(integer(base_8, i(1, [63]), signed, size_word), [], context("", 1))
read_term("-0o77.") = functor(integer(base_8, i(-1, [-63]), signed, size_word), [], context("", 1))
read_term("0o_77.") = functor(integer(base_8, i(1, [63]), signed, size_word), [], context("", 1))
read_term("-0o_77.") = functor(integer(base_8, i(-1, [-63]), signed, size_word), [], context("", 1))
read_term("0o_7_7.") = functor(integer(base_8, i(1, [63]), signed, size_word), [], context("", 1))
read_term("-0o_7_7.") = functor(integer(base_8, i(-1, [-63]), signed, size_word), [], context("", 1))
read_term("0o_7__7___7.") = functor(integer(base_8, i(1, [511]), signed, size_word), [], context("", 1))
read_term("-0o_7__7___7.") = functor(integer(base_8, i(-1, [-511]), signed, size_word), [], context("", 1))
Invalid octal literals:
read_term("0o.") = Syntax error: 0o is not followed by octal digits.
read_term("-0o") = Syntax error: 0o is not followed by octal digits.
read_term("0o_.") = Syntax error: 0o is not followed by octal digits.
read_term("-0o_.") = Syntax error: 0o is not followed by octal digits.
read_term("0o77_.") = Syntax error: an octal literal cannot end with an underscore.
read_term("-0o77_.") = Syntax error: an octal literal cannot end with an underscore.
Valid hexadecimal literals:
read_term("0xff.") = functor(integer(base_16, i(1, [255]), signed, size_word), [], context("", 1))
read_term("-0xff.") = functor(integer(base_16, i(-1, [-255]), signed, size_word), [], context("", 1))
read_term("0x_ff.") = functor(integer(base_16, i(1, [255]), signed, size_word), [], context("", 1))
read_term("-0x_ff.") = functor(integer(base_16, i(-1, [-255]), signed, size_word), [], context("", 1))
read_term("0xf_f.") = functor(integer(base_16, i(1, [255]), signed, size_word), [], context("", 1))
read_term("-0xf_f.") = functor(integer(base_16, i(-1, [-255]), signed, size_word), [], context("", 1))
read_term("0x_f_f__f.") = functor(integer(base_16, i(1, [4095]), signed, size_word), [], context("", 1))
read_term("-0x_f_f__f.") = functor(integer(base_16, i(-1, [-4095]), signed, size_word), [], context("", 1))
read_term("0xfffffffffffffffffffffffff.") = functor(integer(base_16, i(8, [3, 16383, 16383, 16383, 16383, 16383, 16383, 16383]), signed, size_word), [], context("", 1))
read_term("-0xfffffffffffffffffffffffff.") = functor(integer(base_16, i(-8, [-3, -16383, -16383, -16383, -16383, -16383, -16383, -16383]), signed, size_word), [], context("", 1))
Invalid hexadecimal literals:
read_term("0x.") = Syntax error: 0x is not followed by hexadecimal digits.
read_term("-0x.") = Syntax error: 0x is not followed by hexadecimal digits.
read_term("0x_.") = Syntax error: 0x is not followed by hexadecimal digits.
read_term("-0x_.") = Syntax error: 0x is not followed by hexadecimal digits.
read_term("0xff_.") = Syntax error: a hexadecimal literal cannot end with an underscore.
read_term("-0xff_.") = Syntax error: a hexadecimal literal cannot end with an underscore.
Valid float literals:
read_term("0.123.") = functor(float(0.123), [], context("", 1))
read_term("-0.123.") = functor(float(-0.123), [], context("", 1))
read_term("0.1_2__3.") = functor(float(0.123), [], context("", 1))
read_term("-0.1_2__3.") = functor(float(-0.123), [], context("", 1))
read_term("1.123.") = functor(float(1.123), [], context("", 1))
read_term("-1.123.") = functor(float(-1.123), [], context("", 1))
read_term("1_2.123.") = functor(float(12.123), [], context("", 1))
read_term("-1_2.123.") = functor(float(-12.123), [], context("", 1))
read_term("1__2.1_2__3.") = functor(float(12.123), [], context("", 1))
read_term("-1__2.1_2__3.") = functor(float(-12.123), [], context("", 1))
read_term("1_2_3e1_1.") = functor(float(12300000000000.0), [], context("", 1))
read_term("1_2_3E1_1.") = functor(float(12300000000000.0), [], context("", 1))
read_term("1_2e+1_1.") = functor(float(1200000000000.0), [], context("", 1))
read_term("1_2E+1_1.") = functor(float(1200000000000.0), [], context("", 1))
read_term("1_2e-1_1.") = functor(float(1.2E-10), [], context("", 1))
read_term("1_2E-1_1.") = functor(float(1.2E-10), [], context("", 1))
read_term("00.0.") = functor(float(0.0), [], context("", 1))
read_term("0_0.0.") = functor(float(0.0), [], context("", 1))
read_term("01.0.") = functor(float(1.0), [], context("", 1))
read_term("0_1.0.") = functor(float(1.0), [], context("", 1))
Invalid float literals:
read_term("1_2_3.1_2_3_.") = Syntax error: fractional part of float terminated by underscore.
read_term("1_2_3e1_2_3_.") = Syntax error: unterminated exponent in float literal.
read_term("123_._123.") = Syntax error: an underscore should separate two digits; it should not appear just before a decimal point.
read_term("123._123.") = Syntax error: underscore following decimal point.
read_term("123_.123.") = Syntax error: an underscore should separate two digits; it should not appear just before a decimal point.
read_term("123_e12.") = functor(float(123000000000000.0), [], context("", 1))
read_term("123_E12.") = functor(float(123000000000000.0), [], context("", 1))
read_term("123e_12.") = Syntax error: unterminated exponent in float literal.
read_term("123E_12.") = Syntax error: unterminated exponent in float literal.
read_term("123e12_.") = Syntax error: unterminated exponent in float literal.
read_term("123E12_.") = Syntax error: unterminated exponent in float literal.
read_term("12_e11.") = functor(float(1200000000000.0), [], context("", 1))
read_term("12_E11.") = functor(float(1200000000000.0), [], context("", 1))
read_term("123.12e-_12.") = Syntax error: unterminated exponent in float literal.
read_term("123.12e+_12.") = Syntax error: unterminated exponent in float literal.
read_term("123.12e12_.") = Syntax error: unterminated exponent in float literal.
read_term("123.12E12_.") = Syntax error: unterminated exponent in float literal.