This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/master by this push:
     new 2bf4ea4  GROOVY-9034: adjust Java grammar for underscore in numeric 
literals
2bf4ea4 is described below

commit 2bf4ea46dce97e50ef56e600edc883bb0b81c47e
Author: Paul King <pa...@asert.com.au>
AuthorDate: Fri Mar 15 12:41:53 2019 +1000

    GROOVY-9034: adjust Java grammar for underscore in numeric literals
    
    (fixes some Groovydoc parse errors of Java files)
---
 .../antlr2/org/codehaus/groovy/antlr/java/java.g   | 32 ++++++++++++++++++++--
 1 file changed, 29 insertions(+), 3 deletions(-)

diff --git a/src/main/antlr2/org/codehaus/groovy/antlr/java/java.g 
b/src/main/antlr2/org/codehaus/groovy/antlr/java/java.g
index 896c40b..2386ff3 100644
--- a/src/main/antlr2/org/codehaus/groovy/antlr/java/java.g
+++ b/src/main/antlr2/org/codehaus/groovy/antlr/java/java.g
@@ -1918,6 +1918,30 @@ IDENT
                }
        ;
 
+protected
+DIGIT
+options {
+    paraphrase="a digit";
+}
+    :   '0'..'9'
+    // TODO:  Recognize all the Java identifier parts here (except '$').
+    ;
+
+protected
+DIGITS_WITH_UNDERSCORE
+options {
+    paraphrase="a sequence of digits and underscores, bordered by digits";
+}
+    :   DIGIT (DIGITS_WITH_UNDERSCORE_OPT)?
+    ;
+
+protected
+DIGITS_WITH_UNDERSCORE_OPT
+options {
+    paraphrase="a sequence of digits and underscores with maybe underscore 
starting";
+}
+    :   (DIGIT | '_')* DIGIT
+    ;
 
 // a numeric literal
 NUM_INT
@@ -1953,17 +1977,19 @@ NUM_INT
                                )+
 
                        |       //float or double with leading zero
-                               (('0'..'9')+ ('.'|EXPONENT|FLOAT_SUFFIX)) => 
('0'..'9')+
+                (   DIGITS_WITH_UNDERSCORE
+                    ( '.' DIGITS_WITH_UNDERSCORE | EXPONENT | FLOAT_SUFFIX)
+                ) => DIGITS_WITH_UNDERSCORE
 
                        |       ('0'..'7')+                                     
                                // octal
                        )?
-               |       ('1'..'9') ('0'..'9')*  {isDecimal=true;}               
// non-zero decimal
+               |       ('1'..'9') (DIGITS_WITH_UNDERSCORE_OPT)?  
{isDecimal=true;}             // non-zero decimal
                )
                (       ('l'|'L') { _ttype = NUM_LONG; }
 
                // only check to see if it's a float if looks like decimal so 
far
                |       {isDecimal}?
-                       (       '.' ('0'..'9')* (EXPONENT)? (f2:FLOAT_SUFFIX 
{t=f2;})?
+                       (       '.' DIGITS_WITH_UNDERSCORE (EXPONENT)? 
(f2:FLOAT_SUFFIX {t=f2;})?
                        |       EXPONENT (f3:FLOAT_SUFFIX {t=f3;})?
                        |       f4:FLOAT_SUFFIX {t=f4;}
                        )

Reply via email to