Parsing entire tree and resolving all conflicts.
Unfortunately, this takes 3 passes (1 parse and 2 resolve passes)
due to one corner case (where you refer to something that is inside a superclass
that is in a different package). Fortunately, there are only
3 or 4 resolutions on the third pass.
Change-Id: I14dc6e61e002058132b8065a7b31abb87ac8f2a1
diff --git a/src/com/google/doclava/parser/Java.g b/src/com/google/doclava/parser/Java.g
index 8150d7d..365cf45 100644
--- a/src/com/google/doclava/parser/Java.g
+++ b/src/com/google/doclava/parser/Java.g
@@ -1357,22 +1357,56 @@
;
CHARLITERAL
- : '\''
+ : ( '\''
( EscapeSequence
| ~( '\'' | '\\' | '\r' | '\n' )
+ | UNICODECHAR
)
- '\''
+ '\'' )
;
STRINGLITERAL
: '"'
( EscapeSequence
| ~( '\\' | '"' | '\r' | '\n' )
+ | UNICODECHAR
)*
'"'
;
fragment
+UNICODECHAR
+ : '\\' 'u' UNICODEPART UNICODEPART UNICODEPART UNICODEPART
+ ;
+
+fragment
+UNICODEPART
+ : ( '0'
+ | '1'
+ | '2'
+ | '3'
+ | '4'
+ | '5'
+ | '6'
+ | '7'
+ | '8'
+ | '9'
+ | 'A'
+ | 'B'
+ | 'C'
+ | 'D'
+ | 'E'
+ | 'F'
+ | 'a'
+ | 'b'
+ | 'c'
+ | 'd'
+ | 'e'
+ | 'f'
+ )
+ ;
+
+fragment
EscapeSequence
: '\\' (
'b'