Improved UNICODE in Antlr4.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIdl.g4 b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIdl.g4
index 45661a2..1df572f 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIdl.g4
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIdl.g4
@@ -330,23 +330,9 @@
 REAL: DOT [0-9]+;
 EXP: [Ee] [+\-]? INT;
 fragment UNI_CHAR // International chars.
-    : '\u0300'..'\u036F'
-    | '\u00A0'..'\u00FF' /* Latin-1 Supplement. */
-    | '\u0100'..'\u017F' /* Latin Extended-A. */
-    | '\u0180'..'\u024F' /* Latin Extended-B. */
-    | '\u1E02'..'\u1EF3' /* Latin Extended Additional. */
-    | '\u0259'..'\u0292' /* IPA Extensions. */
-    | '\u02B0'..'\u02FF' /* Spacing modifier letters. */
-    | '\u203F'..'\u2040'
-    | '\u1F01'..'\u1FFF' /* Greek Extended. */
-    | '\u0400'..'\u04FF' /* Cyrillic. */
-    | '\u200C'..'\u200D'
-    | '\u2070'..'\u218F'
-    | '\u2C00'..'\u2FEF'
-    | '\u3001'..'\uD7FF'
-    | '\uF900'..'\uFDCF'
-    | '\uFDF0'..'\uFFFD'
-    ; // Ignoring ['\u10000-'\uEFFFF].
+    : ~[\u0000-\u007F\uD800-\uDBFF] // Covers all characters above 0x7F which are not a surrogate.
+    | [\uD800-\uDBFF] [\uDC00-\uDFFF] // Covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF.
+    ;
 fragment LETTER: [a-zA-Z];
 ID: (UNI_CHAR|UNDERSCORE|LETTER|DOLLAR)+(UNI_CHAR|DOLLAR|LETTER|[0-9]|COLON|MINUS|UNDERSCORE)*;
 COMMENT : ('//' ~[\r\n]* '\r'? ('\n'| EOF) | '/*' .*? '*/' ) -> skip;
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/test_ok.idl b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/test_ok.idl
index 593a7f5..d380eed 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/test_ok.idl
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/test_ok.idl
@@ -57,4 +57,28 @@
         )
     }
 
-intent=i4 flow=/#flowModelMethod/ term(t1)=/#termModelMethod/
\ No newline at end of file
+intent=i4 flow=/#flowModelMethod/ term(t1)=/#termModelMethod/
+
+intent=i5
+    flow="a[^0-9]b"
+    meta={'a': 42, 'b': {'Москва': [1, 2, 3]}}
+    term(t1)={month() >= 6 && !(tok_id()) != -25 && meta_model('a') == 42}
+    term(t2)={
+        @a = meta_model('a')
+        @list = list(1, 2, 3, 4)
+
+        @a == 42 && has_all(@list, list(3, 2))
+    }
+
+intent=i6
+    flow=/#flowModelMethod/
+    term(t1)=/org.mypackage.MyClass#termMethod/
+    term(t2)={
+        @x = 2
+        @xx = ((@x * @x) / 2) * 3
+
+        @xx == 6 && has(
+            json(meta_req('user_json_payload')),
+            list("موسكو\"", 'v1\'v1', "k2", "v2")
+        )
+    }
\ No newline at end of file