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'