mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 01:43:35 +00:00
library/lexer.m:
Merge the 'integer' and 'big_integer' tokens and extend them to include
signedness and size information. This conforms to recent changes to
the rest of the system and is another step towards supporting additional
types of integer literal.
library/parser.m:
mdbcomp/trace_counts.m:
Conform to the above change.
tests/hard_coded/impl_def_lex.exp:
tests/hard_coded/impl_def_lex_string.exp:
tests/hard_coded/lexer_bigint.exp:
tests/hard_coded/lexer_zero.exp*:
tests/hard_coded/parse_number_from_string.exp*:
Update these expected outputs.
114 lines
7.9 KiB
Plaintext
114 lines
7.9 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: unterminated decimal literal
|
|
read_term("-123_.") = Syntax error: unterminated decimal literal
|
|
read_term("-_123") = Syntax error: operator or `.' expected
|
|
|
|
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: unterminated binary literal
|
|
read_term("-0b.") = Syntax error: unterminated binary literal
|
|
read_term("0b_.") = Syntax error: unterminated binary literal
|
|
read_term("-0b_.") = Syntax error: unterminated binary literal
|
|
read_term("0b11_.") = Syntax error: unterminated binary literal
|
|
read_term("-0b11_.") = Syntax error: unterminated binary literal
|
|
|
|
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: unterminated octal literal
|
|
read_term("-0o") = Syntax error: unterminated octal literal
|
|
read_term("0o_.") = Syntax error: unterminated octal literal
|
|
read_term("-0o_.") = Syntax error: unterminated octal literal
|
|
read_term("0o77_.") = Syntax error: unterminated octal literal
|
|
read_term("-0o77_.") = Syntax error: unterminated octal literal
|
|
|
|
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: unterminated hexadecimal literal
|
|
read_term("-0x.") = Syntax error: unterminated hexadecimal literal
|
|
read_term("0x_.") = Syntax error: unterminated hexadecimal literal
|
|
read_term("-0x_.") = Syntax error: unterminated hexadecimal literal
|
|
read_term("0xff_.") = Syntax error: unterminated hexadecimal literal
|
|
read_term("-0xff_.") = Syntax error: unterminated hexadecimal literal
|
|
|
|
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(1.23E13), [], context("", 1))
|
|
read_term("1_2_3E1_1.") = functor(float(1.23E13), [], context("", 1))
|
|
read_term("1_2e+1_1.") = functor(float(1.2E12), [], context("", 1))
|
|
read_term("1_2E+1_1.") = functor(float(1.2E12), [], 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: unterminated decimal literal
|
|
read_term("123._123.") = Syntax error: underscore following decimal point
|
|
read_term("123_.123.") = Syntax error: unterminated decimal literal
|
|
read_term("123_e12.") = Syntax error: underscore before exponent
|
|
read_term("123_E12.") = Syntax error: underscore before exponent
|
|
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.") = Syntax error: underscore before exponent
|
|
read_term("12_E11.") = Syntax error: underscore before exponent
|
|
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
|