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

aradzinski pushed a commit to branch NLPCRAFT-247
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git


The following commit(s) were added to refs/heads/NLPCRAFT-247 by this push:
     new 33706ee  WIP.
33706ee is described below

commit 33706eec9cf15b5846f51bceac061d731435c371
Author: Aaron Radzinzski <[email protected]>
AuthorDate: Mon Feb 22 20:25:37 2021 -0800

    WIP.
---
 .../nlpcraft/common/makro/antlr4/NCMacroDsl.g4     | 10 +++--
 .../makro/antlr4/NCMacroDslBaseListener.java       |  2 +-
 .../common/makro/antlr4/NCMacroDslLexer.interp     |  5 ++-
 .../common/makro/antlr4/NCMacroDslLexer.java       | 51 +++++++++++-----------
 .../common/makro/antlr4/NCMacroDslListener.java    |  2 +-
 .../common/makro/antlr4/NCMacroDslParser.java      |  2 +-
 .../common/makro/NCMacroCompilerSpec.scala         |  9 +++-
 7 files changed, 46 insertions(+), 35 deletions(-)

diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.g4 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.g4
index a959aef..2b98e6d 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.g4
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.g4
@@ -37,14 +37,17 @@ RBR: ']';
 VERT: '|';
 COMMA: ',';
 UNDERSCORE: '_';
+fragment ESC_CHAR: [{}\\<>_[\]|,];
+fragment ESC: '\\' ESC_CHAR;
 fragment TXT_CHAR
-    : [.*^+<>\-&'":#!]
+    : [~!@#$%^&*()+.]
+    | [-=<>/\\;:`]
     | '\u00B7'
-    | '\u0300'..'\u036F'
-    | '\u203F'..'\u2040'
     | 'A'..'Z'
     | 'a'..'z'
     | '0'..'9'
+    | '\u0300'..'\u036F'
+    | '\u203F'..'\u2040'
     | '\u00C0'..'\u00D6'
     | '\u00D8'..'\u00F6'
     | '\u00F8'..'\u02FF'
@@ -57,7 +60,6 @@ fragment TXT_CHAR
     | '\uF900'..'\uFDCF'
     | '\uFDF0'..'\uFFFD'
     ; // Ignoring ['\u10000-'\uEFFFF].
-fragment ESC: '\\' [{}\\<>_[\]|,] ;
 INT: '0' | [1-9][_0-9]*;
 TXT: (TXT_CHAR | ESC)+;
 WS: [ \r\t\u000C\n]+ -> skip ;
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslBaseListener.java
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslBaseListener.java
index 66acd0f..5620bc5 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslBaseListener.java
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslBaseListener.java
@@ -1,4 +1,4 @@
-// Generated from C:/Users/Nikita 
Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4\NCMacroDsl.g4
 by ANTLR 4.9.1
+// Generated from 
/Users/nivanov/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.g4
 by ANTLR 4.9.1
 package org.apache.nlpcraft.common.makro.antlr4;
 
 import org.antlr.v4.runtime.ParserRuleContext;
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.interp
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.interp
index 1852ceb..80ced78 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.interp
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.interp
@@ -34,8 +34,9 @@ RBR
 VERT
 COMMA
 UNDERSCORE
-TXT_CHAR
+ESC_CHAR
 ESC
+TXT_CHAR
 INT
 TXT
 WS
@@ -49,4 +50,4 @@ mode names:
 DEFAULT_MODE
 
 atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 13, 74, 8, 1, 
4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 
9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 
14, 9, 14, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 
7, 3, 8, 3, 8, 3, 9, 5, 9, 45, 10, 9, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 
7, 11, 53, 10, 11, 12, 11, 14, 11, 56, 11, 11, 5, 11, 58, 10, 11, 3, 12, 3, 12, 
6, 12, 62, 10, 12, 1 [...]
\ No newline at end of file
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 13, 78, 8, 1, 
4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 
9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 
14, 9, 14, 4, 15, 9, 15, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 
3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 11, 5, 11, 
52, 10, 11, 3, 12, 3, 12, 3, 12, 7, 12, 57, 10, 12, 12, 12, 14, 12, 60, 11, 12, 
5, 12, 62, 10, 12, 3, 13 [...]
\ No newline at end of file
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.java
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.java
index 1a45648..0bbc5e4 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.java
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.java
@@ -1,4 +1,4 @@
-// Generated from C:/Users/Nikita 
Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4\NCMacroDsl.g4
 by ANTLR 4.9.1
+// Generated from 
/Users/nivanov/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.g4
 by ANTLR 4.9.1
 package org.apache.nlpcraft.common.makro.antlr4;
 import org.antlr.v4.runtime.Lexer;
 import org.antlr.v4.runtime.CharStream;
@@ -29,8 +29,8 @@ public class NCMacroDslLexer extends Lexer {
 
        private static String[] makeRuleNames() {
                return new String[] {
-                       "LCURLY", "RCURLY", "LBR", "RBR", "VERT", "COMMA", 
"UNDERSCORE", "TXT_CHAR", 
-                       "ESC", "INT", "TXT", "WS", "ErrorCharacter"
+                       "LCURLY", "RCURLY", "LBR", "RBR", "VERT", "COMMA", 
"UNDERSCORE", "ESC_CHAR", 
+                       "ESC", "TXT_CHAR", "INT", "TXT", "WS", "ErrorCharacter"
                };
        }
        public static final String[] ruleNames = makeRuleNames();
@@ -106,29 +106,30 @@ public class NCMacroDslLexer extends Lexer {
        public ATN getATN() { return _ATN; }
 
        public static final String _serializedATN =
-               
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\rJ\b\1\4\2\t\2\4"+
+               
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\rN\b\1\4\2\t\2\4"+
                
"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
-               
"\13\4\f\t\f\4\r\t\r\4\16\t\16\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6"+
-               
"\3\7\3\7\3\b\3\b\3\t\5\t-\n\t\3\n\3\n\3\n\3\13\3\13\3\13\7\13\65\n\13"+
-               
"\f\13\16\138\13\13\5\13:\n\13\3\f\3\f\6\f>\n\f\r\f\16\f?\3\r\6\rC\n\r"+
-               
"\r\r\16\rD\3\r\3\r\3\16\3\16\2\2\17\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\2"+
-               
"\23\2\25\n\27\13\31\f\33\r\3\2\7\30\2#%(),-/\60\62<>>@@C\\``c|\u00b9\u00b9"+
-               
"\u00c2\u00d8\u00da\u00f8\u00fa\u037f\u0381\u2001\u200e\u200f\u2041\u2042"+
-               
"\u2072\u2191\u2c02\u2ff1\u3003\ud801\uf902\ufdd1\ufdf2\uffff\b\2..>>@"+
-               
"@]_aa}\177\3\2\63;\4\2\62;aa\5\2\13\f\16\17\"\"\2L\2\3\3\2\2\2\2\5\3\2"+
-               
"\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\25"+
-               
"\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\3\35\3\2\2\2\5\37\3\2"+
-               
"\2\2\7!\3\2\2\2\t#\3\2\2\2\13%\3\2\2\2\r\'\3\2\2\2\17)\3\2\2\2\21,\3\2"+
-               
"\2\2\23.\3\2\2\2\259\3\2\2\2\27=\3\2\2\2\31B\3\2\2\2\33H\3\2\2\2\35\36"+
-               "\7}\2\2\36\4\3\2\2\2\37 \7\177\2\2 
\6\3\2\2\2!\"\7]\2\2\"\b\3\2\2\2#$"+
-               
"\7_\2\2$\n\3\2\2\2%&\7~\2\2&\f\3\2\2\2\'(\7.\2\2(\16\3\2\2\2)*\7a\2\2"+
-               
"*\20\3\2\2\2+-\t\2\2\2,+\3\2\2\2-\22\3\2\2\2./\7^\2\2/\60\t\3\2\2\60\24"+
-               
"\3\2\2\2\61:\7\62\2\2\62\66\t\4\2\2\63\65\t\5\2\2\64\63\3\2\2\2\658\3"+
-               
"\2\2\2\66\64\3\2\2\2\66\67\3\2\2\2\67:\3\2\2\28\66\3\2\2\29\61\3\2\2\2"+
-               
"9\62\3\2\2\2:\26\3\2\2\2;>\5\21\t\2<>\5\23\n\2=;\3\2\2\2=<\3\2\2\2>?\3"+
-               
"\2\2\2?=\3\2\2\2?@\3\2\2\2@\30\3\2\2\2AC\t\6\2\2BA\3\2\2\2CD\3\2\2\2D"+
-               
"B\3\2\2\2DE\3\2\2\2EF\3\2\2\2FG\b\r\2\2G\32\3\2\2\2HI\13\2\2\2I\34\3\2"+
-               "\2\2\t\2,\669=?D\3\b\2\2";
+               
"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3"+
+               
"\5\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\n\3\13\5\13\64\n\13\3\f\3"+
+               
"\f\3\f\7\f9\n\f\f\f\16\f<\13\f\5\f>\n\f\3\r\3\r\6\rB\n\r\r\r\16\rC\3\16"+
+               
"\6\16G\n\16\r\16\16\16H\3\16\3\16\3\17\3\17\2\2\20\3\3\5\4\7\5\t\6\13"+
+               
"\7\r\b\17\t\21\2\23\2\25\2\27\n\31\13\33\f\35\r\3\2\7\b\2..>>@@]_aa}\177"+
+               
"\27\2##%(*-/@B\\^^``b|\u0080\u0080\u00b9\u00b9\u00c2\u00d8\u00da\u00f8"+
+               
"\u00fa\u037f\u0381\u2001\u200e\u200f\u2041\u2042\u2072\u2191\u2c02\u2ff1"+
+               
"\u3003\ud801\uf902\ufdd1\ufdf2\uffff\3\2\63;\4\2\62;aa\5\2\13\f\16\17"+
+               
"\"\"\2O\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2"+
+               
"\r\3\2\2\2\2\17\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3"+
+               
"\2\2\2\3\37\3\2\2\2\5!\3\2\2\2\7#\3\2\2\2\t%\3\2\2\2\13\'\3\2\2\2\r)\3"+
+               
"\2\2\2\17+\3\2\2\2\21-\3\2\2\2\23/\3\2\2\2\25\63\3\2\2\2\27=\3\2\2\2\31"+
+               "A\3\2\2\2\33F\3\2\2\2\35L\3\2\2\2\37 \7}\2\2 
\4\3\2\2\2!\"\7\177\2\2\""+
+               
"\6\3\2\2\2#$\7]\2\2$\b\3\2\2\2%&\7_\2\2&\n\3\2\2\2\'(\7~\2\2(\f\3\2\2"+
+               
"\2)*\7.\2\2*\16\3\2\2\2+,\7a\2\2,\20\3\2\2\2-.\t\2\2\2.\22\3\2\2\2/\60"+
+               
"\7^\2\2\60\61\5\21\t\2\61\24\3\2\2\2\62\64\t\3\2\2\63\62\3\2\2\2\64\26"+
+               
"\3\2\2\2\65>\7\62\2\2\66:\t\4\2\2\679\t\5\2\28\67\3\2\2\29<\3\2\2\2:8"+
+               
"\3\2\2\2:;\3\2\2\2;>\3\2\2\2<:\3\2\2\2=\65\3\2\2\2=\66\3\2\2\2>\30\3\2"+
+               
"\2\2?B\5\25\13\2@B\5\23\n\2A?\3\2\2\2A@\3\2\2\2BC\3\2\2\2CA\3\2\2\2CD"+
+               
"\3\2\2\2D\32\3\2\2\2EG\t\6\2\2FE\3\2\2\2GH\3\2\2\2HF\3\2\2\2HI\3\2\2\2"+
+               
"IJ\3\2\2\2JK\b\16\2\2K\34\3\2\2\2LM\13\2\2\2M\36\3\2\2\2\t\2\63:=ACH\3"+
+               "\b\2\2";
        public static final ATN _ATN =
                new ATNDeserializer().deserialize(_serializedATN.toCharArray());
        static {
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslListener.java
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslListener.java
index c7de456..c50b83c 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslListener.java
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslListener.java
@@ -1,4 +1,4 @@
-// Generated from C:/Users/Nikita 
Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4\NCMacroDsl.g4
 by ANTLR 4.9.1
+// Generated from 
/Users/nivanov/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.g4
 by ANTLR 4.9.1
 package org.apache.nlpcraft.common.makro.antlr4;
 import org.antlr.v4.runtime.tree.ParseTreeListener;
 
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslParser.java
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslParser.java
index 13b43ab..fc227ae 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslParser.java
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslParser.java
@@ -1,4 +1,4 @@
-// Generated from C:/Users/Nikita 
Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4\NCMacroDsl.g4
 by ANTLR 4.9.1
+// Generated from 
/Users/nivanov/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.g4
 by ANTLR 4.9.1
 package org.apache.nlpcraft.common.makro.antlr4;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/common/makro/NCMacroCompilerSpec.scala
 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/common/makro/NCMacroCompilerSpec.scala
index 4b5baea..35a90e1 100644
--- 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/common/makro/NCMacroCompilerSpec.scala
+++ 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/common/makro/NCMacroCompilerSpec.scala
@@ -19,7 +19,7 @@ package org.apache.nlpcraft.common.makro
 
 import org.junit.jupiter.api.Assertions.assertTrue
 import org.junit.jupiter.api.Test
-import  org.apache.nlpcraft.common._
+import org.apache.nlpcraft.common._
 
 /**
   * Unit tests for the macro compiler.
@@ -88,6 +88,13 @@ class NCMacroCompilerSpec {
         checkEq("A {B| xxx {C|E}} D", Seq("A B D", "A xxx C D", "A xxx E D"))
         checkEq("x {<OF>| y <NO>}[1,2]", Seq("x <OF>", "x y <NO>", "x <OF> 
<OF>", "x y <NO> y <NO>"))
         checkEq("{{x  }} {<OF>| y <NO>}[1,2]", Seq("x <OF>", "x y <NO>", "x 
<OF> <OF>", "x y <NO> y <NO>"))
+        checkEq("{tl;dr|j/k}", Seq("tl;dr", "j/k"))
+        checkEq("a {b|_}. c", Seq( "a b . c", "a . c"))
+        checkEq("""a {/abc.*/|\{\_\}} c""", Seq("a /abc.*/ c", """a \{\_\} 
c"""))
+        checkEq("""{`a`   |\`a\`   }""", Seq("`a`", """\`a\`"""))
+        checkEq("""a {/abc.\{\}*/     |/d/} c""", Seq("""a /abc.\{\}*/ c""", 
"a /d/ c"))
+        checkEq("""a .{b\,  |_}. c"""", Seq("""a . b\, . c""", "a . . c"))
+        checkEq("a {        {b|c}|_}.", Seq("a .", "a b .", "a c ."))
     }
 
     @Test

Reply via email to