mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 09:53:36 +00:00
The lexer was not allowing underscores between leading zeros in decimal integer
literals and float literals (e.g. 0_0 or 0_0.0).
library/lexer.m:
Allow underscores in the above cases.
tests/hard_coded/parse_number_from_io.{m,exp,exp2,exp3}:
tests/hard_coded/parse_number_from_string.{m,exp,exp2,exp3}:
Extend these tests to cover the above cases.
tests/invalid/invalid_binary_literal.err_exp:
tests/invalid/invalid_octal_literal.err_exp:
tests/invalid/invalid_hex_literal.err_exp:
Conform to the above change.
79 lines
2.2 KiB
Mathematica
79 lines
2.2 KiB
Mathematica
%---------------------------------------------------------------------------%
|
|
% vim: ft=mercury ts=4 sw=4 et
|
|
%---------------------------------------------------------------------------%
|
|
|
|
:- module parse_number_from_io.
|
|
:- interface.
|
|
|
|
:- import_module io.
|
|
|
|
:- pred main(io::di, io::uo) is det.
|
|
|
|
:- implementation.
|
|
|
|
main(!IO) :-
|
|
io.print_line("Decimal:", !IO),
|
|
io.print_line(0, !IO),
|
|
io.print_line(-0, !IO),
|
|
io.print_line(00, !IO),
|
|
io.print_line(0_0, !IO),
|
|
io.print_line(10, !IO),
|
|
io.print_line(-10, !IO),
|
|
io.print_line(1_0, !IO),
|
|
io.print_line(-1_0, !IO),
|
|
io.print_line(01, !IO),
|
|
io.print_line(0_1, !IO),
|
|
io.print_line(-01, !IO),
|
|
io.print_line(-0_1, !IO),
|
|
io.nl(!IO),
|
|
|
|
io.print_line("Binary:", !IO),
|
|
io.print_line(0b0, !IO),
|
|
io.print_line(-0b0, !IO),
|
|
io.print_line(0b_1, !IO),
|
|
io.print_line(-0b_1, !IO),
|
|
io.print_line(0b_1000_100, !IO),
|
|
io.print_line(-0b_1000_100, !IO),
|
|
io.nl(!IO),
|
|
|
|
io.print_line("Octal:", !IO),
|
|
io.print_line(0o777, !IO),
|
|
io.print_line(-0o777, !IO),
|
|
io.print_line(0o_777, !IO),
|
|
io.print_line(-0o_777, !IO),
|
|
io.print_line(0o_7_7_7, !IO),
|
|
io.print_line(-0o_7_7_7, !IO),
|
|
io.print_line(0o_7__7___7, !IO),
|
|
io.print_line(-0o_7__7___7, !IO),
|
|
io.nl(!IO),
|
|
|
|
io.print_line("Hexadecimal:", !IO),
|
|
io.print_line(0xff, !IO),
|
|
io.print_line(-0xff, !IO),
|
|
io.print_line(0x_ff, !IO),
|
|
io.print_line(-0x_ff, !IO),
|
|
io.print_line(0xf_f, !IO),
|
|
io.print_line(-0xf_f, !IO),
|
|
io.print_line(0x_f_f__f, !IO),
|
|
io.nl(!IO),
|
|
|
|
io.print_line("Float:", !IO),
|
|
io.print_line(0.123, !IO),
|
|
io.print_line(-0.123, !IO),
|
|
io.print_line(0.1_2__3, !IO),
|
|
io.print_line(-0.1_2__3, !IO),
|
|
io.print_line(1.123, !IO),
|
|
io.print_line(-1.123, !IO),
|
|
io.print_line(1_2.123, !IO),
|
|
io.print_line(-1_2.123, !IO),
|
|
io.print_line(1__2.1_2__3, !IO),
|
|
io.print_line(-1__2.1_2__3, !IO),
|
|
io.print_line(1_2_3e1_1, !IO),
|
|
io.print_line(1_2_3E1_1, !IO),
|
|
io.print_line(1_2e+1_1, !IO),
|
|
io.print_line(1_2E+1_1, !IO),
|
|
io.print_line(1_2e-1_1, !IO),
|
|
io.print_line(1_2E-1_1, !IO),
|
|
io.print_line(0_0.0, !IO),
|
|
io.print_line(0_1.0_1, !IO).
|