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