[m-rev.] for review: document underscores in numeric literals

Julien Fischer jfischer at opturion.com
Thu Jan 12 17:28:46 AEDT 2017


For review by anyone.

-----------------------

Document underscores in numeric literals.

Standardize terminology in error messages about ill-formed numeric literals.


doc/reference_manual.texi:
       Document underscores in numeric literals.

       Add a TODO comment about a future piece of work.

NEWS:
      Announce the addition of support for underscores in numeric literals.

library/lexer.m:
      Use the term "literal" instead of "constant" or "token" when
      referring to numeric literals in error messages.

      s/hex/hexadecimal/ in those same error messages.

tests/hard_coded/parse_number_from_string.exp*:
tests/invalid/invalid_{binary,decimal,hex,octal}_literal.err_exp:
      Conform to the above change in error messages from the lexer.

Julien.

diff --git a/NEWS b/NEWS
index a5b3e9f..8bdd8b2 100644
--- a/NEWS
+++ b/NEWS
@@ -141,6 +141,9 @@ Changes to the Mercury language:
  * The Java backend now supports defining foreign types as primitive Java
    types.

+* Digits in numeric literals may now be separated by underscores in order
+  to improve readability.
+
  Changes to the Mercury standard library:

  * We have added variants of the process_options predicates to the getopt
diff --git a/doc/reference_manual.texi b/doc/reference_manual.texi
index 024be43..ad820d9 100644
--- a/doc/reference_manual.texi
+++ b/doc/reference_manual.texi
@@ -310,15 +310,31 @@ A hexadecimal literal is @samp{0x} followed by any sequence of hexadecimal
  digits.
  A character-code literal is @samp{0'} followed by any single character.

+For decimal, binary, octal and hexadecimal literals, an arbitrary number of
+underscores (@samp{_}) may be inserted between the digits.  An arbitrary number
+of underscores may also be inserted between the radix prefix (i.e. @samp{0b},
+ at samp{0o} and @samp{0x}) and the initial digit.
+The purpose of the underscores is to improve readability and they do not affect
+the numeric value of the literal.
+
+ at c TODO: we should support hexadecimal float literals too.
  @item float
-A floating point literal consists of a sequence of decimal digits,
-a decimal point and a sequence of digits (the fraction part), and
-the letter @samp{E} (or @samp{e}), an optional sign (@samp{+} or @samp{-}),
-and then another sequence of decimal digits (the exponent).
+A floating point literal consists of a sequence of decimal digits, a decimal
+point (@samp{.}) and a sequence of digits (the fraction part), and the letter
+ at samp{E} (or @samp{e}), an optional sign (@samp{+} or @samp{-}), and then
+another sequence of decimal digits (the exponent).
  The fraction part or the exponent (but not both) may be omitted.

+An arbitrary number of underscores (@samp{_}) may be inserted between the
+digits in a floating point literal.
+Underscores may @emph{not} occur adjacent to any non-digit characters (i.e.
+ at samp{.}, @samp{e}, @samp{E}, @samp{+} or @samp{-}) in a floating point
+literal.
+The purpose of the underscores is to improve readability and they do not affect
+the numeric value of the literal.
+
  @item implementation_defined_literal
-An implementation-defined literal consists of a dollar sign (@code{$})
+An implementation-defined literal consists of a dollar sign (@samp{$})
  followed by an unquoted name.

  @item open_ct
diff --git a/library/lexer.m b/library/lexer.m
index 748512a..7b3b803 100644
--- a/library/lexer.m
+++ b/library/lexer.m
@@ -2034,7 +2034,7 @@ get_char_code(Stream, Token, !IO) :-
          Token = io_error(Error)
      ;
          Result = eof,
-        Token = error("unterminated char code constant")
+        Token = error("unterminated char code literal")
      ;
          Result = ok,
          char.to_int(Char, CharCode),
@@ -2050,7 +2050,7 @@ string_get_char_code(String, Len, Posn0, Token, Context, !Posn) :-
          Token = integer(CharCode),
          string_get_context(Posn0, Context, !Posn)
      else
-        Token = error("unterminated char code constant"),
+        Token = error("unterminated char code literal"),
          string_get_context(Posn0, Context, !Posn)
      ).

@@ -2063,7 +2063,7 @@ get_binary(Stream, Token, !IO) :-
          Token = io_error(Error)
      ;
          Result = eof,
-        Token = error("unterminated binary constant")
+        Token = error("unterminated binary literal")
      ;
          Result = ok,
          ( if char.is_binary_digit(Char) then
@@ -2073,7 +2073,7 @@ get_binary(Stream, Token, !IO) :-
              get_binary(Stream, Token, !IO)
          else
              io.putback_char(Stream, Char, !IO),
-            Token = error("unterminated binary constant")
+            Token = error("unterminated binary literal")
          )
      ).

@@ -2091,11 +2091,11 @@ string_get_binary(String, Len, Posn0, Token, Context, !Posn) :-
              string_get_binary(String, Len, Posn1, Token, Context, !Posn)
          else
              string_ungetchar(String, !Posn),
-            Token = error("unterminated binary constant"),
+            Token = error("unterminated binary literal"),
              string_get_context(Posn0, Context, !Posn)
          )
      else
-        Token = error("unterminated binary constant"),
+        Token = error("unterminated binary literal"),
          string_get_context(Posn0, Context, !Posn)
      ).

@@ -2114,7 +2114,7 @@ get_binary_2(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
              rev_char_list_to_int(!.RevChars, base_2, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated binary constant")
+            Token = error("unterminated binary literal")
          )
      ;
          Result = ok,
@@ -2132,7 +2132,7 @@ get_binary_2(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
                  rev_char_list_to_int(!.RevChars, base_2, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated binary constant")
+                Token = error("unterminated binary literal")
              )
          )
      ).
@@ -2159,7 +2159,7 @@ string_get_binary_2(String, !.LastDigit, Len, Posn1, Token, Context, !Posn) :-
                  conv_string_to_int(BinaryString, base_2, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated binary constant")
+                Token = error("unterminated binary literal")
              ),
              string_get_context(Posn1, Context, !Posn)
          )
@@ -2170,7 +2170,7 @@ string_get_binary_2(String, !.LastDigit, Len, Posn1, Token, Context, !Posn) :-
              conv_string_to_int(BinaryString, base_2, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated binary constant")
+            Token = error("unterminated binary literal")
          ),
          string_get_context(Posn1, Context, !Posn)
      ).
@@ -2184,7 +2184,7 @@ get_octal(Stream, Token, !IO) :-
          Token = io_error(Error)
      ;
          Result = eof,
-        Token = error("unterminated octal constant")
+        Token = error("unterminated octal literal")
      ;
          Result = ok,
          ( if char.is_octal_digit(Char) then
@@ -2194,7 +2194,7 @@ get_octal(Stream, Token, !IO) :-
              get_octal(Stream, Token, !IO)
          else
              io.putback_char(Stream, Char, !IO),
-            Token = error("unterminated octal constant")
+            Token = error("unterminated octal literal")
          )
      ).

@@ -2212,11 +2212,11 @@ string_get_octal(String, Len, Posn0, Token, Context, !Posn) :-
              string_get_octal(String, Len, Posn0, Token, Context, !Posn)
          else
              string_ungetchar(String, !Posn),
-            Token = error("unterminated octal constant"),
+            Token = error("unterminated octal literal"),
              string_get_context(Posn0, Context, !Posn)
          )
      else
-        Token = error("unterminated octal constant"),
+        Token = error("unterminated octal literal"),
          string_get_context(Posn0, Context, !Posn)
      ).

@@ -2235,7 +2235,7 @@ get_octal_2(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
              rev_char_list_to_int(!.RevChars, base_8, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated octal constant")
+            Token = error("unterminated octal literal")
          )
      ;
          Result = ok,
@@ -2253,7 +2253,7 @@ get_octal_2(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
                  rev_char_list_to_int(!.RevChars, base_8, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated octal constant")
+                Token = error("unterminated octal literal")
              )
          )
      ).
@@ -2280,7 +2280,7 @@ string_get_octal_2(String, !.LastDigit, Len, Posn1, Token, Context, !Posn) :-
                  conv_string_to_int(BinaryString, base_8, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated octal constant")
+                Token = error("unterminated octal literal")
              ),
              string_get_context(Posn1, Context, !Posn)
          )
@@ -2291,7 +2291,7 @@ string_get_octal_2(String, !.LastDigit, Len, Posn1, Token, Context, !Posn) :-
              conv_string_to_int(BinaryString, base_8, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated octal constant")
+            Token = error("unterminated octal literal")
          ),
          string_get_context(Posn1, Context, !Posn)
      ).
@@ -2305,7 +2305,7 @@ get_hex(Stream, Token, !IO) :-
          Token = io_error(Error)
      ;
          Result = eof,
-        Token = error("unterminated hex constant")
+        Token = error("unterminated hexadecimal literal")
      ;
          Result = ok,
          ( if char.is_hex_digit(Char) then
@@ -2315,7 +2315,7 @@ get_hex(Stream, Token, !IO) :-
              get_hex(Stream, Token, !IO)
          else
              io.putback_char(Stream, Char, !IO),
-            Token = error("unterminated hex constant")
+            Token = error("unterminated hexadecimal literal")
          )
      ).

@@ -2333,11 +2333,11 @@ string_get_hex(String, Len, Posn0, Token, Context, !Posn) :-
              string_get_hex(String, Len, Posn0, Token, Context, !Posn)
          else
              string_ungetchar(String, !Posn),
-            Token = error("unterminated hex constant"),
+            Token = error("unterminated hexadecimal literal"),
              string_get_context(Posn0, Context, !Posn)
          )
      else
-        Token = error("unterminated hex constant"),
+        Token = error("unterminated hexadecimal literal"),
          string_get_context(Posn0, Context, !Posn)
      ).

@@ -2356,7 +2356,7 @@ get_hex_2(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
              rev_char_list_to_int(!.RevChars, base_16, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated hex constant")
+            Token = error("unterminated hexadecimal literal")
          )
      ;
          Result = ok,
@@ -2374,7 +2374,7 @@ get_hex_2(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
                  rev_char_list_to_int(!.RevChars, base_16, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated hex constant")
+                Token = error("unterminated hexadecimal literal")
              )
          )
      ).
@@ -2401,7 +2401,7 @@ string_get_hex_2(String, !.LastDigit, Len, Posn1, Token, Context, !Posn) :-
                  conv_string_to_int(BinaryString, base_16, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated hex constant")
+                Token = error("unterminated hexadecimal literal")
              ),
              string_get_context(Posn1, Context, !Posn)
          )
@@ -2412,7 +2412,7 @@ string_get_hex_2(String, !.LastDigit, Len, Posn1, Token, Context, !Posn) :-
              conv_string_to_int(BinaryString, base_16, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated hex constant")
+            Token = error("unterminated hexadecimal literal")
          ),
          string_get_context(Posn1, Context, !Posn)
      ).
@@ -2432,7 +2432,7 @@ get_number(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
              rev_char_list_to_int(!.RevChars, base_10, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated decimal constant")
+            Token = error("unterminated decimal literal")
          )
      ;
          Result = ok,
@@ -2449,7 +2449,7 @@ get_number(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
                  get_int_dot(Stream, !.LastDigit, !.RevChars, Token, !IO)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated decimal constant")
+                Token = error("unterminated decimal literal")
              )
          else if ( Char = 'e' ; Char = 'E' ) then
              (
@@ -2467,7 +2467,7 @@ get_number(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
                  rev_char_list_to_int(!.RevChars, base_10, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated decimal constant")
+                Token = error("unterminated decimal literal")
              )
          )
      ).
@@ -2493,7 +2493,7 @@ string_get_number(String, !.LastDigit, Len, Posn0, Token, Context, !Posn) :-
                      !Posn)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated decimal constant"),
+                Token = error("unterminated decimal literal"),
                  string_get_context(Posn0, Context, !Posn)
              )
          else if ( Char = 'e' ; Char = 'E' ) then
@@ -2514,7 +2514,7 @@ string_get_number(String, !.LastDigit, Len, Posn0, Token, Context, !Posn) :-
                  conv_string_to_int(NumberString, base_10, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated decimal constant")
+                Token = error("unterminated decimal literal")
              ),
              string_get_context(Posn0, Context, !Posn)
          )
@@ -2525,7 +2525,7 @@ string_get_number(String, !.LastDigit, Len, Posn0, Token, Context, !Posn) :-
              conv_string_to_int(NumberString, base_10, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated decimal constant")
+            Token = error("unterminated decimal literal")
          ),
          string_get_context(Posn0, Context, !Posn)
      ).
@@ -2547,7 +2547,7 @@ get_int_dot(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
              rev_char_list_to_int(!.RevChars, base_10, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated decimal constant")
+            Token = error("unterminated decimal literal")
          )
      ;
          Result = ok,
@@ -2573,7 +2573,7 @@ get_int_dot(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
                  )
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated decimal constant")
+                Token = error("unterminated decimal literal")
              )
          )
      ).
@@ -2600,7 +2600,7 @@ string_get_int_dot(String, !.LastDigit, Len, Posn0, Token, Context, !Posn) :-
                  conv_string_to_int(NumberString, base_10, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated decimal constant")
+                Token = error("unterminated decimal literal")
              ),
              string_get_context(Posn0, Context, !Posn)
          )
@@ -2612,7 +2612,7 @@ string_get_int_dot(String, !.LastDigit, Len, Posn0, Token, Context, !Posn) :-
              conv_string_to_int(NumberString, base_10, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated decimal constant")
+            Token = error("unterminated decimal literal")
          ),
          string_get_context(Posn0, Context, !Posn)
      ).
@@ -2724,7 +2724,7 @@ get_float_exponent(Stream, !.RevChars, Token, !IO) :-
              get_float_exponent_3(Stream, LastDigit, !.RevChars, Token, !IO)
          else
              io.putback_char(Stream, Char, !IO),
-            Token = error("unterminated exponent in float token")
+            Token = error("unterminated exponent in float literal")
          )
      ).

@@ -2742,7 +2742,7 @@ string_get_float_exponent(String, Len, Posn0, Token, Context, !Posn) :-
                  Context, !Posn)
          else
              string_ungetchar(String, !Posn),
-            Token = error("unterminated exponent in float token"),
+            Token = error("unterminated exponent in float literal"),
              string_get_context(Posn0, Context, !Posn)
          )
      else
@@ -2765,7 +2765,7 @@ get_float_exponent_2(Stream, !.RevChars, Token, !IO) :-
          Token = io_error(Error)
      ;
          Result = eof,
-        Token = error("unterminated exponent in float token")
+        Token = error("unterminated exponent in float literal")
      ;
          Result = ok,
          ( if char.is_digit(Char) then
@@ -2774,7 +2774,7 @@ get_float_exponent_2(Stream, !.RevChars, Token, !IO) :-
              get_float_exponent_3(Stream, LastDigit, !.RevChars, Token, !IO)
          else
              io.putback_char(Stream, Char, !IO),
-            Token = error("unterminated exponent in float token")
+            Token = error("unterminated exponent in float literal")
          )
      ).

@@ -2793,11 +2793,11 @@ string_get_float_exponent_2(String, Len, Posn0, Token, Context, !Posn) :-
                  Context, !Posn)
          else
              string_ungetchar(String, !Posn),
-            Token = error("unterminated exponent in float token"),
+            Token = error("unterminated exponent in float literal"),
              string_get_context(Posn0, Context, !Posn)
          )
      else
-        Token = error("unterminated exponent in float token"),
+        Token = error("unterminated exponent in float literal"),
          string_get_context(Posn0, Context, !Posn)
      ).

@@ -2819,7 +2819,7 @@ get_float_exponent_3(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
              rev_char_list_to_float(!.RevChars, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated exponent in float token")
+            Token = error("unterminated exponent in float literal")
          )
      ;
          Result = ok,
@@ -2837,7 +2837,7 @@ get_float_exponent_3(Stream, !.LastDigit, !.RevChars, Token, !IO) :-
                  rev_char_list_to_float(!.RevChars, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated exponent in float token")
+                Token = error("unterminated exponent in float literal")
              )
          )
      ).
@@ -2865,7 +2865,7 @@ string_get_float_exponent_3(String, !.LastDigit, Len, Posn0, Token, Context,
                  conv_to_float(FloatString, Token)
              ;
                  !.LastDigit = last_digit_is_underscore,
-                Token = error("unterminated exponent in float token")
+                Token = error("unterminated exponent in float literal")
              ),
              string_get_context(Posn0, Context, !Posn)
          )
@@ -2876,7 +2876,7 @@ string_get_float_exponent_3(String, !.LastDigit, Len, Posn0, Token, Context,
              conv_to_float(FloatString, Token)
          ;
              !.LastDigit = last_digit_is_underscore,
-            Token = error("unterminated exponent in float token")
+            Token = error("unterminated exponent in float literal")
          ),
          string_get_context(Posn0, Context, !Posn)
      ).
diff --git a/tests/hard_coded/parse_number_from_string.exp b/tests/hard_coded/parse_number_from_string.exp
index aab148d..dc8623f 100644
--- a/tests/hard_coded/parse_number_from_string.exp
+++ b/tests/hard_coded/parse_number_from_string.exp
@@ -9,8 +9,8 @@ read_term("1_000_000_000_000_000_000_000.") = functor(big_integer(base_10, i(5,
  read_term("-1_000_000_000_000_000_000_000.") = functor(atom("-"), [functor(big_integer(base_10, i(5, [13877, 12907, 7261, 14976, 0])), [], context("", 1))], context("", 1))

  Invalid decimal literals:
-read_term("123_.") = Syntax error: unterminated decimal constant
-read_term("-123_.") = Syntax error: unterminated decimal constant
+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:
@@ -22,12 +22,12 @@ read_term("0b_1000_100.") = functor(integer(68), [], context("", 1))
  read_term("-0b_1000_100.") = functor(integer(-68), [], context("", 1))

  Invalid binary literals:
-read_term("0b.") = Syntax error: unterminated binary constant
-read_term("-0b.") = Syntax error: unterminated binary constant
-read_term("0b_.") = Syntax error: unterminated binary constant
-read_term("-0b_.") = Syntax error: unterminated binary constant
-read_term("0b11_.") = Syntax error: unterminated binary constant
-read_term("-0b11_.") = Syntax error: unterminated binary constant
+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(63), [], context("", 1))
@@ -40,12 +40,12 @@ read_term("0o_7__7___7.") = functor(integer(511), [], context("", 1))
  read_term("-0o_7__7___7.") = functor(integer(-511), [], context("", 1))

  Invalid octal literals:
-read_term("0o.") = Syntax error: unterminated octal constant
-read_term("-0o") = Syntax error: unterminated octal constant
-read_term("0o_.") = Syntax error: unterminated octal constant
-read_term("-0o_.") = Syntax error: unterminated octal constant
-read_term("0o77_.") = Syntax error: unterminated octal constant
-read_term("-0o77_.") = Syntax error: unterminated octal constant
+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(255), [], context("", 1))
@@ -60,12 +60,12 @@ read_term("0xfffffffffffffffffffffffff.") = functor(big_integer(base_16, i(8, [3
  read_term("-0xfffffffffffffffffffffffff.") = functor(atom("-"), [functor(big_integer(base_16, i(8, [3, 16383, 16383, 16383, 16383, 16383, 16383, 16383])), [], context("", 1))], context("", 1))

  Invalid hexadecimal literals:
-read_term("0x.") = Syntax error: unterminated hex constant
-read_term("-0x.") = Syntax error: unterminated hex constant
-read_term("0x_.") = Syntax error: unterminated hex constant
-read_term("-0x_.") = Syntax error: unterminated hex constant
-read_term("0xff_.") = Syntax error: unterminated hex constant
-read_term("-0xff_.") = Syntax error: unterminated hex constant
+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))
@@ -87,19 +87,19 @@ read_term("1_2E-1_1.") = functor(float(1.2e-10), [], 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 token
-read_term("123_._123.") = Syntax error: unterminated decimal constant
+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 constant
+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 token
-read_term("123E_12.") = Syntax error: unterminated exponent in float token
-read_term("123e12_.") = Syntax error: unterminated exponent in float token
-read_term("123E12_.") = Syntax error: unterminated exponent in float token
+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 token
-read_term("123.12e+_12.") = Syntax error: unterminated exponent in float token
-read_term("123.12e12_.") = Syntax error: unterminated exponent in float token
-read_term("123.12E12_.") = Syntax error: unterminated exponent in float token
+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
diff --git a/tests/hard_coded/parse_number_from_string.exp2 b/tests/hard_coded/parse_number_from_string.exp2
index b539f9f..68f1c63 100644
--- a/tests/hard_coded/parse_number_from_string.exp2
+++ b/tests/hard_coded/parse_number_from_string.exp2
@@ -9,8 +9,8 @@ read_term("1_000_000_000_000_000_000_000.") = functor(big_integer(base_10, i(5,
  read_term("-1_000_000_000_000_000_000_000.") = functor(atom("-"), [functor(big_integer(base_10, i(5, [13877, 12907, 7261, 14976, 0])), [], context("", 1))], context("", 1))

  Invalid decimal literals:
-read_term("123_.") = Syntax error: unterminated decimal constant
-read_term("-123_.") = Syntax error: unterminated decimal constant
+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:
@@ -22,12 +22,12 @@ read_term("0b_1000_100.") = functor(integer(68), [], context("", 1))
  read_term("-0b_1000_100.") = functor(integer(-68), [], context("", 1))

  Invalid binary literals:
-read_term("0b.") = Syntax error: unterminated binary constant
-read_term("-0b.") = Syntax error: unterminated binary constant
-read_term("0b_.") = Syntax error: unterminated binary constant
-read_term("-0b_.") = Syntax error: unterminated binary constant
-read_term("0b11_.") = Syntax error: unterminated binary constant
-read_term("-0b11_.") = Syntax error: unterminated binary constant
+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(63), [], context("", 1))
@@ -40,12 +40,12 @@ read_term("0o_7__7___7.") = functor(integer(511), [], context("", 1))
  read_term("-0o_7__7___7.") = functor(integer(-511), [], context("", 1))

  Invalid octal literals:
-read_term("0o.") = Syntax error: unterminated octal constant
-read_term("-0o") = Syntax error: unterminated octal constant
-read_term("0o_.") = Syntax error: unterminated octal constant
-read_term("-0o_.") = Syntax error: unterminated octal constant
-read_term("0o77_.") = Syntax error: unterminated octal constant
-read_term("-0o77_.") = Syntax error: unterminated octal constant
+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(255), [], context("", 1))
@@ -60,12 +60,12 @@ read_term("0xfffffffffffffffffffffffff.") = functor(big_integer(base_16, i(8, [3
  read_term("-0xfffffffffffffffffffffffff.") = functor(atom("-"), [functor(big_integer(base_16, i(8, [3, 16383, 16383, 16383, 16383, 16383, 16383, 16383])), [], context("", 1))], context("", 1))

  Invalid hexadecimal literals:
-read_term("0x.") = Syntax error: unterminated hex constant
-read_term("-0x.") = Syntax error: unterminated hex constant
-read_term("0x_.") = Syntax error: unterminated hex constant
-read_term("-0x_.") = Syntax error: unterminated hex constant
-read_term("0xff_.") = Syntax error: unterminated hex constant
-read_term("-0xff_.") = Syntax error: unterminated hex constant
+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))
@@ -87,19 +87,19 @@ read_term("1_2E-1_1.") = functor(float(1.2E-10), [], 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 token
-read_term("123_._123.") = Syntax error: unterminated decimal constant
+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 constant
+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 token
-read_term("123E_12.") = Syntax error: unterminated exponent in float token
-read_term("123e12_.") = Syntax error: unterminated exponent in float token
-read_term("123E12_.") = Syntax error: unterminated exponent in float token
+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 token
-read_term("123.12e+_12.") = Syntax error: unterminated exponent in float token
-read_term("123.12e12_.") = Syntax error: unterminated exponent in float token
-read_term("123.12E12_.") = Syntax error: unterminated exponent in float token
+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
diff --git a/tests/hard_coded/parse_number_from_string.exp3 b/tests/hard_coded/parse_number_from_string.exp3
index 82e80be..258a76f 100644
--- a/tests/hard_coded/parse_number_from_string.exp3
+++ b/tests/hard_coded/parse_number_from_string.exp3
@@ -9,8 +9,8 @@ read_term("1_000_000_000_000_000_000_000.") = functor(big_integer(base_10, i(5,
  read_term("-1_000_000_000_000_000_000_000.") = functor(atom("-"), [functor(big_integer(base_10, i(5, [13877, 12907, 7261, 14976, 0])), [], context("", 1))], context("", 1))

  Invalid decimal literals:
-read_term("123_.") = Syntax error: unterminated decimal constant
-read_term("-123_.") = Syntax error: unterminated decimal constant
+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:
@@ -22,12 +22,12 @@ read_term("0b_1000_100.") = functor(integer(68), [], context("", 1))
  read_term("-0b_1000_100.") = functor(integer(-68), [], context("", 1))

  Invalid binary literals:
-read_term("0b.") = Syntax error: unterminated binary constant
-read_term("-0b.") = Syntax error: unterminated binary constant
-read_term("0b_.") = Syntax error: unterminated binary constant
-read_term("-0b_.") = Syntax error: unterminated binary constant
-read_term("0b11_.") = Syntax error: unterminated binary constant
-read_term("-0b11_.") = Syntax error: unterminated binary constant
+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(63), [], context("", 1))
@@ -40,12 +40,12 @@ read_term("0o_7__7___7.") = functor(integer(511), [], context("", 1))
  read_term("-0o_7__7___7.") = functor(integer(-511), [], context("", 1))

  Invalid octal literals:
-read_term("0o.") = Syntax error: unterminated octal constant
-read_term("-0o") = Syntax error: unterminated octal constant
-read_term("0o_.") = Syntax error: unterminated octal constant
-read_term("-0o_.") = Syntax error: unterminated octal constant
-read_term("0o77_.") = Syntax error: unterminated octal constant
-read_term("-0o77_.") = Syntax error: unterminated octal constant
+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(255), [], context("", 1))
@@ -60,12 +60,12 @@ read_term("0xfffffffffffffffffffffffff.") = functor(big_integer(base_16, i(8, [3
  read_term("-0xfffffffffffffffffffffffff.") = functor(atom("-"), [functor(big_integer(base_16, i(8, [3, 16383, 16383, 16383, 16383, 16383, 16383, 16383])), [], context("", 1))], context("", 1))

  Invalid hexadecimal literals:
-read_term("0x.") = Syntax error: unterminated hex constant
-read_term("-0x.") = Syntax error: unterminated hex constant
-read_term("0x_.") = Syntax error: unterminated hex constant
-read_term("-0x_.") = Syntax error: unterminated hex constant
-read_term("0xff_.") = Syntax error: unterminated hex constant
-read_term("-0xff_.") = Syntax error: unterminated hex constant
+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))
@@ -87,19 +87,19 @@ read_term("1_2E-1_1.") = functor(float(1.2E-10), [], 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 token
-read_term("123_._123.") = Syntax error: unterminated decimal constant
+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 constant
+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 token
-read_term("123E_12.") = Syntax error: unterminated exponent in float token
-read_term("123e12_.") = Syntax error: unterminated exponent in float token
-read_term("123E12_.") = Syntax error: unterminated exponent in float token
+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 token
-read_term("123.12e+_12.") = Syntax error: unterminated exponent in float token
-read_term("123.12e12_.") = Syntax error: unterminated exponent in float token
-read_term("123.12E12_.") = Syntax error: unterminated exponent in float token
+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
diff --git a/tests/invalid/invalid_binary_literal.err_exp b/tests/invalid/invalid_binary_literal.err_exp
index c6b6770..216d695 100644
--- a/tests/invalid/invalid_binary_literal.err_exp
+++ b/tests/invalid/invalid_binary_literal.err_exp
@@ -8,22 +8,22 @@ invalid_binary_literal.m:012: Error: no clauses for function `foo7'/0.
  invalid_binary_literal.m:013: Error: no clauses for function `foo8'/0.
  invalid_binary_literal.m:017: Syntax error at token `. ': unexpected token at
  invalid_binary_literal.m:017:   start of (sub)term.
-invalid_binary_literal.m:017: Syntax error: unterminated binary constant.
+invalid_binary_literal.m:017: Syntax error: unterminated binary literal.
  invalid_binary_literal.m:019: Syntax error at token `. ': unexpected token at
  invalid_binary_literal.m:019:   start of (sub)term.
-invalid_binary_literal.m:019: Syntax error: unterminated binary constant.
+invalid_binary_literal.m:019: Syntax error: unterminated binary literal.
  invalid_binary_literal.m:021: Syntax error at token `. ': unexpected token at
  invalid_binary_literal.m:021:   start of (sub)term.
-invalid_binary_literal.m:021: Syntax error: unterminated binary constant.
+invalid_binary_literal.m:021: Syntax error: unterminated binary literal.
  invalid_binary_literal.m:023: Syntax error at token `. ': unexpected token at
  invalid_binary_literal.m:023:   start of (sub)term.
-invalid_binary_literal.m:023: Syntax error: unterminated binary constant.
+invalid_binary_literal.m:023: Syntax error: unterminated binary literal.
  invalid_binary_literal.m:025: Syntax error at token `. ': unexpected token at
  invalid_binary_literal.m:025:   start of (sub)term.
-invalid_binary_literal.m:025: Syntax error: unterminated binary constant.
+invalid_binary_literal.m:025: Syntax error: unterminated binary literal.
  invalid_binary_literal.m:027: Syntax error at token `. ': unexpected token at
  invalid_binary_literal.m:027:   start of (sub)term.
-invalid_binary_literal.m:027: Syntax error: unterminated binary constant.
+invalid_binary_literal.m:027: Syntax error: unterminated binary literal.
  invalid_binary_literal.m:029: Syntax error at variable `_b11': operator or `.'
  invalid_binary_literal.m:029:   expected.
  invalid_binary_literal.m:031: Syntax error at variable `_b11': operator or `.'
diff --git a/tests/invalid/invalid_decimal_literal.err_exp b/tests/invalid/invalid_decimal_literal.err_exp
index 1ab2c10..c9b7704 100644
--- a/tests/invalid/invalid_decimal_literal.err_exp
+++ b/tests/invalid/invalid_decimal_literal.err_exp
@@ -1,4 +1,4 @@
  invalid_decimal_literal.m:006: Error: no clauses for function `foo1'/0.
  invalid_decimal_literal.m:007: Error: no clauses for function `foo2'/0.
-invalid_decimal_literal.m:011: Syntax error: unterminated decimal constant.
-invalid_decimal_literal.m:013: Syntax error: unterminated decimal constant.
+invalid_decimal_literal.m:011: Syntax error: unterminated decimal literal.
+invalid_decimal_literal.m:013: Syntax error: unterminated decimal literal.
diff --git a/tests/invalid/invalid_float_literal.err_exp b/tests/invalid/invalid_float_literal.err_exp
index 85e27cc..e6b463e 100644
--- a/tests/invalid/invalid_float_literal.err_exp
+++ b/tests/invalid/invalid_float_literal.err_exp
@@ -17,26 +17,26 @@ invalid_float_literal.m:021:   by underscore.
  invalid_float_literal.m:023: Syntax error at token `. ': unexpected token at
  invalid_float_literal.m:023:   start of (sub)term.
  invalid_float_literal.m:023: Syntax error: unterminated exponent in float
-invalid_float_literal.m:023:   token.
+invalid_float_literal.m:023:   literal.
  invalid_float_literal.m:025: In clause head: error: atom expected at 12.
  invalid_float_literal.m:025: Syntax error: underscore before exponent.
  invalid_float_literal.m:027: In clause head: error: atom expected at _12.
  invalid_float_literal.m:027: Syntax error: unterminated exponent in float
-invalid_float_literal.m:027:   token.
+invalid_float_literal.m:027:   literal.
  invalid_float_literal.m:029: In clause head: error: atom expected at _123.
-invalid_float_literal.m:029: Syntax error: unterminated decimal constant.
+invalid_float_literal.m:029: Syntax error: unterminated decimal literal.
  invalid_float_literal.m:031: In clause head: error: atom expected at 123.
  invalid_float_literal.m:031: Syntax error: underscore following decimal point.
  invalid_float_literal.m:033: In clause head: error: atom expected at 123.
-invalid_float_literal.m:033: Syntax error: unterminated decimal constant.
+invalid_float_literal.m:033: Syntax error: unterminated decimal literal.
  invalid_float_literal.m:035: Syntax error: unterminated exponent in float
-invalid_float_literal.m:035:   token.
+invalid_float_literal.m:035:   literal.
  invalid_float_literal.m:035: Error: clause for predicate
  invalid_float_literal.m:035:   `invalid_float_literal.-'/2
  invalid_float_literal.m:035:   without corresponding `:- pred' declaration.
  invalid_float_literal.m:035: Inferred :- pred -(T1, int).
  invalid_float_literal.m:037: Syntax error: unterminated exponent in float
-invalid_float_literal.m:037:   token.
+invalid_float_literal.m:037:   literal.
  invalid_float_literal.m:037: Error: clause for predicate
  invalid_float_literal.m:037:   `invalid_float_literal.+'/2
  invalid_float_literal.m:037:   without corresponding `:- pred' declaration.
@@ -45,7 +45,7 @@ invalid_float_literal.m:039: In clause head: error: atom expected at 12.
  invalid_float_literal.m:039: Syntax error: underscore before exponent.
  invalid_float_literal.m:041: In clause head: error: atom expected at _12.
  invalid_float_literal.m:041: Syntax error: unterminated exponent in float
-invalid_float_literal.m:041:   token.
+invalid_float_literal.m:041:   literal.
  invalid_float_literal.m:043: In clause head: error: atom expected at _12.
  invalid_float_literal.m:043: Syntax error: unterminated exponent in float
-invalid_float_literal.m:043:   token.
+invalid_float_literal.m:043:   literal.
diff --git a/tests/invalid/invalid_hex_literal.err_exp b/tests/invalid/invalid_hex_literal.err_exp
index cd402e3..b2127ca 100644
--- a/tests/invalid/invalid_hex_literal.err_exp
+++ b/tests/invalid/invalid_hex_literal.err_exp
@@ -8,22 +8,22 @@ invalid_hex_literal.m:012: Error: no clauses for function `foo7'/0.
  invalid_hex_literal.m:013: Error: no clauses for function `foo8'/0.
  invalid_hex_literal.m:017: Syntax error at token `. ': unexpected token at
  invalid_hex_literal.m:017:   start of (sub)term.
-invalid_hex_literal.m:017: Syntax error: unterminated hex constant.
+invalid_hex_literal.m:017: Syntax error: unterminated hexadecimal literal.
  invalid_hex_literal.m:019: Syntax error at token `. ': unexpected token at
  invalid_hex_literal.m:019:   start of (sub)term.
-invalid_hex_literal.m:019: Syntax error: unterminated hex constant.
+invalid_hex_literal.m:019: Syntax error: unterminated hexadecimal literal.
  invalid_hex_literal.m:021: Syntax error at token `. ': unexpected token at
  invalid_hex_literal.m:021:   start of (sub)term.
-invalid_hex_literal.m:021: Syntax error: unterminated hex constant.
+invalid_hex_literal.m:021: Syntax error: unterminated hexadecimal literal.
  invalid_hex_literal.m:023: Syntax error at token `. ': unexpected token at
  invalid_hex_literal.m:023:   start of (sub)term.
-invalid_hex_literal.m:023: Syntax error: unterminated hex constant.
+invalid_hex_literal.m:023: Syntax error: unterminated hexadecimal literal.
  invalid_hex_literal.m:025: Syntax error at token `. ': unexpected token at
  invalid_hex_literal.m:025:   start of (sub)term.
-invalid_hex_literal.m:025: Syntax error: unterminated hex constant.
+invalid_hex_literal.m:025: Syntax error: unterminated hexadecimal literal.
  invalid_hex_literal.m:027: Syntax error at token `. ': unexpected token at
  invalid_hex_literal.m:027:   start of (sub)term.
-invalid_hex_literal.m:027: Syntax error: unterminated hex constant.
+invalid_hex_literal.m:027: Syntax error: unterminated hexadecimal literal.
  invalid_hex_literal.m:029: Syntax error at variable `_xff': operator or `.'
  invalid_hex_literal.m:029:   expected.
  invalid_hex_literal.m:031: Syntax error at variable `_xff': operator or `.'
diff --git a/tests/invalid/invalid_octal_literal.err_exp b/tests/invalid/invalid_octal_literal.err_exp
index d84cd8f..6c4ecd8 100644
--- a/tests/invalid/invalid_octal_literal.err_exp
+++ b/tests/invalid/invalid_octal_literal.err_exp
@@ -8,22 +8,22 @@ invalid_octal_literal.m:012: Error: no clauses for function `foo7'/0.
  invalid_octal_literal.m:013: Error: no clauses for function `foo8'/0.
  invalid_octal_literal.m:017: Syntax error at token `. ': unexpected token at
  invalid_octal_literal.m:017:   start of (sub)term.
-invalid_octal_literal.m:017: Syntax error: unterminated octal constant.
+invalid_octal_literal.m:017: Syntax error: unterminated octal literal.
  invalid_octal_literal.m:019: Syntax error at token `. ': unexpected token at
  invalid_octal_literal.m:019:   start of (sub)term.
-invalid_octal_literal.m:019: Syntax error: unterminated octal constant.
+invalid_octal_literal.m:019: Syntax error: unterminated octal literal.
  invalid_octal_literal.m:021: Syntax error at token `. ': unexpected token at
  invalid_octal_literal.m:021:   start of (sub)term.
-invalid_octal_literal.m:021: Syntax error: unterminated octal constant.
+invalid_octal_literal.m:021: Syntax error: unterminated octal literal.
  invalid_octal_literal.m:023: Syntax error at token `. ': unexpected token at
  invalid_octal_literal.m:023:   start of (sub)term.
-invalid_octal_literal.m:023: Syntax error: unterminated octal constant.
+invalid_octal_literal.m:023: Syntax error: unterminated octal literal.
  invalid_octal_literal.m:025: Syntax error at token `. ': unexpected token at
  invalid_octal_literal.m:025:   start of (sub)term.
-invalid_octal_literal.m:025: Syntax error: unterminated octal constant.
+invalid_octal_literal.m:025: Syntax error: unterminated octal literal.
  invalid_octal_literal.m:027: Syntax error at token `. ': unexpected token at
  invalid_octal_literal.m:027:   start of (sub)term.
-invalid_octal_literal.m:027: Syntax error: unterminated octal constant.
+invalid_octal_literal.m:027: Syntax error: unterminated octal literal.
  invalid_octal_literal.m:029: Syntax error at variable `_o77': operator or `.'
  invalid_octal_literal.m:029:   expected.
  invalid_octal_literal.m:031: Syntax error at variable `_o77': operator or `.'


More information about the reviews mailing list