You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/03/21 12:47:07 UTC
[groovy] 01/07: Eliminate duplication in
JavaLetter[OrDigit]InGString
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit b037bfbca5a5debdd8fcf09f08e06f4f39874ed1
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Mon Mar 16 13:29:52 2020 -0500
Eliminate duplication in JavaLetter[OrDigit]InGString
Define them in terms of JavaLetter[OrDigit] with semantic predicate
(cherry picked from commit 4d3ecf5690a0330c7277ca83c3bd62641a2e27e7)
---
src/antlr/GroovyLexer.g4 | 40 +++++++++++++---------------------------
1 file changed, 13 insertions(+), 27 deletions(-)
diff --git a/src/antlr/GroovyLexer.g4 b/src/antlr/GroovyLexer.g4
index 411c366..dc3d37f 100644
--- a/src/antlr/GroovyLexer.g4
+++ b/src/antlr/GroovyLexer.g4
@@ -887,48 +887,35 @@ IdentifierInGString
;
fragment
-JavaLetterInGString
- : [a-zA-Z_] // these are the "java letters" below 0x7F, except for $
+JavaLetter
+ : [a-zA-Z$_] // these are the "java letters" below 0x7F
| // covers all characters above 0x7F which are not a surrogate
~[\u0000-\u007F\uD800-\uDBFF]
- {Character.isJavaIdentifierStart(_input.LA(-1))}?
+ { Character.isJavaIdentifierStart(_input.LA(-1)) }?
| // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF
[\uD800-\uDBFF] [\uDC00-\uDFFF]
- {Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))}?
+ { Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1))) }?
;
fragment
-JavaLetterOrDigitInGString
- : [a-zA-Z0-9_] // these are the "java letters or digits" below 0x7F, except for $
- | // covers all characters above 0x7F which are not a surrogate
- ~[\u0000-\u007F\uD800-\uDBFF]
- {Character.isJavaIdentifierPart(_input.LA(-1))}?
- | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF
- [\uD800-\uDBFF] [\uDC00-\uDFFF]
- {Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))}?
+JavaLetterInGString
+ : JavaLetter { _input.LA(-1) != '$' }?
;
-
fragment
-JavaLetter
- : [a-zA-Z$_] // these are the "java letters" below 0x7F
+JavaLetterOrDigit
+ : [a-zA-Z0-9$_] // these are the "java letters or digits" below 0x7F
| // covers all characters above 0x7F which are not a surrogate
~[\u0000-\u007F\uD800-\uDBFF]
- {Character.isJavaIdentifierStart(_input.LA(-1))}?
+ { Character.isJavaIdentifierPart(_input.LA(-1)) }?
| // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF
[\uD800-\uDBFF] [\uDC00-\uDFFF]
- {Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))}?
+ { Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1))) }?
;
fragment
-JavaLetterOrDigit
- : [a-zA-Z0-9$_] // these are the "java letters or digits" below 0x7F
- | // covers all characters above 0x7F which are not a surrogate
- ~[\u0000-\u007F\uD800-\uDBFF]
- {Character.isJavaIdentifierPart(_input.LA(-1))}?
- | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF
- [\uD800-\uDBFF] [\uDC00-\uDFFF]
- {Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))}?
+JavaLetterOrDigitInGString
+ : JavaLetterOrDigit { _input.LA(-1) != '$' }?
;
//
@@ -941,10 +928,9 @@ ELLIPSIS : '...';
//
// Whitespace, line escape and comments
//
-WS : ([ \t\u000C]+ | LineEscape+) -> skip
+WS : ([ \t\u000C]+ | LineEscape+) -> skip
;
-
// Inside (...) and [...] but not {...}, ignore newlines.
NL : LineTerminator { this.ignoreTokenInsideParens(); }
;