You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by ar...@apache.org on 2021/03/18 18:53:03 UTC

[incubator-nlpcraft] branch NLPCRAFT-206 updated (457384e -> d61e45d)

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

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


    from 457384e  WIP.
     new 71f6894  WIP.
     new e766582  WIP.
     new 57c8c3a  Renaming DSL  -> IDL, etc.
     new eb07ce0  DSL -> IDL.
     new d61e45d  Merge branch 'NLPCRAFT-206' of https://github.com/apache/incubator-nlpcraft into NLPCRAFT-206

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 README.md                                          |   4 +-
 .../nlpcraft/common/makro/NCMacroCompiler.scala    |   2 +-
 .../nlpcraft/common/makro/antlr4/NCMacroDsl.g4     |   4 +-
 .../nlpcraft/common/makro/antlr4/NCMacroDsl.interp |   2 +-
 .../nlpcraft/common/makro/antlr4/NCMacroDsl.tokens |   2 +-
 .../common/makro/antlr4/NCMacroDslLexer.interp     |   6 +-
 .../common/makro/antlr4/NCMacroDslLexer.java       |  45 +-
 .../common/makro/antlr4/NCMacroDslLexer.tokens     |   2 +-
 .../common/makro/antlr4/NCMacroDslParser.java      |  12 +-
 .../org/apache/nlpcraft/common/util/NCUtils.scala  |   2 +-
 .../apache/nlpcraft/examples/phone/PhoneModel.java |   1 -
 .../nlpcraft/examples/weather/WeatherModel.java    |   3 -
 .../scala/org/apache/nlpcraft/model/NCIntent.java  |   6 +-
 .../org/apache/nlpcraft/model/NCIntentSkip.java    |   2 +-
 .../org/apache/nlpcraft/model/NCModelView.java     |   2 +-
 .../scala/org/apache/nlpcraft/model/NCToken.java   |   2 +-
 .../nlpcraft/model/NCTokenPredicateContext.java    |   2 +-
 .../nlpcraft/model/NCTokenPredicateResult.java     |   2 +-
 .../{NCDslContext.scala => NCIdlContext.scala}     |   2 +-
 .../{NCDslIntent.scala => NCIdlIntent.scala}       |  12 +-
 .../{NCDslSynonym.scala => NCIdlSynonym.scala}     |   4 +-
 .../intent/{NCDslTerm.scala => NCIdlTerm.scala}    |  18 +-
 ...enPredicate.scala => NCIdlTokenPredicate.scala} |   2 +-
 .../{NCDslCompiler.scala => NCIdlCompiler.scala}   | 180 ++++----
 ...lCompilerBase.scala => NCIdlCompilerBase.scala} | 225 +++++-----
 ...pilerGlobal.scala => NCIdlCompilerGlobal.scala} |  14 +-
 .../{NCDslFragment.scala => NCIdlFragment.scala}   |   8 +-
 .../{NCDslStack.scala => NCIdlStack.scala}         |  16 +-
 .../compiler/antlr4/NCIntentDslBaseVisitor.java    | 315 --------------
 .../compiler/antlr4/NCIntentDslListener.java       | 458 ---------------------
 .../intent/compiler/antlr4/NCIntentDslVisitor.java | 280 -------------
 .../antlr4/{NCIntentDsl.g4 => NCIntentIdl.g4}      |  16 +-
 .../{NCIntentDsl.interp => NCIntentIdl.interp}     |   6 +-
 ...{NCIntentDslLexer.tokens => NCIntentIdl.tokens} |   0
 ...eListener.java => NCIntentIdlBaseListener.java} | 178 ++++----
 ...tentDslLexer.interp => NCIntentIdlLexer.interp} |   0
 ...NCIntentDslLexer.java => NCIntentIdlLexer.java} |   8 +-
 ...{NCIntentDsl.tokens => NCIntentIdlLexer.tokens} |   0
 .../compiler/antlr4/NCIntentIdlListener.java       | 458 +++++++++++++++++++++
 ...IntentDslParser.java => NCIntentIdlParser.java} | 416 +++++++++----------
 .../model/intent/solver/NCIntentSolver.scala       |   4 +-
 .../model/intent/solver/NCIntentSolverEngine.scala |  20 +-
 .../apache/nlpcraft/probe/mgrs/NCProbeModel.scala  |   4 +-
 .../nlpcraft/probe/mgrs/NCProbeSynonym.scala       |  14 +-
 .../nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala  |  10 +-
 .../probe/mgrs/NCProbeSynonymChunkKind.scala       |   2 +-
 .../probe/mgrs/deploy/NCDeployManager.scala        |  46 +--
 .../probe/mgrs/nlp/NCProbeEnrichmentManager.scala  |   2 +-
 .../mgrs/nlp/enrichers/model/NCModelEnricher.scala |   4 +-
 .../apache/nlpcraft/model/NCIntentDslSpec.scala    |   6 +-
 .../apache/nlpcraft/model/NCIntentDslSpec2.scala   |   6 +-
 .../model/intent/dsl/NCIntentDslTestModel.scala    |   2 +-
 .../model/intent/dsl/NCIntentDslTestSpec.scala     |   2 +-
 ...lCompilerSpec.scala => NCIdlCompilerSpec.scala} |  14 +-
 .../nlpcraft/model/intent/dsl/dsl_test_model.yaml  |   4 +-
 .../nlpcraft/server/rest/NCRestAskSpec.scala       |   2 +-
 .../nlpcraft/server/rest/NCRestCompanySpec.scala   |   2 +-
 .../nlpcraft/server/rest/NCRestModelSpec.scala     |   2 +-
 58 files changed, 1134 insertions(+), 1729 deletions(-)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/{NCDslContext.scala => NCIdlContext.scala} (98%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/{NCDslIntent.scala => NCIdlIntent.scala} (90%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/{NCDslSynonym.scala => NCIdlSynonym.scala} (94%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/{NCDslTerm.scala => NCIdlTerm.scala} (83%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/{NCDslTokenPredicate.scala => NCIdlTokenPredicate.scala} (93%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/{NCDslCompiler.scala => NCIdlCompiler.scala} (83%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/{NCDslCompilerBase.scala => NCIdlCompilerBase.scala} (73%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/{NCDslCompilerGlobal.scala => NCIdlCompilerGlobal.scala} (85%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/{NCDslFragment.scala => NCIdlFragment.scala} (89%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/{NCDslStack.scala => NCIdlStack.scala} (72%)
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslBaseVisitor.java
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslListener.java
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslVisitor.java
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/{NCIntentDsl.g4 => NCIntentIdl.g4} (96%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/{NCIntentDsl.interp => NCIntentIdl.interp} (99%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/{NCIntentDslLexer.tokens => NCIntentIdl.tokens} (100%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/{NCIntentDslBaseListener.java => NCIntentIdlBaseListener.java} (62%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/{NCIntentDslLexer.interp => NCIntentIdlLexer.interp} (100%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/{NCIntentDslLexer.java => NCIntentIdlLexer.java} (99%)
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/{NCIntentDsl.tokens => NCIntentIdlLexer.tokens} (100%)
 create mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlListener.java
 rename nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/{NCIntentDslParser.java => NCIntentIdlParser.java} (84%)
 rename nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/{NCDslCompilerSpec.scala => NCIdlCompilerSpec.scala} (94%)

[incubator-nlpcraft] 04/05: DSL -> IDL.

Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit eb07ce04633005de65573f2849d67fce162431db
Author: Aaron Radzinski <ar...@apache.org>
AuthorDate: Thu Mar 18 11:51:20 2021 -0700

    DSL -> IDL.
---
 README.md                                          |  4 +-
 .../nlpcraft/common/makro/NCMacroCompiler.scala    |  2 +-
 .../nlpcraft/common/makro/antlr4/NCMacroDsl.g4     |  4 +-
 .../nlpcraft/common/makro/antlr4/NCMacroDsl.interp |  2 +-
 .../nlpcraft/common/makro/antlr4/NCMacroDsl.tokens |  2 +-
 .../common/makro/antlr4/NCMacroDslLexer.interp     |  6 +--
 .../common/makro/antlr4/NCMacroDslLexer.java       | 45 +++++++++++-----------
 .../common/makro/antlr4/NCMacroDslLexer.tokens     |  2 +-
 .../common/makro/antlr4/NCMacroDslParser.java      | 12 +++---
 .../org/apache/nlpcraft/common/util/NCUtils.scala  |  2 +-
 .../apache/nlpcraft/examples/phone/PhoneModel.java |  1 -
 .../nlpcraft/examples/weather/WeatherModel.java    |  3 --
 .../scala/org/apache/nlpcraft/model/NCIntent.java  |  6 +--
 .../org/apache/nlpcraft/model/NCIntentSkip.java    |  2 +-
 .../org/apache/nlpcraft/model/NCModelView.java     |  2 +-
 .../scala/org/apache/nlpcraft/model/NCToken.java   |  2 +-
 .../nlpcraft/model/NCTokenPredicateContext.java    |  2 +-
 .../nlpcraft/model/NCTokenPredicateResult.java     |  2 +-
 .../apache/nlpcraft/model/intent/NCIdlTerm.scala   | 10 +++--
 .../model/intent/compiler/NCIdlCompiler.scala      |  6 +--
 .../nlpcraft/probe/mgrs/NCProbeSynonym.scala       | 12 +++---
 .../nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala  |  8 ++--
 .../probe/mgrs/NCProbeSynonymChunkKind.scala       |  2 +-
 .../probe/mgrs/deploy/NCDeployManager.scala        | 26 ++++++-------
 .../probe/mgrs/nlp/NCProbeEnrichmentManager.scala  |  2 +-
 .../mgrs/nlp/enrichers/model/NCModelEnricher.scala |  4 +-
 .../apache/nlpcraft/model/NCIntentDslSpec.scala    |  6 +--
 .../apache/nlpcraft/model/NCIntentDslSpec2.scala   |  6 +--
 .../model/intent/dsl/NCIntentDslTestModel.scala    |  2 +-
 .../model/intent/dsl/NCIntentDslTestSpec.scala     |  2 +-
 .../intent/dsl/compiler/NCIdlCompilerSpec.scala    |  2 +-
 .../nlpcraft/model/intent/dsl/dsl_test_model.yaml  |  4 +-
 .../nlpcraft/server/rest/NCRestAskSpec.scala       |  2 +-
 .../nlpcraft/server/rest/NCRestCompanySpec.scala   |  2 +-
 .../nlpcraft/server/rest/NCRestModelSpec.scala     |  2 +-
 35 files changed, 99 insertions(+), 100 deletions(-)

diff --git a/README.md b/README.md
index 4d8c8c7..34830e0 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ There is no learning curve, no special rules or UI to master, no cumbersome synt
  
 ## Key Features
 ### Programmable Intents
-Fully programmable, advanced intent DSL with deterministic matching provides easy to use and expressive mechanism for a complex intent logic.
+Fully programmable, advanced NLPCraft IDL (Intent Definition Language) with deterministic matching provides easy to use and expressive mechanism for a complex intent logic.
 
 ### Short-Term-Memory
 Advanced out-of-the-box support for maintaining and managing conversational context that is fully integrated with intent matching.
@@ -53,7 +53,7 @@ NLPCraft focuses on processing English language delivering the ease of use and u
 Built with a singular focus - provide developers with unprecedented productivity and efficiency when building  modern NLI applications.
 
 ### Composable Named Entities
-Compose new reusable Named Entities out of existing internal or external ones, build new ones and mix and match using comprehensive DSL.
+Compose new reusable Named Entities out of existing internal or external ones, build new ones and mix and match using comprehensive NLPCraft IDL.
                        
 ### Java-First
 REST API and Java-based implementation natively supports the world's largest ecosystem of development tools, multiple programming languages, frameworks and services.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/NCMacroCompiler.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/NCMacroCompiler.scala
index dcceda7..16ff67f 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/NCMacroCompiler.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/NCMacroCompiler.scala
@@ -165,7 +165,7 @@ object NCMacroCompiler extends LazyLogging {
             val syn = (
                 if (ctx.TXT() != null) ctx.TXT()
                 else if (ctx.REGEX_TXT() != null) ctx.REGEX_TXT()
-                else ctx.DSL_TXT()
+                else ctx.IDL_TXT()
             ).getText
 
             val buf = stack.top.buffer
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 679ba01..4f21797 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
@@ -24,7 +24,7 @@ expr
     | expr item
     ;
 item: syn | group;
-syn : (TXT | REGEX_TXT | DSL_TXT);
+syn : (TXT | REGEX_TXT | IDL_TXT);
 group: LCURLY list RCURLY MINMAX?;
 list
     : expr
@@ -66,7 +66,7 @@ fragment TXT_CHAR
     ; // Ignoring ['\u10000-'\uEFFFF].
 MINMAX: '[' [ 0-9,]+ ']';
 REGEX_TXT: '//' .*? '//';
-DSL_TXT: '^^' .*? '^^';
+IDL_TXT: '^^' .*? '^^';
 TXT: (TXT_CHAR | ESC)+;
 WS: [ \r\t\u000C\n]+ -> skip ;
 ERR_CHAR: .;
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.interp b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.interp
index d8e6b6a..6f2c738 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.interp
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.interp
@@ -21,7 +21,7 @@ COMMA
 UNDERSCORE
 MINMAX
 REGEX_TXT
-DSL_TXT
+IDL_TXT
 TXT
 WS
 ERR_CHAR
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.tokens b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.tokens
index 4a59220..7ef9fd0 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.tokens
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDsl.tokens
@@ -5,7 +5,7 @@ COMMA=4
 UNDERSCORE=5
 MINMAX=6
 REGEX_TXT=7
-DSL_TXT=8
+IDL_TXT=8
 TXT=9
 WS=10
 ERR_CHAR=11
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 c069131..c9ab8a3 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
@@ -21,7 +21,7 @@ COMMA
 UNDERSCORE
 MINMAX
 REGEX_TXT
-DSL_TXT
+IDL_TXT
 TXT
 WS
 ERR_CHAR
@@ -37,7 +37,7 @@ ESC
 TXT_CHAR
 MINMAX
 REGEX_TXT
-DSL_TXT
+IDL_TXT
 TXT
 WS
 ERR_CHAR
@@ -50,4 +50,4 @@ mode names:
 DEFAULT_MODE
 
 atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 13, 96, 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, 8, 3, 9, 5, 9, 48, 10, 9, 3, 10, 3, 10, 6, 10, 52, 10, 10, 13, 10, 14, 10, 53, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 7, 11, 62, 10, 11, 12, 11,  [...]
\ No newline at end of file
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 13, 96, 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, 8, 3, 9, 5, 9, 48, 10, 9, 3, 10, 3, 10, 6, 10, 52, 10, 10, 13, 10, 14, 10, 53, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 7, 11, 62, 10, 11, 12, 11,  [...]
\ 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 40885d5..e2d9665 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
@@ -18,7 +18,7 @@ public class NCMacroDslLexer extends Lexer {
 		new PredictionContextCache();
 	public static final int
 		LCURLY=1, RCURLY=2, VERT=3, COMMA=4, UNDERSCORE=5, MINMAX=6, REGEX_TXT=7, 
-		DSL_TXT=8, TXT=9, WS=10, ERR_CHAR=11;
+		IDL_TXT=8, TXT=9, WS=10, ERR_CHAR=11;
 	public static String[] channelNames = {
 		"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
 	};
@@ -30,7 +30,7 @@ public class NCMacroDslLexer extends Lexer {
 	private static String[] makeRuleNames() {
 		return new String[] {
 			"LCURLY", "RCURLY", "VERT", "COMMA", "UNDERSCORE", "ESC_CHAR", "ESC", 
-			"TXT_CHAR", "MINMAX", "REGEX_TXT", "DSL_TXT", "TXT", "WS", "ERR_CHAR"
+			"TXT_CHAR", "MINMAX", "REGEX_TXT", "IDL_TXT", "TXT", "WS", "ERR_CHAR"
 		};
 	}
 	public static final String[] ruleNames = makeRuleNames();
@@ -44,7 +44,7 @@ public class NCMacroDslLexer extends Lexer {
 	private static String[] makeSymbolicNames() {
 		return new String[] {
 			null, "LCURLY", "RCURLY", "VERT", "COMMA", "UNDERSCORE", "MINMAX", "REGEX_TXT", 
-			"DSL_TXT", "TXT", "WS", "ERR_CHAR"
+			"IDL_TXT", "TXT", "WS", "ERR_CHAR"
 		};
 	}
 	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
@@ -114,25 +114,26 @@ public class NCMacroDslLexer extends Lexer {
 		"\13\3\13\3\f\3\f\3\f\3\f\7\fJ\n\f\f\f\16\fM\13\f\3\f\3\f\3\f\3\r\3\r\6"+
 		"\rT\n\r\r\r\16\rU\3\16\6\16Y\n\16\r\16\16\16Z\3\16\3\16\3\17\3\17\4?K"+
 		"\2\20\3\3\5\4\7\5\t\6\13\7\r\2\17\2\21\2\23\b\25\t\27\n\31\13\33\f\35"+
-		"\r\3\2\6\6\2..]_aa}\177\17\2#@B\\^^`|\u0080\u0080\u00a2\u2001\u200e\u200f"+
-		"\u2041\u2042\u2072\u2191\u2c02\u2ff1\u3003\ud801\uf902\ufdd1\ufdf2\uffff"+
-		"\5\2\"\"..\62;\5\2\13\f\16\17\"\"\2b\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\23\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\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\61\3\2"+
-		"\2\2\259\3\2\2\2\27E\3\2\2\2\31S\3\2\2\2\33X\3\2\2\2\35^\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\'(\7a\2\2(\f\3\2\2\2)*\t\2\2\2*\16\3\2\2\2+,\7^\2\2,-\5\r"+
-		"\7\2-\20\3\2\2\2.\60\t\3\2\2/.\3\2\2\2\60\22\3\2\2\2\61\63\7]\2\2\62\64"+
-		"\t\4\2\2\63\62\3\2\2\2\64\65\3\2\2\2\65\63\3\2\2\2\65\66\3\2\2\2\66\67"+
-		"\3\2\2\2\678\7_\2\28\24\3\2\2\29:\7\61\2\2:;\7\61\2\2;?\3\2\2\2<>\13\2"+
-		"\2\2=<\3\2\2\2>A\3\2\2\2?@\3\2\2\2?=\3\2\2\2@B\3\2\2\2A?\3\2\2\2BC\7\61"+
-		"\2\2CD\7\61\2\2D\26\3\2\2\2EF\7`\2\2FG\7`\2\2GK\3\2\2\2HJ\13\2\2\2IH\3"+
-		"\2\2\2JM\3\2\2\2KL\3\2\2\2KI\3\2\2\2LN\3\2\2\2MK\3\2\2\2NO\7`\2\2OP\7"+
-		"`\2\2P\30\3\2\2\2QT\5\21\t\2RT\5\17\b\2SQ\3\2\2\2SR\3\2\2\2TU\3\2\2\2"+
-		"US\3\2\2\2UV\3\2\2\2V\32\3\2\2\2WY\t\5\2\2XW\3\2\2\2YZ\3\2\2\2ZX\3\2\2"+
-		"\2Z[\3\2\2\2[\\\3\2\2\2\\]\b\16\2\2]\34\3\2\2\2^_\13\2\2\2_\36\3\2\2\2"+
-		"\n\2/\65?KSUZ\3\b\2\2";
+		"\r\3\2\6\6\2..]_aa}\177\24\2#@B\\^^`|\u0080\u0080\u00a2\u0251\u025b\u0294"+
+		"\u02b2\u0371\u0402\u0501\u1e04\u1ef5\u1f03\u2001\u200e\u200f\u2041\u2042"+
+		"\u2072\u2191\u2c02\u2ff1\u3003\ud801\uf902\ufdd1\ufdf2\uffff\5\2\"\"."+
+		".\62;\5\2\13\f\16\17\"\"\2b\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\23\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\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\61\3\2\2\2\25"+
+		"9\3\2\2\2\27E\3\2\2\2\31S\3\2\2\2\33X\3\2\2\2\35^\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\'(\7a\2\2(\f\3\2\2\2)*\t\2\2\2*\16\3\2\2\2+,\7^\2\2,-\5\r\7\2-"+
+		"\20\3\2\2\2.\60\t\3\2\2/.\3\2\2\2\60\22\3\2\2\2\61\63\7]\2\2\62\64\t\4"+
+		"\2\2\63\62\3\2\2\2\64\65\3\2\2\2\65\63\3\2\2\2\65\66\3\2\2\2\66\67\3\2"+
+		"\2\2\678\7_\2\28\24\3\2\2\29:\7\61\2\2:;\7\61\2\2;?\3\2\2\2<>\13\2\2\2"+
+		"=<\3\2\2\2>A\3\2\2\2?@\3\2\2\2?=\3\2\2\2@B\3\2\2\2A?\3\2\2\2BC\7\61\2"+
+		"\2CD\7\61\2\2D\26\3\2\2\2EF\7`\2\2FG\7`\2\2GK\3\2\2\2HJ\13\2\2\2IH\3\2"+
+		"\2\2JM\3\2\2\2KL\3\2\2\2KI\3\2\2\2LN\3\2\2\2MK\3\2\2\2NO\7`\2\2OP\7`\2"+
+		"\2P\30\3\2\2\2QT\5\21\t\2RT\5\17\b\2SQ\3\2\2\2SR\3\2\2\2TU\3\2\2\2US\3"+
+		"\2\2\2UV\3\2\2\2V\32\3\2\2\2WY\t\5\2\2XW\3\2\2\2YZ\3\2\2\2ZX\3\2\2\2Z"+
+		"[\3\2\2\2[\\\3\2\2\2\\]\b\16\2\2]\34\3\2\2\2^_\13\2\2\2_\36\3\2\2\2\n"+
+		"\2/\65?KSUZ\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/NCMacroDslLexer.tokens b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.tokens
index 4a59220..7ef9fd0 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.tokens
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/makro/antlr4/NCMacroDslLexer.tokens
@@ -5,7 +5,7 @@ COMMA=4
 UNDERSCORE=5
 MINMAX=6
 REGEX_TXT=7
-DSL_TXT=8
+IDL_TXT=8
 TXT=9
 WS=10
 ERR_CHAR=11
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 626f67d..b0ce4f5 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
@@ -18,7 +18,7 @@ public class NCMacroDslParser extends Parser {
 		new PredictionContextCache();
 	public static final int
 		LCURLY=1, RCURLY=2, VERT=3, COMMA=4, UNDERSCORE=5, MINMAX=6, REGEX_TXT=7, 
-		DSL_TXT=8, TXT=9, WS=10, ERR_CHAR=11;
+		IDL_TXT=8, TXT=9, WS=10, ERR_CHAR=11;
 	public static final int
 		RULE_makro = 0, RULE_expr = 1, RULE_item = 2, RULE_syn = 3, RULE_group = 4, 
 		RULE_list = 5;
@@ -38,7 +38,7 @@ public class NCMacroDslParser extends Parser {
 	private static String[] makeSymbolicNames() {
 		return new String[] {
 			null, "LCURLY", "RCURLY", "VERT", "COMMA", "UNDERSCORE", "MINMAX", "REGEX_TXT", 
-			"DSL_TXT", "TXT", "WS", "ERR_CHAR"
+			"IDL_TXT", "TXT", "WS", "ERR_CHAR"
 		};
 	}
 	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
@@ -239,7 +239,7 @@ public class NCMacroDslParser extends Parser {
 			_errHandler.sync(this);
 			switch (_input.LA(1)) {
 			case REGEX_TXT:
-			case DSL_TXT:
+			case IDL_TXT:
 			case TXT:
 				enterOuterAlt(_localctx, 1);
 				{
@@ -272,7 +272,7 @@ public class NCMacroDslParser extends Parser {
 	public static class SynContext extends ParserRuleContext {
 		public TerminalNode TXT() { return getToken(NCMacroDslParser.TXT, 0); }
 		public TerminalNode REGEX_TXT() { return getToken(NCMacroDslParser.REGEX_TXT, 0); }
-		public TerminalNode DSL_TXT() { return getToken(NCMacroDslParser.DSL_TXT, 0); }
+		public TerminalNode IDL_TXT() { return getToken(NCMacroDslParser.IDL_TXT, 0); }
 		public SynContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
@@ -296,7 +296,7 @@ public class NCMacroDslParser extends Parser {
 			{
 			setState(29);
 			_la = _input.LA(1);
-			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << REGEX_TXT) | (1L << DSL_TXT) | (1L << TXT))) != 0)) ) {
+			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << REGEX_TXT) | (1L << IDL_TXT) | (1L << TXT))) != 0)) ) {
 			_errHandler.recoverInline(this);
 			}
 			else {
@@ -416,7 +416,7 @@ public class NCMacroDslParser extends Parser {
 			switch (_input.LA(1)) {
 			case LCURLY:
 			case REGEX_TXT:
-			case DSL_TXT:
+			case IDL_TXT:
 			case TXT:
 				{
 				setState(38);
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
index f96acca..46bd6ea 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
@@ -75,7 +75,7 @@ object NCUtils extends LazyLogging {
     private final val ANSI_SEQ = Pattern.compile("\u001B\\[[?;\\d]*[a-zA-Z]")
 
     final val REGEX_FIX = "//"
-    final val DSL_FIX = "^^"
+    final val IDL_FIX = "^^"
 
     final val DFLT_PROBE_TOKEN = "3141592653589793"
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/phone/PhoneModel.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/phone/PhoneModel.java
index 340b086..bafd428 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/phone/PhoneModel.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/phone/PhoneModel.java
@@ -29,7 +29,6 @@ import java.util.stream.*;
  * <p>
  * Note that this example is using NE tokens from Google Natural Language service. 'google' provider should
  * be enabled to run this example - see 'tokenProviders' section in server configuration.
- * Note also that this example is using class-based intent DSL (to demonstrate its usage).
  * <p>
  * See 'README.md' file in the same folder for running and testing instructions.
  */
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/weather/WeatherModel.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/weather/WeatherModel.java
index e706494..34b2065 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/weather/WeatherModel.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/weather/WeatherModel.java
@@ -37,9 +37,6 @@ import static java.time.temporal.ChronoUnit.DAYS;
  * intent matching logic. It uses Apple's Dark Sky API weather provider REST service for the actual
  * weather information (https://darksky.net/dev/docs#overview)
  * <p>
- * Note that this example uses class-based intent DSL to demonstrate its usage pattern.
- * Note also that it also returns intent ID together with execution result which can be used in testing.
- * <p>
  * See 'README.md' file in the same folder for running and testing instructions.
  */
 public class WeatherModel extends NCModelFileAdapter {
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntent.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntent.java
index 14ecc1d..79438ea 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntent.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntent.java
@@ -24,7 +24,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 
 /**
  * Annotation to bind an intent with the method serving as its callback. This annotation takes a string value
- * that defines an intent via intent DSL. This annotation can also be applied to a model's class in
+ * that defines an intent via IDL. This annotation can also be applied to a model's class in
  * which case it will just declare the intent without binding it and the callback method will need to
  * use {@link NCIntentRef} annotation to actually bind it to the declared intent. Note that multiple intents
  * can be bound to the same callback method, but only one callback method can be bound with a given intent.
@@ -45,9 +45,9 @@ import static java.lang.annotation.RetentionPolicy.*;
 @Repeatable(NCIntent.NCIntentList.class)
 public @interface NCIntent {
     /**
-     * Intent specification using intent DSL.
+     * Intent specification using IDL.
      *
-     * @return Intent specification using intent DSL.
+     * @return Intent specification using IDL.
      */
     String value() default "";
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSkip.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSkip.java
index b196632..6d48d3c 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSkip.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSkip.java
@@ -26,7 +26,7 @@ import org.apache.nlpcraft.common.*;
  * will be selected and its callback will be called.
  * <p>
  * This exception becomes useful when it is hard or impossible to encode the entire matching logic using just
- * declarative intent DSL. In these cases the intent definition can be relaxed and the "last mile" of intent
+ * declarative IDL. In these cases the intent definition can be relaxed and the "last mile" of intent
  * matching can happen inside of the intent callback's user logic. If it is determined that intent in fact does
  * not match then throwing this exception allows to try next best matching intent, if any.
  * <p>
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelView.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelView.java
index eb46489..8f9849a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelView.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelView.java
@@ -956,7 +956,7 @@ public interface NCModelView extends NCMetadata {
      * Gets optional user-defined model element parsers for custom NER implementations. Note that order of the parsers
      * is important as they will be invoked in the same order they are returned.
      * <p>
-     * By default, the data model detects its elements by their synonyms, regexp or DSL expressions. However,
+     * By default, the data model detects its elements by their synonyms, regexp or IDL expressions. However,
      * in some cases these methods are not expressive enough. In such cases, a user-defined parser can be defined
      * for the model that would allow the user to define its own NER logic to detect the model elements in the user
      * input programmatically. Note that a single parser can detect any number of model elements.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
index 136516a..a362992 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
@@ -160,7 +160,7 @@ public interface NCToken extends NCMetadata {
 
     /**
      * Gets optional set of aliases this token is known by. Token can get an alias if it is a part of
-     * other composed token and token DSL expression that was used to match it specified an alias. Note
+     * other composed token and IDL expression that was used to match it specified an alias. Note
      * that token can have zero, one or more aliases.
      *
      * @return List of aliases this token is known by. Can be empty, but never {@code null}.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCTokenPredicateContext.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCTokenPredicateContext.java
index 1448800..2841e23 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCTokenPredicateContext.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCTokenPredicateContext.java
@@ -21,7 +21,7 @@ import java.util.Optional;
 
 /**
  * Context passed into custom user-defined token predicate. Custom token predicates can be used in
- * intent and synonym DSL.
+ * intent IDL.
  * <p>
  * Read full documentation in <a target=_ href="https://nlpcraft.apache.org/intent-matching.html">Intent Matching</a> section and review
  * <a target=_ href="https://github.com/apache/incubator-nlpcraft/tree/master/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/">examples</a>.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCTokenPredicateResult.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCTokenPredicateResult.java
index 5b2fbb7..b6a3e17 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCTokenPredicateResult.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCTokenPredicateResult.java
@@ -18,7 +18,7 @@
 package org.apache.nlpcraft.model;
 
 /**
- * Result value of user-defined token predicate. Token predicates can be used in intent and synonym DSL.
+ * Result value of user-defined token predicate. Token predicates can be used in intent IDL.
  * <p>
  * Read full documentation in <a target=_ href="https://nlpcraft.apache.org/intent-matching.html">Intent Matching</a> section and review
  * <a target=_ href="https://github.com/apache/incubator-nlpcraft/tree/master/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/">examples</a>.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlTerm.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlTerm.scala
index 6ef71d6..6805d17 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlTerm.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlTerm.scala
@@ -20,16 +20,18 @@ package org.apache.nlpcraft.model.intent
 import org.apache.nlpcraft.common._
 
 /**
- * DSL term.
+ * IDL term.
  *
+ * @param idl
  * @param id Optional ID of this term.
  * @param pred
  * @param min
  * @param max
  * @param conv
+ * @param fragMeta
  */
 case class NCIdlTerm(
-    dsl: String,
+    idl: String,
     id: Option[String],
     pred: NCIdlTokenPredicate,
     min: Int,
@@ -47,7 +49,7 @@ case class NCIdlTerm(
      */
     def cloneWithFragMeta(meta: Map[String, Any]): NCIdlTerm =
         NCIdlTerm(
-            dsl,
+            idl,
             id,
             pred,
             min,
@@ -56,5 +58,5 @@ case class NCIdlTerm(
             meta
         )
 
-    override def toString: String = g(dsl)
+    override def toString: String = g(idl)
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala
index 720b681..3124573 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala
@@ -288,7 +288,7 @@ object NCIdlCompiler extends LazyLogging {
                     }
                 }
             }
-            else  // DSL-defined term.
+            else  // IDL term.
                 instrToPredicate("Intent term")(ctx.expr())
 
             // Add term.
@@ -361,7 +361,7 @@ object NCIdlCompiler extends LazyLogging {
             val x = U.trimQuotes(ctx.qstring().getText)
 
             if (Global.hasImport(x))
-                logger.warn(s"Ignoring already processed DSL import '$x' in: $origin")
+                logger.warn(s"Ignoring already processed IDL import '$x' in: $origin")
             else {
                 Global.addImport(x)
 
@@ -521,7 +521,7 @@ object NCIdlCompiler extends LazyLogging {
      *
      * @param dsl
      * @param mdl
-     * @param origin DSL origin.
+     * @param origin IDL origin.
      */
     class CompilerErrorListener(dsl: String, mdl: NCModel, origin: String) extends BaseErrorListener {
         /**
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala
index 910a27e..9b56deb 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala
@@ -45,7 +45,7 @@ class NCProbeSynonym(
     
     lazy val isTextOnly: Boolean = forall(_.kind == TEXT)
     lazy val regexChunks: Int = count(_.kind == REGEX)
-    lazy val dslChunks: Int = count(_.kind == DSL)
+    lazy val dslChunks: Int = count(_.kind == IDL)
     lazy val isValueSynonym: Boolean = value != null
     lazy val stems: String = map(_.wordStem).mkString(" ")
     lazy val stemsHash: Int = stems.hashCode
@@ -58,7 +58,7 @@ class NCProbeSynonym(
     private def getSort(kind: NCSynonymChunkKind): Int =
         kind match {
             case TEXT ⇒ 0
-            case DSL ⇒ 1
+            case IDL ⇒ 1
             case REGEX ⇒ 2
             case _ ⇒ throw new AssertionError(s"Unexpected kind: $kind")
         }
@@ -83,7 +83,7 @@ class NCProbeSynonym(
                                 val regex = chunk.regex
 
                                 regex.matcher(tok.origText).matches() || regex.matcher(tok.normText).matches()
-                            case DSL ⇒ throw new AssertionError()
+                            case IDL ⇒ throw new AssertionError()
                             case _ ⇒ throw new AssertionError()
                         }
                 }
@@ -116,8 +116,8 @@ class NCProbeSynonym(
 
                             r.matcher(get0(_.origText, _.origText)).matches() || r.matcher(get0(_.normText, _.normText)).matches()
 
-                        case DSL ⇒
-                            get0(t ⇒ chunk.dslPred.apply(t, NCIdlContext(req = req))._1, _ ⇒ false)
+                        case IDL ⇒
+                            get0(t ⇒ chunk.idlPred.apply(t, NCIdlContext(req = req))._1, _ ⇒ false)
 
                         case _ ⇒ throw new AssertionError()
                     }
@@ -165,7 +165,7 @@ class NCProbeSynonym(
                                     val thisDynCnt = regexChunks + dslChunks
                                     val thatDynCnt = that.regexChunks + that.dslChunks
                                     
-                                    // Less PoS/regex/DSL chunks means less uncertainty, i.e. larger weight.
+                                    // Less PoS/regex/IDL chunks means less uncertainty, i.e. larger weight.
                                     if (thisDynCnt < thatDynCnt)
                                         1
                                     else if (thisDynCnt > thatDynCnt)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala
index 7d17dc2..cefb16a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala
@@ -24,22 +24,22 @@ import java.util.regex.Pattern
 
 /**
  *
- * @param alias Optional alias for this chunk from token DSL.
+ * @param alias Optional alias for this chunk from IDL.
  * @param kind Kind of synonym chunk.
  * @param origText Original text.
  * @param wordStem Optional stem for a single word synonyms.
  * @param posTag Optional PoS tag to match on.
  * @param regex Optional regex expression to match on.
- * @param dslPred Optional DSL expression to match on.
+ * @param idlPred Optional IDL expression to match on.
  */
 case class NCProbeSynonymChunk(
-    alias: String = null, // Not-null only for kind == DSL.
+    alias: String = null, // Not-null only for kind == IDL.
     kind: NCSynonymChunkKind,
     origText: String,
     wordStem: String = null, // Only for kind == TEXT.
     posTag: String = null,
     regex: Pattern = null,
-    dslPred: NCIdlTokenPredicate = null
+    idlPred: NCIdlTokenPredicate = null
 ) {
     require(origText != null)
     require(kind != null)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunkKind.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunkKind.scala
index 9394d0f..73e4eaf 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunkKind.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunkKind.scala
@@ -25,5 +25,5 @@ object NCProbeSynonymChunkKind extends Enumeration {
     
     val TEXT: Value = Value // Simple word.
     val REGEX: Value = Value // RegEx match expression (//[abd]+//).
-    val DSL: Value = Value // DSL match expression (^^id == 'nlpcraft:city'^^).
+    val IDL: Value = Value // IDL match expression (^^[alias]{id == 'nlpcraft:city'}^^).
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
index 4add91a..8357c6a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
@@ -30,13 +30,13 @@ import org.apache.nlpcraft.common.ascii.NCAsciiTable
 import org.apache.nlpcraft.common.config.NCConfigurable
 import org.apache.nlpcraft.common.makro.NCMacroParser
 import org.apache.nlpcraft.common.nlp.core.{NCNlpCoreManager, NCNlpPorterStemmer}
-import org.apache.nlpcraft.common.util.NCUtils.{DSL_FIX, REGEX_FIX}
+import org.apache.nlpcraft.common.util.NCUtils.{IDL_FIX, REGEX_FIX}
 import org.apache.nlpcraft.model._
 import org.apache.nlpcraft.model.factories.basic.NCBasicModelFactory
 import org.apache.nlpcraft.model.intent.compiler.NCIdlCompiler
 import org.apache.nlpcraft.model.intent.solver.NCIntentSolver
 import org.apache.nlpcraft.model.intent._
-import org.apache.nlpcraft.probe.mgrs.NCProbeSynonymChunkKind.{DSL, REGEX, TEXT}
+import org.apache.nlpcraft.probe.mgrs.NCProbeSynonymChunkKind.{IDL, REGEX, TEXT}
 import org.apache.nlpcraft.probe.mgrs.{NCProbeModel, NCProbeSynonym, NCProbeSynonymChunk, NCProbeSynonymsWrapper}
 import resource.managed
 
@@ -302,8 +302,8 @@ object NCDeployManager extends NCService with DecorateAsScala {
                 while (curr < len) {
                     if (isFix(REGEX_FIX))
                         processChunk(REGEX_FIX)
-                    else if (isFix(DSL_FIX))
-                        processChunk(DSL_FIX)
+                    else if (isFix(IDL_FIX))
+                        processChunk(IDL_FIX)
                     else
                         curr += 1
                 }
@@ -418,18 +418,18 @@ object NCDeployManager extends NCService with DecorateAsScala {
             .flatten
             .toList
 
-        // Check for DSL alias uniqueness.
+        // Check for IDL alias uniqueness.
         if (U.containsDups(allAliases))
-            throw new NCE(s"Duplicate DSL synonym alias found [" +
+            throw new NCE(s"Duplicate IDL synonym alias found [" +
                 s"mdlId=$mdlId, " +
                 s"dups=${allAliases.diff(allAliases.distinct).mkString(", ")}" +
             s"]")
 
         val idAliasDups = mdl.getElements.asScala.map(_.getId).intersect(allAliases.toSet)
 
-        // Check that DSL aliases don't intersect with element IDs.
+        // Check that IDL aliases don't intersect with element IDs.
         if (idAliasDups.nonEmpty)
-            throw new NCE(s"Model element IDs and DSL synonym aliases intersect [" +
+            throw new NCE(s"Model element IDs and IDL synonym aliases intersect [" +
                 s"mdlId=$mdlId, " +
                 s"dups=${idAliasDups.mkString(", ")}" +
             "]")
@@ -956,7 +956,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
       */
     private def filter(set: mutable.HashSet[SynonymHolder], dsl: Boolean): Set[SynonymHolder] =
         set.toSet.filter(s ⇒ {
-            val b = s.syn.exists(_.kind == DSL)
+            val b = s.syn.exists(_.kind == IDL)
 
             if (dsl) b else !b
         })
@@ -993,12 +993,12 @@ object NCDeployManager extends NCService with DecorateAsScala {
                     s"chunk=$chunk" +
                     s"]")
         }
-        // DSL-based synonym.
-        else if (startsAndEnds(DSL_FIX, chunk)) {
-            val dsl = stripSuffix(DSL_FIX, chunk)
+        // IDL-based synonym.
+        else if (startsAndEnds(IDL_FIX, chunk)) {
+            val dsl = stripSuffix(IDL_FIX, chunk)
             val compUnit = NCIdlCompiler.compileSynonym(dsl, mdl, mdl.getOrigin)
 
-            val x = NCProbeSynonymChunk(alias = compUnit.alias.orNull, kind = DSL, origText = chunk, dslPred = compUnit.pred)
+            val x = NCProbeSynonymChunk(alias = compUnit.alias.orNull, kind = IDL, origText = chunk, idlPred = compUnit.pred)
 
             x
         }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
index d8c721d..03b49ed 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
@@ -483,7 +483,7 @@ object NCProbeEnrichmentManager extends NCService with NCOpenCensusModelStats {
                     h.enricher → same
                 }).toMap
 
-                // Loop has sense if model is complex (has user defined parsers or DSL based synonyms)
+                // Loop has sense if model is complex (has user defined parsers or IDL based synonyms)
                 continue = NCModelEnricher.isComplex(mdl) && res.exists { case (_, same) ⇒ !same }
 
                 if (DEEP_DEBUG)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
index 02f0fd0..1233c31 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
@@ -402,7 +402,7 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala {
                                     else
                                         t.wordIndexes.map(complexesWords)
                                 )
-                                // Drops without tokens (DSL part works with tokens).
+                                // Drops without tokens (IDL part works with tokens).
                             }).filter(_.exists(_.isToken)).map(ComplexSeq(_)).distinct
                     ).seq
 
@@ -434,7 +434,7 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala {
                                 flatMap(complexSeq ⇒ {
                                     val rec = complexSeq.tokensComplexes.filter(_.isSubsetOf(idxMin, idxMax, idxs))
 
-                                    // Drops without tokens (DSL part works with tokens).
+                                    // Drops without tokens (IDL part works with tokens).
                                     if (rec.nonEmpty)
                                         Some(
                                             rec ++
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentDslSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentDslSpec.scala
index bb80ac2..5cd5c7b 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentDslSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentDslSpec.scala
@@ -25,10 +25,10 @@ import java.util
 import scala.language.implicitConversions
 
 /**
-  * Intents DSL test model.
+  * IDL test model.
   */
 class NCIntentDslSpecModel extends NCModelAdapter(
-    "nlpcraft.intents.dsl.test", "Intents DSL Test Model", "1.0"
+    "nlpcraft.intents.dsl.test", "IDL Test Model", "1.0"
 ) {
     private implicit def convert(s: String): NCResult = NCResult.text(s)
 
@@ -51,7 +51,7 @@ class NCIntentDslSpecModel extends NCModelAdapter(
 }
 
 /**
-  * Intents DSL test.
+  * IDL test.
   */
 @NCTestEnvironment(model = classOf[NCIntentDslSpecModel], startClient = true)
 class NCIntentDslSpec extends NCTestContext {
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentDslSpec2.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentDslSpec2.scala
index 051f85b..4484060 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentDslSpec2.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentDslSpec2.scala
@@ -24,10 +24,10 @@ import java.util
 import scala.language.implicitConversions
 
 /**
-  * Intents DSL test model.
+  * IDL test model.
   */
 class NCIntentDslSpecModel2 extends NCModelAdapter(
-    "nlpcraft.intents.dsl.test", "Intents DSL Test Model", "1.0"
+    "nlpcraft.intents.dsl.test", "IDL Test Model", "1.0"
 ) {
     override def getElements: util.Set[NCElement] = Set(NCTestElement("a"))
 
@@ -48,7 +48,7 @@ class NCIntentDslSpecModel2 extends NCModelAdapter(
 }
 
 /**
-  * Intents DSL test.
+  * IDL test.
   */
 @NCTestEnvironment(model = classOf[NCIntentDslSpecModel2], startClient = true)
 class NCIntentDslSpec2 extends NCTestContext {
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCIntentDslTestModel.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCIntentDslTestModel.scala
index 56f6bc5..9fc4357 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCIntentDslTestModel.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCIntentDslTestModel.scala
@@ -20,7 +20,7 @@ package org.apache.nlpcraft.model.intent.dsl
 import org.apache.nlpcraft.model._
 
 /**
- * Test model for intent DSL.
+ * Test model for IDL.
  */
 class NCIntentDslTestModel extends NCModelFileAdapter("src/test/scala/org/apache/nlpcraft/model/intent/dsl/dsl_test_model.yaml") {
     @NCIntentRef("i1")
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCIntentDslTestSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCIntentDslTestSpec.scala
index fd8d4b3..3e16e3c 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCIntentDslTestSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/NCIntentDslTestSpec.scala
@@ -27,7 +27,7 @@ import java.io.IOException
 import java.util.Collections
 
 /**
- * DSL test model test. Make sure to start up the NLPCraft server before running this test.
+ * IDL test model test. Make sure to start up the NLPCraft server before running this test.
  */
 class NCIntentDslTestSpec {
     private var cli: NCTestClient = _
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/NCIdlCompilerSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/NCIdlCompilerSpec.scala
index 30e7c53..e6f8fcc 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/NCIdlCompilerSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/NCIdlCompilerSpec.scala
@@ -23,7 +23,7 @@ import org.apache.nlpcraft.model.intent.compiler.{NCIdlCompiler, NCIdlCompilerGl
 import org.junit.jupiter.api.Test
 
 /**
- * Tests for DSL compiler.
+ * Tests for IDL compiler.
  */
 class NCIdlCompilerSpec {
     private final val MODEL_ID = "test.mdl.id"
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/dsl_test_model.yaml b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/dsl_test_model.yaml
index fac0518..e1f027d 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/dsl_test_model.yaml
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/dsl_test_model.yaml
@@ -16,9 +16,9 @@
 #
 
 id: "nlpcraft.dsl.test"
-name: "Intent DSL Test Model"
+name: "IDL Test Model"
 version: "1.0"
-description: "Intent DSL test model."
+description: "IDL test model."
 enabledBuiltInTokens: [
   "nlpcraft:num",
   "nlpcraft:date"
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestAskSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestAskSpec.scala
index b33cb1d..3a9e856 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestAskSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestAskSpec.scala
@@ -135,7 +135,7 @@ class NCRestAskSpec extends NCRestSpec {
       * @param usrId
       * @param data
       */
-    private def testAsk(
+    def testAsk(
         sync: Boolean,
         enableLog: Option[java.lang.Boolean],
         usrId: Option[java.lang.Long],
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestCompanySpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestCompanySpec.scala
index fa31849..45480ab 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestCompanySpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestCompanySpec.scala
@@ -183,7 +183,7 @@ class NCRestCompanySpec extends NCRestSpec {
       * @param postalCode
       * @param adminAvatarUrl
       */
-    private def testCompany(
+    def testCompany(
         website: Option[String] = None,
         country: Option[String] = None,
         region: Option[String] = None,
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestModelSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestModelSpec.scala
index 09d9a37..2327b0d 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestModelSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/server/rest/NCRestModelSpec.scala
@@ -30,7 +30,7 @@ import scala.collection.JavaConverters._
 @NCTestEnvironment(model = classOf[AlarmModel], startClient = false)
 class NCRestModelSpec extends NCRestSpec {
     @Test
-    private def test(): Unit = {
+    def test(): Unit = {
         def extract(data: java.util.List[java.util.Map[String, Object]]): Seq[Double] =
             data.asScala.map(_.get("score").asInstanceOf[Number].doubleValue())
 

[incubator-nlpcraft] 03/05: Renaming DSL -> IDL, etc.

Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 57c8c3a6f2b748ba69ae219d68d170ac2114e1fc
Author: Aaron Radzinski <ar...@apache.org>
AuthorDate: Thu Mar 18 11:37:13 2021 -0700

    Renaming DSL  -> IDL, etc.
---
 .../{NCDslContext.scala => NCIdlContext.scala}     |    2 +-
 .../{NCDslIntent.scala => NCIdlIntent.scala}       |   12 +-
 .../{NCDslSynonym.scala => NCIdlSynonym.scala}     |    4 +-
 .../intent/{NCDslTerm.scala => NCIdlTerm.scala}    |    8 +-
 ...enPredicate.scala => NCIdlTokenPredicate.scala} |    2 +-
 .../{NCDslCompiler.scala => NCIdlCompiler.scala}   |  144 +-
 ...lCompilerBase.scala => NCIdlCompilerBase.scala} |  210 +-
 ...pilerGlobal.scala => NCIdlCompilerGlobal.scala} |   14 +-
 .../{NCDslFragment.scala => NCIdlFragment.scala}   |    8 +-
 .../{NCDslStack.scala => NCIdlStack.scala}         |   16 +-
 .../intent/compiler/antlr4/NCIntentIdl.interp      |  148 ++
 .../intent/compiler/antlr4/NCIntentIdl.tokens      |   91 +
 .../compiler/antlr4/NCIntentIdlBaseListener.java   |  555 ++++
 .../intent/compiler/antlr4/NCIntentIdlLexer.interp |  172 ++
 .../intent/compiler/antlr4/NCIntentIdlLexer.java   |  568 ++++
 .../intent/compiler/antlr4/NCIntentIdlLexer.tokens |   91 +
 .../compiler/antlr4/NCIntentIdlListener.java       |  458 ++++
 .../intent/compiler/antlr4/NCIntentIdlParser.java  | 2797 ++++++++++++++++++++
 .../model/intent/solver/NCIntentSolver.scala       |    4 +-
 .../model/intent/solver/NCIntentSolverEngine.scala |   20 +-
 .../apache/nlpcraft/probe/mgrs/NCProbeModel.scala  |    4 +-
 .../nlpcraft/probe/mgrs/NCProbeSynonym.scala       |    4 +-
 .../nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala  |    4 +-
 .../probe/mgrs/deploy/NCDeployManager.scala        |   20 +-
 ...lCompilerSpec.scala => NCIdlCompilerSpec.scala} |   12 +-
 25 files changed, 5124 insertions(+), 244 deletions(-)

diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslContext.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlContext.scala
similarity index 98%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslContext.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlContext.scala
index 2b0a61f..1d09238 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslContext.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlContext.scala
@@ -27,7 +27,7 @@ import org.apache.nlpcraft.model.NCRequest
  * @param fragMeta Optional fragment (argument) metadata passed during intent fragment reference.
  * @param req Server request holder.
  */
-case class NCDslContext(
+case class NCIdlContext(
     intentMeta: ScalaMeta = Map.empty[String, Object],
     convMeta: ScalaMeta = Map.empty[String, Object],
     fragMeta: ScalaMeta = Map.empty[String, Object],
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslIntent.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlIntent.scala
similarity index 90%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslIntent.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlIntent.scala
index 0b965e0..76ec581 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslIntent.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlIntent.scala
@@ -22,26 +22,26 @@ import org.apache.nlpcraft.common.ScalaMeta
 import java.util.regex.Pattern
 
 /**
- * DSL intent.
+ * IDL intent.
  *
  * @param origin File path, file name, method name or URL.
- * @param dsl Original DSL of this intent.
+ * @param idl Original IDL of this intent.
  * @param id
  * @param ordered
  * @param meta
  * @param flow
  * @param terms
  */
-case class NCDslIntent(
+case class NCIdlIntent(
     origin: String,
-    dsl: String,
+    idl: String,
     id: String,
     ordered: Boolean,
     meta: ScalaMeta,
     flow: Option[String],
     flowClsName: Option[String],
     flowMtdName: Option[String],
-    terms: List[NCDslTerm]
+    terms: List[NCIdlTerm]
 ) {
     require(id != null)
     require(terms.nonEmpty)
@@ -56,5 +56,5 @@ case class NCDslIntent(
 
     lazy val isFlowDefined = flow.isDefined || flowMtdName.isDefined
 
-    override def toString: String = dsl
+    override def toString: String = idl
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslSynonym.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlSynonym.scala
similarity index 94%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslSynonym.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlSynonym.scala
index 7a6694d..4abe52a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslSynonym.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlSynonym.scala
@@ -25,10 +25,10 @@ import org.apache.nlpcraft.model.NCToken
  * @param alias
  * @param pred
  */
-case class NCDslSynonym(
+case class NCIdlSynonym(
     origin: String,
     alias: Option[String],
-    pred: NCDslTokenPredicate,
+    pred: NCIdlTokenPredicate,
 ) {
     require(origin != null)
     require(pred != null)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslTerm.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlTerm.scala
similarity index 91%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslTerm.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlTerm.scala
index 55026ae..6ef71d6 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslTerm.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlTerm.scala
@@ -28,10 +28,10 @@ import org.apache.nlpcraft.common._
  * @param max
  * @param conv
  */
-case class NCDslTerm(
+case class NCIdlTerm(
     dsl: String,
     id: Option[String],
-    pred: NCDslTokenPredicate,
+    pred: NCIdlTokenPredicate,
     min: Int,
     max: Int,
     conv: Boolean,
@@ -45,8 +45,8 @@ case class NCDslTerm(
      * @param meta
      * @return
      */
-    def cloneWithFragMeta(meta: Map[String, Any]): NCDslTerm =
-        NCDslTerm(
+    def cloneWithFragMeta(meta: Map[String, Any]): NCIdlTerm =
+        NCIdlTerm(
             dsl,
             id,
             pred,
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslTokenPredicate.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlTokenPredicate.scala
similarity index 93%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslTokenPredicate.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlTokenPredicate.scala
index d70b463..d585a8a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslTokenPredicate.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCIdlTokenPredicate.scala
@@ -22,4 +22,4 @@ import org.apache.nlpcraft.model.NCToken
 /**
  *
  */
-trait NCDslTokenPredicate extends ((NCToken, NCDslContext) ⇒ (Boolean /* Predicate. */ , Int /* How many times a token was used. */ ))
+trait NCIdlTokenPredicate extends ((NCToken, NCIdlContext) ⇒ (Boolean /* Predicate. */ , Int /* How many times a token was used. */ ))
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompiler.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala
similarity index 85%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompiler.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala
index 7d538d0..720b681 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompiler.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala
@@ -22,10 +22,10 @@ import org.antlr.v4.runtime.tree.ParseTreeWalker
 import org.antlr.v4.runtime._
 import org.antlr.v4.runtime.{ParserRuleContext ⇒ PRC}
 import org.apache.nlpcraft.common._
-import org.apache.nlpcraft.model.intent.compiler.antlr4.{NCIntentDslBaseListener, NCIntentDslLexer, NCIntentDslParser ⇒ IDP}
-import org.apache.nlpcraft.model.intent.compiler.{NCDslCompilerGlobal ⇒ Global}
+import org.apache.nlpcraft.model.intent.compiler.antlr4.{NCIntentIdlBaseListener, NCIntentIdlLexer, NCIntentIdlParser ⇒ IDP}
+import org.apache.nlpcraft.model.intent.compiler.{NCIdlCompilerGlobal ⇒ Global}
 import org.apache.nlpcraft.model._
-import org.apache.nlpcraft.model.intent.{NCDslContext, NCDslIntent, NCDslSynonym, NCDslTerm, NCDslTokenPredicate}
+import org.apache.nlpcraft.model.intent.{NCIdlContext, NCIdlIntent, NCIdlSynonym, NCIdlTerm, NCIdlTokenPredicate}
 
 import java.io._
 import java.net._
@@ -35,10 +35,10 @@ import java.util.regex.{Pattern, PatternSyntaxException}
 import scala.collection.mutable
 import scala.collection.mutable.ArrayBuffer
 
-object NCDslCompiler extends LazyLogging {
+object NCIdlCompiler extends LazyLogging {
     // Compiler caches.
-    private val intentCache = new mutable.HashMap[String, Set[NCDslIntent]]
-    private val synCache = new mutable.HashMap[String, NCDslSynonym]
+    private val intentCache = new mutable.HashMap[String, Set[NCIdlIntent]]
+    private val synCache = new mutable.HashMap[String, NCIdlSynonym]
 
     /**
       *
@@ -46,13 +46,13 @@ object NCDslCompiler extends LazyLogging {
       * @param idl
       * @param mdl
       */
-    class FiniteStateMachine(origin: String, idl: String, mdl: NCModel) extends NCIntentDslBaseListener with NCDslCompilerBase {
+    class FiniteStateMachine(origin: String, idl: String, mdl: NCModel) extends NCIntentIdlBaseListener with NCIdlCompilerBase {
         // Actual value for '*' as in min/max shortcut.
         final private val MINMAX_MAX = 100
 
         // Accumulators for parsed objects.
-        private val intents = ArrayBuffer.empty[NCDslIntent]
-        private var synonym: NCDslSynonym = _
+        private val intents = ArrayBuffer.empty[NCIdlIntent]
+        private var synonym: NCIdlSynonym = _
 
         // Synonym.
         private var alias: String = _
@@ -68,7 +68,7 @@ object NCDslCompiler extends LazyLogging {
         private var intentMeta: ScalaMeta = _
 
         // Accumulator for parsed terms.
-        private val terms = ArrayBuffer.empty[NCDslTerm]
+        private val terms = ArrayBuffer.empty[NCIdlTerm]
 
         // Currently term.
         private var termId: String = _
@@ -88,13 +88,13 @@ object NCDslCompiler extends LazyLogging {
          *
          * @return
          */
-        def getCompiledIntents: Set[NCDslIntent] = intents.toSet
+        def getCompiledIntents: Set[NCIdlIntent] = intents.toSet
 
         /**
          *
          * @return
          */
-        def getCompiledSynonym: NCDslSynonym = synonym
+        def getCompiledSynonym: NCIdlSynonym = synonym
 
         /*
          * Shared/common implementation.
@@ -115,7 +115,7 @@ object NCDslCompiler extends LazyLogging {
         override def exitAlias(ctx: IDP.AliasContext): Unit = alias = ctx.id().getText
 
         override def enterCallExpr(ctx: IDP.CallExprContext): Unit =
-            instrs += ((_, stack: NCDslStack, _) ⇒ stack.push(stack.PLIST_MARKER))
+            instrs += ((_, stack: NCIdlStack, _) ⇒ stack.push(stack.PLIST_MARKER))
 
         /**
          *
@@ -180,7 +180,7 @@ object NCDslCompiler extends LazyLogging {
 
             val pred = instrToPredicate("Synonym")
             val capture = alias
-            val wrapper: NCDslTokenPredicate = (tok: NCToken, ctx: NCDslContext) ⇒ {
+            val wrapper: NCIdlTokenPredicate = (tok: NCToken, ctx: NCIdlContext) ⇒ {
                 val (res, tokUses) = pred(tok, ctx)
 
                 // Store predicate's alias, if any, in token metadata if this token satisfies this predicate.
@@ -199,7 +199,7 @@ object NCDslCompiler extends LazyLogging {
                 (res, tokUses)
             }
 
-            synonym = NCDslSynonym(origin, Option(alias), wrapper)
+            synonym = NCIdlSynonym(origin, Option(alias), wrapper)
 
             alias = null
             instrs.clear()
@@ -254,12 +254,12 @@ object NCDslCompiler extends LazyLogging {
             if (max < 1)
                 throw newSyntaxError(s"Invalid intent term max quantifiers: $max (must be max >= 1).")(ctx.minMax())
 
-            val pred: NCDslTokenPredicate = if (refMtdName.isDefined) { // User-code defined term.
+            val pred: NCIdlTokenPredicate = if (refMtdName.isDefined) { // User-code defined term.
                 // Closure copies.
                 val clsName = refClsName.orNull
                 val mtdName = refMtdName.orNull
 
-                (tok: NCToken, termCtx: NCDslContext) ⇒ {
+                (tok: NCToken, termCtx: NCIdlContext) ⇒ {
                     val javaCtx: NCTokenPredicateContext = new NCTokenPredicateContext {
                         override lazy val getRequest: NCRequest = termCtx.req
                         override lazy val getToken: NCToken = tok
@@ -292,7 +292,7 @@ object NCDslCompiler extends LazyLogging {
                 instrToPredicate("Intent term")(ctx.expr())
 
             // Add term.
-            terms += NCDslTerm(
+            terms += NCIdlTerm(
                 ctx.getText,
                 Option(termId),
                 pred,
@@ -314,12 +314,12 @@ object NCDslCompiler extends LazyLogging {
          * @param subj
          * @return
          */
-        private def instrToPredicate(subj: String)(implicit ctx: PRC): NCDslTokenPredicate = {
+        private def instrToPredicate(subj: String)(implicit ctx: PRC): NCIdlTokenPredicate = {
             val code = mutable.Buffer.empty[I]
 
             code ++= instrs
 
-            (tok: NCToken, termCtx: NCDslContext) ⇒ {
+            (tok: NCToken, termCtx: NCIdlContext) ⇒ {
                 val stack = new S()
 
                 // Execute all instructions.
@@ -337,7 +337,7 @@ object NCDslCompiler extends LazyLogging {
         }
 
         override def exitFrag(ctx: IDP.FragContext): Unit = {
-            Global.addFragment(mdl.getId, NCDslFragment(fragId, terms.toList))
+            Global.addFragment(mdl.getId, NCIdlFragment(fragId, terms.toList))
 
             terms.clear()
             fragId = null
@@ -348,7 +348,7 @@ object NCDslCompiler extends LazyLogging {
           * @param intent
           * @param ctx
           */
-        private def addIntent(intent: NCDslIntent)(implicit ctx: ParserRuleContext): Unit = {
+        private def addIntent(intent: NCIdlIntent)(implicit ctx: ParserRuleContext): Unit = {
             val intentId = intent.id
 
             if (intents.exists(_.id == intentId))
@@ -365,13 +365,13 @@ object NCDslCompiler extends LazyLogging {
             else {
                 Global.addImport(x)
 
-                var imports: Set[NCDslIntent] = null
+                var imports: Set[NCIdlIntent] = null
 
                 val file = new File(x)
 
                 // First, try absolute path.
                 if (file.exists())
-                    imports = NCDslCompiler.compileIntents(
+                    imports = NCIdlCompiler.compileIntents(
                         U.readFile(file).mkString("\n"),
                         mdl,
                         x
@@ -382,7 +382,7 @@ object NCDslCompiler extends LazyLogging {
                     val in = mdl.getClass.getClassLoader.getResourceAsStream(x)
 
                     if (in != null)
-                        imports = NCDslCompiler.compileIntents(
+                        imports = NCIdlCompiler.compileIntents(
                             U.readStream(in).mkString("\n"),
                             mdl,
                             x
@@ -392,7 +392,7 @@ object NCDslCompiler extends LazyLogging {
                 // Finally, try as URL resource.
                 if (imports == null) {
                     try
-                        imports = NCDslCompiler.compileIntents(
+                        imports = NCIdlCompiler.compileIntents(
                             U.readStream(new URL(x).openStream()).mkString("\n"),
                             mdl,
                             x
@@ -410,7 +410,7 @@ object NCDslCompiler extends LazyLogging {
 
         override def exitIntent(ctx: IDP.IntentContext): Unit = {
             addIntent(
-                NCDslIntent(
+                NCIdlIntent(
                     origin,
                     idl,
                     intentId,
@@ -442,8 +442,8 @@ object NCDslCompiler extends LazyLogging {
      * @param srcName
      * @param line
      * @param charPos
-     * @param dsl
-     * @param origin DSL origin.
+     * @param idl
+     * @param origin IDL origin.
      * @param mdl
      * @return
      */
@@ -452,9 +452,9 @@ object NCDslCompiler extends LazyLogging {
         srcName: String,
         line: Int, // 1, 2, ...
         charPos: Int, // 0, 1, 2, ...
-        dsl: String,
+        idl: String,
         origin: String,
-        mdl: NCModel): String = mkError("syntax", msg, srcName, line, charPos, dsl, origin, mdl)
+        mdl: NCModel): String = mkError("syntax", msg, srcName, line, charPos, idl, origin, mdl)
 
     /**
      *
@@ -462,8 +462,8 @@ object NCDslCompiler extends LazyLogging {
      * @param srcName
      * @param line
      * @param charPos
-     * @param dsl
-     * @param origin DSL origin.
+     * @param idl
+     * @param origin IDL origin.
      * @param mdl
      * @return
      */
@@ -472,9 +472,9 @@ object NCDslCompiler extends LazyLogging {
         srcName: String,
         line: Int, // 1, 2, ...
         charPos: Int, // 0, 1, 2, ...
-        dsl: String,
+        idl: String,
         origin: String,
-        mdl: NCModel): String = mkError("runtime", msg, srcName, line, charPos, dsl, origin, mdl)
+        mdl: NCModel): String = mkError("runtime", msg, srcName, line, charPos, idl, origin, mdl)
 
     /**
      *
@@ -483,8 +483,8 @@ object NCDslCompiler extends LazyLogging {
      * @param srcName
      * @param line
      * @param charPos
-     * @param dsl
-     * @param origin DSL origin.
+     * @param idl
+     * @param origin IDL origin.
      * @param mdl
      * @return
      */
@@ -494,25 +494,25 @@ object NCDslCompiler extends LazyLogging {
         srcName: String,
         line: Int,
         charPos: Int,
-        dsl: String,
+        idl: String,
         origin: String,
         mdl: NCModel): String = {
-        val dslLine = dsl.split("\n")(line - 1)
-        val dash = "-" * dslLine.length
+        val idlLine = idl.split("\n")(line - 1)
+        val dash = "-" * idlLine.length
         val pos = Math.max(0, charPos)
         val posPtr = dash.substring(0, pos) + r("^") + y(dash.substring(pos + 1))
-        val dslPtr = dslLine.substring(0, pos) + r(dslLine.charAt(pos)) + y(dslLine.substring(pos + 1))
+        val idlPtr = idlLine.substring(0, pos) + r(idlLine.charAt(pos)) + y(idlLine.substring(pos + 1))
         val aMsg = U.decapitalize(msg) match {
             case s: String if s.last == '.' ⇒ s
             case s: String ⇒ s + '.'
         }
 
-        s"DSL $kind error in '$srcName' at line $line:${charPos + 1} - $aMsg\n" +
+        s"IDL $kind error in '$srcName' at line $line:${charPos + 1} - $aMsg\n" +
             s"  |-- ${c("Model ID:")} ${mdl.getId}\n" +
             s"  |-- ${c("Model origin:")} ${mdl.getOrigin}\n" +
             s"  |-- ${c("Intent origin:")} $origin\n" +
             s"  |-- $RST$W--------------$RST\n" +
-            s"  |-- ${c("Line:")}     $dslPtr\n" +
+            s"  |-- ${c("Line:")}     $idlPtr\n" +
             s"  +-- ${c("Position:")} $posPtr"
     }
 
@@ -545,27 +545,27 @@ object NCDslCompiler extends LazyLogging {
 
     /**
      *
-     * @param dsl
+     * @param idl
      * @param mdl
      * @param srcName
      * @return
      */
     private def parseIntents(
-        dsl: String,
+        idl: String,
         mdl: NCModel,
         srcName: String
-    ): Set[NCDslIntent] = {
-        require(dsl != null)
+    ): Set[NCIdlIntent] = {
+        require(idl != null)
         require(mdl != null)
         require(srcName != null)
 
-        val x = dsl.strip()
+        val x = idl.strip()
 
-        val intents: Set[NCDslIntent] = intentCache.getOrElseUpdate(x, {
+        val intents: Set[NCIdlIntent] = intentCache.getOrElseUpdate(x, {
             val (fsm, parser) = antlr4Armature(x, mdl, srcName)
 
-            // Parse the input DSL and walk built AST.
-            (new ParseTreeWalker).walk(fsm, parser.dsl())
+            // Parse the input IDL and walk built AST.
+            (new ParseTreeWalker).walk(fsm, parser.idl())
 
             // Return the compiled intents.
             fsm.getCompiledIntents
@@ -576,24 +576,24 @@ object NCDslCompiler extends LazyLogging {
 
     /**
      *
-     * @param dsl
+     * @param idl
      * @param mdl
      * @return
      */
     private def parseSynonym(
-        dsl: String,
+        idl: String,
         mdl: NCModel,
         origin: String
-    ): NCDslSynonym = {
-        require(dsl != null)
+    ): NCIdlSynonym = {
+        require(idl != null)
         require(mdl != null)
 
-        val x = dsl.strip()
+        val x = idl.strip()
 
-        val syn: NCDslSynonym = synCache.getOrElseUpdate(x, {
+        val syn: NCIdlSynonym = synCache.getOrElseUpdate(x, {
             val (fsm, parser) = antlr4Armature(x, mdl, origin)
 
-            // Parse the input DSL and walk built AST.
+            // Parse the input IDL and walk built AST.
             (new ParseTreeWalker).walk(fsm, parser.synonym())
 
             // Return the compiled synonym.
@@ -605,56 +605,56 @@ object NCDslCompiler extends LazyLogging {
 
     /**
      *
-     * @param dsl
+     * @param idl
      * @param mdl
      * @param origin
      * @return
      */
     private def antlr4Armature(
-        dsl: String,
+        idl: String,
         mdl: NCModel,
         origin: String
     ): (FiniteStateMachine, IDP) = {
-        val lexer = new NCIntentDslLexer(CharStreams.fromString(dsl, origin))
+        val lexer = new NCIntentIdlLexer(CharStreams.fromString(idl, origin))
         val parser = new IDP(new CommonTokenStream(lexer))
 
         // Set custom error handlers.
         lexer.removeErrorListeners()
         parser.removeErrorListeners()
-        lexer.addErrorListener(new CompilerErrorListener(dsl, mdl, origin))
-        parser.addErrorListener(new CompilerErrorListener(dsl, mdl, origin))
+        lexer.addErrorListener(new CompilerErrorListener(idl, mdl, origin))
+        parser.addErrorListener(new CompilerErrorListener(idl, mdl, origin))
 
         // State automata + it's parser.
-        new FiniteStateMachine(origin, dsl, mdl) → parser
+        new FiniteStateMachine(origin, idl, mdl) → parser
     }
 
     /**
      * Compiles inline (supplied) fragments and/or intents. Note that fragments are accumulated in a static
      * map keyed by model ID. Only intents are returned, if any.
      *
-     * @param dsl Intent DSL to compile.
-     * @param mdl Model DSL belongs to.
+     * @param idl Intent IDL to compile.
+     * @param mdl Model IDL belongs to.
      * @param origin Optional source name.
      * @return
      */
     @throws[NCE]
     def compileIntents(
-        dsl: String,
+        idl: String,
         mdl: NCModel,
         origin: String
-    ): Set[NCDslIntent] = parseIntents(dsl, mdl, origin)
+    ): Set[NCIdlIntent] = parseIntents(idl, mdl, origin)
 
     /**
       *
-      * @param dsl Synonym DSL to compile.
-      * @param mdl Model DSL belongs to.*
+      * @param idl Synonym IDL to compile.
+      * @param mdl Model IDL belongs to.*
       * @param origin Source name.
       * @return
       */
     @throws[NCE]
     def compileSynonym(
-        dsl: String,
+        idl: String,
         mdl: NCModel,
         origin: String,
-    ): NCDslSynonym = parseSynonym(dsl, mdl, origin)
+    ): NCIdlSynonym = parseSynonym(idl, mdl, origin)
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompilerBase.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompilerBase.scala
similarity index 74%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompilerBase.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompilerBase.scala
index 7164d36..0a7d546 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompilerBase.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompilerBase.scala
@@ -23,8 +23,8 @@ import org.apache.nlpcraft.model.NCToken
 import org.antlr.v4.runtime.{ParserRuleContext ⇒ PRC}
 import org.antlr.v4.runtime.tree.{TerminalNode ⇒ TN}
 import org.apache.commons.collections.CollectionUtils
-import org.apache.nlpcraft.model.intent.NCDslContext
-import org.apache.nlpcraft.model.intent.compiler.{NCDslStackItem ⇒ Z}
+import org.apache.nlpcraft.model.intent.NCIdlContext
+import org.apache.nlpcraft.model.intent.compiler.{NCIdlStackItem ⇒ Z}
 
 import java.lang.{
     Number ⇒ JNumber,
@@ -42,10 +42,10 @@ import java.util.{Calendar, Collections, List ⇒ JList, Map ⇒ JMap}
 
 import scala.collection.JavaConverters._
 
-trait NCDslCompilerBase {
-    type S = NCDslStack
-    type T = NCDslStackType
-    type I = (NCToken, S, NCDslContext) ⇒ Unit
+trait NCIdlCompilerBase {
+    type S = NCIdlStack
+    type T = NCIdlStackType
+    type I = (NCToken, S, NCIdlContext) ⇒ Unit
 
     def syntaxError(errMsg: String, srcName: String, line: Int, pos: Int): NCE
     def runtimeError(errMsg: String, srcName: String, line: Int, pos: Int, cause: Exception = null): NCE
@@ -202,8 +202,8 @@ trait NCDslCompilerBase {
 
         if (lt != null)
             stack.push(() ⇒ {
-                val Z(v1, n1) = x1()
-                val Z(v2, n2) = x2()
+                val NCIdlStackItem(v1, n1) = x1()
+                val NCIdlStackItem(v2, n2) = x2()
 
                 val f =
                     if (isInt(v1) && isInt(v2)) asInt(v1) < asInt(v2)
@@ -217,8 +217,8 @@ trait NCDslCompilerBase {
             })
         else if (gt != null)
             stack.push(() ⇒ {
-                val Z(v1, n1) = x1()
-                val Z(v2, n2) = x2()
+                val NCIdlStackItem(v1, n1) = x1()
+                val NCIdlStackItem(v2, n2) = x2()
 
                 val f =
                     if (isInt(v1) && isInt(v2)) asInt(v1) > asInt(v2)
@@ -232,8 +232,8 @@ trait NCDslCompilerBase {
             })
         else if (lteq != null)
             stack.push(() ⇒ {
-                val Z(v1, n1) = x1()
-                val Z(v2, n2) = x2()
+                val NCIdlStackItem(v1, n1) = x1()
+                val NCIdlStackItem(v2, n2) = x2()
 
                 val f =
                     if (isInt(v1) && isInt(v2)) asInt(v1) <= asInt(v2)
@@ -249,8 +249,8 @@ trait NCDslCompilerBase {
             require(gteq != null)
 
             stack.push(() ⇒ {
-                val Z(v1, n1) = x1()
-                val Z(v2, n2) = x2()
+                val NCIdlStackItem(v1, n1) = x1()
+                val NCIdlStackItem(v2, n2) = x2()
 
                 val f =
                     if (isInt(v1) && isInt(v2)) asInt(v1) >= asInt(v2)
@@ -276,8 +276,8 @@ trait NCDslCompilerBase {
 
         if (mult != null)
             stack.push(() ⇒ {
-                val Z(v1, n1) = x1()
-                val Z(v2, n2) = x2()
+                val NCIdlStackItem(v1, n1) = x1()
+                val NCIdlStackItem(v2, n2) = x2()
 
                 val f =
                     if (isInt(v1) && isInt(v2)) asInt(v1) * asInt(v2)
@@ -291,8 +291,8 @@ trait NCDslCompilerBase {
             })
         else if (mod != null)
             stack.push(() ⇒ {
-                val Z(v1, n1) = x1()
-                val Z(v2, n2) = x2()
+                val NCIdlStackItem(v1, n1) = x1()
+                val NCIdlStackItem(v2, n2) = x2()
 
                 val f =
                     if (isInt(v1) && isInt(v2)) asInt(v1) % asInt(v2)
@@ -305,8 +305,8 @@ trait NCDslCompilerBase {
             assert(div != null)
 
             stack.push(() ⇒ {
-                val Z(v1, n1) = x1()
-                val Z(v2, n2) = x2()
+                val NCIdlStackItem(v1, n1) = x1()
+                val NCIdlStackItem(v2, n2) = x2()
 
                 val f =
                     if (isInt(v1) && isInt(v2)) asInt(v1) / asInt(v2)
@@ -333,7 +333,7 @@ trait NCDslCompilerBase {
         stack.push(() ⇒ {
             val (op, flag) = if (and != null) ("&&", false) else ("||", true)
 
-            val Z(v1, n1) = x1()
+            val NCIdlStackItem(v1, n1) = x1()
 
             if (!isBool(v1))
                 throw rtBinaryOpError(op, v1, x2().value)
@@ -342,7 +342,7 @@ trait NCDslCompilerBase {
             if (asBool(v1) == flag)
                 Z(flag, n1)
             else {
-                val Z(v2, n2) = x2()
+                val NCIdlStackItem(v2, n2) = x2()
 
                 if (!isBool(v2))
                     throw rtBinaryOpError(op, v2, v1)
@@ -374,8 +374,8 @@ trait NCDslCompilerBase {
         }
 
         stack.push(() ⇒ {
-            val Z(v1, n1) = x1()
-            val Z(v2, n2) = x2()
+            val NCIdlStackItem(v1, n1) = x1()
+            val NCIdlStackItem(v2, n2) = x2()
 
             val f =
                 if (eq != null)
@@ -399,8 +399,8 @@ trait NCDslCompilerBase {
         val (x1, x2) = pop2()(stack, ctx)
 
         def extract(): (Object, Object, Int) = {
-            val Z(v1, n1) = x1()
-            val Z(v2, n2) = x2()
+            val NCIdlStackItem(v1, n1) = x1()
+            val NCIdlStackItem(v2, n2) = x2()
 
             (v1, v2, n1 + n2)
         }
@@ -446,7 +446,7 @@ trait NCDslCompilerBase {
 
         if (minus != null)
             stack.push(() ⇒ {
-                val Z(v, n) = x()
+                val NCIdlStackItem(v, n) = x()
 
                 val z =
                     if (isReal(v)) -asReal(v)
@@ -460,7 +460,7 @@ trait NCDslCompilerBase {
             assert(not != null)
 
             stack.push(() ⇒ {
-                val Z(v, n) = x()
+                val NCIdlStackItem(v, n) = x()
 
                 if (isBool(v)) Z(!asBool(v), n)
                 else
@@ -550,8 +550,8 @@ trait NCDslCompilerBase {
 
             stack.push(
                 () ⇒ {
-                    val Z(v1, n1) = x1()
-                    val Z(v2, n2) = x2()
+                    val NCIdlStackItem(v1, n1) = x1()
+                    val NCIdlStackItem(v2, n2) = x2()
 
                    Z(util.Arrays.asList(toStr(v1).split(toStr(v2))), n1 + n2)
                 }
@@ -563,8 +563,8 @@ trait NCDslCompilerBase {
 
             stack.push(
                 () ⇒ {
-                    val Z(v1, n1) = x1()
-                    val Z(v2, n2) = x2()
+                    val NCIdlStackItem(v1, n1) = x1()
+                    val NCIdlStackItem(v2, n2) = x2()
 
                     Z(util.Arrays.asList(toStr(v1).split(toStr(v2)).toList.map(_.strip)), n1 + n2)
                 }
@@ -584,7 +584,7 @@ trait NCDslCompilerBase {
                 var z = 0
 
                 dump.reverse.foreach { x ⇒
-                    val Z(v, n) = x()
+                    val NCIdlStackItem(v, n) = x()
 
                     z += n
 
@@ -599,7 +599,7 @@ trait NCDslCompilerBase {
             val x = arg1()
             
             stack.push(() ⇒ {
-                val Z(v, n) = x()
+                val NCIdlStackItem(v, n) = x()
         
                 val jl = toJList(v)
         
@@ -613,7 +613,7 @@ trait NCDslCompilerBase {
             val x = arg1()
     
             stack.push(() ⇒ {
-                val Z(v, n) = x()
+                val NCIdlStackItem(v, n) = x()
                 
                 val lst = toJList(v).asInstanceOf[util.List[Object]]
                 
@@ -632,7 +632,7 @@ trait NCDslCompilerBase {
             val x = arg1()
         
             stack.push(() ⇒ {
-                val Z(v, n) = x()
+                val NCIdlStackItem(v, n) = x()
             
                 val lst = toJList(v).asInstanceOf[util.List[Object]]
             
@@ -651,7 +651,7 @@ trait NCDslCompilerBase {
             val x = arg1()
         
             stack.push(() ⇒ {
-                val Z(v, n) = x()
+                val NCIdlStackItem(v, n) = x()
             
                 val jl = toJList(v)
                 
@@ -665,8 +665,8 @@ trait NCDslCompilerBase {
             val (x1, x2) = arg2()
 
             stack.push(() ⇒ {
-                val Z(v1, n1) = x1()
-                val Z(v2, n2) = x2()
+                val NCIdlStackItem(v1, n1) = x1()
+                val NCIdlStackItem(v2, n2) = x2()
 
                 Z(toJList(v1).contains(v2), n1 + n2)
             })
@@ -676,8 +676,8 @@ trait NCDslCompilerBase {
             val (x1, x2) = arg2()
 
             stack.push(() ⇒ {
-                val Z(col, n1) = x1()
-                val Z(key, n2) = x2()
+                val NCIdlStackItem(col, n1) = x1()
+                val NCIdlStackItem(key, n2) = x2()
                 val n = n1 + n2
 
                 if (isJList(col)) {
@@ -695,7 +695,7 @@ trait NCDslCompilerBase {
 
         def doAbs(): Unit = arg1() match {
             case x ⇒ stack.push(() ⇒ {
-                val Z(v, n) = x()
+                val NCIdlStackItem(v, n) = x()
 
                 v match {
                     case a: JLong ⇒ Z(Math.abs(a), n)
@@ -707,7 +707,7 @@ trait NCDslCompilerBase {
 
         def doSquare(): Unit = arg1() match {
             case x ⇒ stack.push(() ⇒ {
-                val Z(v, n) = x()
+                val NCIdlStackItem(v, n) = x()
 
                 v match {
                     case a: JLong ⇒ Z(a * a, n)
@@ -721,15 +721,15 @@ trait NCDslCompilerBase {
             val (x1, x2, x3) = arg3()
 
             stack.push(() ⇒ {
-                val Z(v1, n1) = x1()
+                val NCIdlStackItem(v1, n1) = x1()
 
                 if (toBool(v1)) {
-                    val Z(v2, n2) = x2()
+                    val NCIdlStackItem(v2, n2) = x2()
 
                     Z(v2, n1 + n2)
                 }
                 else {
-                    val Z(v3, n3) = x3()
+                    val NCIdlStackItem(v3, n3) = x3()
 
                     Z(v3, n1 + n3)
                 }
@@ -741,8 +741,8 @@ trait NCDslCompilerBase {
             val (x1, x2) = arg2()
 
             stack.push(() ⇒ {
-                val Z(t, n1) = x1()
-                val Z(a, n2) = x2()
+                val NCIdlStackItem(t, n1) = x1()
+                val NCIdlStackItem(a, n2) = x2()
 
                 val tok = toToken(t)
                 val aliasId = toStr(a)
@@ -769,8 +769,8 @@ trait NCDslCompilerBase {
             val (x1, x2) = arg2()
 
             stack.push(() ⇒ {
-                val Z(t, n1) = x1()
-                val Z(a, n2) = x2()
+                val NCIdlStackItem(t, n1) = x1()
+                val NCIdlStackItem(a, n2) = x2()
 
                 val tok = toToken(t)
                 val aliasId = toStr(a)
@@ -784,19 +784,19 @@ trait NCDslCompilerBase {
 
         fun match {
             // Metadata access.
-            case "meta_part" ⇒ z[(T, T)](arg2, { x ⇒ val Z(v1, n1) = x._1(); val Z(v2, n2) = x._2(); Z(toToken(v1).meta[Object](toStr(v2)), n1 + n2) })
-            case "meta_token" ⇒ z[T](arg1, { x ⇒ val Z(v, _) = x(); Z(tok.meta[Object](toStr(v)), 1) })
-            case "meta_model" ⇒ z[T](arg1, { x ⇒ val Z(v, _) = x(); Z(tok.getModel.meta[Object](toStr(v)), 0) })
-            case "meta_intent" ⇒ z[T](arg1, { x ⇒ val Z(v, _) = x(); Z(termCtx.intentMeta.get(toStr(v)).orNull, 0) })
-            case "meta_req" ⇒ z[T](arg1, { x ⇒ val Z(v, _) = x(); Z(termCtx.req.getRequestData.get(toStr(v)), 0) })
-            case "meta_user" ⇒ z[T](arg1, { x ⇒ val Z(v, _) = x(); Z(termCtx.req.getUser.getMetadata.get(toStr(v)), 0) })
-            case "meta_company" ⇒ z[T](arg1, { x ⇒ val Z(v, _) = x(); Z(termCtx.req.getCompany.getMetadata.get(v), 0) })
-            case "meta_sys" ⇒ z[T](arg1, { x ⇒ val Z(v, _) = x(); Z(U.sysEnv(toStr(v)).orNull, 0) })
-            case "meta_conv" ⇒ z[T](arg1, { x ⇒ val Z(v, _) = x(); Z(termCtx.convMeta.get(toStr(v)).orNull, 0) })
-            case "meta_frag" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(termCtx.fragMeta.get(toStr(v)).orNull, f) })
+            case "meta_part" ⇒ z[(T, T)](arg2, { x ⇒ val NCIdlStackItem(v1, n1) = x._1(); val NCIdlStackItem(v2, n2) = x._2(); Z(toToken(v1).meta[Object](toStr(v2)), n1 + n2) })
+            case "meta_token" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, _) = x(); Z(tok.meta[Object](toStr(v)), 1) })
+            case "meta_model" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, _) = x(); Z(tok.getModel.meta[Object](toStr(v)), 0) })
+            case "meta_intent" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, _) = x(); Z(termCtx.intentMeta.get(toStr(v)).orNull, 0) })
+            case "meta_req" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, _) = x(); Z(termCtx.req.getRequestData.get(toStr(v)), 0) })
+            case "meta_user" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, _) = x(); Z(termCtx.req.getUser.getMetadata.get(toStr(v)), 0) })
+            case "meta_company" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, _) = x(); Z(termCtx.req.getCompany.getMetadata.get(v), 0) })
+            case "meta_sys" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, _) = x(); Z(U.sysEnv(toStr(v)).orNull, 0) })
+            case "meta_conv" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, _) = x(); Z(termCtx.convMeta.get(toStr(v)).orNull, 0) })
+            case "meta_frag" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(termCtx.fragMeta.get(toStr(v)).orNull, f) })
 
             // Converts JSON to map.
-            case "json" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(U.jsonToJavaMap(asStr(v)), f) })
+            case "json" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(U.jsonToJavaMap(asStr(v)), f) })
 
             // Inline if-statement.
             case "if" ⇒ doIf()
@@ -840,16 +840,16 @@ trait NCDslCompilerBase {
             case "comp_postcode" ⇒ z0(() ⇒ Z(termCtx.req.getCompany.getPostalCode, 0))
 
             // String functions.
-            case "trim" | "strip" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(toStr(v).trim, f) })
-            case "uppercase" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(toStr(v).toUpperCase, f) })
-            case "lowercase" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(toStr(v).toLowerCase, f) })
-            case "is_alpha" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(StringUtils.isAlpha(toStr(v)), f) })
-            case "is_alphanum" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(StringUtils.isAlphanumeric(toStr(v)), f) })
-            case "is_whitespace" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(StringUtils.isWhitespace(toStr(v)), f) })
-            case "is_num" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(StringUtils.isNumeric(toStr(v)), f) })
-            case "is_numspace" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(StringUtils.isNumericSpace(toStr(v)), f) })
-            case "is_alphaspace" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(StringUtils.isAlphaSpace(toStr(v)), f) })
-            case "is_alphanumspace" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(StringUtils.isAlphanumericSpace(toStr(v)), f) }) 
+            case "trim" | "strip" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(toStr(v).trim, f) })
+            case "uppercase" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(toStr(v).toUpperCase, f) })
+            case "lowercase" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(toStr(v).toLowerCase, f) })
+            case "is_alpha" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(StringUtils.isAlpha(toStr(v)), f) })
+            case "is_alphanum" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(StringUtils.isAlphanumeric(toStr(v)), f) })
+            case "is_whitespace" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(StringUtils.isWhitespace(toStr(v)), f) })
+            case "is_num" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(StringUtils.isNumeric(toStr(v)), f) })
+            case "is_numspace" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(StringUtils.isNumericSpace(toStr(v)), f) })
+            case "is_alphaspace" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(StringUtils.isAlphaSpace(toStr(v)), f) })
+            case "is_alphanumspace" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(StringUtils.isAlphanumericSpace(toStr(v)), f) })
             case "substring" ⇒
             case "charAt" ⇒
             case "regex" ⇒
@@ -861,35 +861,35 @@ trait NCDslCompilerBase {
             // Math functions.
             case "abs" ⇒ doAbs()
             case "ceil" ⇒ arg1() match { case item ⇒ stack.push(() ⇒ {
-                val Z(v, f) = item()
+                val NCIdlStackItem(v, f) = item()
 
                 Z(Math.ceil(toJDouble(v)), f)
             }) }
-            case "floor" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.floor(toJDouble(v)), f) }) 
-            case "rint" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.rint(toJDouble(v)), f) }) 
-            case "round" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.round(toJDouble(v)), f) }) 
-            case "signum" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.signum(toJDouble(v)), f) }) 
-            case "sqrt" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.sqrt(toJDouble(v)), f) }) 
-            case "cbrt" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.cbrt(toJDouble(v)), f) }) 
-            case "acos" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.acos(toJDouble(v)), f) }) 
-            case "asin" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.asin(toJDouble(v)), f) }) 
-            case "atan" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z( Math.atan(toJDouble(v)), f) }) 
-            case "cos" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.cos(toJDouble(v)), f) }) 
-            case "sin" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.sin(toJDouble(v)), f) }) 
-            case "tan" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.tan(toJDouble(v)), f) }) 
-            case "cosh" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.cosh(toJDouble(v)), f) }) 
-            case "sinh" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.sinh(toJDouble(v)), f) }) 
-            case "tanh" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.tanh(toJDouble(v)), f) }) 
-            case "atn2" ⇒ z[(T, T)](arg2, { x ⇒ val Z(v1, n1) = x._1(); val Z(v2, n2) = x._2(); Z(Math.atan2(toJDouble(v1), toJDouble(v2)), n1 + n2) })
-            case "degrees" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.toDegrees(toJDouble(v)), f) }) 
-            case "radians" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z( Math.toRadians(toJDouble(v)), f) }) 
-            case "exp" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.exp(toJDouble(v)), f) }) 
-            case "expm1" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.expm1(toJDouble(v)), f) }) 
-            case "hypot" ⇒ z[(T, T)](arg2, { x ⇒ val Z(v1, n1) = x._1(); val Z(v2, n2) = x._2(); Z(Math.hypot(toJDouble(v1), toJDouble(v2)), n1 + n2) })
-            case "log" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.log(toJDouble(v)), f) }) 
-            case "log10" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.log10(toJDouble(v)), f) }) 
-            case "log1p" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(Math.log1p(toJDouble(v)), f) }) 
-            case "pow" ⇒ z[(T, T)](arg2, { x ⇒ val Z(v1, f1) = x._1(); val Z(v2, f2) = x._2(); Z(Math.pow(toJDouble(v1), toJDouble(v2)), f1 + f2 + 1) })
+            case "floor" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.floor(toJDouble(v)), f) })
+            case "rint" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.rint(toJDouble(v)), f) })
+            case "round" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.round(toJDouble(v)), f) })
+            case "signum" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.signum(toJDouble(v)), f) })
+            case "sqrt" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.sqrt(toJDouble(v)), f) })
+            case "cbrt" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.cbrt(toJDouble(v)), f) })
+            case "acos" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.acos(toJDouble(v)), f) })
+            case "asin" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.asin(toJDouble(v)), f) })
+            case "atan" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z( Math.atan(toJDouble(v)), f) })
+            case "cos" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.cos(toJDouble(v)), f) })
+            case "sin" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.sin(toJDouble(v)), f) })
+            case "tan" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.tan(toJDouble(v)), f) })
+            case "cosh" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.cosh(toJDouble(v)), f) })
+            case "sinh" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.sinh(toJDouble(v)), f) })
+            case "tanh" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.tanh(toJDouble(v)), f) })
+            case "atn2" ⇒ z[(T, T)](arg2, { x ⇒ val NCIdlStackItem(v1, n1) = x._1(); val NCIdlStackItem(v2, n2) = x._2(); Z(Math.atan2(toJDouble(v1), toJDouble(v2)), n1 + n2) })
+            case "degrees" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.toDegrees(toJDouble(v)), f) })
+            case "radians" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z( Math.toRadians(toJDouble(v)), f) })
+            case "exp" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.exp(toJDouble(v)), f) })
+            case "expm1" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.expm1(toJDouble(v)), f) })
+            case "hypot" ⇒ z[(T, T)](arg2, { x ⇒ val NCIdlStackItem(v1, n1) = x._1(); val NCIdlStackItem(v2, n2) = x._2(); Z(Math.hypot(toJDouble(v1), toJDouble(v2)), n1 + n2) })
+            case "log" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.log(toJDouble(v)), f) })
+            case "log10" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.log10(toJDouble(v)), f) })
+            case "log1p" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(Math.log1p(toJDouble(v)), f) })
+            case "pow" ⇒ z[(T, T)](arg2, { x ⇒ val NCIdlStackItem(v1, f1) = x._1(); val NCIdlStackItem(v2, f2) = x._2(); Z(Math.pow(toJDouble(v1), toJDouble(v2)), f1 + f2 + 1) })
             case "square" ⇒ doSquare()
             case "pi" ⇒ z0(() ⇒ Z(Math.PI, 0))
             case "euler" ⇒ z0(() ⇒ Z(Math.E, 0))
@@ -899,16 +899,16 @@ trait NCDslCompilerBase {
             case "list" ⇒ doList()
             case "get" ⇒ doGet()
             case "has" ⇒ doHas()
-            case "first" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); val lst = toJList(v); Z(if (lst.isEmpty) null else lst.get(0).asInstanceOf[Object], f)})
-            case "last" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); val lst = toJList(v); Z(if (lst.isEmpty) null else lst.get(lst.size() - 1).asInstanceOf[Object], f)}) 
-            case "keys" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(new util.ArrayList(toJMap(v).keySet()), f) }) 
-            case "values" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(new util.ArrayList(toJMap(v).values()), f) }) 
-            case "size" | "count" | "length" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(toJList(v).size(), f)})
+            case "first" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); val lst = toJList(v); Z(if (lst.isEmpty) null else lst.get(0).asInstanceOf[Object], f)})
+            case "last" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); val lst = toJList(v); Z(if (lst.isEmpty) null else lst.get(lst.size() - 1).asInstanceOf[Object], f)})
+            case "keys" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(new util.ArrayList(toJMap(v).keySet()), f) })
+            case "values" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(new util.ArrayList(toJMap(v).values()), f) })
+            case "size" | "count" | "length" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(toJList(v).size(), f)})
             case "reverse" ⇒ doReverse()
             case "sort" ⇒ doSort()
-            case "is_empty" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(toJList(v).isEmpty, f) }) 
-            case "non_empty" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(!toJList(v).isEmpty, f) }) 
-            case "to_string" ⇒ z[T](arg1, { x ⇒ val Z(v, f) = x(); Z(toJList(v).asScala.map(_.toString).asJava, f) }) 
+            case "is_empty" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(toJList(v).isEmpty, f) })
+            case "non_empty" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(!toJList(v).isEmpty, f) })
+            case "to_string" ⇒ z[T](arg1, { x ⇒ val NCIdlStackItem(v, f) = x(); Z(toJList(v).asScala.map(_.toString).asJava, f) })
 
             // Statistical operations on lists.
             case "avg" ⇒
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompilerGlobal.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompilerGlobal.scala
similarity index 85%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompilerGlobal.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompilerGlobal.scala
index 4e2e9b9..697dadf 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompilerGlobal.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompilerGlobal.scala
@@ -21,10 +21,10 @@ import scala.collection.concurrent.TrieMap
 import scala.collection.mutable
 
 /**
- * Global DSL compiler state.
+ * Global IDL compiler state.
  */
-object NCDslCompilerGlobal {
-    private final val fragCache = TrieMap.empty[String /* Model ID. */ , mutable.Map[String, NCDslFragment]]
+object NCIdlCompilerGlobal {
+    private final val fragCache = TrieMap.empty[String /* Model ID. */ , mutable.Map[String, NCIdlFragment]]
     private final val importCache = mutable.HashSet.empty[String]
 
     /**
@@ -47,7 +47,7 @@ object NCDslCompilerGlobal {
      *
      * @param mdlId
      */
-    def clearCache(mdlId: String): Unit = fragCache += mdlId → mutable.HashMap.empty[String, NCDslFragment]
+    def clearCache(mdlId: String): Unit = fragCache += mdlId → mutable.HashMap.empty[String, NCIdlFragment]
 
     /**
      *
@@ -67,9 +67,9 @@ object NCDslCompilerGlobal {
      * @param mdlId
      * @param frag
      */
-    def addFragment(mdlId: String, frag: NCDslFragment): Unit =
+    def addFragment(mdlId: String, frag: NCIdlFragment): Unit =
         fragCache.getOrElse(mdlId, {
-            val m = mutable.HashMap.empty[String, NCDslFragment]
+            val m = mutable.HashMap.empty[String, NCIdlFragment]
 
             fragCache += mdlId → m
 
@@ -82,6 +82,6 @@ object NCDslCompilerGlobal {
      * @param fragId
      * @return
      */
-    def getFragment(mdlId: String, fragId: String): Option[NCDslFragment] =
+    def getFragment(mdlId: String, fragId: String): Option[NCIdlFragment] =
         fragCache.get(mdlId).flatMap(_.get(fragId))
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslFragment.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlFragment.scala
similarity index 89%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslFragment.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlFragment.scala
index 66e5daa..1e7fec7 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslFragment.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlFragment.scala
@@ -17,17 +17,17 @@
 
 package org.apache.nlpcraft.model.intent.compiler
 
-import org.apache.nlpcraft.model.intent.NCDslTerm
+import org.apache.nlpcraft.model.intent.NCIdlTerm
 
 /**
- * DSL fragment.
+ * IDL fragment.
  *
  * @param id ID of this fragment (must be unique within a model).
  * @param terms List of terms this fragment defines.
  */
-case class NCDslFragment(
+case class NCIdlFragment(
     id: String,
-    terms: List[NCDslTerm]
+    terms: List[NCIdlTerm]
 ) {
     require(id != null)
     require(terms.nonEmpty)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslStack.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlStack.scala
similarity index 72%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslStack.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlStack.scala
index f16f7d7..ba36546 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslStack.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlStack.scala
@@ -22,28 +22,28 @@ import scala.collection.mutable
 /**
   *
   */
-case class NCDslStackItem (
+case class NCIdlStackItem (
     value: Object,
     tokUse: Int
 )
 
-object NCDslStackItem {
-    def apply(v: Boolean, f: Int): NCDslStackItem = new NCDslStackItem(Boolean.box(v), f)
-    def apply(v: Long, f: Int): NCDslStackItem = new NCDslStackItem(Long.box(v), f)
-    def apply(v: Double, f: Int): NCDslStackItem = new NCDslStackItem(Double.box(v), f)
+object NCIdlStackItem {
+    def apply(v: Boolean, f: Int): NCIdlStackItem = new NCIdlStackItem(Boolean.box(v), f)
+    def apply(v: Long, f: Int): NCIdlStackItem = new NCIdlStackItem(Long.box(v), f)
+    def apply(v: Double, f: Int): NCIdlStackItem = new NCIdlStackItem(Double.box(v), f)
 }
 
 /**
   *
   */
-trait NCDslStackType extends (() ⇒ NCDslStackItem)
+trait NCIdlStackType extends (() ⇒ NCIdlStackItem)
 
 /**
   *
   */
-class NCDslStack extends mutable.ArrayStack[NCDslStackType] {
+class NCIdlStack extends mutable.ArrayStack[NCIdlStackType] {
     /**
       * Special marker for stack frames.
       */
-    final val PLIST_MARKER: NCDslStackType = () ⇒ { NCDslStackItem(null, 0) }
+    final val PLIST_MARKER: NCIdlStackType = () ⇒ { NCIdlStackItem(null, 0) }
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.interp b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.interp
new file mode 100644
index 0000000..d305c17
--- /dev/null
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.interp
@@ -0,0 +1,148 @@
+token literal names:
+null
+'import'
+'intent'
+'ordered'
+'flow'
+'meta'
+'term'
+null
+'fragment'
+null
+null
+null
+'null'
+'=='
+'!='
+'>='
+'<='
+'>'
+'<'
+'&&'
+'||'
+'|'
+'!'
+'('
+')'
+'{'
+'}'
+'\''
+'"'
+'~'
+'['
+']'
+'#'
+','
+':'
+'-'
+'.'
+'_'
+'='
+'+'
+'?'
+'*'
+'/'
+'%'
+'$'
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+null
+null
+null
+null
+null
+null
+null
+FUN_NAME
+FRAG
+SQSTRING
+DQSTRING
+BOOL
+NULL
+EQ
+NEQ
+GTEQ
+LTEQ
+GT
+LT
+AND
+OR
+VERT
+NOT
+LPAR
+RPAR
+LBRACE
+RBRACE
+SQUOTE
+DQUOTE
+TILDA
+LBR
+RBR
+POUND
+COMMA
+COLON
+MINUS
+DOT
+UNDERSCORE
+ASSIGN
+PLUS
+QUESTION
+MULT
+DIV
+MOD
+DOLLAR
+INT
+REAL
+EXP
+ID
+COMMENT
+WS
+ErrorChar
+
+rule names:
+idl
+synonym
+alias
+idlItems
+idlItem
+imp
+frag
+fragId
+fragRef
+fragMeta
+intent
+intentId
+orderedDecl
+mtdDecl
+flowDecl
+metaDecl
+jsonObj
+jsonPair
+jsonVal
+jsonArr
+terms
+termItem
+termEq
+term
+mtdRef
+javaFqn
+termId
+expr
+paramList
+atom
+qstring
+minMax
+minMaxShortcut
+minMaxRange
+id
+
+
+atn:
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 53, 338, 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, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, [...]
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.tokens b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.tokens
new file mode 100644
index 0000000..5680142
--- /dev/null
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.tokens
@@ -0,0 +1,91 @@
+T__0=1
+T__1=2
+T__2=3
+T__3=4
+T__4=5
+T__5=6
+FUN_NAME=7
+FRAG=8
+SQSTRING=9
+DQSTRING=10
+BOOL=11
+NULL=12
+EQ=13
+NEQ=14
+GTEQ=15
+LTEQ=16
+GT=17
+LT=18
+AND=19
+OR=20
+VERT=21
+NOT=22
+LPAR=23
+RPAR=24
+LBRACE=25
+RBRACE=26
+SQUOTE=27
+DQUOTE=28
+TILDA=29
+LBR=30
+RBR=31
+POUND=32
+COMMA=33
+COLON=34
+MINUS=35
+DOT=36
+UNDERSCORE=37
+ASSIGN=38
+PLUS=39
+QUESTION=40
+MULT=41
+DIV=42
+MOD=43
+DOLLAR=44
+INT=45
+REAL=46
+EXP=47
+ID=48
+COMMENT=49
+WS=50
+ErrorChar=51
+'import'=1
+'intent'=2
+'ordered'=3
+'flow'=4
+'meta'=5
+'term'=6
+'fragment'=8
+'null'=12
+'=='=13
+'!='=14
+'>='=15
+'<='=16
+'>'=17
+'<'=18
+'&&'=19
+'||'=20
+'|'=21
+'!'=22
+'('=23
+')'=24
+'{'=25
+'}'=26
+'\''=27
+'"'=28
+'~'=29
+'['=30
+']'=31
+'#'=32
+','=33
+':'=34
+'-'=35
+'.'=36
+'_'=37
+'='=38
+'+'=39
+'?'=40
+'*'=41
+'/'=42
+'%'=43
+'$'=44
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseListener.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseListener.java
new file mode 100644
index 0000000..4661771
--- /dev/null
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseListener.java
@@ -0,0 +1,555 @@
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
+package org.apache.nlpcraft.model.intent.compiler.antlr4;
+
+import org.antlr.v4.runtime.ParserRuleContext;
+import org.antlr.v4.runtime.tree.ErrorNode;
+import org.antlr.v4.runtime.tree.TerminalNode;
+
+/**
+ * This class provides an empty implementation of {@link NCIntentIdlListener},
+ * which can be extended to create a listener which only needs to handle a subset
+ * of the available methods.
+ */
+public class NCIntentIdlBaseListener implements NCIntentIdlListener {
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterIdl(NCIntentIdlParser.IdlContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitIdl(NCIntentIdlParser.IdlContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterSynonym(NCIntentIdlParser.SynonymContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitSynonym(NCIntentIdlParser.SynonymContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterAlias(NCIntentIdlParser.AliasContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitAlias(NCIntentIdlParser.AliasContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterIdlItems(NCIntentIdlParser.IdlItemsContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitIdlItems(NCIntentIdlParser.IdlItemsContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterIdlItem(NCIntentIdlParser.IdlItemContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitIdlItem(NCIntentIdlParser.IdlItemContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterImp(NCIntentIdlParser.ImpContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitImp(NCIntentIdlParser.ImpContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterFrag(NCIntentIdlParser.FragContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitFrag(NCIntentIdlParser.FragContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterFragId(NCIntentIdlParser.FragIdContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitFragId(NCIntentIdlParser.FragIdContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterFragRef(NCIntentIdlParser.FragRefContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitFragRef(NCIntentIdlParser.FragRefContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterFragMeta(NCIntentIdlParser.FragMetaContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitFragMeta(NCIntentIdlParser.FragMetaContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterIntent(NCIntentIdlParser.IntentContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitIntent(NCIntentIdlParser.IntentContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterIntentId(NCIntentIdlParser.IntentIdContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitIntentId(NCIntentIdlParser.IntentIdContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterMtdDecl(NCIntentIdlParser.MtdDeclContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitMtdDecl(NCIntentIdlParser.MtdDeclContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterFlowDecl(NCIntentIdlParser.FlowDeclContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitFlowDecl(NCIntentIdlParser.FlowDeclContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterMetaDecl(NCIntentIdlParser.MetaDeclContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitMetaDecl(NCIntentIdlParser.MetaDeclContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterJsonObj(NCIntentIdlParser.JsonObjContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitJsonObj(NCIntentIdlParser.JsonObjContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterJsonPair(NCIntentIdlParser.JsonPairContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitJsonPair(NCIntentIdlParser.JsonPairContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterJsonVal(NCIntentIdlParser.JsonValContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitJsonVal(NCIntentIdlParser.JsonValContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterJsonArr(NCIntentIdlParser.JsonArrContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitJsonArr(NCIntentIdlParser.JsonArrContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterTerms(NCIntentIdlParser.TermsContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitTerms(NCIntentIdlParser.TermsContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterTermItem(NCIntentIdlParser.TermItemContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitTermItem(NCIntentIdlParser.TermItemContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterTermEq(NCIntentIdlParser.TermEqContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitTermEq(NCIntentIdlParser.TermEqContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterTerm(NCIntentIdlParser.TermContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitTerm(NCIntentIdlParser.TermContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterMtdRef(NCIntentIdlParser.MtdRefContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitMtdRef(NCIntentIdlParser.MtdRefContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterJavaFqn(NCIntentIdlParser.JavaFqnContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitJavaFqn(NCIntentIdlParser.JavaFqnContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterTermId(NCIntentIdlParser.TermIdContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitTermId(NCIntentIdlParser.TermIdContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterParExpr(NCIntentIdlParser.ParExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitParExpr(NCIntentIdlParser.ParExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterCompExpr(NCIntentIdlParser.CompExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitCompExpr(NCIntentIdlParser.CompExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterAtomExpr(NCIntentIdlParser.AtomExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitAtomExpr(NCIntentIdlParser.AtomExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterCallExpr(NCIntentIdlParser.CallExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitCallExpr(NCIntentIdlParser.CallExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterParamList(NCIntentIdlParser.ParamListContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitParamList(NCIntentIdlParser.ParamListContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterAtom(NCIntentIdlParser.AtomContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitAtom(NCIntentIdlParser.AtomContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterQstring(NCIntentIdlParser.QstringContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitQstring(NCIntentIdlParser.QstringContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterMinMax(NCIntentIdlParser.MinMaxContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitMinMax(NCIntentIdlParser.MinMaxContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterId(NCIntentIdlParser.IdContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitId(NCIntentIdlParser.IdContext ctx) { }
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void enterEveryRule(ParserRuleContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitEveryRule(ParserRuleContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void visitTerminal(TerminalNode node) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void visitErrorNode(ErrorNode node) { }
+}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.interp b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.interp
new file mode 100644
index 0000000..218e2cb
--- /dev/null
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.interp
@@ -0,0 +1,172 @@
+token literal names:
+null
+'import'
+'intent'
+'ordered'
+'flow'
+'meta'
+'term'
+null
+'fragment'
+null
+null
+null
+'null'
+'=='
+'!='
+'>='
+'<='
+'>'
+'<'
+'&&'
+'||'
+'|'
+'!'
+'('
+')'
+'{'
+'}'
+'\''
+'"'
+'~'
+'['
+']'
+'#'
+','
+':'
+'-'
+'.'
+'_'
+'='
+'+'
+'?'
+'*'
+'/'
+'%'
+'$'
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+null
+null
+null
+null
+null
+null
+null
+FUN_NAME
+FRAG
+SQSTRING
+DQSTRING
+BOOL
+NULL
+EQ
+NEQ
+GTEQ
+LTEQ
+GT
+LT
+AND
+OR
+VERT
+NOT
+LPAR
+RPAR
+LBRACE
+RBRACE
+SQUOTE
+DQUOTE
+TILDA
+LBR
+RBR
+POUND
+COMMA
+COLON
+MINUS
+DOT
+UNDERSCORE
+ASSIGN
+PLUS
+QUESTION
+MULT
+DIV
+MOD
+DOLLAR
+INT
+REAL
+EXP
+ID
+COMMENT
+WS
+ErrorChar
+
+rule names:
+T__0
+T__1
+T__2
+T__3
+T__4
+T__5
+FUN_NAME
+FRAG
+SQSTRING
+DQSTRING
+BOOL
+NULL
+EQ
+NEQ
+GTEQ
+LTEQ
+GT
+LT
+AND
+OR
+VERT
+NOT
+LPAR
+RPAR
+LBRACE
+RBRACE
+SQUOTE
+DQUOTE
+TILDA
+LBR
+RBR
+POUND
+COMMA
+COLON
+MINUS
+DOT
+UNDERSCORE
+ASSIGN
+PLUS
+QUESTION
+MULT
+DIV
+MOD
+DOLLAR
+INT
+REAL
+EXP
+UNI_CHAR
+LETTER
+ID
+COMMENT
+WS
+ErrorChar
+
+channel names:
+DEFAULT_TOKEN_CHANNEL
+HIDDEN
+
+mode names:
+DEFAULT_MODE
+
+atn:
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 53, 1185, 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, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, [...]
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.java
new file mode 100644
index 0000000..70f4bf6
--- /dev/null
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.java
@@ -0,0 +1,568 @@
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
+package org.apache.nlpcraft.model.intent.compiler.antlr4;
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
+public class NCIntentIdlLexer extends Lexer {
+	static { RuntimeMetaData.checkVersion("4.9.1", RuntimeMetaData.VERSION); }
+
+	protected static final DFA[] _decisionToDFA;
+	protected static final PredictionContextCache _sharedContextCache =
+		new PredictionContextCache();
+	public static final int
+		T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, FUN_NAME=7, FRAG=8, SQSTRING=9, 
+		DQSTRING=10, BOOL=11, NULL=12, EQ=13, NEQ=14, GTEQ=15, LTEQ=16, GT=17, 
+		LT=18, AND=19, OR=20, VERT=21, NOT=22, LPAR=23, RPAR=24, LBRACE=25, RBRACE=26, 
+		SQUOTE=27, DQUOTE=28, TILDA=29, LBR=30, RBR=31, POUND=32, COMMA=33, COLON=34, 
+		MINUS=35, DOT=36, UNDERSCORE=37, ASSIGN=38, PLUS=39, QUESTION=40, MULT=41, 
+		DIV=42, MOD=43, DOLLAR=44, INT=45, REAL=46, EXP=47, ID=48, COMMENT=49, 
+		WS=50, ErrorChar=51;
+	public static String[] channelNames = {
+		"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
+	};
+
+	public static String[] modeNames = {
+		"DEFAULT_MODE"
+	};
+
+	private static String[] makeRuleNames() {
+		return new String[] {
+			"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "FUN_NAME", "FRAG", "SQSTRING", 
+			"DQSTRING", "BOOL", "NULL", "EQ", "NEQ", "GTEQ", "LTEQ", "GT", "LT", 
+			"AND", "OR", "VERT", "NOT", "LPAR", "RPAR", "LBRACE", "RBRACE", "SQUOTE", 
+			"DQUOTE", "TILDA", "LBR", "RBR", "POUND", "COMMA", "COLON", "MINUS", 
+			"DOT", "UNDERSCORE", "ASSIGN", "PLUS", "QUESTION", "MULT", "DIV", "MOD", 
+			"DOLLAR", "INT", "REAL", "EXP", "UNI_CHAR", "LETTER", "ID", "COMMENT", 
+			"WS", "ErrorChar"
+		};
+	}
+	public static final String[] ruleNames = makeRuleNames();
+
+	private static String[] makeLiteralNames() {
+		return new String[] {
+			null, "'import'", "'intent'", "'ordered'", "'flow'", "'meta'", "'term'", 
+			null, "'fragment'", null, null, null, "'null'", "'=='", "'!='", "'>='", 
+			"'<='", "'>'", "'<'", "'&&'", "'||'", "'|'", "'!'", "'('", "')'", "'{'", 
+			"'}'", "'''", "'\"'", "'~'", "'['", "']'", "'#'", "','", "':'", "'-'", 
+			"'.'", "'_'", "'='", "'+'", "'?'", "'*'", "'/'", "'%'", "'$'"
+		};
+	}
+	private static final String[] _LITERAL_NAMES = makeLiteralNames();
+	private static String[] makeSymbolicNames() {
+		return new String[] {
+			null, null, null, null, null, null, null, "FUN_NAME", "FRAG", "SQSTRING", 
+			"DQSTRING", "BOOL", "NULL", "EQ", "NEQ", "GTEQ", "LTEQ", "GT", "LT", 
+			"AND", "OR", "VERT", "NOT", "LPAR", "RPAR", "LBRACE", "RBRACE", "SQUOTE", 
+			"DQUOTE", "TILDA", "LBR", "RBR", "POUND", "COMMA", "COLON", "MINUS", 
+			"DOT", "UNDERSCORE", "ASSIGN", "PLUS", "QUESTION", "MULT", "DIV", "MOD", 
+			"DOLLAR", "INT", "REAL", "EXP", "ID", "COMMENT", "WS", "ErrorChar"
+		};
+	}
+	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+	/**
+	 * @deprecated Use {@link #VOCABULARY} instead.
+	 */
+	@Deprecated
+	public static final String[] tokenNames;
+	static {
+		tokenNames = new String[_SYMBOLIC_NAMES.length];
+		for (int i = 0; i < tokenNames.length; i++) {
+			tokenNames[i] = VOCABULARY.getLiteralName(i);
+			if (tokenNames[i] == null) {
+				tokenNames[i] = VOCABULARY.getSymbolicName(i);
+			}
+
+			if (tokenNames[i] == null) {
+				tokenNames[i] = "<INVALID>";
+			}
+		}
+	}
+
+	@Override
+	@Deprecated
+	public String[] getTokenNames() {
+		return tokenNames;
+	}
+
+	@Override
+
+	public Vocabulary getVocabulary() {
+		return VOCABULARY;
+	}
+
+
+	public NCIntentIdlLexer(CharStream input) {
+		super(input);
+		_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+	}
+
+	@Override
+	public String getGrammarFileName() { return "NCIntentIdl.g4"; }
+
+	@Override
+	public String[] getRuleNames() { return ruleNames; }
+
+	@Override
+	public String getSerializedATN() { return _serializedATN; }
+
+	@Override
+	public String[] getChannelNames() { return channelNames; }
+
+	@Override
+	public String[] getModeNames() { return modeNames; }
+
+	@Override
+	public ATN getATN() { return _ATN; }
+
+	public static final String _serializedATN =
+		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\65\u04a1\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\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+
+		"\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+
+		"\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t"+
+		" \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t"+
+		"+\4,\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64"+
+		"\t\64\4\65\t\65\4\66\t\66\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3"+
+		"\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3"+
+		"\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
+		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+		"\b\3\b\3\b\3\b\5\b\u03d6\n\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3"+
+		"\n\3\n\3\n\7\n\u03e5\n\n\f\n\16\n\u03e8\13\n\3\n\3\n\3\13\3\13\3\13\3"+
+		"\13\7\13\u03f0\n\13\f\13\16\13\u03f3\13\13\3\13\3\13\3\f\3\f\3\f\3\f\3"+
+		"\f\3\f\3\f\3\f\3\f\5\f\u0400\n\f\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3"+
+		"\17\3\17\3\17\3\20\3\20\3\20\3\21\3\21\3\21\3\22\3\22\3\23\3\23\3\24\3"+
+		"\24\3\24\3\25\3\25\3\25\3\26\3\26\3\27\3\27\3\30\3\30\3\31\3\31\3\32\3"+
+		"\32\3\33\3\33\3\34\3\34\3\35\3\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\""+
+		"\3\"\3#\3#\3$\3$\3%\3%\3&\3&\3\'\3\'\3(\3(\3)\3)\3*\3*\3+\3+\3,\3,\3-"+
+		"\3-\3.\3.\3.\7.\u0450\n.\f.\16.\u0453\13.\5.\u0455\n.\3/\3/\6/\u0459\n"+
+		"/\r/\16/\u045a\3\60\3\60\5\60\u045f\n\60\3\60\3\60\3\61\3\61\3\62\3\62"+
+		"\3\63\3\63\3\63\3\63\6\63\u046b\n\63\r\63\16\63\u046c\3\63\3\63\3\63\3"+
+		"\63\3\63\3\63\3\63\7\63\u0476\n\63\f\63\16\63\u0479\13\63\3\64\3\64\3"+
+		"\64\3\64\7\64\u047f\n\64\f\64\16\64\u0482\13\64\3\64\5\64\u0485\n\64\3"+
+		"\64\5\64\u0488\n\64\3\64\3\64\3\64\3\64\7\64\u048e\n\64\f\64\16\64\u0491"+
+		"\13\64\3\64\3\64\5\64\u0495\n\64\3\64\3\64\3\65\6\65\u049a\n\65\r\65\16"+
+		"\65\u049b\3\65\3\65\3\66\3\66\3\u048f\2\67\3\3\5\4\7\5\t\6\13\7\r\b\17"+
+		"\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+"+
+		"\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+"+
+		"U,W-Y.[/]\60_\61a\2c\2e\62g\63i\64k\65\3\2\16\3\2))\3\2$$\3\2\63;\4\2"+
+		"\62;aa\3\2\62;\4\2GGgg\4\2--//\17\2\u00a2\u0251\u025b\u0294\u02b2\u0371"+
+		"\u0402\u0501\u1e04\u1ef5\u1f03\u2001\u200e\u200f\u2041\u2042\u2072\u2191"+
+		"\u2c02\u2ff1\u3003\ud801\uf902\ufdd1\ufdf2\uffff\4\2C\\c|\4\2\f\f\17\17"+
+		"\3\3\f\f\5\2\13\f\16\17\"\"\2\u0531\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\21\3\2\2\2\2\23"+
+		"\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\2\35\3\2"+
+		"\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2"+
+		"\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3"+
+		"\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2"+
+		"\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2"+
+		"\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2["+
+		"\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2"+
+		"\2\2\3m\3\2\2\2\5t\3\2\2\2\7{\3\2\2\2\t\u0083\3\2\2\2\13\u0088\3\2\2\2"+
+		"\r\u008d\3\2\2\2\17\u03d5\3\2\2\2\21\u03d7\3\2\2\2\23\u03e0\3\2\2\2\25"+
+		"\u03eb\3\2\2\2\27\u03ff\3\2\2\2\31\u0401\3\2\2\2\33\u0406\3\2\2\2\35\u0409"+
+		"\3\2\2\2\37\u040c\3\2\2\2!\u040f\3\2\2\2#\u0412\3\2\2\2%\u0414\3\2\2\2"+
+		"\'\u0416\3\2\2\2)\u0419\3\2\2\2+\u041c\3\2\2\2-\u041e\3\2\2\2/\u0420\3"+
+		"\2\2\2\61\u0422\3\2\2\2\63\u0424\3\2\2\2\65\u0426\3\2\2\2\67\u0428\3\2"+
+		"\2\29\u042a\3\2\2\2;\u042c\3\2\2\2=\u042e\3\2\2\2?\u0430\3\2\2\2A\u0432"+
+		"\3\2\2\2C\u0434\3\2\2\2E\u0436\3\2\2\2G\u0438\3\2\2\2I\u043a\3\2\2\2K"+
+		"\u043c\3\2\2\2M\u043e\3\2\2\2O\u0440\3\2\2\2Q\u0442\3\2\2\2S\u0444\3\2"+
+		"\2\2U\u0446\3\2\2\2W\u0448\3\2\2\2Y\u044a\3\2\2\2[\u0454\3\2\2\2]\u0456"+
+		"\3\2\2\2_\u045c\3\2\2\2a\u0462\3\2\2\2c\u0464\3\2\2\2e\u046a\3\2\2\2g"+
+		"\u0494\3\2\2\2i\u0499\3\2\2\2k\u049f\3\2\2\2mn\7k\2\2no\7o\2\2op\7r\2"+
+		"\2pq\7q\2\2qr\7t\2\2rs\7v\2\2s\4\3\2\2\2tu\7k\2\2uv\7p\2\2vw\7v\2\2wx"+
+		"\7g\2\2xy\7p\2\2yz\7v\2\2z\6\3\2\2\2{|\7q\2\2|}\7t\2\2}~\7f\2\2~\177\7"+
+		"g\2\2\177\u0080\7t\2\2\u0080\u0081\7g\2\2\u0081\u0082\7f\2\2\u0082\b\3"+
+		"\2\2\2\u0083\u0084\7h\2\2\u0084\u0085\7n\2\2\u0085\u0086\7q\2\2\u0086"+
+		"\u0087\7y\2\2\u0087\n\3\2\2\2\u0088\u0089\7o\2\2\u0089\u008a\7g\2\2\u008a"+
+		"\u008b\7v\2\2\u008b\u008c\7c\2\2\u008c\f\3\2\2\2\u008d\u008e\7v\2\2\u008e"+
+		"\u008f\7g\2\2\u008f\u0090\7t\2\2\u0090\u0091\7o\2\2\u0091\16\3\2\2\2\u0092"+
+		"\u0093\7o\2\2\u0093\u0094\7g\2\2\u0094\u0095\7v\2\2\u0095\u0096\7c\2\2"+
+		"\u0096\u0097\7a\2\2\u0097\u0098\7v\2\2\u0098\u0099\7q\2\2\u0099\u009a"+
+		"\7m\2\2\u009a\u009b\7g\2\2\u009b\u03d6\7p\2\2\u009c\u009d\7o\2\2\u009d"+
+		"\u009e\7g\2\2\u009e\u009f\7v\2\2\u009f\u00a0\7c\2\2\u00a0\u00a1\7a\2\2"+
+		"\u00a1\u00a2\7r\2\2\u00a2\u00a3\7c\2\2\u00a3\u00a4\7t\2\2\u00a4\u03d6"+
+		"\7v\2\2\u00a5\u00a6\7o\2\2\u00a6\u00a7\7g\2\2\u00a7\u00a8\7v\2\2\u00a8"+
+		"\u00a9\7c\2\2\u00a9\u00aa\7a\2\2\u00aa\u00ab\7o\2\2\u00ab\u00ac\7q\2\2"+
+		"\u00ac\u00ad\7f\2\2\u00ad\u00ae\7g\2\2\u00ae\u03d6\7n\2\2\u00af\u00b0"+
+		"\7o\2\2\u00b0\u00b1\7g\2\2\u00b1\u00b2\7v\2\2\u00b2\u00b3\7c\2\2\u00b3"+
+		"\u00b4\7a\2\2\u00b4\u00b5\7k\2\2\u00b5\u00b6\7p\2\2\u00b6\u00b7\7v\2\2"+
+		"\u00b7\u00b8\7g\2\2\u00b8\u00b9\7p\2\2\u00b9\u03d6\7v\2\2\u00ba\u00bb"+
+		"\7o\2\2\u00bb\u00bc\7g\2\2\u00bc\u00bd\7v\2\2\u00bd\u00be\7c\2\2\u00be"+
+		"\u00bf\7a\2\2\u00bf\u00c0\7t\2\2\u00c0\u00c1\7g\2\2\u00c1\u03d6\7s\2\2"+
+		"\u00c2\u00c3\7o\2\2\u00c3\u00c4\7g\2\2\u00c4\u00c5\7v\2\2\u00c5\u00c6"+
+		"\7c\2\2\u00c6\u00c7\7a\2\2\u00c7\u00c8\7w\2\2\u00c8\u00c9\7u\2\2\u00c9"+
+		"\u00ca\7g\2\2\u00ca\u03d6\7t\2\2\u00cb\u00cc\7o\2\2\u00cc\u00cd\7g\2\2"+
+		"\u00cd\u00ce\7v\2\2\u00ce\u00cf\7c\2\2\u00cf\u00d0\7a\2\2\u00d0\u00d1"+
+		"\7e\2\2\u00d1\u00d2\7q\2\2\u00d2\u00d3\7o\2\2\u00d3\u00d4\7r\2\2\u00d4"+
+		"\u00d5\7c\2\2\u00d5\u00d6\7p\2\2\u00d6\u03d6\7{\2\2\u00d7\u00d8\7o\2\2"+
+		"\u00d8\u00d9\7g\2\2\u00d9\u00da\7v\2\2\u00da\u00db\7c\2\2\u00db\u00dc"+
+		"\7a\2\2\u00dc\u00dd\7u\2\2\u00dd\u00de\7{\2\2\u00de\u03d6\7u\2\2\u00df"+
+		"\u00e0\7o\2\2\u00e0\u00e1\7g\2\2\u00e1\u00e2\7v\2\2\u00e2\u00e3\7c\2\2"+
+		"\u00e3\u00e4\7a\2\2\u00e4\u00e5\7e\2\2\u00e5\u00e6\7q\2\2\u00e6\u00e7"+
+		"\7p\2\2\u00e7\u03d6\7x\2\2\u00e8\u00e9\7o\2\2\u00e9\u00ea\7g\2\2\u00ea"+
+		"\u00eb\7v\2\2\u00eb\u00ec\7c\2\2\u00ec\u00ed\7a\2\2\u00ed\u00ee\7h\2\2"+
+		"\u00ee\u00ef\7t\2\2\u00ef\u00f0\7c\2\2\u00f0\u03d6\7i\2\2\u00f1\u00f2"+
+		"\7l\2\2\u00f2\u00f3\7u\2\2\u00f3\u00f4\7q\2\2\u00f4\u03d6\7p\2\2\u00f5"+
+		"\u00f6\7k\2\2\u00f6\u03d6\7h\2\2\u00f7\u00f8\7k\2\2\u00f8\u03d6\7f\2\2"+
+		"\u00f9\u00fa\7v\2\2\u00fa\u00fb\7j\2\2\u00fb\u00fc\7k\2\2\u00fc\u03d6"+
+		"\7u\2\2\u00fd\u00fe\7r\2\2\u00fe\u00ff\7c\2\2\u00ff\u0100\7t\2\2\u0100"+
+		"\u03d6\7v\2\2\u0101\u0102\7r\2\2\u0102\u0103\7c\2\2\u0103\u0104\7t\2\2"+
+		"\u0104\u0105\7v\2\2\u0105\u03d6\7u\2\2\u0106\u0107\7c\2\2\u0107\u0108"+
+		"\7p\2\2\u0108\u0109\7e\2\2\u0109\u010a\7g\2\2\u010a\u010b\7u\2\2\u010b"+
+		"\u010c\7v\2\2\u010c\u010d\7q\2\2\u010d\u010e\7t\2\2\u010e\u03d6\7u\2\2"+
+		"\u010f\u0110\7r\2\2\u0110\u0111\7c\2\2\u0111\u0112\7t\2\2\u0112\u0113"+
+		"\7g\2\2\u0113\u0114\7p\2\2\u0114\u03d6\7v\2\2\u0115\u0116\7i\2\2\u0116"+
+		"\u0117\7t\2\2\u0117\u0118\7q\2\2\u0118\u0119\7w\2\2\u0119\u011a\7r\2\2"+
+		"\u011a\u03d6\7u\2\2\u011b\u011c\7x\2\2\u011c\u011d\7c\2\2\u011d\u011e"+
+		"\7n\2\2\u011e\u011f\7w\2\2\u011f\u03d6\7g\2\2\u0120\u0121\7c\2\2\u0121"+
+		"\u0122\7n\2\2\u0122\u0123\7k\2\2\u0123\u0124\7c\2\2\u0124\u0125\7u\2\2"+
+		"\u0125\u0126\7g\2\2\u0126\u03d6\7u\2\2\u0127\u0128\7u\2\2\u0128\u0129"+
+		"\7v\2\2\u0129\u012a\7c\2\2\u012a\u012b\7t\2\2\u012b\u012c\7v\2\2\u012c"+
+		"\u012d\7a\2\2\u012d\u012e\7k\2\2\u012e\u012f\7f\2\2\u012f\u03d6\7z\2\2"+
+		"\u0130\u0131\7g\2\2\u0131\u0132\7p\2\2\u0132\u0133\7f\2\2\u0133\u0134"+
+		"\7a\2\2\u0134\u0135\7k\2\2\u0135\u0136\7f\2\2\u0136\u03d6\7z\2\2\u0137"+
+		"\u0138\7t\2\2\u0138\u0139\7g\2\2\u0139\u013a\7s\2\2\u013a\u013b\7a\2\2"+
+		"\u013b\u013c\7k\2\2\u013c\u03d6\7f\2\2\u013d\u013e\7t\2\2\u013e\u013f"+
+		"\7g\2\2\u013f\u0140\7s\2\2\u0140\u0141\7a\2\2\u0141\u0142\7p\2\2\u0142"+
+		"\u0143\7q\2\2\u0143\u0144\7t\2\2\u0144\u0145\7o\2\2\u0145\u0146\7v\2\2"+
+		"\u0146\u0147\7g\2\2\u0147\u0148\7z\2\2\u0148\u03d6\7v\2\2\u0149\u014a"+
+		"\7t\2\2\u014a\u014b\7g\2\2\u014b\u014c\7s\2\2\u014c\u014d\7a\2\2\u014d"+
+		"\u014e\7v\2\2\u014e\u014f\7u\2\2\u014f\u0150\7v\2\2\u0150\u0151\7c\2\2"+
+		"\u0151\u0152\7o\2\2\u0152\u03d6\7r\2\2\u0153\u0154\7t\2\2\u0154\u0155"+
+		"\7g\2\2\u0155\u0156\7s\2\2\u0156\u0157\7a\2\2\u0157\u0158\7c\2\2\u0158"+
+		"\u0159\7f\2\2\u0159\u015a\7f\2\2\u015a\u03d6\7t\2\2\u015b\u015c\7t\2\2"+
+		"\u015c\u015d\7g\2\2\u015d\u015e\7s\2\2\u015e\u015f\7a\2\2\u015f\u0160"+
+		"\7c\2\2\u0160\u0161\7i\2\2\u0161\u0162\7g\2\2\u0162\u0163\7p\2\2\u0163"+
+		"\u03d6\7v\2\2\u0164\u0165\7w\2\2\u0165\u0166\7u\2\2\u0166\u0167\7g\2\2"+
+		"\u0167\u0168\7t\2\2\u0168\u0169\7a\2\2\u0169\u016a\7k\2\2\u016a\u03d6"+
+		"\7f\2\2\u016b\u016c\7w\2\2\u016c\u016d\7u\2\2\u016d\u016e\7g\2\2\u016e"+
+		"\u016f\7t\2\2\u016f\u0170\7a\2\2\u0170\u0171\7h\2\2\u0171\u0172\7p\2\2"+
+		"\u0172\u0173\7c\2\2\u0173\u0174\7o\2\2\u0174\u03d6\7g\2\2\u0175\u0176"+
+		"\7w\2\2\u0176\u0177\7u\2\2\u0177\u0178\7g\2\2\u0178\u0179\7t\2\2\u0179"+
+		"\u017a\7a\2\2\u017a\u017b\7n\2\2\u017b\u017c\7p\2\2\u017c\u017d\7c\2\2"+
+		"\u017d\u017e\7o\2\2\u017e\u03d6\7g\2\2\u017f\u0180\7w\2\2\u0180\u0181"+
+		"\7u\2\2\u0181\u0182\7g\2\2\u0182\u0183\7t\2\2\u0183\u0184\7a\2\2\u0184"+
+		"\u0185\7g\2\2\u0185\u0186\7o\2\2\u0186\u0187\7c\2\2\u0187\u0188\7k\2\2"+
+		"\u0188\u03d6\7n\2\2\u0189\u018a\7w\2\2\u018a\u018b\7u\2\2\u018b\u018c"+
+		"\7g\2\2\u018c\u018d\7t\2\2\u018d\u018e\7a\2\2\u018e\u018f\7c\2\2\u018f"+
+		"\u0190\7f\2\2\u0190\u0191\7o\2\2\u0191\u0192\7k\2\2\u0192\u03d6\7p\2\2"+
+		"\u0193\u0194\7w\2\2\u0194\u0195\7u\2\2\u0195\u0196\7g\2\2\u0196\u0197"+
+		"\7t\2\2\u0197\u0198\7a\2\2\u0198\u0199\7u\2\2\u0199\u019a\7k\2\2\u019a"+
+		"\u019b\7i\2\2\u019b\u019c\7p\2\2\u019c\u019d\7w\2\2\u019d\u019e\7r\2\2"+
+		"\u019e\u019f\7a\2\2\u019f\u01a0\7v\2\2\u01a0\u01a1\7u\2\2\u01a1\u01a2"+
+		"\7v\2\2\u01a2\u01a3\7c\2\2\u01a3\u01a4\7o\2\2\u01a4\u03d6\7r\2\2\u01a5"+
+		"\u01a6\7e\2\2\u01a6\u01a7\7q\2\2\u01a7\u01a8\7o\2\2\u01a8\u01a9\7r\2\2"+
+		"\u01a9\u01aa\7a\2\2\u01aa\u01ab\7k\2\2\u01ab\u03d6\7f\2\2\u01ac\u01ad"+
+		"\7e\2\2\u01ad\u01ae\7q\2\2\u01ae\u01af\7o\2\2\u01af\u01b0\7r\2\2\u01b0"+
+		"\u01b1\7a\2\2\u01b1\u01b2\7p\2\2\u01b2\u01b3\7c\2\2\u01b3\u01b4\7o\2\2"+
+		"\u01b4\u03d6\7g\2\2\u01b5\u01b6\7e\2\2\u01b6\u01b7\7q\2\2\u01b7\u01b8"+
+		"\7o\2\2\u01b8\u01b9\7r\2\2\u01b9\u01ba\7a\2\2\u01ba\u01bb\7y\2\2\u01bb"+
+		"\u01bc\7g\2\2\u01bc\u01bd\7d\2\2\u01bd\u01be\7u\2\2\u01be\u01bf\7k\2\2"+
+		"\u01bf\u01c0\7v\2\2\u01c0\u03d6\7g\2\2\u01c1\u01c2\7e\2\2\u01c2\u01c3"+
+		"\7q\2\2\u01c3\u01c4\7o\2\2\u01c4\u01c5\7r\2\2\u01c5\u01c6\7a\2\2\u01c6"+
+		"\u01c7\7e\2\2\u01c7\u01c8\7q\2\2\u01c8\u01c9\7w\2\2\u01c9\u01ca\7p\2\2"+
+		"\u01ca\u01cb\7v\2\2\u01cb\u01cc\7t\2\2\u01cc\u03d6\7{\2\2\u01cd\u01ce"+
+		"\7e\2\2\u01ce\u01cf\7q\2\2\u01cf\u01d0\7o\2\2\u01d0\u01d1\7r\2\2\u01d1"+
+		"\u01d2\7a\2\2\u01d2\u01d3\7t\2\2\u01d3\u01d4\7g\2\2\u01d4\u01d5\7i\2\2"+
+		"\u01d5\u01d6\7k\2\2\u01d6\u01d7\7q\2\2\u01d7\u03d6\7p\2\2\u01d8\u01d9"+
+		"\7e\2\2\u01d9\u01da\7q\2\2\u01da\u01db\7o\2\2\u01db\u01dc\7r\2\2\u01dc"+
+		"\u01dd\7a\2\2\u01dd\u01de\7e\2\2\u01de\u01df\7k\2\2\u01df\u01e0\7v\2\2"+
+		"\u01e0\u03d6\7{\2\2\u01e1\u01e2\7e\2\2\u01e2\u01e3\7q\2\2\u01e3\u01e4"+
+		"\7o\2\2\u01e4\u01e5\7r\2\2\u01e5\u01e6\7a\2\2\u01e6\u01e7\7c\2\2\u01e7"+
+		"\u01e8\7f\2\2\u01e8\u01e9\7f\2\2\u01e9\u03d6\7t\2\2\u01ea\u01eb\7e\2\2"+
+		"\u01eb\u01ec\7q\2\2\u01ec\u01ed\7o\2\2\u01ed\u01ee\7r\2\2\u01ee\u01ef"+
+		"\7a\2\2\u01ef\u01f0\7r\2\2\u01f0\u01f1\7q\2\2\u01f1\u01f2\7u\2\2\u01f2"+
+		"\u01f3\7v\2\2\u01f3\u01f4\7e\2\2\u01f4\u01f5\7q\2\2\u01f5\u01f6\7f\2\2"+
+		"\u01f6\u03d6\7g\2\2\u01f7\u01f8\7v\2\2\u01f8\u01f9\7t\2\2\u01f9\u01fa"+
+		"\7k\2\2\u01fa\u03d6\7o\2\2\u01fb\u01fc\7u\2\2\u01fc\u01fd\7v\2\2\u01fd"+
+		"\u01fe\7t\2\2\u01fe\u01ff\7k\2\2\u01ff\u03d6\7r\2\2\u0200\u0201\7w\2\2"+
+		"\u0201\u0202\7r\2\2\u0202\u0203\7r\2\2\u0203\u0204\7g\2\2\u0204\u0205"+
+		"\7t\2\2\u0205\u0206\7e\2\2\u0206\u0207\7c\2\2\u0207\u0208\7u\2\2\u0208"+
+		"\u03d6\7g\2\2\u0209\u020a\7n\2\2\u020a\u020b\7q\2\2\u020b\u020c\7y\2\2"+
+		"\u020c\u020d\7g\2\2\u020d\u020e\7t\2\2\u020e\u020f\7e\2\2\u020f\u0210"+
+		"\7c\2\2\u0210\u0211\7u\2\2\u0211\u03d6\7g\2\2\u0212\u0213\7k\2\2\u0213"+
+		"\u0214\7u\2\2\u0214\u0215\7a\2\2\u0215\u0216\7c\2\2\u0216\u0217\7n\2\2"+
+		"\u0217\u0218\7r\2\2\u0218\u0219\7j\2\2\u0219\u03d6\7c\2\2\u021a\u021b"+
+		"\7k\2\2\u021b\u021c\7u\2\2\u021c\u021d\7a\2\2\u021d\u021e\7c\2\2\u021e"+
+		"\u021f\7n\2\2\u021f\u0220\7r\2\2\u0220\u0221\7j\2\2\u0221\u0222\7c\2\2"+
+		"\u0222\u0223\7p\2\2\u0223\u0224\7w\2\2\u0224\u03d6\7o\2\2\u0225\u0226"+
+		"\7k\2\2\u0226\u0227\7u\2\2\u0227\u0228\7a\2\2\u0228\u0229\7y\2\2\u0229"+
+		"\u022a\7j\2\2\u022a\u022b\7k\2\2\u022b\u022c\7v\2\2\u022c\u022d\7g\2\2"+
+		"\u022d\u022e\7u\2\2\u022e\u022f\7r\2\2\u022f\u0230\7c\2\2\u0230\u0231"+
+		"\7e\2\2\u0231\u03d6\7g\2\2\u0232\u0233\7k\2\2\u0233\u0234\7u\2\2\u0234"+
+		"\u0235\7a\2\2\u0235\u0236\7p\2\2\u0236\u0237\7w\2\2\u0237\u03d6\7o\2\2"+
+		"\u0238\u0239\7k\2\2\u0239\u023a\7u\2\2\u023a\u023b\7a\2\2\u023b\u023c"+
+		"\7p\2\2\u023c\u023d\7w\2\2\u023d\u023e\7o\2\2\u023e\u023f\7u\2\2\u023f"+
+		"\u0240\7r\2\2\u0240\u0241\7c\2\2\u0241\u0242\7e\2\2\u0242\u03d6\7g\2\2"+
+		"\u0243\u0244\7k\2\2\u0244\u0245\7u\2\2\u0245\u0246\7a\2\2\u0246\u0247"+
+		"\7c\2\2\u0247\u0248\7n\2\2\u0248\u0249\7r\2\2\u0249\u024a\7j\2\2\u024a"+
+		"\u024b\7c\2\2\u024b\u024c\7u\2\2\u024c\u024d\7r\2\2\u024d\u024e\7c\2\2"+
+		"\u024e\u024f\7e\2\2\u024f\u03d6\7g\2\2\u0250\u0251\7k\2\2\u0251\u0252"+
+		"\7u\2\2\u0252\u0253\7a\2\2\u0253\u0254\7c\2\2\u0254\u0255\7n\2\2\u0255"+
+		"\u0256\7r\2\2\u0256\u0257\7j\2\2\u0257\u0258\7c\2\2\u0258\u0259\7p\2\2"+
+		"\u0259\u025a\7w\2\2\u025a\u025b\7o\2\2\u025b\u025c\7u\2\2\u025c\u025d"+
+		"\7r\2\2\u025d\u025e\7c\2\2\u025e\u025f\7e\2\2\u025f\u03d6\7g\2\2\u0260"+
+		"\u0261\7u\2\2\u0261\u0262\7w\2\2\u0262\u0263\7d\2\2\u0263\u0264\7u\2\2"+
+		"\u0264\u0265\7v\2\2\u0265\u0266\7t\2\2\u0266\u0267\7k\2\2\u0267\u0268"+
+		"\7p\2\2\u0268\u03d6\7i\2\2\u0269\u026a\7e\2\2\u026a\u026b\7j\2\2\u026b"+
+		"\u026c\7c\2\2\u026c\u026d\7t\2\2\u026d\u026e\7C\2\2\u026e\u03d6\7v\2\2"+
+		"\u026f\u0270\7t\2\2\u0270\u0271\7g\2\2\u0271\u0272\7i\2\2\u0272\u0273"+
+		"\7g\2\2\u0273\u03d6\7z\2\2\u0274\u0275\7u\2\2\u0275\u0276\7q\2\2\u0276"+
+		"\u0277\7w\2\2\u0277\u0278\7p\2\2\u0278\u0279\7f\2\2\u0279\u027a\7g\2\2"+
+		"\u027a\u03d6\7z\2\2\u027b\u027c\7u\2\2\u027c\u027d\7r\2\2\u027d\u027e"+
+		"\7n\2\2\u027e\u027f\7k\2\2\u027f\u03d6\7v\2\2\u0280\u0281\7u\2\2\u0281"+
+		"\u0282\7r\2\2\u0282\u0283\7n\2\2\u0283\u0284\7k\2\2\u0284\u0285\7v\2\2"+
+		"\u0285\u0286\7a\2\2\u0286\u0287\7v\2\2\u0287\u0288\7t\2\2\u0288\u0289"+
+		"\7k\2\2\u0289\u03d6\7o\2\2\u028a\u028b\7t\2\2\u028b\u028c\7g\2\2\u028c"+
+		"\u028d\7r\2\2\u028d\u028e\7n\2\2\u028e\u028f\7c\2\2\u028f\u0290\7e\2\2"+
+		"\u0290\u03d6\7g\2\2\u0291\u0292\7c\2\2\u0292\u0293\7d\2\2\u0293\u03d6"+
+		"\7u\2\2\u0294\u0295\7e\2\2\u0295\u0296\7g\2\2\u0296\u0297\7k\2\2\u0297"+
+		"\u03d6\7n\2\2\u0298\u0299\7h\2\2\u0299\u029a\7n\2\2\u029a\u029b\7q\2\2"+
+		"\u029b\u029c\7q\2\2\u029c\u03d6\7t\2\2\u029d\u029e\7t\2\2\u029e\u029f"+
+		"\7k\2\2\u029f\u02a0\7p\2\2\u02a0\u03d6\7v\2\2\u02a1\u02a2\7t\2\2\u02a2"+
+		"\u02a3\7q\2\2\u02a3\u02a4\7w\2\2\u02a4\u02a5\7p\2\2\u02a5\u03d6\7f\2\2"+
+		"\u02a6\u02a7\7u\2\2\u02a7\u02a8\7k\2\2\u02a8\u02a9\7i\2\2\u02a9\u02aa"+
+		"\7p\2\2\u02aa\u02ab\7w\2\2\u02ab\u03d6\7o\2\2\u02ac\u02ad\7u\2\2\u02ad"+
+		"\u02ae\7s\2\2\u02ae\u02af\7t\2\2\u02af\u03d6\7v\2\2\u02b0\u02b1\7e\2\2"+
+		"\u02b1\u02b2\7d\2\2\u02b2\u02b3\7t\2\2\u02b3\u03d6\7v\2\2\u02b4\u02b5"+
+		"\7r\2\2\u02b5\u03d6\7k\2\2\u02b6\u02b7\7g\2\2\u02b7\u02b8\7w\2\2\u02b8"+
+		"\u02b9\7n\2\2\u02b9\u02ba\7g\2\2\u02ba\u03d6\7t\2\2\u02bb\u02bc\7c\2\2"+
+		"\u02bc\u02bd\7e\2\2\u02bd\u02be\7q\2\2\u02be\u03d6\7u\2\2\u02bf\u02c0"+
+		"\7c\2\2\u02c0\u02c1\7u\2\2\u02c1\u02c2\7k\2\2\u02c2\u03d6\7p\2\2\u02c3"+
+		"\u02c4\7c\2\2\u02c4\u02c5\7v\2\2\u02c5\u02c6\7c\2\2\u02c6\u03d6\7p\2\2"+
+		"\u02c7\u02c8\7e\2\2\u02c8\u02c9\7q\2\2\u02c9\u03d6\7u\2\2\u02ca\u02cb"+
+		"\7u\2\2\u02cb\u02cc\7k\2\2\u02cc\u03d6\7p\2\2\u02cd\u02ce\7v\2\2\u02ce"+
+		"\u02cf\7c\2\2\u02cf\u03d6\7p\2\2\u02d0\u02d1\7e\2\2\u02d1\u02d2\7q\2\2"+
+		"\u02d2\u02d3\7u\2\2\u02d3\u03d6\7j\2\2\u02d4\u02d5\7u\2\2\u02d5\u02d6"+
+		"\7k\2\2\u02d6\u02d7\7p\2\2\u02d7\u03d6\7j\2\2\u02d8\u02d9\7v\2\2\u02d9"+
+		"\u02da\7c\2\2\u02da\u02db\7p\2\2\u02db\u03d6\7j\2\2\u02dc\u02dd\7c\2\2"+
+		"\u02dd\u02de\7v\2\2\u02de\u02df\7p\2\2\u02df\u03d6\7\64\2\2\u02e0\u02e1"+
+		"\7f\2\2\u02e1\u02e2\7g\2\2\u02e2\u02e3\7i\2\2\u02e3\u02e4\7t\2\2\u02e4"+
+		"\u02e5\7g\2\2\u02e5\u02e6\7g\2\2\u02e6\u03d6\7u\2\2\u02e7\u02e8\7t\2\2"+
+		"\u02e8\u02e9\7c\2\2\u02e9\u02ea\7f\2\2\u02ea\u02eb\7k\2\2\u02eb\u02ec"+
+		"\7c\2\2\u02ec\u02ed\7p\2\2\u02ed\u03d6\7u\2\2\u02ee\u02ef\7g\2\2\u02ef"+
+		"\u02f0\7z\2\2\u02f0\u03d6\7r\2\2\u02f1\u02f2\7g\2\2\u02f2\u02f3\7z\2\2"+
+		"\u02f3\u02f4\7r\2\2\u02f4\u02f5\7o\2\2\u02f5\u03d6\7\63\2\2\u02f6\u02f7"+
+		"\7j\2\2\u02f7\u02f8\7{\2\2\u02f8\u02f9\7r\2\2\u02f9\u02fa\7q\2\2\u02fa"+
+		"\u03d6\7v\2\2\u02fb\u02fc\7n\2\2\u02fc\u02fd\7q\2\2\u02fd\u03d6\7i\2\2"+
+		"\u02fe\u02ff\7n\2\2\u02ff\u0300\7q\2\2\u0300\u0301\7i\2\2\u0301\u0302"+
+		"\7\63\2\2\u0302\u03d6\7\62\2\2\u0303\u0304\7n\2\2\u0304\u0305\7q\2\2\u0305"+
+		"\u0306\7i\2\2\u0306\u0307\7\63\2\2\u0307\u03d6\7r\2\2\u0308\u0309\7r\2"+
+		"\2\u0309\u030a\7q\2\2\u030a\u03d6\7y\2\2\u030b\u030c\7t\2\2\u030c\u030d"+
+		"\7c\2\2\u030d\u030e\7p\2\2\u030e\u03d6\7f\2\2\u030f\u0310\7u\2\2\u0310"+
+		"\u0311\7s\2\2\u0311\u0312\7w\2\2\u0312\u0313\7c\2\2\u0313\u0314\7t\2\2"+
+		"\u0314\u03d6\7g\2\2\u0315\u0316\7n\2\2\u0316\u0317\7k\2\2\u0317\u0318"+
+		"\7u\2\2\u0318\u03d6\7v\2\2\u0319\u031a\7i\2\2\u031a\u031b\7g\2\2\u031b"+
+		"\u03d6\7v\2\2\u031c\u031d\7j\2\2\u031d\u031e\7c\2\2\u031e\u03d6\7u\2\2"+
+		"\u031f\u0320\7h\2\2\u0320\u0321\7k\2\2\u0321\u0322\7t\2\2\u0322\u0323"+
+		"\7u\2\2\u0323\u03d6\7v\2\2\u0324\u0325\7n\2\2\u0325\u0326\7c\2\2\u0326"+
+		"\u0327\7u\2\2\u0327\u03d6\7v\2\2\u0328\u0329\7m\2\2\u0329\u032a\7g\2\2"+
+		"\u032a\u032b\7{\2\2\u032b\u03d6\7u\2\2\u032c\u032d\7x\2\2\u032d\u032e"+
+		"\7c\2\2\u032e\u032f\7n\2\2\u032f\u0330\7w\2\2\u0330\u0331\7g\2\2\u0331"+
+		"\u03d6\7u\2\2\u0332\u0333\7n\2\2\u0333\u0334\7g\2\2\u0334\u0335\7p\2\2"+
+		"\u0335\u0336\7i\2\2\u0336\u0337\7v\2\2\u0337\u03d6\7j\2\2\u0338\u0339"+
+		"\7e\2\2\u0339\u033a\7q\2\2\u033a\u033b\7w\2\2\u033b\u033c\7p\2\2\u033c"+
+		"\u03d6\7v\2\2\u033d\u033e\7u\2\2\u033e\u033f\7k\2\2\u033f\u0340\7|\2\2"+
+		"\u0340\u03d6\7g\2\2\u0341\u0342\7u\2\2\u0342\u0343\7q\2\2\u0343\u0344"+
+		"\7t\2\2\u0344\u03d6\7v\2\2\u0345\u0346\7t\2\2\u0346\u0347\7g\2\2\u0347"+
+		"\u0348\7x\2\2\u0348\u0349\7g\2\2\u0349\u034a\7t\2\2\u034a\u034b\7u\2\2"+
+		"\u034b\u03d6\7g\2\2\u034c\u034d\7k\2\2\u034d\u034e\7u\2\2\u034e\u034f"+
+		"\7a\2\2\u034f\u0350\7g\2\2\u0350\u0351\7o\2\2\u0351\u0352\7r\2\2\u0352"+
+		"\u0353\7v\2\2\u0353\u03d6\7{\2\2\u0354\u0355\7p\2\2\u0355\u0356\7q\2\2"+
+		"\u0356\u0357\7p\2\2\u0357\u0358\7a\2\2\u0358\u0359\7g\2\2\u0359\u035a"+
+		"\7o\2\2\u035a\u035b\7r\2\2\u035b\u035c\7v\2\2\u035c\u03d6\7{\2\2\u035d"+
+		"\u035e\7v\2\2\u035e\u035f\7q\2\2\u035f\u0360\7a\2\2\u0360\u0361\7u\2\2"+
+		"\u0361\u0362\7v\2\2\u0362\u0363\7t\2\2\u0363\u0364\7k\2\2\u0364\u0365"+
+		"\7p\2\2\u0365\u03d6\7i\2\2\u0366\u0367\7c\2\2\u0367\u0368\7x\2\2\u0368"+
+		"\u03d6\7i\2\2\u0369\u036a\7o\2\2\u036a\u036b\7c\2\2\u036b\u03d6\7z\2\2"+
+		"\u036c\u036d\7o\2\2\u036d\u036e\7k\2\2\u036e\u03d6\7p\2\2\u036f\u0370"+
+		"\7u\2\2\u0370\u0371\7v\2\2\u0371\u0372\7f\2\2\u0372\u0373\7g\2\2\u0373"+
+		"\u03d6\7x\2\2\u0374\u0375\7u\2\2\u0375\u0376\7w\2\2\u0376\u03d6\7o\2\2"+
+		"\u0377\u0378\7{\2\2\u0378\u0379\7g\2\2\u0379\u037a\7c\2\2\u037a\u03d6"+
+		"\7t\2\2\u037b\u037c\7o\2\2\u037c\u037d\7q\2\2\u037d\u037e\7p\2\2\u037e"+
+		"\u037f\7v\2\2\u037f\u03d6\7j\2\2\u0380\u0381\7f\2\2\u0381\u0382\7c\2\2"+
+		"\u0382\u0383\7{\2\2\u0383\u0384\7a\2\2\u0384\u0385\7q\2\2\u0385\u0386"+
+		"\7h\2\2\u0386\u0387\7a\2\2\u0387\u0388\7o\2\2\u0388\u0389\7q\2\2\u0389"+
+		"\u038a\7p\2\2\u038a\u038b\7v\2\2\u038b\u03d6\7j\2\2\u038c\u038d\7f\2\2"+
+		"\u038d\u038e\7c\2\2\u038e\u038f\7{\2\2\u038f\u0390\7a\2\2\u0390\u0391"+
+		"\7q\2\2\u0391\u0392\7h\2\2\u0392\u0393\7a\2\2\u0393\u0394\7y\2\2\u0394"+
+		"\u0395\7g\2\2\u0395\u0396\7g\2\2\u0396\u03d6\7m\2\2\u0397\u0398\7f\2\2"+
+		"\u0398\u0399\7c\2\2\u0399\u039a\7{\2\2\u039a\u039b\7a\2\2\u039b\u039c"+
+		"\7q\2\2\u039c\u039d\7h\2\2\u039d\u039e\7a\2\2\u039e\u039f\7{\2\2\u039f"+
+		"\u03a0\7g\2\2\u03a0\u03a1\7c\2\2\u03a1\u03d6\7t\2\2\u03a2\u03a3\7j\2\2"+
+		"\u03a3\u03a4\7q\2\2\u03a4\u03a5\7w\2\2\u03a5\u03d6\7t\2\2\u03a6\u03a7"+
+		"\7o\2\2\u03a7\u03a8\7k\2\2\u03a8\u03a9\7p\2\2\u03a9\u03aa\7w\2\2\u03aa"+
+		"\u03ab\7v\2\2\u03ab\u03d6\7g\2\2\u03ac\u03ad\7u\2\2\u03ad\u03ae\7g\2\2"+
+		"\u03ae\u03af\7e\2\2\u03af\u03b0\7q\2\2\u03b0\u03b1\7p\2\2\u03b1\u03d6"+
+		"\7f\2\2\u03b2\u03b3\7y\2\2\u03b3\u03b4\7g\2\2\u03b4\u03b5\7g\2\2\u03b5"+
+		"\u03b6\7m\2\2\u03b6\u03b7\7a\2\2\u03b7\u03b8\7q\2\2\u03b8\u03b9\7h\2\2"+
+		"\u03b9\u03ba\7a\2\2\u03ba\u03bb\7o\2\2\u03bb\u03bc\7q\2\2\u03bc\u03bd"+
+		"\7p\2\2\u03bd\u03be\7v\2\2\u03be\u03d6\7j\2\2\u03bf\u03c0\7y\2\2\u03c0"+
+		"\u03c1\7g\2\2\u03c1\u03c2\7g\2\2\u03c2\u03c3\7m\2\2\u03c3\u03c4\7a\2\2"+
+		"\u03c4\u03c5\7q\2\2\u03c5\u03c6\7h\2\2\u03c6\u03c7\7a\2\2\u03c7\u03c8"+
+		"\7{\2\2\u03c8\u03c9\7g\2\2\u03c9\u03ca\7c\2\2\u03ca\u03d6\7t\2\2\u03cb"+
+		"\u03cc\7s\2\2\u03cc\u03cd\7w\2\2\u03cd\u03ce\7c\2\2\u03ce\u03cf\7t\2\2"+
+		"\u03cf\u03d0\7v\2\2\u03d0\u03d1\7g\2\2\u03d1\u03d6\7t\2\2\u03d2\u03d3"+
+		"\7p\2\2\u03d3\u03d4\7q\2\2\u03d4\u03d6\7y\2\2\u03d5\u0092\3\2\2\2\u03d5"+
+		"\u009c\3\2\2\2\u03d5\u00a5\3\2\2\2\u03d5\u00af\3\2\2\2\u03d5\u00ba\3\2"+
+		"\2\2\u03d5\u00c2\3\2\2\2\u03d5\u00cb\3\2\2\2\u03d5\u00d7\3\2\2\2\u03d5"+
+		"\u00df\3\2\2\2\u03d5\u00e8\3\2\2\2\u03d5\u00f1\3\2\2\2\u03d5\u00f5\3\2"+
+		"\2\2\u03d5\u00f7\3\2\2\2\u03d5\u00f9\3\2\2\2\u03d5\u00fd\3\2\2\2\u03d5"+
+		"\u0101\3\2\2\2\u03d5\u0106\3\2\2\2\u03d5\u010f\3\2\2\2\u03d5\u0115\3\2"+
+		"\2\2\u03d5\u011b\3\2\2\2\u03d5\u0120\3\2\2\2\u03d5\u0127\3\2\2\2\u03d5"+
+		"\u0130\3\2\2\2\u03d5\u0137\3\2\2\2\u03d5\u013d\3\2\2\2\u03d5\u0149\3\2"+
+		"\2\2\u03d5\u0153\3\2\2\2\u03d5\u015b\3\2\2\2\u03d5\u0164\3\2\2\2\u03d5"+
+		"\u016b\3\2\2\2\u03d5\u0175\3\2\2\2\u03d5\u017f\3\2\2\2\u03d5\u0189\3\2"+
+		"\2\2\u03d5\u0193\3\2\2\2\u03d5\u01a5\3\2\2\2\u03d5\u01ac\3\2\2\2\u03d5"+
+		"\u01b5\3\2\2\2\u03d5\u01c1\3\2\2\2\u03d5\u01cd\3\2\2\2\u03d5\u01d8\3\2"+
+		"\2\2\u03d5\u01e1\3\2\2\2\u03d5\u01ea\3\2\2\2\u03d5\u01f7\3\2\2\2\u03d5"+
+		"\u01fb\3\2\2\2\u03d5\u0200\3\2\2\2\u03d5\u0209\3\2\2\2\u03d5\u0212\3\2"+
+		"\2\2\u03d5\u021a\3\2\2\2\u03d5\u0225\3\2\2\2\u03d5\u0232\3\2\2\2\u03d5"+
+		"\u0238\3\2\2\2\u03d5\u0243\3\2\2\2\u03d5\u0250\3\2\2\2\u03d5\u0260\3\2"+
+		"\2\2\u03d5\u0269\3\2\2\2\u03d5\u026f\3\2\2\2\u03d5\u0274\3\2\2\2\u03d5"+
+		"\u027b\3\2\2\2\u03d5\u0280\3\2\2\2\u03d5\u028a\3\2\2\2\u03d5\u0291\3\2"+
+		"\2\2\u03d5\u0294\3\2\2\2\u03d5\u0298\3\2\2\2\u03d5\u029d\3\2\2\2\u03d5"+
+		"\u02a1\3\2\2\2\u03d5\u02a6\3\2\2\2\u03d5\u02ac\3\2\2\2\u03d5\u02b0\3\2"+
+		"\2\2\u03d5\u02b4\3\2\2\2\u03d5\u02b6\3\2\2\2\u03d5\u02bb\3\2\2\2\u03d5"+
+		"\u02bf\3\2\2\2\u03d5\u02c3\3\2\2\2\u03d5\u02c7\3\2\2\2\u03d5\u02ca\3\2"+
+		"\2\2\u03d5\u02cd\3\2\2\2\u03d5\u02d0\3\2\2\2\u03d5\u02d4\3\2\2\2\u03d5"+
+		"\u02d8\3\2\2\2\u03d5\u02dc\3\2\2\2\u03d5\u02e0\3\2\2\2\u03d5\u02e7\3\2"+
+		"\2\2\u03d5\u02ee\3\2\2\2\u03d5\u02f1\3\2\2\2\u03d5\u02f6\3\2\2\2\u03d5"+
+		"\u02fb\3\2\2\2\u03d5\u02fe\3\2\2\2\u03d5\u0303\3\2\2\2\u03d5\u0308\3\2"+
+		"\2\2\u03d5\u030b\3\2\2\2\u03d5\u030f\3\2\2\2\u03d5\u0315\3\2\2\2\u03d5"+
+		"\u0319\3\2\2\2\u03d5\u031c\3\2\2\2\u03d5\u031f\3\2\2\2\u03d5\u0324\3\2"+
+		"\2\2\u03d5\u0328\3\2\2\2\u03d5\u032c\3\2\2\2\u03d5\u0332\3\2\2\2\u03d5"+
+		"\u0338\3\2\2\2\u03d5\u033d\3\2\2\2\u03d5\u0341\3\2\2\2\u03d5\u0345\3\2"+
+		"\2\2\u03d5\u034c\3\2\2\2\u03d5\u0354\3\2\2\2\u03d5\u035d\3\2\2\2\u03d5"+
+		"\u0366\3\2\2\2\u03d5\u0369\3\2\2\2\u03d5\u036c\3\2\2\2\u03d5\u036f\3\2"+
+		"\2\2\u03d5\u0374\3\2\2\2\u03d5\u0377\3\2\2\2\u03d5\u037b\3\2\2\2\u03d5"+
+		"\u0380\3\2\2\2\u03d5\u038c\3\2\2\2\u03d5\u0397\3\2\2\2\u03d5\u03a2\3\2"+
+		"\2\2\u03d5\u03a6\3\2\2\2\u03d5\u03ac\3\2\2\2\u03d5\u03b2\3\2\2\2\u03d5"+
+		"\u03bf\3\2\2\2\u03d5\u03cb\3\2\2\2\u03d5\u03d2\3\2\2\2\u03d6\20\3\2\2"+
+		"\2\u03d7\u03d8\7h\2\2\u03d8\u03d9\7t\2\2\u03d9\u03da\7c\2\2\u03da\u03db"+
+		"\7i\2\2\u03db\u03dc\7o\2\2\u03dc\u03dd\7g\2\2\u03dd\u03de\7p\2\2\u03de"+
+		"\u03df\7v\2\2\u03df\22\3\2\2\2\u03e0\u03e6\5\67\34\2\u03e1\u03e5\n\2\2"+
+		"\2\u03e2\u03e3\7^\2\2\u03e3\u03e5\7)\2\2\u03e4\u03e1\3\2\2\2\u03e4\u03e2"+
+		"\3\2\2\2\u03e5\u03e8\3\2\2\2\u03e6\u03e4\3\2\2\2\u03e6\u03e7\3\2\2\2\u03e7"+
+		"\u03e9\3\2\2\2\u03e8\u03e6\3\2\2\2\u03e9\u03ea\5\67\34\2\u03ea\24\3\2"+
+		"\2\2\u03eb\u03f1\59\35\2\u03ec\u03f0\n\3\2\2\u03ed\u03ee\7^\2\2\u03ee"+
+		"\u03f0\7$\2\2\u03ef\u03ec\3\2\2\2\u03ef\u03ed\3\2\2\2\u03f0\u03f3\3\2"+
+		"\2\2\u03f1\u03ef\3\2\2\2\u03f1\u03f2\3\2\2\2\u03f2\u03f4\3\2\2\2\u03f3"+
+		"\u03f1\3\2\2\2\u03f4\u03f5\59\35\2\u03f5\26\3\2\2\2\u03f6\u03f7\7v\2\2"+
+		"\u03f7\u03f8\7t\2\2\u03f8\u03f9\7w\2\2\u03f9\u0400\7g\2\2\u03fa\u03fb"+
+		"\7h\2\2\u03fb\u03fc\7c\2\2\u03fc\u03fd\7n\2\2\u03fd\u03fe\7u\2\2\u03fe"+
+		"\u0400\7g\2\2\u03ff\u03f6\3\2\2\2\u03ff\u03fa\3\2\2\2\u0400\30\3\2\2\2"+
+		"\u0401\u0402\7p\2\2\u0402\u0403\7w\2\2\u0403\u0404\7n\2\2\u0404\u0405"+
+		"\7n\2\2\u0405\32\3\2\2\2\u0406\u0407\7?\2\2\u0407\u0408\7?\2\2\u0408\34"+
+		"\3\2\2\2\u0409\u040a\7#\2\2\u040a\u040b\7?\2\2\u040b\36\3\2\2\2\u040c"+
+		"\u040d\7@\2\2\u040d\u040e\7?\2\2\u040e \3\2\2\2\u040f\u0410\7>\2\2\u0410"+
+		"\u0411\7?\2\2\u0411\"\3\2\2\2\u0412\u0413\7@\2\2\u0413$\3\2\2\2\u0414"+
+		"\u0415\7>\2\2\u0415&\3\2\2\2\u0416\u0417\7(\2\2\u0417\u0418\7(\2\2\u0418"+
+		"(\3\2\2\2\u0419\u041a\7~\2\2\u041a\u041b\7~\2\2\u041b*\3\2\2\2\u041c\u041d"+
+		"\7~\2\2\u041d,\3\2\2\2\u041e\u041f\7#\2\2\u041f.\3\2\2\2\u0420\u0421\7"+
+		"*\2\2\u0421\60\3\2\2\2\u0422\u0423\7+\2\2\u0423\62\3\2\2\2\u0424\u0425"+
+		"\7}\2\2\u0425\64\3\2\2\2\u0426\u0427\7\177\2\2\u0427\66\3\2\2\2\u0428"+
+		"\u0429\7)\2\2\u04298\3\2\2\2\u042a\u042b\7$\2\2\u042b:\3\2\2\2\u042c\u042d"+
+		"\7\u0080\2\2\u042d<\3\2\2\2\u042e\u042f\7]\2\2\u042f>\3\2\2\2\u0430\u0431"+
+		"\7_\2\2\u0431@\3\2\2\2\u0432\u0433\7%\2\2\u0433B\3\2\2\2\u0434\u0435\7"+
+		".\2\2\u0435D\3\2\2\2\u0436\u0437\7<\2\2\u0437F\3\2\2\2\u0438\u0439\7/"+
+		"\2\2\u0439H\3\2\2\2\u043a\u043b\7\60\2\2\u043bJ\3\2\2\2\u043c\u043d\7"+
+		"a\2\2\u043dL\3\2\2\2\u043e\u043f\7?\2\2\u043fN\3\2\2\2\u0440\u0441\7-"+
+		"\2\2\u0441P\3\2\2\2\u0442\u0443\7A\2\2\u0443R\3\2\2\2\u0444\u0445\7,\2"+
+		"\2\u0445T\3\2\2\2\u0446\u0447\7\61\2\2\u0447V\3\2\2\2\u0448\u0449\7\'"+
+		"\2\2\u0449X\3\2\2\2\u044a\u044b\7&\2\2\u044bZ\3\2\2\2\u044c\u0455\7\62"+
+		"\2\2\u044d\u0451\t\4\2\2\u044e\u0450\t\5\2\2\u044f\u044e\3\2\2\2\u0450"+
+		"\u0453\3\2\2\2\u0451\u044f\3\2\2\2\u0451\u0452\3\2\2\2\u0452\u0455\3\2"+
+		"\2\2\u0453\u0451\3\2\2\2\u0454\u044c\3\2\2\2\u0454\u044d\3\2\2\2\u0455"+
+		"\\\3\2\2\2\u0456\u0458\5I%\2\u0457\u0459\t\6\2\2\u0458\u0457\3\2\2\2\u0459"+
+		"\u045a\3\2\2\2\u045a\u0458\3\2\2\2\u045a\u045b\3\2\2\2\u045b^\3\2\2\2"+
+		"\u045c\u045e\t\7\2\2\u045d\u045f\t\b\2\2\u045e\u045d\3\2\2\2\u045e\u045f"+
+		"\3\2\2\2\u045f\u0460\3\2\2\2\u0460\u0461\5[.\2\u0461`\3\2\2\2\u0462\u0463"+
+		"\t\t\2\2\u0463b\3\2\2\2\u0464\u0465\t\n\2\2\u0465d\3\2\2\2\u0466\u046b"+
+		"\5a\61\2\u0467\u046b\5K&\2\u0468\u046b\5c\62\2\u0469\u046b\5Y-\2\u046a"+
+		"\u0466\3\2\2\2\u046a\u0467\3\2\2\2\u046a\u0468\3\2\2\2\u046a\u0469\3\2"+
+		"\2\2\u046b\u046c\3\2\2\2\u046c\u046a\3\2\2\2\u046c\u046d\3\2\2\2\u046d"+
+		"\u0477\3\2\2\2\u046e\u0476\5a\61\2\u046f\u0476\5Y-\2\u0470\u0476\5c\62"+
+		"\2\u0471\u0476\t\6\2\2\u0472\u0476\5E#\2\u0473\u0476\5G$\2\u0474\u0476"+
+		"\5K&\2\u0475\u046e\3\2\2\2\u0475\u046f\3\2\2\2\u0475\u0470\3\2\2\2\u0475"+
+		"\u0471\3\2\2\2\u0475\u0472\3\2\2\2\u0475\u0473\3\2\2\2\u0475\u0474\3\2"+
+		"\2\2\u0476\u0479\3\2\2\2\u0477\u0475\3\2\2\2\u0477\u0478\3\2\2\2\u0478"+
+		"f\3\2\2\2\u0479\u0477\3\2\2\2\u047a\u047b\7\61\2\2\u047b\u047c\7\61\2"+
+		"\2\u047c\u0480\3\2\2\2\u047d\u047f\n\13\2\2\u047e\u047d\3\2\2\2\u047f"+
+		"\u0482\3\2\2\2\u0480\u047e\3\2\2\2\u0480\u0481\3\2\2\2\u0481\u0484\3\2"+
+		"\2\2\u0482\u0480\3\2\2\2\u0483\u0485\7\17\2\2\u0484\u0483\3\2\2\2\u0484"+
+		"\u0485\3\2\2\2\u0485\u0487\3\2\2\2\u0486\u0488\t\f\2\2\u0487\u0486\3\2"+
+		"\2\2\u0488\u0495\3\2\2\2\u0489\u048a\7\61\2\2\u048a\u048b\7,\2\2\u048b"+
+		"\u048f\3\2\2\2\u048c\u048e\13\2\2\2\u048d\u048c\3\2\2\2\u048e\u0491\3"+
+		"\2\2\2\u048f\u0490\3\2\2\2\u048f\u048d\3\2\2\2\u0490\u0492\3\2\2\2\u0491"+
+		"\u048f\3\2\2\2\u0492\u0493\7,\2\2\u0493\u0495\7\61\2\2\u0494\u047a\3\2"+
+		"\2\2\u0494\u0489\3\2\2\2\u0495\u0496\3\2\2\2\u0496\u0497\b\64\2\2\u0497"+
+		"h\3\2\2\2\u0498\u049a\t\r\2\2\u0499\u0498\3\2\2\2\u049a\u049b\3\2\2\2"+
+		"\u049b\u0499\3\2\2\2\u049b\u049c\3\2\2\2\u049c\u049d\3\2\2\2\u049d\u049e"+
+		"\b\65\2\2\u049ej\3\2\2\2\u049f\u04a0\13\2\2\2\u04a0l\3\2\2\2\27\2\u03d5"+
+		"\u03e4\u03e6\u03ef\u03f1\u03ff\u0451\u0454\u045a\u045e\u046a\u046c\u0475"+
+		"\u0477\u0480\u0484\u0487\u048f\u0494\u049b\3\b\2\2";
+	public static final ATN _ATN =
+		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+	static {
+		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+		}
+	}
+}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.tokens b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.tokens
new file mode 100644
index 0000000..5680142
--- /dev/null
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.tokens
@@ -0,0 +1,91 @@
+T__0=1
+T__1=2
+T__2=3
+T__3=4
+T__4=5
+T__5=6
+FUN_NAME=7
+FRAG=8
+SQSTRING=9
+DQSTRING=10
+BOOL=11
+NULL=12
+EQ=13
+NEQ=14
+GTEQ=15
+LTEQ=16
+GT=17
+LT=18
+AND=19
+OR=20
+VERT=21
+NOT=22
+LPAR=23
+RPAR=24
+LBRACE=25
+RBRACE=26
+SQUOTE=27
+DQUOTE=28
+TILDA=29
+LBR=30
+RBR=31
+POUND=32
+COMMA=33
+COLON=34
+MINUS=35
+DOT=36
+UNDERSCORE=37
+ASSIGN=38
+PLUS=39
+QUESTION=40
+MULT=41
+DIV=42
+MOD=43
+DOLLAR=44
+INT=45
+REAL=46
+EXP=47
+ID=48
+COMMENT=49
+WS=50
+ErrorChar=51
+'import'=1
+'intent'=2
+'ordered'=3
+'flow'=4
+'meta'=5
+'term'=6
+'fragment'=8
+'null'=12
+'=='=13
+'!='=14
+'>='=15
+'<='=16
+'>'=17
+'<'=18
+'&&'=19
+'||'=20
+'|'=21
+'!'=22
+'('=23
+')'=24
+'{'=25
+'}'=26
+'\''=27
+'"'=28
+'~'=29
+'['=30
+']'=31
+'#'=32
+','=33
+':'=34
+'-'=35
+'.'=36
+'_'=37
+'='=38
+'+'=39
+'?'=40
+'*'=41
+'/'=42
+'%'=43
+'$'=44
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlListener.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlListener.java
new file mode 100644
index 0000000..2c02411
--- /dev/null
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlListener.java
@@ -0,0 +1,458 @@
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
+package org.apache.nlpcraft.model.intent.compiler.antlr4;
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+
+/**
+ * This interface defines a complete listener for a parse tree produced by
+ * {@link NCIntentIdlParser}.
+ */
+public interface NCIntentIdlListener extends ParseTreeListener {
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#idl}.
+	 * @param ctx the parse tree
+	 */
+	void enterIdl(NCIntentIdlParser.IdlContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#idl}.
+	 * @param ctx the parse tree
+	 */
+	void exitIdl(NCIntentIdlParser.IdlContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#synonym}.
+	 * @param ctx the parse tree
+	 */
+	void enterSynonym(NCIntentIdlParser.SynonymContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#synonym}.
+	 * @param ctx the parse tree
+	 */
+	void exitSynonym(NCIntentIdlParser.SynonymContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#alias}.
+	 * @param ctx the parse tree
+	 */
+	void enterAlias(NCIntentIdlParser.AliasContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#alias}.
+	 * @param ctx the parse tree
+	 */
+	void exitAlias(NCIntentIdlParser.AliasContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#idlItems}.
+	 * @param ctx the parse tree
+	 */
+	void enterIdlItems(NCIntentIdlParser.IdlItemsContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#idlItems}.
+	 * @param ctx the parse tree
+	 */
+	void exitIdlItems(NCIntentIdlParser.IdlItemsContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#idlItem}.
+	 * @param ctx the parse tree
+	 */
+	void enterIdlItem(NCIntentIdlParser.IdlItemContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#idlItem}.
+	 * @param ctx the parse tree
+	 */
+	void exitIdlItem(NCIntentIdlParser.IdlItemContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#imp}.
+	 * @param ctx the parse tree
+	 */
+	void enterImp(NCIntentIdlParser.ImpContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#imp}.
+	 * @param ctx the parse tree
+	 */
+	void exitImp(NCIntentIdlParser.ImpContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#frag}.
+	 * @param ctx the parse tree
+	 */
+	void enterFrag(NCIntentIdlParser.FragContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#frag}.
+	 * @param ctx the parse tree
+	 */
+	void exitFrag(NCIntentIdlParser.FragContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#fragId}.
+	 * @param ctx the parse tree
+	 */
+	void enterFragId(NCIntentIdlParser.FragIdContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#fragId}.
+	 * @param ctx the parse tree
+	 */
+	void exitFragId(NCIntentIdlParser.FragIdContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#fragRef}.
+	 * @param ctx the parse tree
+	 */
+	void enterFragRef(NCIntentIdlParser.FragRefContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#fragRef}.
+	 * @param ctx the parse tree
+	 */
+	void exitFragRef(NCIntentIdlParser.FragRefContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#fragMeta}.
+	 * @param ctx the parse tree
+	 */
+	void enterFragMeta(NCIntentIdlParser.FragMetaContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#fragMeta}.
+	 * @param ctx the parse tree
+	 */
+	void exitFragMeta(NCIntentIdlParser.FragMetaContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#intent}.
+	 * @param ctx the parse tree
+	 */
+	void enterIntent(NCIntentIdlParser.IntentContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#intent}.
+	 * @param ctx the parse tree
+	 */
+	void exitIntent(NCIntentIdlParser.IntentContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#intentId}.
+	 * @param ctx the parse tree
+	 */
+	void enterIntentId(NCIntentIdlParser.IntentIdContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#intentId}.
+	 * @param ctx the parse tree
+	 */
+	void exitIntentId(NCIntentIdlParser.IntentIdContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#orderedDecl}.
+	 * @param ctx the parse tree
+	 */
+	void enterOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#orderedDecl}.
+	 * @param ctx the parse tree
+	 */
+	void exitOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#mtdDecl}.
+	 * @param ctx the parse tree
+	 */
+	void enterMtdDecl(NCIntentIdlParser.MtdDeclContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#mtdDecl}.
+	 * @param ctx the parse tree
+	 */
+	void exitMtdDecl(NCIntentIdlParser.MtdDeclContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#flowDecl}.
+	 * @param ctx the parse tree
+	 */
+	void enterFlowDecl(NCIntentIdlParser.FlowDeclContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#flowDecl}.
+	 * @param ctx the parse tree
+	 */
+	void exitFlowDecl(NCIntentIdlParser.FlowDeclContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#metaDecl}.
+	 * @param ctx the parse tree
+	 */
+	void enterMetaDecl(NCIntentIdlParser.MetaDeclContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#metaDecl}.
+	 * @param ctx the parse tree
+	 */
+	void exitMetaDecl(NCIntentIdlParser.MetaDeclContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonObj}.
+	 * @param ctx the parse tree
+	 */
+	void enterJsonObj(NCIntentIdlParser.JsonObjContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonObj}.
+	 * @param ctx the parse tree
+	 */
+	void exitJsonObj(NCIntentIdlParser.JsonObjContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonPair}.
+	 * @param ctx the parse tree
+	 */
+	void enterJsonPair(NCIntentIdlParser.JsonPairContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonPair}.
+	 * @param ctx the parse tree
+	 */
+	void exitJsonPair(NCIntentIdlParser.JsonPairContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonVal}.
+	 * @param ctx the parse tree
+	 */
+	void enterJsonVal(NCIntentIdlParser.JsonValContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonVal}.
+	 * @param ctx the parse tree
+	 */
+	void exitJsonVal(NCIntentIdlParser.JsonValContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonArr}.
+	 * @param ctx the parse tree
+	 */
+	void enterJsonArr(NCIntentIdlParser.JsonArrContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonArr}.
+	 * @param ctx the parse tree
+	 */
+	void exitJsonArr(NCIntentIdlParser.JsonArrContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#terms}.
+	 * @param ctx the parse tree
+	 */
+	void enterTerms(NCIntentIdlParser.TermsContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#terms}.
+	 * @param ctx the parse tree
+	 */
+	void exitTerms(NCIntentIdlParser.TermsContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#termItem}.
+	 * @param ctx the parse tree
+	 */
+	void enterTermItem(NCIntentIdlParser.TermItemContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#termItem}.
+	 * @param ctx the parse tree
+	 */
+	void exitTermItem(NCIntentIdlParser.TermItemContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#termEq}.
+	 * @param ctx the parse tree
+	 */
+	void enterTermEq(NCIntentIdlParser.TermEqContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#termEq}.
+	 * @param ctx the parse tree
+	 */
+	void exitTermEq(NCIntentIdlParser.TermEqContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#term}.
+	 * @param ctx the parse tree
+	 */
+	void enterTerm(NCIntentIdlParser.TermContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#term}.
+	 * @param ctx the parse tree
+	 */
+	void exitTerm(NCIntentIdlParser.TermContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#mtdRef}.
+	 * @param ctx the parse tree
+	 */
+	void enterMtdRef(NCIntentIdlParser.MtdRefContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#mtdRef}.
+	 * @param ctx the parse tree
+	 */
+	void exitMtdRef(NCIntentIdlParser.MtdRefContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#javaFqn}.
+	 * @param ctx the parse tree
+	 */
+	void enterJavaFqn(NCIntentIdlParser.JavaFqnContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#javaFqn}.
+	 * @param ctx the parse tree
+	 */
+	void exitJavaFqn(NCIntentIdlParser.JavaFqnContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#termId}.
+	 * @param ctx the parse tree
+	 */
+	void enterTermId(NCIntentIdlParser.TermIdContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#termId}.
+	 * @param ctx the parse tree
+	 */
+	void exitTermId(NCIntentIdlParser.TermIdContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code parExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterParExpr(NCIntentIdlParser.ParExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code parExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitParExpr(NCIntentIdlParser.ParExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code unaryExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code unaryExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code compExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterCompExpr(NCIntentIdlParser.CompExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code compExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitCompExpr(NCIntentIdlParser.CompExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code plusMinusExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code plusMinusExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code atomExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterAtomExpr(NCIntentIdlParser.AtomExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code atomExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitAtomExpr(NCIntentIdlParser.AtomExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code multDivModExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code multDivModExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code andOrExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code andOrExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code callExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterCallExpr(NCIntentIdlParser.CallExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code callExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitCallExpr(NCIntentIdlParser.CallExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code eqNeqExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code eqNeqExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#paramList}.
+	 * @param ctx the parse tree
+	 */
+	void enterParamList(NCIntentIdlParser.ParamListContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#paramList}.
+	 * @param ctx the parse tree
+	 */
+	void exitParamList(NCIntentIdlParser.ParamListContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#atom}.
+	 * @param ctx the parse tree
+	 */
+	void enterAtom(NCIntentIdlParser.AtomContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#atom}.
+	 * @param ctx the parse tree
+	 */
+	void exitAtom(NCIntentIdlParser.AtomContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#qstring}.
+	 * @param ctx the parse tree
+	 */
+	void enterQstring(NCIntentIdlParser.QstringContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#qstring}.
+	 * @param ctx the parse tree
+	 */
+	void exitQstring(NCIntentIdlParser.QstringContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#minMax}.
+	 * @param ctx the parse tree
+	 */
+	void enterMinMax(NCIntentIdlParser.MinMaxContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#minMax}.
+	 * @param ctx the parse tree
+	 */
+	void exitMinMax(NCIntentIdlParser.MinMaxContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#minMaxShortcut}.
+	 * @param ctx the parse tree
+	 */
+	void enterMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#minMaxShortcut}.
+	 * @param ctx the parse tree
+	 */
+	void exitMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#minMaxRange}.
+	 * @param ctx the parse tree
+	 */
+	void enterMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#minMaxRange}.
+	 * @param ctx the parse tree
+	 */
+	void exitMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#id}.
+	 * @param ctx the parse tree
+	 */
+	void enterId(NCIntentIdlParser.IdContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#id}.
+	 * @param ctx the parse tree
+	 */
+	void exitId(NCIntentIdlParser.IdContext ctx);
+}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlParser.java
new file mode 100644
index 0000000..03c022f
--- /dev/null
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlParser.java
@@ -0,0 +1,2797 @@
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
+package org.apache.nlpcraft.model.intent.compiler.antlr4;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
+import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
+public class NCIntentIdlParser extends Parser {
+	static { RuntimeMetaData.checkVersion("4.9.1", RuntimeMetaData.VERSION); }
+
+	protected static final DFA[] _decisionToDFA;
+	protected static final PredictionContextCache _sharedContextCache =
+		new PredictionContextCache();
+	public static final int
+		T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, FUN_NAME=7, FRAG=8, SQSTRING=9, 
+		DQSTRING=10, BOOL=11, NULL=12, EQ=13, NEQ=14, GTEQ=15, LTEQ=16, GT=17, 
+		LT=18, AND=19, OR=20, VERT=21, NOT=22, LPAR=23, RPAR=24, LBRACE=25, RBRACE=26, 
+		SQUOTE=27, DQUOTE=28, TILDA=29, LBR=30, RBR=31, POUND=32, COMMA=33, COLON=34, 
+		MINUS=35, DOT=36, UNDERSCORE=37, ASSIGN=38, PLUS=39, QUESTION=40, MULT=41, 
+		DIV=42, MOD=43, DOLLAR=44, INT=45, REAL=46, EXP=47, ID=48, COMMENT=49, 
+		WS=50, ErrorChar=51;
+	public static final int
+		RULE_idl = 0, RULE_synonym = 1, RULE_alias = 2, RULE_idlItems = 3, RULE_idlItem = 4, 
+		RULE_imp = 5, RULE_frag = 6, RULE_fragId = 7, RULE_fragRef = 8, RULE_fragMeta = 9, 
+		RULE_intent = 10, RULE_intentId = 11, RULE_orderedDecl = 12, RULE_mtdDecl = 13, 
+		RULE_flowDecl = 14, RULE_metaDecl = 15, RULE_jsonObj = 16, RULE_jsonPair = 17, 
+		RULE_jsonVal = 18, RULE_jsonArr = 19, RULE_terms = 20, RULE_termItem = 21, 
+		RULE_termEq = 22, RULE_term = 23, RULE_mtdRef = 24, RULE_javaFqn = 25, 
+		RULE_termId = 26, RULE_expr = 27, RULE_paramList = 28, RULE_atom = 29, 
+		RULE_qstring = 30, RULE_minMax = 31, RULE_minMaxShortcut = 32, RULE_minMaxRange = 33, 
+		RULE_id = 34;
+	private static String[] makeRuleNames() {
+		return new String[] {
+			"idl", "synonym", "alias", "idlItems", "idlItem", "imp", "frag", "fragId", 
+			"fragRef", "fragMeta", "intent", "intentId", "orderedDecl", "mtdDecl", 
+			"flowDecl", "metaDecl", "jsonObj", "jsonPair", "jsonVal", "jsonArr", 
+			"terms", "termItem", "termEq", "term", "mtdRef", "javaFqn", "termId", 
+			"expr", "paramList", "atom", "qstring", "minMax", "minMaxShortcut", "minMaxRange", 
+			"id"
+		};
+	}
+	public static final String[] ruleNames = makeRuleNames();
+
+	private static String[] makeLiteralNames() {
+		return new String[] {
+			null, "'import'", "'intent'", "'ordered'", "'flow'", "'meta'", "'term'", 
+			null, "'fragment'", null, null, null, "'null'", "'=='", "'!='", "'>='", 
+			"'<='", "'>'", "'<'", "'&&'", "'||'", "'|'", "'!'", "'('", "')'", "'{'", 
+			"'}'", "'''", "'\"'", "'~'", "'['", "']'", "'#'", "','", "':'", "'-'", 
+			"'.'", "'_'", "'='", "'+'", "'?'", "'*'", "'/'", "'%'", "'$'"
+		};
+	}
+	private static final String[] _LITERAL_NAMES = makeLiteralNames();
+	private static String[] makeSymbolicNames() {
+		return new String[] {
+			null, null, null, null, null, null, null, "FUN_NAME", "FRAG", "SQSTRING", 
+			"DQSTRING", "BOOL", "NULL", "EQ", "NEQ", "GTEQ", "LTEQ", "GT", "LT", 
+			"AND", "OR", "VERT", "NOT", "LPAR", "RPAR", "LBRACE", "RBRACE", "SQUOTE", 
+			"DQUOTE", "TILDA", "LBR", "RBR", "POUND", "COMMA", "COLON", "MINUS", 
+			"DOT", "UNDERSCORE", "ASSIGN", "PLUS", "QUESTION", "MULT", "DIV", "MOD", 
+			"DOLLAR", "INT", "REAL", "EXP", "ID", "COMMENT", "WS", "ErrorChar"
+		};
+	}
+	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+	/**
+	 * @deprecated Use {@link #VOCABULARY} instead.
+	 */
+	@Deprecated
+	public static final String[] tokenNames;
+	static {
+		tokenNames = new String[_SYMBOLIC_NAMES.length];
+		for (int i = 0; i < tokenNames.length; i++) {
+			tokenNames[i] = VOCABULARY.getLiteralName(i);
+			if (tokenNames[i] == null) {
+				tokenNames[i] = VOCABULARY.getSymbolicName(i);
+			}
+
+			if (tokenNames[i] == null) {
+				tokenNames[i] = "<INVALID>";
+			}
+		}
+	}
+
+	@Override
+	@Deprecated
+	public String[] getTokenNames() {
+		return tokenNames;
+	}
+
+	@Override
+
+	public Vocabulary getVocabulary() {
+		return VOCABULARY;
+	}
+
+	@Override
+	public String getGrammarFileName() { return "NCIntentIdl.g4"; }
+
+	@Override
+	public String[] getRuleNames() { return ruleNames; }
+
+	@Override
+	public String getSerializedATN() { return _serializedATN; }
+
+	@Override
+	public ATN getATN() { return _ATN; }
+
+	public NCIntentIdlParser(TokenStream input) {
+		super(input);
+		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+	}
+
+	public static class IdlContext extends ParserRuleContext {
+		public IdlItemsContext idlItems() {
+			return getRuleContext(IdlItemsContext.class,0);
+		}
+		public TerminalNode EOF() { return getToken(NCIntentIdlParser.EOF, 0); }
+		public IdlContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_idl; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIdl(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIdl(this);
+		}
+	}
+
+	public final IdlContext idl() throws RecognitionException {
+		IdlContext _localctx = new IdlContext(_ctx, getState());
+		enterRule(_localctx, 0, RULE_idl);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(70);
+			idlItems(0);
+			setState(71);
+			match(EOF);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class SynonymContext extends ParserRuleContext {
+		public TerminalNode LBRACE() { return getToken(NCIntentIdlParser.LBRACE, 0); }
+		public ExprContext expr() {
+			return getRuleContext(ExprContext.class,0);
+		}
+		public TerminalNode RBRACE() { return getToken(NCIntentIdlParser.RBRACE, 0); }
+		public TerminalNode EOF() { return getToken(NCIntentIdlParser.EOF, 0); }
+		public AliasContext alias() {
+			return getRuleContext(AliasContext.class,0);
+		}
+		public SynonymContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_synonym; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterSynonym(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitSynonym(this);
+		}
+	}
+
+	public final SynonymContext synonym() throws RecognitionException {
+		SynonymContext _localctx = new SynonymContext(_ctx, getState());
+		enterRule(_localctx, 2, RULE_synonym);
+		int _la;
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(74);
+			_errHandler.sync(this);
+			_la = _input.LA(1);
+			if (_la==LBR) {
+				{
+				setState(73);
+				alias();
+				}
+			}
+
+			setState(76);
+			match(LBRACE);
+			setState(77);
+			expr(0);
+			setState(78);
+			match(RBRACE);
+			setState(79);
+			match(EOF);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class AliasContext extends ParserRuleContext {
+		public TerminalNode LBR() { return getToken(NCIntentIdlParser.LBR, 0); }
+		public IdContext id() {
+			return getRuleContext(IdContext.class,0);
+		}
+		public TerminalNode RBR() { return getToken(NCIntentIdlParser.RBR, 0); }
+		public AliasContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_alias; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAlias(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAlias(this);
+		}
+	}
+
+	public final AliasContext alias() throws RecognitionException {
+		AliasContext _localctx = new AliasContext(_ctx, getState());
+		enterRule(_localctx, 4, RULE_alias);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(81);
+			match(LBR);
+			setState(82);
+			id();
+			setState(83);
+			match(RBR);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class IdlItemsContext extends ParserRuleContext {
+		public IdlItemContext idlItem() {
+			return getRuleContext(IdlItemContext.class,0);
+		}
+		public IdlItemsContext idlItems() {
+			return getRuleContext(IdlItemsContext.class,0);
+		}
+		public IdlItemsContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_idlItems; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIdlItems(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIdlItems(this);
+		}
+	}
+
+	public final IdlItemsContext idlItems() throws RecognitionException {
+		return idlItems(0);
+	}
+
+	private IdlItemsContext idlItems(int _p) throws RecognitionException {
+		ParserRuleContext _parentctx = _ctx;
+		int _parentState = getState();
+		IdlItemsContext _localctx = new IdlItemsContext(_ctx, _parentState);
+		IdlItemsContext _prevctx = _localctx;
+		int _startState = 6;
+		enterRecursionRule(_localctx, 6, RULE_idlItems, _p);
+		try {
+			int _alt;
+			enterOuterAlt(_localctx, 1);
+			{
+			{
+			setState(86);
+			idlItem();
+			}
+			_ctx.stop = _input.LT(-1);
+			setState(92);
+			_errHandler.sync(this);
+			_alt = getInterpreter().adaptivePredict(_input,1,_ctx);
+			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+				if ( _alt==1 ) {
+					if ( _parseListeners!=null ) triggerExitRuleEvent();
+					_prevctx = _localctx;
+					{
+					{
+					_localctx = new IdlItemsContext(_parentctx, _parentState);
+					pushNewRecursionContext(_localctx, _startState, RULE_idlItems);
+					setState(88);
+					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+					setState(89);
+					idlItem();
+					}
+					} 
+				}
+				setState(94);
+				_errHandler.sync(this);
+				_alt = getInterpreter().adaptivePredict(_input,1,_ctx);
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			unrollRecursionContexts(_parentctx);
+		}
+		return _localctx;
+	}
+
+	public static class IdlItemContext extends ParserRuleContext {
+		public IntentContext intent() {
+			return getRuleContext(IntentContext.class,0);
+		}
+		public FragContext frag() {
+			return getRuleContext(FragContext.class,0);
+		}
+		public ImpContext imp() {
+			return getRuleContext(ImpContext.class,0);
+		}
+		public IdlItemContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_idlItem; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIdlItem(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIdlItem(this);
+		}
+	}
+
+	public final IdlItemContext idlItem() throws RecognitionException {
+		IdlItemContext _localctx = new IdlItemContext(_ctx, getState());
+		enterRule(_localctx, 8, RULE_idlItem);
+		try {
+			setState(98);
+			_errHandler.sync(this);
+			switch (_input.LA(1)) {
+			case T__1:
+				enterOuterAlt(_localctx, 1);
+				{
+				setState(95);
+				intent();
+				}
+				break;
+			case FRAG:
+				enterOuterAlt(_localctx, 2);
+				{
+				setState(96);
+				frag();
+				}
+				break;
+			case T__0:
+				enterOuterAlt(_localctx, 3);
+				{
+				setState(97);
+				imp();
+				}
+				break;
+			default:
+				throw new NoViableAltException(this);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class ImpContext extends ParserRuleContext {
+		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
+		public QstringContext qstring() {
+			return getRuleContext(QstringContext.class,0);
+		}
+		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
+		public ImpContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_imp; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterImp(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitImp(this);
+		}
+	}
+
+	public final ImpContext imp() throws RecognitionException {
+		ImpContext _localctx = new ImpContext(_ctx, getState());
+		enterRule(_localctx, 10, RULE_imp);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(100);
+			match(T__0);
+			setState(101);
+			match(LPAR);
+			setState(102);
+			qstring();
+			setState(103);
+			match(RPAR);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class FragContext extends ParserRuleContext {
+		public FragIdContext fragId() {
+			return getRuleContext(FragIdContext.class,0);
+		}
+		public TermsContext terms() {
+			return getRuleContext(TermsContext.class,0);
+		}
+		public FragContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_frag; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFrag(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFrag(this);
+		}
+	}
+
+	public final FragContext frag() throws RecognitionException {
+		FragContext _localctx = new FragContext(_ctx, getState());
+		enterRule(_localctx, 12, RULE_frag);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(105);
+			fragId();
+			setState(106);
+			terms(0);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class FragIdContext extends ParserRuleContext {
+		public TerminalNode FRAG() { return getToken(NCIntentIdlParser.FRAG, 0); }
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
+		public IdContext id() {
+			return getRuleContext(IdContext.class,0);
+		}
+		public FragIdContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_fragId; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFragId(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFragId(this);
+		}
+	}
+
+	public final FragIdContext fragId() throws RecognitionException {
+		FragIdContext _localctx = new FragIdContext(_ctx, getState());
+		enterRule(_localctx, 14, RULE_fragId);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(108);
+			match(FRAG);
+			setState(109);
+			match(ASSIGN);
+			setState(110);
+			id();
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class FragRefContext extends ParserRuleContext {
+		public TerminalNode FRAG() { return getToken(NCIntentIdlParser.FRAG, 0); }
+		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
+		public IdContext id() {
+			return getRuleContext(IdContext.class,0);
+		}
+		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
+		public FragMetaContext fragMeta() {
+			return getRuleContext(FragMetaContext.class,0);
+		}
+		public FragRefContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_fragRef; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFragRef(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFragRef(this);
+		}
+	}
+
+	public final FragRefContext fragRef() throws RecognitionException {
+		FragRefContext _localctx = new FragRefContext(_ctx, getState());
+		enterRule(_localctx, 16, RULE_fragRef);
+		int _la;
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(112);
+			match(FRAG);
+			setState(113);
+			match(LPAR);
+			setState(114);
+			id();
+			setState(116);
+			_errHandler.sync(this);
+			_la = _input.LA(1);
+			if (_la==COMMA) {
+				{
+				setState(115);
+				fragMeta();
+				}
+			}
+
+			setState(118);
+			match(RPAR);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class FragMetaContext extends ParserRuleContext {
+		public TerminalNode COMMA() { return getToken(NCIntentIdlParser.COMMA, 0); }
+		public JsonObjContext jsonObj() {
+			return getRuleContext(JsonObjContext.class,0);
+		}
+		public FragMetaContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_fragMeta; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFragMeta(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFragMeta(this);
+		}
+	}
+
+	public final FragMetaContext fragMeta() throws RecognitionException {
+		FragMetaContext _localctx = new FragMetaContext(_ctx, getState());
+		enterRule(_localctx, 18, RULE_fragMeta);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(120);
+			match(COMMA);
+			setState(121);
+			jsonObj();
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class IntentContext extends ParserRuleContext {
+		public IntentIdContext intentId() {
+			return getRuleContext(IntentIdContext.class,0);
+		}
+		public TermsContext terms() {
+			return getRuleContext(TermsContext.class,0);
+		}
+		public OrderedDeclContext orderedDecl() {
+			return getRuleContext(OrderedDeclContext.class,0);
+		}
+		public FlowDeclContext flowDecl() {
+			return getRuleContext(FlowDeclContext.class,0);
+		}
+		public MetaDeclContext metaDecl() {
+			return getRuleContext(MetaDeclContext.class,0);
+		}
+		public IntentContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_intent; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIntent(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIntent(this);
+		}
+	}
+
+	public final IntentContext intent() throws RecognitionException {
+		IntentContext _localctx = new IntentContext(_ctx, getState());
+		enterRule(_localctx, 20, RULE_intent);
+		int _la;
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(123);
+			intentId();
+			setState(125);
+			_errHandler.sync(this);
+			_la = _input.LA(1);
+			if (_la==T__2) {
+				{
+				setState(124);
+				orderedDecl();
+				}
+			}
+
+			setState(128);
+			_errHandler.sync(this);
+			_la = _input.LA(1);
+			if (_la==T__3) {
+				{
+				setState(127);
+				flowDecl();
+				}
+			}
+
+			setState(131);
+			_errHandler.sync(this);
+			_la = _input.LA(1);
+			if (_la==T__4) {
+				{
+				setState(130);
+				metaDecl();
+				}
+			}
+
+			setState(133);
+			terms(0);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class IntentIdContext extends ParserRuleContext {
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
+		public IdContext id() {
+			return getRuleContext(IdContext.class,0);
+		}
+		public IntentIdContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_intentId; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIntentId(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIntentId(this);
+		}
+	}
+
+	public final IntentIdContext intentId() throws RecognitionException {
+		IntentIdContext _localctx = new IntentIdContext(_ctx, getState());
+		enterRule(_localctx, 22, RULE_intentId);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(135);
+			match(T__1);
+			setState(136);
+			match(ASSIGN);
+			setState(137);
+			id();
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class OrderedDeclContext extends ParserRuleContext {
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
+		public TerminalNode BOOL() { return getToken(NCIntentIdlParser.BOOL, 0); }
+		public OrderedDeclContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_orderedDecl; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterOrderedDecl(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitOrderedDecl(this);
+		}
+	}
+
+	public final OrderedDeclContext orderedDecl() throws RecognitionException {
+		OrderedDeclContext _localctx = new OrderedDeclContext(_ctx, getState());
+		enterRule(_localctx, 24, RULE_orderedDecl);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(139);
+			match(T__2);
+			setState(140);
+			match(ASSIGN);
+			setState(141);
+			match(BOOL);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class MtdDeclContext extends ParserRuleContext {
+		public List<TerminalNode> DIV() { return getTokens(NCIntentIdlParser.DIV); }
+		public TerminalNode DIV(int i) {
+			return getToken(NCIntentIdlParser.DIV, i);
+		}
+		public MtdRefContext mtdRef() {
+			return getRuleContext(MtdRefContext.class,0);
+		}
+		public MtdDeclContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_mtdDecl; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMtdDecl(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMtdDecl(this);
+		}
+	}
+
+	public final MtdDeclContext mtdDecl() throws RecognitionException {
+		MtdDeclContext _localctx = new MtdDeclContext(_ctx, getState());
+		enterRule(_localctx, 26, RULE_mtdDecl);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(143);
+			match(DIV);
+			setState(144);
+			mtdRef();
+			setState(145);
+			match(DIV);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class FlowDeclContext extends ParserRuleContext {
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
+		public QstringContext qstring() {
+			return getRuleContext(QstringContext.class,0);
+		}
+		public MtdDeclContext mtdDecl() {
+			return getRuleContext(MtdDeclContext.class,0);
+		}
+		public FlowDeclContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_flowDecl; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFlowDecl(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFlowDecl(this);
+		}
+	}
+
+	public final FlowDeclContext flowDecl() throws RecognitionException {
+		FlowDeclContext _localctx = new FlowDeclContext(_ctx, getState());
+		enterRule(_localctx, 28, RULE_flowDecl);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(147);
+			match(T__3);
+			setState(148);
+			match(ASSIGN);
+			setState(151);
+			_errHandler.sync(this);
+			switch (_input.LA(1)) {
+			case SQSTRING:
+			case DQSTRING:
+				{
+				setState(149);
+				qstring();
+				}
+				break;
+			case DIV:
+				{
+				setState(150);
+				mtdDecl();
+				}
+				break;
+			default:
+				throw new NoViableAltException(this);
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class MetaDeclContext extends ParserRuleContext {
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
+		public JsonObjContext jsonObj() {
+			return getRuleContext(JsonObjContext.class,0);
+		}
+		public MetaDeclContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_metaDecl; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMetaDecl(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMetaDecl(this);
+		}
+	}
+
+	public final MetaDeclContext metaDecl() throws RecognitionException {
+		MetaDeclContext _localctx = new MetaDeclContext(_ctx, getState());
+		enterRule(_localctx, 30, RULE_metaDecl);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(153);
+			match(T__4);
+			setState(154);
+			match(ASSIGN);
+			setState(155);
+			jsonObj();
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class JsonObjContext extends ParserRuleContext {
+		public TerminalNode LBRACE() { return getToken(NCIntentIdlParser.LBRACE, 0); }
+		public List<JsonPairContext> jsonPair() {
+			return getRuleContexts(JsonPairContext.class);
+		}
+		public JsonPairContext jsonPair(int i) {
+			return getRuleContext(JsonPairContext.class,i);
+		}
+		public TerminalNode RBRACE() { return getToken(NCIntentIdlParser.RBRACE, 0); }
+		public List<TerminalNode> COMMA() { return getTokens(NCIntentIdlParser.COMMA); }
+		public TerminalNode COMMA(int i) {
+			return getToken(NCIntentIdlParser.COMMA, i);
+		}
+		public JsonObjContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_jsonObj; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonObj(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonObj(this);
+		}
+	}
+
+	public final JsonObjContext jsonObj() throws RecognitionException {
+		JsonObjContext _localctx = new JsonObjContext(_ctx, getState());
+		enterRule(_localctx, 32, RULE_jsonObj);
+		int _la;
+		try {
+			setState(170);
+			_errHandler.sync(this);
+			switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
+			case 1:
+				enterOuterAlt(_localctx, 1);
+				{
+				setState(157);
+				match(LBRACE);
+				setState(158);
+				jsonPair();
+				setState(163);
+				_errHandler.sync(this);
+				_la = _input.LA(1);
+				while (_la==COMMA) {
+					{
+					{
+					setState(159);
+					match(COMMA);
+					setState(160);
+					jsonPair();
+					}
+					}
+					setState(165);
+					_errHandler.sync(this);
+					_la = _input.LA(1);
+				}
+				setState(166);
+				match(RBRACE);
+				}
+				break;
+			case 2:
+				enterOuterAlt(_localctx, 2);
+				{
+				setState(168);
+				match(LBRACE);
+				setState(169);
+				match(RBRACE);
+				}
+				break;
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class JsonPairContext extends ParserRuleContext {
+		public QstringContext qstring() {
+			return getRuleContext(QstringContext.class,0);
+		}
+		public TerminalNode COLON() { return getToken(NCIntentIdlParser.COLON, 0); }
+		public JsonValContext jsonVal() {
+			return getRuleContext(JsonValContext.class,0);
+		}
+		public JsonPairContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_jsonPair; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonPair(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonPair(this);
+		}
+	}
+
+	public final JsonPairContext jsonPair() throws RecognitionException {
+		JsonPairContext _localctx = new JsonPairContext(_ctx, getState());
+		enterRule(_localctx, 34, RULE_jsonPair);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(172);
+			qstring();
+			setState(173);
+			match(COLON);
+			setState(174);
+			jsonVal();
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class JsonValContext extends ParserRuleContext {
+		public QstringContext qstring() {
+			return getRuleContext(QstringContext.class,0);
+		}
+		public TerminalNode INT() { return getToken(NCIntentIdlParser.INT, 0); }
+		public TerminalNode MINUS() { return getToken(NCIntentIdlParser.MINUS, 0); }
+		public TerminalNode REAL() { return getToken(NCIntentIdlParser.REAL, 0); }
+		public TerminalNode EXP() { return getToken(NCIntentIdlParser.EXP, 0); }
+		public JsonObjContext jsonObj() {
+			return getRuleContext(JsonObjContext.class,0);
+		}
+		public JsonArrContext jsonArr() {
+			return getRuleContext(JsonArrContext.class,0);
+		}
+		public TerminalNode BOOL() { return getToken(NCIntentIdlParser.BOOL, 0); }
+		public TerminalNode NULL() { return getToken(NCIntentIdlParser.NULL, 0); }
+		public JsonValContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_jsonVal; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonVal(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonVal(this);
+		}
+	}
+
+	public final JsonValContext jsonVal() throws RecognitionException {
+		JsonValContext _localctx = new JsonValContext(_ctx, getState());
+		enterRule(_localctx, 36, RULE_jsonVal);
+		int _la;
+		try {
+			setState(191);
+			_errHandler.sync(this);
+			switch (_input.LA(1)) {
+			case SQSTRING:
+			case DQSTRING:
+				enterOuterAlt(_localctx, 1);
+				{
+				setState(176);
+				qstring();
+				}
+				break;
+			case MINUS:
+			case INT:
+				enterOuterAlt(_localctx, 2);
+				{
+				setState(178);
+				_errHandler.sync(this);
+				_la = _input.LA(1);
+				if (_la==MINUS) {
+					{
+					setState(177);
+					match(MINUS);
+					}
+				}
+
+				setState(180);
+				match(INT);
+				setState(182);
+				_errHandler.sync(this);
+				_la = _input.LA(1);
+				if (_la==REAL) {
+					{
+					setState(181);
+					match(REAL);
+					}
+				}
+
+				setState(185);
+				_errHandler.sync(this);
+				_la = _input.LA(1);
+				if (_la==EXP) {
+					{
+					setState(184);
+					match(EXP);
+					}
+				}
+
+				}
+				break;
+			case LBRACE:
+				enterOuterAlt(_localctx, 3);
+				{
+				setState(187);
+				jsonObj();
+				}
+				break;
+			case LBR:
+				enterOuterAlt(_localctx, 4);
+				{
+				setState(188);
+				jsonArr();
+				}
+				break;
+			case BOOL:
+				enterOuterAlt(_localctx, 5);
+				{
+				setState(189);
+				match(BOOL);
+				}
+				break;
+			case NULL:
+				enterOuterAlt(_localctx, 6);
+				{
+				setState(190);
+				match(NULL);
+				}
+				break;
+			default:
+				throw new NoViableAltException(this);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class JsonArrContext extends ParserRuleContext {
+		public TerminalNode LBR() { return getToken(NCIntentIdlParser.LBR, 0); }
+		public List<JsonValContext> jsonVal() {
+			return getRuleContexts(JsonValContext.class);
+		}
+		public JsonValContext jsonVal(int i) {
+			return getRuleContext(JsonValContext.class,i);
+		}
+		public TerminalNode RBR() { return getToken(NCIntentIdlParser.RBR, 0); }
+		public List<TerminalNode> COMMA() { return getTokens(NCIntentIdlParser.COMMA); }
+		public TerminalNode COMMA(int i) {
+			return getToken(NCIntentIdlParser.COMMA, i);
+		}
+		public JsonArrContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_jsonArr; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonArr(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonArr(this);
+		}
+	}
+
+	public final JsonArrContext jsonArr() throws RecognitionException {
+		JsonArrContext _localctx = new JsonArrContext(_ctx, getState());
+		enterRule(_localctx, 38, RULE_jsonArr);
+		int _la;
+		try {
+			setState(206);
+			_errHandler.sync(this);
+			switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
+			case 1:
+				enterOuterAlt(_localctx, 1);
+				{
+				setState(193);
+				match(LBR);
+				setState(194);
+				jsonVal();
+				setState(199);
+				_errHandler.sync(this);
+				_la = _input.LA(1);
+				while (_la==COMMA) {
+					{
+					{
+					setState(195);
+					match(COMMA);
+					setState(196);
+					jsonVal();
+					}
+					}
+					setState(201);
+					_errHandler.sync(this);
+					_la = _input.LA(1);
+				}
+				setState(202);
+				match(RBR);
+				}
+				break;
+			case 2:
+				enterOuterAlt(_localctx, 2);
+				{
+				setState(204);
+				match(LBR);
+				setState(205);
+				match(RBR);
+				}
+				break;
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class TermsContext extends ParserRuleContext {
+		public TermItemContext termItem() {
+			return getRuleContext(TermItemContext.class,0);
+		}
+		public TermsContext terms() {
+			return getRuleContext(TermsContext.class,0);
+		}
+		public TermsContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_terms; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTerms(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTerms(this);
+		}
+	}
+
+	public final TermsContext terms() throws RecognitionException {
+		return terms(0);
+	}
+
+	private TermsContext terms(int _p) throws RecognitionException {
+		ParserRuleContext _parentctx = _ctx;
+		int _parentState = getState();
+		TermsContext _localctx = new TermsContext(_ctx, _parentState);
+		TermsContext _prevctx = _localctx;
+		int _startState = 40;
+		enterRecursionRule(_localctx, 40, RULE_terms, _p);
+		try {
+			int _alt;
+			enterOuterAlt(_localctx, 1);
+			{
+			{
+			setState(209);
+			termItem();
+			}
+			_ctx.stop = _input.LT(-1);
+			setState(215);
+			_errHandler.sync(this);
+			_alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+				if ( _alt==1 ) {
+					if ( _parseListeners!=null ) triggerExitRuleEvent();
+					_prevctx = _localctx;
+					{
+					{
+					_localctx = new TermsContext(_parentctx, _parentState);
+					pushNewRecursionContext(_localctx, _startState, RULE_terms);
+					setState(211);
+					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+					setState(212);
+					termItem();
+					}
+					} 
+				}
+				setState(217);
+				_errHandler.sync(this);
+				_alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			unrollRecursionContexts(_parentctx);
+		}
+		return _localctx;
+	}
+
+	public static class TermItemContext extends ParserRuleContext {
+		public TermContext term() {
+			return getRuleContext(TermContext.class,0);
+		}
+		public FragRefContext fragRef() {
+			return getRuleContext(FragRefContext.class,0);
+		}
+		public TermItemContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_termItem; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTermItem(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTermItem(this);
+		}
+	}
+
+	public final TermItemContext termItem() throws RecognitionException {
+		TermItemContext _localctx = new TermItemContext(_ctx, getState());
+		enterRule(_localctx, 42, RULE_termItem);
+		try {
+			setState(220);
+			_errHandler.sync(this);
+			switch (_input.LA(1)) {
+			case T__5:
+				enterOuterAlt(_localctx, 1);
+				{
+				setState(218);
+				term();
+				}
+				break;
+			case FRAG:
+				enterOuterAlt(_localctx, 2);
+				{
+				setState(219);
+				fragRef();
+				}
+				break;
+			default:
+				throw new NoViableAltException(this);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class TermEqContext extends ParserRuleContext {
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
+		public TerminalNode TILDA() { return getToken(NCIntentIdlParser.TILDA, 0); }
+		public TermEqContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_termEq; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTermEq(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTermEq(this);
+		}
+	}
+
+	public final TermEqContext termEq() throws RecognitionException {
+		TermEqContext _localctx = new TermEqContext(_ctx, getState());
+		enterRule(_localctx, 44, RULE_termEq);
+		int _la;
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(222);
+			_la = _input.LA(1);
+			if ( !(_la==TILDA || _la==ASSIGN) ) {
+			_errHandler.recoverInline(this);
+			}
+			else {
+				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+				_errHandler.reportMatch(this);
+				consume();
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class TermContext extends ParserRuleContext {
+		public TermEqContext termEq() {
+			return getRuleContext(TermEqContext.class,0);
+		}
+		public MtdDeclContext mtdDecl() {
+			return getRuleContext(MtdDeclContext.class,0);
+		}
+		public TermIdContext termId() {
+			return getRuleContext(TermIdContext.class,0);
+		}
+		public MinMaxContext minMax() {
+			return getRuleContext(MinMaxContext.class,0);
+		}
+		public TerminalNode LBRACE() { return getToken(NCIntentIdlParser.LBRACE, 0); }
+		public ExprContext expr() {
+			return getRuleContext(ExprContext.class,0);
+		}
+		public TerminalNode RBRACE() { return getToken(NCIntentIdlParser.RBRACE, 0); }
+		public TermContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_term; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTerm(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTerm(this);
+		}
+	}
+
+	public final TermContext term() throws RecognitionException {
+		TermContext _localctx = new TermContext(_ctx, getState());
+		enterRule(_localctx, 46, RULE_term);
+		int _la;
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(224);
+			match(T__5);
+			setState(226);
+			_errHandler.sync(this);
+			_la = _input.LA(1);
+			if (_la==LPAR) {
+				{
+				setState(225);
+				termId();
+				}
+			}
+
+			setState(228);
+			termEq();
+			setState(234);
+			_errHandler.sync(this);
+			switch (_input.LA(1)) {
+			case LBRACE:
+				{
+				{
+				setState(229);
+				match(LBRACE);
+				setState(230);
+				expr(0);
+				setState(231);
+				match(RBRACE);
+				}
+				}
+				break;
+			case DIV:
+				{
+				setState(233);
+				mtdDecl();
+				}
+				break;
+			default:
+				throw new NoViableAltException(this);
+			}
+			setState(237);
+			_errHandler.sync(this);
+			switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
+			case 1:
+				{
+				setState(236);
+				minMax();
+				}
+				break;
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class MtdRefContext extends ParserRuleContext {
+		public TerminalNode POUND() { return getToken(NCIntentIdlParser.POUND, 0); }
+		public IdContext id() {
+			return getRuleContext(IdContext.class,0);
+		}
+		public JavaFqnContext javaFqn() {
+			return getRuleContext(JavaFqnContext.class,0);
+		}
+		public MtdRefContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_mtdRef; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMtdRef(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMtdRef(this);
+		}
+	}
+
+	public final MtdRefContext mtdRef() throws RecognitionException {
+		MtdRefContext _localctx = new MtdRefContext(_ctx, getState());
+		enterRule(_localctx, 48, RULE_mtdRef);
+		int _la;
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(240);
+			_errHandler.sync(this);
+			_la = _input.LA(1);
+			if (_la==FUN_NAME || _la==ID) {
+				{
+				setState(239);
+				javaFqn(0);
+				}
+			}
+
+			setState(242);
+			match(POUND);
+			setState(243);
+			id();
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class JavaFqnContext extends ParserRuleContext {
+		public IdContext id() {
+			return getRuleContext(IdContext.class,0);
+		}
+		public JavaFqnContext javaFqn() {
+			return getRuleContext(JavaFqnContext.class,0);
+		}
+		public TerminalNode DOT() { return getToken(NCIntentIdlParser.DOT, 0); }
+		public JavaFqnContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_javaFqn; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJavaFqn(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJavaFqn(this);
+		}
+	}
+
+	public final JavaFqnContext javaFqn() throws RecognitionException {
+		return javaFqn(0);
+	}
+
+	private JavaFqnContext javaFqn(int _p) throws RecognitionException {
+		ParserRuleContext _parentctx = _ctx;
+		int _parentState = getState();
+		JavaFqnContext _localctx = new JavaFqnContext(_ctx, _parentState);
+		JavaFqnContext _prevctx = _localctx;
+		int _startState = 50;
+		enterRecursionRule(_localctx, 50, RULE_javaFqn, _p);
+		try {
+			int _alt;
+			enterOuterAlt(_localctx, 1);
+			{
+			{
+			setState(246);
+			id();
+			}
+			_ctx.stop = _input.LT(-1);
+			setState(253);
+			_errHandler.sync(this);
+			_alt = getInterpreter().adaptivePredict(_input,22,_ctx);
+			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+				if ( _alt==1 ) {
+					if ( _parseListeners!=null ) triggerExitRuleEvent();
+					_prevctx = _localctx;
+					{
+					{
+					_localctx = new JavaFqnContext(_parentctx, _parentState);
+					pushNewRecursionContext(_localctx, _startState, RULE_javaFqn);
+					setState(248);
+					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+					setState(249);
+					match(DOT);
+					setState(250);
+					id();
+					}
+					} 
+				}
+				setState(255);
+				_errHandler.sync(this);
+				_alt = getInterpreter().adaptivePredict(_input,22,_ctx);
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			unrollRecursionContexts(_parentctx);
+		}
+		return _localctx;
+	}
+
+	public static class TermIdContext extends ParserRuleContext {
+		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
+		public IdContext id() {
+			return getRuleContext(IdContext.class,0);
+		}
+		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
+		public TermIdContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_termId; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTermId(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTermId(this);
+		}
+	}
+
+	public final TermIdContext termId() throws RecognitionException {
+		TermIdContext _localctx = new TermIdContext(_ctx, getState());
+		enterRule(_localctx, 52, RULE_termId);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(256);
+			match(LPAR);
+			setState(257);
+			id();
+			setState(258);
+			match(RPAR);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class ExprContext extends ParserRuleContext {
+		public ExprContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_expr; }
+	 
+		public ExprContext() { }
+		public void copyFrom(ExprContext ctx) {
+			super.copyFrom(ctx);
+		}
+	}
+	public static class ParExprContext extends ExprContext {
+		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
+		public ExprContext expr() {
+			return getRuleContext(ExprContext.class,0);
+		}
+		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
+		public ParExprContext(ExprContext ctx) { copyFrom(ctx); }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterParExpr(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitParExpr(this);
+		}
+	}
+	public static class UnaryExprContext extends ExprContext {
+		public Token op;
+		public ExprContext expr() {
+			return getRuleContext(ExprContext.class,0);
+		}
+		public TerminalNode MINUS() { return getToken(NCIntentIdlParser.MINUS, 0); }
+		public TerminalNode NOT() { return getToken(NCIntentIdlParser.NOT, 0); }
+		public UnaryExprContext(ExprContext ctx) { copyFrom(ctx); }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterUnaryExpr(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitUnaryExpr(this);
+		}
+	}
+	public static class CompExprContext extends ExprContext {
+		public Token op;
+		public List<ExprContext> expr() {
+			return getRuleContexts(ExprContext.class);
+		}
+		public ExprContext expr(int i) {
+			return getRuleContext(ExprContext.class,i);
+		}
+		public TerminalNode LTEQ() { return getToken(NCIntentIdlParser.LTEQ, 0); }
+		public TerminalNode GTEQ() { return getToken(NCIntentIdlParser.GTEQ, 0); }
+		public TerminalNode LT() { return getToken(NCIntentIdlParser.LT, 0); }
+		public TerminalNode GT() { return getToken(NCIntentIdlParser.GT, 0); }
+		public CompExprContext(ExprContext ctx) { copyFrom(ctx); }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterCompExpr(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitCompExpr(this);
+		}
+	}
+	public static class PlusMinusExprContext extends ExprContext {
+		public Token op;
+		public List<ExprContext> expr() {
+			return getRuleContexts(ExprContext.class);
+		}
+		public ExprContext expr(int i) {
+			return getRuleContext(ExprContext.class,i);
+		}
+		public TerminalNode PLUS() { return getToken(NCIntentIdlParser.PLUS, 0); }
+		public TerminalNode MINUS() { return getToken(NCIntentIdlParser.MINUS, 0); }
+		public PlusMinusExprContext(ExprContext ctx) { copyFrom(ctx); }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterPlusMinusExpr(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitPlusMinusExpr(this);
+		}
+	}
+	public static class AtomExprContext extends ExprContext {
+		public AtomContext atom() {
+			return getRuleContext(AtomContext.class,0);
+		}
+		public AtomExprContext(ExprContext ctx) { copyFrom(ctx); }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAtomExpr(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAtomExpr(this);
+		}
+	}
+	public static class MultDivModExprContext extends ExprContext {
+		public Token op;
+		public List<ExprContext> expr() {
+			return getRuleContexts(ExprContext.class);
+		}
+		public ExprContext expr(int i) {
+			return getRuleContext(ExprContext.class,i);
+		}
+		public TerminalNode MULT() { return getToken(NCIntentIdlParser.MULT, 0); }
+		public TerminalNode DIV() { return getToken(NCIntentIdlParser.DIV, 0); }
+		public TerminalNode MOD() { return getToken(NCIntentIdlParser.MOD, 0); }
+		public MultDivModExprContext(ExprContext ctx) { copyFrom(ctx); }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMultDivModExpr(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMultDivModExpr(this);
+		}
+	}
+	public static class AndOrExprContext extends ExprContext {
+		public Token op;
+		public List<ExprContext> expr() {
+			return getRuleContexts(ExprContext.class);
+		}
+		public ExprContext expr(int i) {
+			return getRuleContext(ExprContext.class,i);
+		}
+		public TerminalNode AND() { return getToken(NCIntentIdlParser.AND, 0); }
+		public TerminalNode OR() { return getToken(NCIntentIdlParser.OR, 0); }
+		public AndOrExprContext(ExprContext ctx) { copyFrom(ctx); }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAndOrExpr(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAndOrExpr(this);
+		}
+	}
+	public static class CallExprContext extends ExprContext {
+		public TerminalNode FUN_NAME() { return getToken(NCIntentIdlParser.FUN_NAME, 0); }
+		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
+		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
+		public ParamListContext paramList() {
+			return getRuleContext(ParamListContext.class,0);
+		}
+		public CallExprContext(ExprContext ctx) { copyFrom(ctx); }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterCallExpr(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitCallExpr(this);
+		}
+	}
+	public static class EqNeqExprContext extends ExprContext {
+		public Token op;
+		public List<ExprContext> expr() {
+			return getRuleContexts(ExprContext.class);
+		}
+		public ExprContext expr(int i) {
+			return getRuleContext(ExprContext.class,i);
+		}
+		public TerminalNode EQ() { return getToken(NCIntentIdlParser.EQ, 0); }
+		public TerminalNode NEQ() { return getToken(NCIntentIdlParser.NEQ, 0); }
+		public EqNeqExprContext(ExprContext ctx) { copyFrom(ctx); }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterEqNeqExpr(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitEqNeqExpr(this);
+		}
+	}
+
+	public final ExprContext expr() throws RecognitionException {
+		return expr(0);
+	}
+
+	private ExprContext expr(int _p) throws RecognitionException {
+		ParserRuleContext _parentctx = _ctx;
+		int _parentState = getState();
+		ExprContext _localctx = new ExprContext(_ctx, _parentState);
+		ExprContext _prevctx = _localctx;
+		int _startState = 54;
+		enterRecursionRule(_localctx, 54, RULE_expr, _p);
+		int _la;
+		try {
+			int _alt;
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(274);
+			_errHandler.sync(this);
+			switch (_input.LA(1)) {
+			case NOT:
+			case MINUS:
+				{
+				_localctx = new UnaryExprContext(_localctx);
+				_ctx = _localctx;
+				_prevctx = _localctx;
+
+				setState(261);
+				((UnaryExprContext)_localctx).op = _input.LT(1);
+				_la = _input.LA(1);
+				if ( !(_la==NOT || _la==MINUS) ) {
+					((UnaryExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+				}
+				else {
+					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+					_errHandler.reportMatch(this);
+					consume();
+				}
+				setState(262);
+				expr(9);
+				}
+				break;
+			case LPAR:
+				{
+				_localctx = new ParExprContext(_localctx);
+				_ctx = _localctx;
+				_prevctx = _localctx;
+				setState(263);
+				match(LPAR);
+				setState(264);
+				expr(0);
+				setState(265);
+				match(RPAR);
+				}
+				break;
+			case SQSTRING:
+			case DQSTRING:
+			case BOOL:
+			case NULL:
+			case INT:
+				{
+				_localctx = new AtomExprContext(_localctx);
+				_ctx = _localctx;
+				_prevctx = _localctx;
+				setState(267);
+				atom();
+				}
+				break;
+			case FUN_NAME:
+				{
+				_localctx = new CallExprContext(_localctx);
+				_ctx = _localctx;
+				_prevctx = _localctx;
+				setState(268);
+				match(FUN_NAME);
+				setState(269);
+				match(LPAR);
+				setState(271);
+				_errHandler.sync(this);
+				_la = _input.LA(1);
+				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUN_NAME) | (1L << SQSTRING) | (1L << DQSTRING) | (1L << BOOL) | (1L << NULL) | (1L << NOT) | (1L << LPAR) | (1L << MINUS) | (1L << INT))) != 0)) {
+					{
+					setState(270);
+					paramList(0);
+					}
+				}
+
+				setState(273);
+				match(RPAR);
+				}
+				break;
+			default:
+				throw new NoViableAltException(this);
+			}
+			_ctx.stop = _input.LT(-1);
+			setState(293);
+			_errHandler.sync(this);
+			_alt = getInterpreter().adaptivePredict(_input,26,_ctx);
+			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+				if ( _alt==1 ) {
+					if ( _parseListeners!=null ) triggerExitRuleEvent();
+					_prevctx = _localctx;
+					{
+					setState(291);
+					_errHandler.sync(this);
+					switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
+					case 1:
+						{
+						_localctx = new MultDivModExprContext(new ExprContext(_parentctx, _parentState));
+						pushNewRecursionContext(_localctx, _startState, RULE_expr);
+						setState(276);
+						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
+						setState(277);
+						((MultDivModExprContext)_localctx).op = _input.LT(1);
+						_la = _input.LA(1);
+						if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << MULT) | (1L << DIV) | (1L << MOD))) != 0)) ) {
+							((MultDivModExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+						}
+						else {
+							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+							_errHandler.reportMatch(this);
+							consume();
+						}
+						setState(278);
+						expr(8);
+						}
+						break;
+					case 2:
+						{
+						_localctx = new PlusMinusExprContext(new ExprContext(_parentctx, _parentState));
+						pushNewRecursionContext(_localctx, _startState, RULE_expr);
+						setState(279);
+						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
+						setState(280);
+						((PlusMinusExprContext)_localctx).op = _input.LT(1);
+						_la = _input.LA(1);
+						if ( !(_la==MINUS || _la==PLUS) ) {
+							((PlusMinusExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+						}
+						else {
+							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+							_errHandler.reportMatch(this);
+							consume();
+						}
+						setState(281);
+						expr(7);
+						}
+						break;
+					case 3:
+						{
+						_localctx = new CompExprContext(new ExprContext(_parentctx, _parentState));
+						pushNewRecursionContext(_localctx, _startState, RULE_expr);
+						setState(282);
+						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
+						setState(283);
+						((CompExprContext)_localctx).op = _input.LT(1);
+						_la = _input.LA(1);
+						if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << GTEQ) | (1L << LTEQ) | (1L << GT) | (1L << LT))) != 0)) ) {
+							((CompExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+						}
+						else {
+							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+							_errHandler.reportMatch(this);
+							consume();
+						}
+						setState(284);
+						expr(6);
+						}
+						break;
+					case 4:
+						{
+						_localctx = new EqNeqExprContext(new ExprContext(_parentctx, _parentState));
+						pushNewRecursionContext(_localctx, _startState, RULE_expr);
+						setState(285);
+						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
+						setState(286);
+						((EqNeqExprContext)_localctx).op = _input.LT(1);
+						_la = _input.LA(1);
+						if ( !(_la==EQ || _la==NEQ) ) {
+							((EqNeqExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+						}
+						else {
+							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+							_errHandler.reportMatch(this);
+							consume();
+						}
+						setState(287);
+						expr(5);
+						}
+						break;
+					case 5:
+						{
+						_localctx = new AndOrExprContext(new ExprContext(_parentctx, _parentState));
+						pushNewRecursionContext(_localctx, _startState, RULE_expr);
+						setState(288);
+						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
+						setState(289);
+						((AndOrExprContext)_localctx).op = _input.LT(1);
+						_la = _input.LA(1);
+						if ( !(_la==AND || _la==OR) ) {
+							((AndOrExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
+						}
+						else {
+							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+							_errHandler.reportMatch(this);
+							consume();
+						}
+						setState(290);
+						expr(4);
+						}
+						break;
+					}
+					} 
+				}
+				setState(295);
+				_errHandler.sync(this);
+				_alt = getInterpreter().adaptivePredict(_input,26,_ctx);
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			unrollRecursionContexts(_parentctx);
+		}
+		return _localctx;
+	}
+
+	public static class ParamListContext extends ParserRuleContext {
+		public ExprContext expr() {
+			return getRuleContext(ExprContext.class,0);
+		}
+		public ParamListContext paramList() {
+			return getRuleContext(ParamListContext.class,0);
+		}
+		public TerminalNode COMMA() { return getToken(NCIntentIdlParser.COMMA, 0); }
+		public ParamListContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_paramList; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterParamList(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitParamList(this);
+		}
+	}
+
+	public final ParamListContext paramList() throws RecognitionException {
+		return paramList(0);
+	}
+
+	private ParamListContext paramList(int _p) throws RecognitionException {
+		ParserRuleContext _parentctx = _ctx;
+		int _parentState = getState();
+		ParamListContext _localctx = new ParamListContext(_ctx, _parentState);
+		ParamListContext _prevctx = _localctx;
+		int _startState = 56;
+		enterRecursionRule(_localctx, 56, RULE_paramList, _p);
+		try {
+			int _alt;
+			enterOuterAlt(_localctx, 1);
+			{
+			{
+			setState(297);
+			expr(0);
+			}
+			_ctx.stop = _input.LT(-1);
+			setState(304);
+			_errHandler.sync(this);
+			_alt = getInterpreter().adaptivePredict(_input,27,_ctx);
+			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+				if ( _alt==1 ) {
+					if ( _parseListeners!=null ) triggerExitRuleEvent();
+					_prevctx = _localctx;
+					{
+					{
+					_localctx = new ParamListContext(_parentctx, _parentState);
+					pushNewRecursionContext(_localctx, _startState, RULE_paramList);
+					setState(299);
+					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+					setState(300);
+					match(COMMA);
+					setState(301);
+					expr(0);
+					}
+					} 
+				}
+				setState(306);
+				_errHandler.sync(this);
+				_alt = getInterpreter().adaptivePredict(_input,27,_ctx);
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			unrollRecursionContexts(_parentctx);
+		}
+		return _localctx;
+	}
+
+	public static class AtomContext extends ParserRuleContext {
+		public TerminalNode NULL() { return getToken(NCIntentIdlParser.NULL, 0); }
+		public TerminalNode INT() { return getToken(NCIntentIdlParser.INT, 0); }
+		public TerminalNode REAL() { return getToken(NCIntentIdlParser.REAL, 0); }
+		public TerminalNode EXP() { return getToken(NCIntentIdlParser.EXP, 0); }
+		public TerminalNode BOOL() { return getToken(NCIntentIdlParser.BOOL, 0); }
+		public QstringContext qstring() {
+			return getRuleContext(QstringContext.class,0);
+		}
+		public AtomContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_atom; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAtom(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAtom(this);
+		}
+	}
+
+	public final AtomContext atom() throws RecognitionException {
+		AtomContext _localctx = new AtomContext(_ctx, getState());
+		enterRule(_localctx, 58, RULE_atom);
+		try {
+			setState(317);
+			_errHandler.sync(this);
+			switch (_input.LA(1)) {
+			case NULL:
+				enterOuterAlt(_localctx, 1);
+				{
+				setState(307);
+				match(NULL);
+				}
+				break;
+			case INT:
+				enterOuterAlt(_localctx, 2);
+				{
+				setState(308);
+				match(INT);
+				setState(310);
+				_errHandler.sync(this);
+				switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
+				case 1:
+					{
+					setState(309);
+					match(REAL);
+					}
+					break;
+				}
+				setState(313);
+				_errHandler.sync(this);
+				switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
+				case 1:
+					{
+					setState(312);
+					match(EXP);
+					}
+					break;
+				}
+				}
+				break;
+			case BOOL:
+				enterOuterAlt(_localctx, 3);
+				{
+				setState(315);
+				match(BOOL);
+				}
+				break;
+			case SQSTRING:
+			case DQSTRING:
+				enterOuterAlt(_localctx, 4);
+				{
+				setState(316);
+				qstring();
+				}
+				break;
+			default:
+				throw new NoViableAltException(this);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class QstringContext extends ParserRuleContext {
+		public TerminalNode SQSTRING() { return getToken(NCIntentIdlParser.SQSTRING, 0); }
+		public TerminalNode DQSTRING() { return getToken(NCIntentIdlParser.DQSTRING, 0); }
+		public QstringContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_qstring; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterQstring(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitQstring(this);
+		}
+	}
+
+	public final QstringContext qstring() throws RecognitionException {
+		QstringContext _localctx = new QstringContext(_ctx, getState());
+		enterRule(_localctx, 60, RULE_qstring);
+		int _la;
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(319);
+			_la = _input.LA(1);
+			if ( !(_la==SQSTRING || _la==DQSTRING) ) {
+			_errHandler.recoverInline(this);
+			}
+			else {
+				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+				_errHandler.reportMatch(this);
+				consume();
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class MinMaxContext extends ParserRuleContext {
+		public MinMaxShortcutContext minMaxShortcut() {
+			return getRuleContext(MinMaxShortcutContext.class,0);
+		}
+		public MinMaxRangeContext minMaxRange() {
+			return getRuleContext(MinMaxRangeContext.class,0);
+		}
+		public MinMaxContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_minMax; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMinMax(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMinMax(this);
+		}
+	}
+
+	public final MinMaxContext minMax() throws RecognitionException {
+		MinMaxContext _localctx = new MinMaxContext(_ctx, getState());
+		enterRule(_localctx, 62, RULE_minMax);
+		try {
+			setState(323);
+			_errHandler.sync(this);
+			switch (_input.LA(1)) {
+			case PLUS:
+			case QUESTION:
+			case MULT:
+				enterOuterAlt(_localctx, 1);
+				{
+				setState(321);
+				minMaxShortcut();
+				}
+				break;
+			case LBR:
+				enterOuterAlt(_localctx, 2);
+				{
+				setState(322);
+				minMaxRange();
+				}
+				break;
+			default:
+				throw new NoViableAltException(this);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class MinMaxShortcutContext extends ParserRuleContext {
+		public TerminalNode PLUS() { return getToken(NCIntentIdlParser.PLUS, 0); }
+		public TerminalNode QUESTION() { return getToken(NCIntentIdlParser.QUESTION, 0); }
+		public TerminalNode MULT() { return getToken(NCIntentIdlParser.MULT, 0); }
+		public MinMaxShortcutContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_minMaxShortcut; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMinMaxShortcut(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMinMaxShortcut(this);
+		}
+	}
+
+	public final MinMaxShortcutContext minMaxShortcut() throws RecognitionException {
+		MinMaxShortcutContext _localctx = new MinMaxShortcutContext(_ctx, getState());
+		enterRule(_localctx, 64, RULE_minMaxShortcut);
+		int _la;
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(325);
+			_la = _input.LA(1);
+			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PLUS) | (1L << QUESTION) | (1L << MULT))) != 0)) ) {
+			_errHandler.recoverInline(this);
+			}
+			else {
+				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+				_errHandler.reportMatch(this);
+				consume();
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class MinMaxRangeContext extends ParserRuleContext {
+		public TerminalNode LBR() { return getToken(NCIntentIdlParser.LBR, 0); }
+		public List<TerminalNode> INT() { return getTokens(NCIntentIdlParser.INT); }
+		public TerminalNode INT(int i) {
+			return getToken(NCIntentIdlParser.INT, i);
+		}
+		public TerminalNode COMMA() { return getToken(NCIntentIdlParser.COMMA, 0); }
+		public TerminalNode RBR() { return getToken(NCIntentIdlParser.RBR, 0); }
+		public MinMaxRangeContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_minMaxRange; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMinMaxRange(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMinMaxRange(this);
+		}
+	}
+
+	public final MinMaxRangeContext minMaxRange() throws RecognitionException {
+		MinMaxRangeContext _localctx = new MinMaxRangeContext(_ctx, getState());
+		enterRule(_localctx, 66, RULE_minMaxRange);
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(327);
+			match(LBR);
+			setState(328);
+			match(INT);
+			setState(329);
+			match(COMMA);
+			setState(330);
+			match(INT);
+			setState(331);
+			match(RBR);
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class IdContext extends ParserRuleContext {
+		public TerminalNode ID() { return getToken(NCIntentIdlParser.ID, 0); }
+		public TerminalNode FUN_NAME() { return getToken(NCIntentIdlParser.FUN_NAME, 0); }
+		public IdContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_id; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterId(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitId(this);
+		}
+	}
+
+	public final IdContext id() throws RecognitionException {
+		IdContext _localctx = new IdContext(_ctx, getState());
+		enterRule(_localctx, 68, RULE_id);
+		int _la;
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(333);
+			_la = _input.LA(1);
+			if ( !(_la==FUN_NAME || _la==ID) ) {
+			_errHandler.recoverInline(this);
+			}
+			else {
+				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+				_errHandler.reportMatch(this);
+				consume();
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
+		switch (ruleIndex) {
+		case 3:
+			return idlItems_sempred((IdlItemsContext)_localctx, predIndex);
+		case 20:
+			return terms_sempred((TermsContext)_localctx, predIndex);
+		case 25:
+			return javaFqn_sempred((JavaFqnContext)_localctx, predIndex);
+		case 27:
+			return expr_sempred((ExprContext)_localctx, predIndex);
+		case 28:
+			return paramList_sempred((ParamListContext)_localctx, predIndex);
+		}
+		return true;
+	}
+	private boolean idlItems_sempred(IdlItemsContext _localctx, int predIndex) {
+		switch (predIndex) {
+		case 0:
+			return precpred(_ctx, 1);
+		}
+		return true;
+	}
+	private boolean terms_sempred(TermsContext _localctx, int predIndex) {
+		switch (predIndex) {
+		case 1:
+			return precpred(_ctx, 1);
+		}
+		return true;
+	}
+	private boolean javaFqn_sempred(JavaFqnContext _localctx, int predIndex) {
+		switch (predIndex) {
+		case 2:
+			return precpred(_ctx, 1);
+		}
+		return true;
+	}
+	private boolean expr_sempred(ExprContext _localctx, int predIndex) {
+		switch (predIndex) {
+		case 3:
+			return precpred(_ctx, 7);
+		case 4:
+			return precpred(_ctx, 6);
+		case 5:
+			return precpred(_ctx, 5);
+		case 6:
+			return precpred(_ctx, 4);
+		case 7:
+			return precpred(_ctx, 3);
+		}
+		return true;
+	}
+	private boolean paramList_sempred(ParamListContext _localctx, int predIndex) {
+		switch (predIndex) {
+		case 8:
+			return precpred(_ctx, 1);
+		}
+		return true;
+	}
+
+	public static final String _serializedATN =
+		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\65\u0152\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\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
+		"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
+		"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
+		"\t!\4\"\t\"\4#\t#\4$\t$\3\2\3\2\3\2\3\3\5\3M\n\3\3\3\3\3\3\3\3\3\3\3\3"+
+		"\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\7\5]\n\5\f\5\16\5`\13\5\3\6\3\6\3\6"+
+		"\5\6e\n\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\n\3\n\3\n"+
+		"\3\n\5\nw\n\n\3\n\3\n\3\13\3\13\3\13\3\f\3\f\5\f\u0080\n\f\3\f\5\f\u0083"+
+		"\n\f\3\f\5\f\u0086\n\f\3\f\3\f\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\17"+
+		"\3\17\3\17\3\17\3\20\3\20\3\20\3\20\5\20\u009a\n\20\3\21\3\21\3\21\3\21"+
+		"\3\22\3\22\3\22\3\22\7\22\u00a4\n\22\f\22\16\22\u00a7\13\22\3\22\3\22"+
+		"\3\22\3\22\5\22\u00ad\n\22\3\23\3\23\3\23\3\23\3\24\3\24\5\24\u00b5\n"+
+		"\24\3\24\3\24\5\24\u00b9\n\24\3\24\5\24\u00bc\n\24\3\24\3\24\3\24\3\24"+
+		"\5\24\u00c2\n\24\3\25\3\25\3\25\3\25\7\25\u00c8\n\25\f\25\16\25\u00cb"+
+		"\13\25\3\25\3\25\3\25\3\25\5\25\u00d1\n\25\3\26\3\26\3\26\3\26\3\26\7"+
+		"\26\u00d8\n\26\f\26\16\26\u00db\13\26\3\27\3\27\5\27\u00df\n\27\3\30\3"+
+		"\30\3\31\3\31\5\31\u00e5\n\31\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u00ed"+
+		"\n\31\3\31\5\31\u00f0\n\31\3\32\5\32\u00f3\n\32\3\32\3\32\3\32\3\33\3"+
+		"\33\3\33\3\33\3\33\3\33\7\33\u00fe\n\33\f\33\16\33\u0101\13\33\3\34\3"+
+		"\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\5"+
+		"\35\u0112\n\35\3\35\5\35\u0115\n\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35"+
+		"\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\7\35\u0126\n\35\f\35\16\35\u0129"+
+		"\13\35\3\36\3\36\3\36\3\36\3\36\3\36\7\36\u0131\n\36\f\36\16\36\u0134"+
+		"\13\36\3\37\3\37\3\37\5\37\u0139\n\37\3\37\5\37\u013c\n\37\3\37\3\37\5"+
+		"\37\u0140\n\37\3 \3 \3!\3!\5!\u0146\n!\3\"\3\"\3#\3#\3#\3#\3#\3#\3$\3"+
+		"$\3$\2\7\b*\648:%\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62"+
+		"\64\668:<>@BDF\2\f\4\2\37\37((\4\2\30\30%%\3\2+-\4\2%%))\3\2\21\24\3\2"+
+		"\17\20\3\2\25\26\3\2\13\f\3\2)+\4\2\t\t\62\62\2\u015a\2H\3\2\2\2\4L\3"+
+		"\2\2\2\6S\3\2\2\2\bW\3\2\2\2\nd\3\2\2\2\ff\3\2\2\2\16k\3\2\2\2\20n\3\2"+
+		"\2\2\22r\3\2\2\2\24z\3\2\2\2\26}\3\2\2\2\30\u0089\3\2\2\2\32\u008d\3\2"+
+		"\2\2\34\u0091\3\2\2\2\36\u0095\3\2\2\2 \u009b\3\2\2\2\"\u00ac\3\2\2\2"+
+		"$\u00ae\3\2\2\2&\u00c1\3\2\2\2(\u00d0\3\2\2\2*\u00d2\3\2\2\2,\u00de\3"+
+		"\2\2\2.\u00e0\3\2\2\2\60\u00e2\3\2\2\2\62\u00f2\3\2\2\2\64\u00f7\3\2\2"+
+		"\2\66\u0102\3\2\2\28\u0114\3\2\2\2:\u012a\3\2\2\2<\u013f\3\2\2\2>\u0141"+
+		"\3\2\2\2@\u0145\3\2\2\2B\u0147\3\2\2\2D\u0149\3\2\2\2F\u014f\3\2\2\2H"+
+		"I\5\b\5\2IJ\7\2\2\3J\3\3\2\2\2KM\5\6\4\2LK\3\2\2\2LM\3\2\2\2MN\3\2\2\2"+
+		"NO\7\33\2\2OP\58\35\2PQ\7\34\2\2QR\7\2\2\3R\5\3\2\2\2ST\7 \2\2TU\5F$\2"+
+		"UV\7!\2\2V\7\3\2\2\2WX\b\5\1\2XY\5\n\6\2Y^\3\2\2\2Z[\f\3\2\2[]\5\n\6\2"+
+		"\\Z\3\2\2\2]`\3\2\2\2^\\\3\2\2\2^_\3\2\2\2_\t\3\2\2\2`^\3\2\2\2ae\5\26"+
+		"\f\2be\5\16\b\2ce\5\f\7\2da\3\2\2\2db\3\2\2\2dc\3\2\2\2e\13\3\2\2\2fg"+
+		"\7\3\2\2gh\7\31\2\2hi\5> \2ij\7\32\2\2j\r\3\2\2\2kl\5\20\t\2lm\5*\26\2"+
+		"m\17\3\2\2\2no\7\n\2\2op\7(\2\2pq\5F$\2q\21\3\2\2\2rs\7\n\2\2st\7\31\2"+
+		"\2tv\5F$\2uw\5\24\13\2vu\3\2\2\2vw\3\2\2\2wx\3\2\2\2xy\7\32\2\2y\23\3"+
+		"\2\2\2z{\7#\2\2{|\5\"\22\2|\25\3\2\2\2}\177\5\30\r\2~\u0080\5\32\16\2"+
+		"\177~\3\2\2\2\177\u0080\3\2\2\2\u0080\u0082\3\2\2\2\u0081\u0083\5\36\20"+
+		"\2\u0082\u0081\3\2\2\2\u0082\u0083\3\2\2\2\u0083\u0085\3\2\2\2\u0084\u0086"+
+		"\5 \21\2\u0085\u0084\3\2\2\2\u0085\u0086\3\2\2\2\u0086\u0087\3\2\2\2\u0087"+
+		"\u0088\5*\26\2\u0088\27\3\2\2\2\u0089\u008a\7\4\2\2\u008a\u008b\7(\2\2"+
+		"\u008b\u008c\5F$\2\u008c\31\3\2\2\2\u008d\u008e\7\5\2\2\u008e\u008f\7"+
+		"(\2\2\u008f\u0090\7\r\2\2\u0090\33\3\2\2\2\u0091\u0092\7,\2\2\u0092\u0093"+
+		"\5\62\32\2\u0093\u0094\7,\2\2\u0094\35\3\2\2\2\u0095\u0096\7\6\2\2\u0096"+
+		"\u0099\7(\2\2\u0097\u009a\5> \2\u0098\u009a\5\34\17\2\u0099\u0097\3\2"+
+		"\2\2\u0099\u0098\3\2\2\2\u009a\37\3\2\2\2\u009b\u009c\7\7\2\2\u009c\u009d"+
+		"\7(\2\2\u009d\u009e\5\"\22\2\u009e!\3\2\2\2\u009f\u00a0\7\33\2\2\u00a0"+
+		"\u00a5\5$\23\2\u00a1\u00a2\7#\2\2\u00a2\u00a4\5$\23\2\u00a3\u00a1\3\2"+
+		"\2\2\u00a4\u00a7\3\2\2\2\u00a5\u00a3\3\2\2\2\u00a5\u00a6\3\2\2\2\u00a6"+
+		"\u00a8\3\2\2\2\u00a7\u00a5\3\2\2\2\u00a8\u00a9\7\34\2\2\u00a9\u00ad\3"+
+		"\2\2\2\u00aa\u00ab\7\33\2\2\u00ab\u00ad\7\34\2\2\u00ac\u009f\3\2\2\2\u00ac"+
+		"\u00aa\3\2\2\2\u00ad#\3\2\2\2\u00ae\u00af\5> \2\u00af\u00b0\7$\2\2\u00b0"+
+		"\u00b1\5&\24\2\u00b1%\3\2\2\2\u00b2\u00c2\5> \2\u00b3\u00b5\7%\2\2\u00b4"+
+		"\u00b3\3\2\2\2\u00b4\u00b5\3\2\2\2\u00b5\u00b6\3\2\2\2\u00b6\u00b8\7/"+
+		"\2\2\u00b7\u00b9\7\60\2\2\u00b8\u00b7\3\2\2\2\u00b8\u00b9\3\2\2\2\u00b9"+
+		"\u00bb\3\2\2\2\u00ba\u00bc\7\61\2\2\u00bb\u00ba\3\2\2\2\u00bb\u00bc\3"+
+		"\2\2\2\u00bc\u00c2\3\2\2\2\u00bd\u00c2\5\"\22\2\u00be\u00c2\5(\25\2\u00bf"+
+		"\u00c2\7\r\2\2\u00c0\u00c2\7\16\2\2\u00c1\u00b2\3\2\2\2\u00c1\u00b4\3"+
+		"\2\2\2\u00c1\u00bd\3\2\2\2\u00c1\u00be\3\2\2\2\u00c1\u00bf\3\2\2\2\u00c1"+
+		"\u00c0\3\2\2\2\u00c2\'\3\2\2\2\u00c3\u00c4\7 \2\2\u00c4\u00c9\5&\24\2"+
+		"\u00c5\u00c6\7#\2\2\u00c6\u00c8\5&\24\2\u00c7\u00c5\3\2\2\2\u00c8\u00cb"+
+		"\3\2\2\2\u00c9\u00c7\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00cc\3\2\2\2\u00cb"+
+		"\u00c9\3\2\2\2\u00cc\u00cd\7!\2\2\u00cd\u00d1\3\2\2\2\u00ce\u00cf\7 \2"+
+		"\2\u00cf\u00d1\7!\2\2\u00d0\u00c3\3\2\2\2\u00d0\u00ce\3\2\2\2\u00d1)\3"+
+		"\2\2\2\u00d2\u00d3\b\26\1\2\u00d3\u00d4\5,\27\2\u00d4\u00d9\3\2\2\2\u00d5"+
+		"\u00d6\f\3\2\2\u00d6\u00d8\5,\27\2\u00d7\u00d5\3\2\2\2\u00d8\u00db\3\2"+
+		"\2\2\u00d9\u00d7\3\2\2\2\u00d9\u00da\3\2\2\2\u00da+\3\2\2\2\u00db\u00d9"+
+		"\3\2\2\2\u00dc\u00df\5\60\31\2\u00dd\u00df\5\22\n\2\u00de\u00dc\3\2\2"+
+		"\2\u00de\u00dd\3\2\2\2\u00df-\3\2\2\2\u00e0\u00e1\t\2\2\2\u00e1/\3\2\2"+
+		"\2\u00e2\u00e4\7\b\2\2\u00e3\u00e5\5\66\34\2\u00e4\u00e3\3\2\2\2\u00e4"+
+		"\u00e5\3\2\2\2\u00e5\u00e6\3\2\2\2\u00e6\u00ec\5.\30\2\u00e7\u00e8\7\33"+
+		"\2\2\u00e8\u00e9\58\35\2\u00e9\u00ea\7\34\2\2\u00ea\u00ed\3\2\2\2\u00eb"+
+		"\u00ed\5\34\17\2\u00ec\u00e7\3\2\2\2\u00ec\u00eb\3\2\2\2\u00ed\u00ef\3"+
+		"\2\2\2\u00ee\u00f0\5@!\2\u00ef\u00ee\3\2\2\2\u00ef\u00f0\3\2\2\2\u00f0"+
+		"\61\3\2\2\2\u00f1\u00f3\5\64\33\2\u00f2\u00f1\3\2\2\2\u00f2\u00f3\3\2"+
+		"\2\2\u00f3\u00f4\3\2\2\2\u00f4\u00f5\7\"\2\2\u00f5\u00f6\5F$\2\u00f6\63"+
+		"\3\2\2\2\u00f7\u00f8\b\33\1\2\u00f8\u00f9\5F$\2\u00f9\u00ff\3\2\2\2\u00fa"+
+		"\u00fb\f\3\2\2\u00fb\u00fc\7&\2\2\u00fc\u00fe\5F$\2\u00fd\u00fa\3\2\2"+
+		"\2\u00fe\u0101\3\2\2\2\u00ff\u00fd\3\2\2\2\u00ff\u0100\3\2\2\2\u0100\65"+
+		"\3\2\2\2\u0101\u00ff\3\2\2\2\u0102\u0103\7\31\2\2\u0103\u0104\5F$\2\u0104"+
+		"\u0105\7\32\2\2\u0105\67\3\2\2\2\u0106\u0107\b\35\1\2\u0107\u0108\t\3"+
+		"\2\2\u0108\u0115\58\35\13\u0109\u010a\7\31\2\2\u010a\u010b\58\35\2\u010b"+
+		"\u010c\7\32\2\2\u010c\u0115\3\2\2\2\u010d\u0115\5<\37\2\u010e\u010f\7"+
+		"\t\2\2\u010f\u0111\7\31\2\2\u0110\u0112\5:\36\2\u0111\u0110\3\2\2\2\u0111"+
+		"\u0112\3\2\2\2\u0112\u0113\3\2\2\2\u0113\u0115\7\32\2\2\u0114\u0106\3"+
+		"\2\2\2\u0114\u0109\3\2\2\2\u0114\u010d\3\2\2\2\u0114\u010e\3\2\2\2\u0115"+
+		"\u0127\3\2\2\2\u0116\u0117\f\t\2\2\u0117\u0118\t\4\2\2\u0118\u0126\58"+
+		"\35\n\u0119\u011a\f\b\2\2\u011a\u011b\t\5\2\2\u011b\u0126\58\35\t\u011c"+
+		"\u011d\f\7\2\2\u011d\u011e\t\6\2\2\u011e\u0126\58\35\b\u011f\u0120\f\6"+
+		"\2\2\u0120\u0121\t\7\2\2\u0121\u0126\58\35\7\u0122\u0123\f\5\2\2\u0123"+
+		"\u0124\t\b\2\2\u0124\u0126\58\35\6\u0125\u0116\3\2\2\2\u0125\u0119\3\2"+
+		"\2\2\u0125\u011c\3\2\2\2\u0125\u011f\3\2\2\2\u0125\u0122\3\2\2\2\u0126"+
+		"\u0129\3\2\2\2\u0127\u0125\3\2\2\2\u0127\u0128\3\2\2\2\u01289\3\2\2\2"+
+		"\u0129\u0127\3\2\2\2\u012a\u012b\b\36\1\2\u012b\u012c\58\35\2\u012c\u0132"+
+		"\3\2\2\2\u012d\u012e\f\3\2\2\u012e\u012f\7#\2\2\u012f\u0131\58\35\2\u0130"+
+		"\u012d\3\2\2\2\u0131\u0134\3\2\2\2\u0132\u0130\3\2\2\2\u0132\u0133\3\2"+
+		"\2\2\u0133;\3\2\2\2\u0134\u0132\3\2\2\2\u0135\u0140\7\16\2\2\u0136\u0138"+
+		"\7/\2\2\u0137\u0139\7\60\2\2\u0138\u0137\3\2\2\2\u0138\u0139\3\2\2\2\u0139"+
+		"\u013b\3\2\2\2\u013a\u013c\7\61\2\2\u013b\u013a\3\2\2\2\u013b\u013c\3"+
+		"\2\2\2\u013c\u0140\3\2\2\2\u013d\u0140\7\r\2\2\u013e\u0140\5> \2\u013f"+
+		"\u0135\3\2\2\2\u013f\u0136\3\2\2\2\u013f\u013d\3\2\2\2\u013f\u013e\3\2"+
+		"\2\2\u0140=\3\2\2\2\u0141\u0142\t\t\2\2\u0142?\3\2\2\2\u0143\u0146\5B"+
+		"\"\2\u0144\u0146\5D#\2\u0145\u0143\3\2\2\2\u0145\u0144\3\2\2\2\u0146A"+
+		"\3\2\2\2\u0147\u0148\t\n\2\2\u0148C\3\2\2\2\u0149\u014a\7 \2\2\u014a\u014b"+
+		"\7/\2\2\u014b\u014c\7#\2\2\u014c\u014d\7/\2\2\u014d\u014e\7!\2\2\u014e"+
+		"E\3\2\2\2\u014f\u0150\t\13\2\2\u0150G\3\2\2\2\"L^dv\177\u0082\u0085\u0099"+
+		"\u00a5\u00ac\u00b4\u00b8\u00bb\u00c1\u00c9\u00d0\u00d9\u00de\u00e4\u00ec"+
+		"\u00ef\u00f2\u00ff\u0111\u0114\u0125\u0127\u0132\u0138\u013b\u013f\u0145";
+	public static final ATN _ATN =
+		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+	static {
+		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+		}
+	}
+}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolver.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolver.scala
index 9cea556..084da88 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolver.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolver.scala
@@ -24,7 +24,7 @@ import org.apache.nlpcraft.common.debug.NCLogHolder
 import org.apache.nlpcraft.common.opencensus.NCOpenCensusTrace
 import org.apache.nlpcraft.common.util.NCUtils
 import org.apache.nlpcraft.model.impl.NCVariantImpl
-import org.apache.nlpcraft.model.intent.NCDslIntent
+import org.apache.nlpcraft.model.intent.NCIdlIntent
 import org.apache.nlpcraft.model.{NCContext, NCIntentMatch, NCIntentSkip, NCModel, NCRejection, NCResult, NCToken, NCVariant}
 import org.apache.nlpcraft.probe.mgrs.dialogflow.NCDialogFlowManager
 
@@ -33,7 +33,7 @@ import scala.collection.JavaConverters._
 /**
  * Front-end for intent solver.
  */
-class NCIntentSolver(intents: List[(NCDslIntent/*Intent*/, NCIntentMatch ⇒ NCResult/*Callback*/)])
+class NCIntentSolver(intents: List[(NCIdlIntent/*Intent*/, NCIntentMatch ⇒ NCResult/*Callback*/)])
     extends LazyLogging with NCOpenCensusTrace {
     class RedoSolver extends RuntimeException
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala
index 086d57a..95af661 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala
@@ -26,7 +26,7 @@ import org.apache.nlpcraft.model.impl.NCTokenLogger
 import org.apache.nlpcraft.model.{NCContext, NCDialogFlowItem, NCIntentMatch, NCResult, NCToken}
 import org.apache.nlpcraft.probe.mgrs.dialogflow.NCDialogFlowManager
 import org.apache.nlpcraft.model.impl.NCTokenPimp._
-import org.apache.nlpcraft.model.intent.{NCDslContext, NCDslIntent, NCDslTerm}
+import org.apache.nlpcraft.model.intent.{NCIdlContext, NCIdlIntent, NCIdlTerm}
 
 import java.util.function.Function
 import scala.collection.JavaConverters._
@@ -158,7 +158,7 @@ object NCIntentSolverEngine extends LazyLogging with NCOpenCensusTrace {
      * @param usedTokens
      */
     private case class TermTokensGroup(
-        term: NCDslTerm,
+        term: NCIdlTerm,
         usedTokens: List[UsedToken]
     )
 
@@ -172,7 +172,7 @@ object NCIntentSolverEngine extends LazyLogging with NCOpenCensusTrace {
     private case class IntentMatch(
         tokenGroups: List[TermTokensGroup],
         weight: Weight,
-        intent: NCDslIntent,
+        intent: NCIdlIntent,
         exactMatch: Boolean
     )
 
@@ -187,7 +187,7 @@ object NCIntentSolverEngine extends LazyLogging with NCOpenCensusTrace {
     @throws[NCE]
     def solve(
         ctx: NCContext,
-        intents: List[(NCDslIntent /*Intent*/ , NCIntentMatch ⇒ NCResult) /*Callback*/ ],
+        intents: List[(NCIdlIntent /*Intent*/ , NCIntentMatch ⇒ NCResult) /*Callback*/ ],
         logHldr: NCLogHolder
     ): List[NCIntentSolverResult] = {
         case class MatchHolder(
@@ -418,7 +418,7 @@ object NCIntentSolverEngine extends LazyLogging with NCOpenCensusTrace {
     //noinspection DuplicatedCode
     private def solveIntent(
         ctx: NCContext,
-        intent: NCDslIntent,
+        intent: NCIdlIntent,
         senToks: Seq[UsedToken],
         convToks: Seq[UsedToken],
         varIdx: Int
@@ -491,7 +491,7 @@ object NCIntentSolverEngine extends LazyLogging with NCOpenCensusTrace {
             
             val x = ctx.getConversation.getMetadata
 
-            val termCtx = NCDslContext(
+            val termCtx = NCIdlContext(
                 intentMeta = intent.meta,
                 convMeta = if (x.isEmpty) Map.empty[String, Object] else x.asScala.toMap[String, Object],
                 req = ctx.getRequest
@@ -599,8 +599,8 @@ object NCIntentSolverEngine extends LazyLogging with NCOpenCensusTrace {
      */
     @throws[NCE]
     private def solveTerm(
-        term: NCDslTerm,
-        ctx: NCDslContext,
+        term: NCIdlTerm,
+        ctx: NCIdlContext,
         senToks: Seq[UsedToken],
         convToks: Seq[UsedToken]
     ): Option[TermMatch] =
@@ -649,8 +649,8 @@ object NCIntentSolverEngine extends LazyLogging with NCOpenCensusTrace {
      */
     @throws[NCE]
     private def solvePredicate(
-        pred: (NCToken, NCDslContext) ⇒ (Boolean /*Predicate.*/ , Int /*How many times a token was used.*/ ),
-        ctx: NCDslContext,
+        pred: (NCToken, NCIdlContext) ⇒ (Boolean /*Predicate.*/ , Int /*How many times a token was used.*/ ),
+        ctx: NCIdlContext,
         min: Int,
         max: Int,
         senToks: Seq[UsedToken],
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeModel.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeModel.scala
index fec4552..e436e2b 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeModel.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeModel.scala
@@ -17,7 +17,7 @@
 
 package org.apache.nlpcraft.probe.mgrs
 
-import org.apache.nlpcraft.model.intent.NCDslIntent
+import org.apache.nlpcraft.model.intent.NCIdlIntent
 import org.apache.nlpcraft.model.intent.solver.NCIntentSolver
 import org.apache.nlpcraft.model.{NCElement, NCModel}
 
@@ -38,7 +38,7 @@ import scala.collection.{Map, Seq}
 case class NCProbeModel(
     model: NCModel,
     solver: NCIntentSolver,
-    intents: Seq[NCDslIntent],
+    intents: Seq[NCIdlIntent],
     synonyms: Map[String /*Element ID*/ , Map[Int /*Synonym length*/ , NCProbeSynonymsWrapper]], // Fast access map.
     synonymsDsl: Map[String /*Element ID*/ , Map[Int /*Synonym length*/ , Seq[NCProbeSynonym]]], // Fast access map.
     addStopWordsStems: Set[String],
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala
index 3a89f18..910a27e 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala
@@ -20,7 +20,7 @@ package org.apache.nlpcraft.probe.mgrs
 import org.apache.nlpcraft.common.nlp.{NCNlpSentenceToken, NCNlpSentenceTokenBuffer}
 import org.apache.nlpcraft.model._
 import org.apache.nlpcraft.probe.mgrs.NCProbeSynonym.NCDslContent
-import org.apache.nlpcraft.model.intent.NCDslContext
+import org.apache.nlpcraft.model.intent.NCIdlContext
 import org.apache.nlpcraft.probe.mgrs.NCProbeSynonymChunkKind._
 
 import scala.collection.mutable.ArrayBuffer
@@ -117,7 +117,7 @@ class NCProbeSynonym(
                             r.matcher(get0(_.origText, _.origText)).matches() || r.matcher(get0(_.normText, _.normText)).matches()
 
                         case DSL ⇒
-                            get0(t ⇒ chunk.dslPred.apply(t, NCDslContext(req = req))._1, _ ⇒ false)
+                            get0(t ⇒ chunk.dslPred.apply(t, NCIdlContext(req = req))._1, _ ⇒ false)
 
                         case _ ⇒ throw new AssertionError()
                     }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala
index 07024e2..7d17dc2 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonymChunk.scala
@@ -17,7 +17,7 @@
 
 package org.apache.nlpcraft.probe.mgrs
 
-import org.apache.nlpcraft.model.intent.NCDslTokenPredicate
+import org.apache.nlpcraft.model.intent.NCIdlTokenPredicate
 import org.apache.nlpcraft.probe.mgrs.NCProbeSynonymChunkKind._
 
 import java.util.regex.Pattern
@@ -39,7 +39,7 @@ case class NCProbeSynonymChunk(
     wordStem: String = null, // Only for kind == TEXT.
     posTag: String = null,
     regex: Pattern = null,
-    dslPred: NCDslTokenPredicate = null
+    dslPred: NCIdlTokenPredicate = null
 ) {
     require(origText != null)
     require(kind != null)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
index 17aa194..4add91a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
@@ -33,7 +33,7 @@ import org.apache.nlpcraft.common.nlp.core.{NCNlpCoreManager, NCNlpPorterStemmer
 import org.apache.nlpcraft.common.util.NCUtils.{DSL_FIX, REGEX_FIX}
 import org.apache.nlpcraft.model._
 import org.apache.nlpcraft.model.factories.basic.NCBasicModelFactory
-import org.apache.nlpcraft.model.intent.compiler.NCDslCompiler
+import org.apache.nlpcraft.model.intent.compiler.NCIdlCompiler
 import org.apache.nlpcraft.model.intent.solver.NCIntentSolver
 import org.apache.nlpcraft.model.intent._
 import org.apache.nlpcraft.probe.mgrs.NCProbeSynonymChunkKind.{DSL, REGEX, TEXT}
@@ -78,7 +78,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
     )
     
     type Callback = (String /* ID */, Function[NCIntentMatch, NCResult])
-    type Intent = (NCDslIntent, Callback)
+    type Intent = (NCIdlIntent, Callback)
     type Sample = (String/* Intent ID */, Seq[Seq[String]] /* List of list of input samples for that intent. */)
     
     private final val SEPARATORS = Seq('?', ',', '.', '-', '!')
@@ -996,7 +996,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
         // DSL-based synonym.
         else if (startsAndEnds(DSL_FIX, chunk)) {
             val dsl = stripSuffix(DSL_FIX, chunk)
-            val compUnit = NCDslCompiler.compileSynonym(dsl, mdl, mdl.getOrigin)
+            val compUnit = NCIdlCompiler.compileSynonym(dsl, mdl, mdl.getOrigin)
 
             val x = NCProbeSynonymChunk(alias = compUnit.alias.orNull, kind = DSL, origText = chunk, dslPred = compUnit.pred)
 
@@ -1076,7 +1076,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
       * @param intent
       */
     @throws[NCE]
-    private def prepareCallback(mtd: Method, mdl: NCModel, intent: NCDslIntent): Callback = {
+    private def prepareCallback(mtd: Method, mdl: NCModel, intent: NCIdlIntent): Callback = {
         val mdlId = mdl.getId
 
         // Checks method result type.
@@ -1491,7 +1491,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
     @throws[NCE]
     private def scanIntents(mdl: NCModel): Set[Intent] = {
         val mdlId = mdl.getId
-        val intentDecls = mutable.Buffer.empty[NCDslIntent]
+        val intentDecls = mutable.Buffer.empty[NCIdlIntent]
         val intents = mutable.Buffer.empty[Intent]
 
         // First, get intent declarations from the JSON/YAML file, if any.
@@ -1500,7 +1500,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
                 intentDecls ++= adapter
                     .getIntents
                     .asScala
-                    .flatMap(NCDslCompiler.compileIntents(_, mdl, mdl.getOrigin))
+                    .flatMap(NCIdlCompiler.compileIntents(_, mdl, mdl.getOrigin))
 
             case _ ⇒ ()
         }
@@ -1512,7 +1512,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
             try {
                 val cls = Class.forName(mdlCls)
 
-                for (ann ← cls.getAnnotationsByType(CLS_INTENT); intent ← NCDslCompiler.compileIntents(ann.value(), mdl, mdlCls))
+                for (ann ← cls.getAnnotationsByType(CLS_INTENT); intent ← NCIdlCompiler.compileIntents(ann.value(), mdl, mdlCls))
                     if (intentDecls.exists(_.id == intent.id))
                         throw new NCE(s"Duplicate intent ID [" +
                             s"mdlId=$mdlId, " +
@@ -1532,7 +1532,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
         for (m ← getAllMethods(mdl)) {
             val mtdStr = method2Str(m)
 
-            def bindIntent(intent: NCDslIntent, cb: Callback): Unit = {
+            def bindIntent(intent: NCIdlIntent, cb: Callback): Unit = {
                 if (intents.exists(i ⇒ i._1.id == intent.id && i._2._1 != cb._1))
                     throw new NCE(s"The intent cannot be bound to more than one callback [" +
                         s"mdlId=$mdlId, " +
@@ -1547,7 +1547,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
             }
 
             // Process inline intent declarations by @NCIntent annotation.
-            for (ann ← m.getAnnotationsByType(CLS_INTENT); intent ← NCDslCompiler.compileIntents(ann.value(), mdl, mtdStr))
+            for (ann ← m.getAnnotationsByType(CLS_INTENT); intent ← NCIdlCompiler.compileIntents(ann.value(), mdl, mtdStr))
                 if (intentDecls.exists(_.id == intent.id) || intents.exists(_._1.id == intent.id))
                     throw new NCE(s"Duplicate intent ID [" +
                         s"mdlId=$mdlId, " +
@@ -1619,7 +1619,7 @@ object NCDeployManager extends NCService with DecorateAsScala {
                     val distinct = seqSeq.map(_.distinct).distinct
 
                     for (ann ← intAnns) {
-                        for (intent ← NCDslCompiler.compileIntents(ann.value(), mdl, mtdStr))
+                        for (intent ← NCIdlCompiler.compileIntents(ann.value(), mdl, mtdStr))
                             samples += (intent.id → distinct)
                     }
                     for (ann ← refAnns)
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/NCDslCompilerSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/NCIdlCompilerSpec.scala
similarity index 95%
rename from nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/NCDslCompilerSpec.scala
rename to nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/NCIdlCompilerSpec.scala
index 4424466..30e7c53 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/NCDslCompilerSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/NCIdlCompilerSpec.scala
@@ -19,13 +19,13 @@ package org.apache.nlpcraft.model.intent.dsl.compiler
 
 import org.apache.nlpcraft.common._
 import org.apache.nlpcraft.model.NCModel
-import org.apache.nlpcraft.model.intent.compiler.{NCDslCompiler, NCDslCompilerGlobal}
+import org.apache.nlpcraft.model.intent.compiler.{NCIdlCompiler, NCIdlCompilerGlobal}
 import org.junit.jupiter.api.Test
 
 /**
  * Tests for DSL compiler.
  */
-class NCDslCompilerSpec {
+class NCIdlCompilerSpec {
     private final val MODEL_ID = "test.mdl.id"
 
     private final val MODEL = new NCModel {
@@ -40,7 +40,7 @@ class NCDslCompilerSpec {
      */
     private def checkCompileOk(dsl: String): Unit =
         try {
-            NCDslCompiler.compileIntents(dsl, MODEL, MODEL_ID)
+            NCIdlCompiler.compileIntents(dsl, MODEL, MODEL_ID)
 
             assert(true)
         }
@@ -54,7 +54,7 @@ class NCDslCompilerSpec {
      */
     private def checkCompileError(txt: String): Unit =
         try {
-            NCDslCompiler.compileIntents(txt, MODEL, MODEL_ID)
+            NCIdlCompiler.compileIntents(txt, MODEL, MODEL_ID)
 
             assert(false)
         } catch {
@@ -66,7 +66,7 @@ class NCDslCompilerSpec {
     @Test
     @throws[NCException]
     def testInlineCompileOk(): Unit = {
-        NCDslCompilerGlobal.clearCache(MODEL_ID)
+        NCIdlCompilerGlobal.clearCache(MODEL_ID)
         
         checkCompileOk(
             """
@@ -122,7 +122,7 @@ class NCDslCompilerSpec {
     @Test
     @throws[NCException]
     def testInlineCompileFail(): Unit = {
-        NCDslCompilerGlobal.clearCache(MODEL_ID)
+        NCIdlCompilerGlobal.clearCache(MODEL_ID)
         
         checkCompileError(
             """

[incubator-nlpcraft] 01/05: WIP.

Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 71f6894ff590f52447d3b148b966e580afdccb10
Author: Aaron Radzinski <ar...@apache.org>
AuthorDate: Thu Mar 18 11:28:33 2021 -0700

    WIP.
---
 .../intent/compiler/antlr4/NCIntentIdl.interp}     |   6 +-
 .../intent/compiler/antlr4/NCIntentIdl.tokens}     |   0
 .../compiler/antlr4/NCIntentIdlBaseListener.java}  | 178 +++---
 .../compiler/antlr4/NCIntentIdlBaseVisitor.java}   |  92 +--
 .../compiler/antlr4/NCIntentIdlLexer.interp}       |   0
 .../intent/compiler/antlr4/NCIntentIdlLexer.java}  |   8 +-
 .../compiler/antlr4/NCIntentIdlLexer.tokens}       |   0
 .../compiler/antlr4/NCIntentIdlListener.java       | 458 +++++++++++++++
 .../intent/compiler/antlr4/NCIntentIdlParser.java} | 631 ++++++++++++++-------
 .../intent/compiler/antlr4/NCIntentIdlVisitor.java | 280 +++++++++
 .../model/intent/compiler/NCDslCompiler.scala      |  32 +-
 .../model/intent/compiler/NCDslCompilerBase.scala  |  15 +-
 .../compiler/antlr4/NCIntentDslListener.java       | 458 ---------------
 .../intent/compiler/antlr4/NCIntentDslVisitor.java | 280 ---------
 .../antlr4/{NCIntentDsl.g4 => NCIntentIdl.g4}      |  16 +-
 15 files changed, 1335 insertions(+), 1119 deletions(-)

diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.interp b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.interp
similarity index 99%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.interp
rename to nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.interp
index 4e472ed..d305c17 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.interp
+++ b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.interp
@@ -107,11 +107,11 @@ WS
 ErrorChar
 
 rule names:
-dsl
+idl
 synonym
 alias
-dslItems
-dslItem
+idlItems
+idlItem
 imp
 frag
 fragId
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslLexer.tokens b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.tokens
similarity index 100%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslLexer.tokens
rename to nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.tokens
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslBaseListener.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseListener.java
similarity index 62%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslBaseListener.java
rename to nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseListener.java
index d8ef01c..4661771 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslBaseListener.java
+++ b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseListener.java
@@ -1,4 +1,4 @@
-// Generated from /Users/nivanov/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.g4 by ANTLR 4.9.1
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
 package org.apache.nlpcraft.model.intent.compiler.antlr4;
 
 import org.antlr.v4.runtime.ParserRuleContext;
@@ -6,527 +6,527 @@ import org.antlr.v4.runtime.tree.ErrorNode;
 import org.antlr.v4.runtime.tree.TerminalNode;
 
 /**
- * This class provides an empty implementation of {@link NCIntentDslListener},
+ * This class provides an empty implementation of {@link NCIntentIdlListener},
  * which can be extended to create a listener which only needs to handle a subset
  * of the available methods.
  */
-public class NCIntentDslBaseListener implements NCIntentDslListener {
+public class NCIntentIdlBaseListener implements NCIntentIdlListener {
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterDsl(NCIntentDslParser.DslContext ctx) { }
+	@Override public void enterIdl(NCIntentIdlParser.IdlContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitDsl(NCIntentDslParser.DslContext ctx) { }
+	@Override public void exitIdl(NCIntentIdlParser.IdlContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterSynonym(NCIntentDslParser.SynonymContext ctx) { }
+	@Override public void enterSynonym(NCIntentIdlParser.SynonymContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitSynonym(NCIntentDslParser.SynonymContext ctx) { }
+	@Override public void exitSynonym(NCIntentIdlParser.SynonymContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterAlias(NCIntentDslParser.AliasContext ctx) { }
+	@Override public void enterAlias(NCIntentIdlParser.AliasContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitAlias(NCIntentDslParser.AliasContext ctx) { }
+	@Override public void exitAlias(NCIntentIdlParser.AliasContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterDslItems(NCIntentDslParser.DslItemsContext ctx) { }
+	@Override public void enterIdlItems(NCIntentIdlParser.IdlItemsContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitDslItems(NCIntentDslParser.DslItemsContext ctx) { }
+	@Override public void exitIdlItems(NCIntentIdlParser.IdlItemsContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterDslItem(NCIntentDslParser.DslItemContext ctx) { }
+	@Override public void enterIdlItem(NCIntentIdlParser.IdlItemContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitDslItem(NCIntentDslParser.DslItemContext ctx) { }
+	@Override public void exitIdlItem(NCIntentIdlParser.IdlItemContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterImp(NCIntentDslParser.ImpContext ctx) { }
+	@Override public void enterImp(NCIntentIdlParser.ImpContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitImp(NCIntentDslParser.ImpContext ctx) { }
+	@Override public void exitImp(NCIntentIdlParser.ImpContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterFrag(NCIntentDslParser.FragContext ctx) { }
+	@Override public void enterFrag(NCIntentIdlParser.FragContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitFrag(NCIntentDslParser.FragContext ctx) { }
+	@Override public void exitFrag(NCIntentIdlParser.FragContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterFragId(NCIntentDslParser.FragIdContext ctx) { }
+	@Override public void enterFragId(NCIntentIdlParser.FragIdContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitFragId(NCIntentDslParser.FragIdContext ctx) { }
+	@Override public void exitFragId(NCIntentIdlParser.FragIdContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterFragRef(NCIntentDslParser.FragRefContext ctx) { }
+	@Override public void enterFragRef(NCIntentIdlParser.FragRefContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitFragRef(NCIntentDslParser.FragRefContext ctx) { }
+	@Override public void exitFragRef(NCIntentIdlParser.FragRefContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterFragMeta(NCIntentDslParser.FragMetaContext ctx) { }
+	@Override public void enterFragMeta(NCIntentIdlParser.FragMetaContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitFragMeta(NCIntentDslParser.FragMetaContext ctx) { }
+	@Override public void exitFragMeta(NCIntentIdlParser.FragMetaContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterIntent(NCIntentDslParser.IntentContext ctx) { }
+	@Override public void enterIntent(NCIntentIdlParser.IntentContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitIntent(NCIntentDslParser.IntentContext ctx) { }
+	@Override public void exitIntent(NCIntentIdlParser.IntentContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterIntentId(NCIntentDslParser.IntentIdContext ctx) { }
+	@Override public void enterIntentId(NCIntentIdlParser.IntentIdContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitIntentId(NCIntentDslParser.IntentIdContext ctx) { }
+	@Override public void exitIntentId(NCIntentIdlParser.IntentIdContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterOrderedDecl(NCIntentDslParser.OrderedDeclContext ctx) { }
+	@Override public void enterOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitOrderedDecl(NCIntentDslParser.OrderedDeclContext ctx) { }
+	@Override public void exitOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterMtdDecl(NCIntentDslParser.MtdDeclContext ctx) { }
+	@Override public void enterMtdDecl(NCIntentIdlParser.MtdDeclContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitMtdDecl(NCIntentDslParser.MtdDeclContext ctx) { }
+	@Override public void exitMtdDecl(NCIntentIdlParser.MtdDeclContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterFlowDecl(NCIntentDslParser.FlowDeclContext ctx) { }
+	@Override public void enterFlowDecl(NCIntentIdlParser.FlowDeclContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitFlowDecl(NCIntentDslParser.FlowDeclContext ctx) { }
+	@Override public void exitFlowDecl(NCIntentIdlParser.FlowDeclContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterMetaDecl(NCIntentDslParser.MetaDeclContext ctx) { }
+	@Override public void enterMetaDecl(NCIntentIdlParser.MetaDeclContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitMetaDecl(NCIntentDslParser.MetaDeclContext ctx) { }
+	@Override public void exitMetaDecl(NCIntentIdlParser.MetaDeclContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterJsonObj(NCIntentDslParser.JsonObjContext ctx) { }
+	@Override public void enterJsonObj(NCIntentIdlParser.JsonObjContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitJsonObj(NCIntentDslParser.JsonObjContext ctx) { }
+	@Override public void exitJsonObj(NCIntentIdlParser.JsonObjContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterJsonPair(NCIntentDslParser.JsonPairContext ctx) { }
+	@Override public void enterJsonPair(NCIntentIdlParser.JsonPairContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitJsonPair(NCIntentDslParser.JsonPairContext ctx) { }
+	@Override public void exitJsonPair(NCIntentIdlParser.JsonPairContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterJsonVal(NCIntentDslParser.JsonValContext ctx) { }
+	@Override public void enterJsonVal(NCIntentIdlParser.JsonValContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitJsonVal(NCIntentDslParser.JsonValContext ctx) { }
+	@Override public void exitJsonVal(NCIntentIdlParser.JsonValContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterJsonArr(NCIntentDslParser.JsonArrContext ctx) { }
+	@Override public void enterJsonArr(NCIntentIdlParser.JsonArrContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitJsonArr(NCIntentDslParser.JsonArrContext ctx) { }
+	@Override public void exitJsonArr(NCIntentIdlParser.JsonArrContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterTerms(NCIntentDslParser.TermsContext ctx) { }
+	@Override public void enterTerms(NCIntentIdlParser.TermsContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitTerms(NCIntentDslParser.TermsContext ctx) { }
+	@Override public void exitTerms(NCIntentIdlParser.TermsContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterTermItem(NCIntentDslParser.TermItemContext ctx) { }
+	@Override public void enterTermItem(NCIntentIdlParser.TermItemContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitTermItem(NCIntentDslParser.TermItemContext ctx) { }
+	@Override public void exitTermItem(NCIntentIdlParser.TermItemContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterTermEq(NCIntentDslParser.TermEqContext ctx) { }
+	@Override public void enterTermEq(NCIntentIdlParser.TermEqContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitTermEq(NCIntentDslParser.TermEqContext ctx) { }
+	@Override public void exitTermEq(NCIntentIdlParser.TermEqContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterTerm(NCIntentDslParser.TermContext ctx) { }
+	@Override public void enterTerm(NCIntentIdlParser.TermContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitTerm(NCIntentDslParser.TermContext ctx) { }
+	@Override public void exitTerm(NCIntentIdlParser.TermContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterMtdRef(NCIntentDslParser.MtdRefContext ctx) { }
+	@Override public void enterMtdRef(NCIntentIdlParser.MtdRefContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitMtdRef(NCIntentDslParser.MtdRefContext ctx) { }
+	@Override public void exitMtdRef(NCIntentIdlParser.MtdRefContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterJavaFqn(NCIntentDslParser.JavaFqnContext ctx) { }
+	@Override public void enterJavaFqn(NCIntentIdlParser.JavaFqnContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitJavaFqn(NCIntentDslParser.JavaFqnContext ctx) { }
+	@Override public void exitJavaFqn(NCIntentIdlParser.JavaFqnContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterTermId(NCIntentDslParser.TermIdContext ctx) { }
+	@Override public void enterTermId(NCIntentIdlParser.TermIdContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitTermId(NCIntentDslParser.TermIdContext ctx) { }
+	@Override public void exitTermId(NCIntentIdlParser.TermIdContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterParExpr(NCIntentDslParser.ParExprContext ctx) { }
+	@Override public void enterParExpr(NCIntentIdlParser.ParExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitParExpr(NCIntentDslParser.ParExprContext ctx) { }
+	@Override public void exitParExpr(NCIntentIdlParser.ParExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterUnaryExpr(NCIntentDslParser.UnaryExprContext ctx) { }
+	@Override public void enterUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitUnaryExpr(NCIntentDslParser.UnaryExprContext ctx) { }
+	@Override public void exitUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterCompExpr(NCIntentDslParser.CompExprContext ctx) { }
+	@Override public void enterCompExpr(NCIntentIdlParser.CompExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitCompExpr(NCIntentDslParser.CompExprContext ctx) { }
+	@Override public void exitCompExpr(NCIntentIdlParser.CompExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterPlusMinusExpr(NCIntentDslParser.PlusMinusExprContext ctx) { }
+	@Override public void enterPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitPlusMinusExpr(NCIntentDslParser.PlusMinusExprContext ctx) { }
+	@Override public void exitPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterAtomExpr(NCIntentDslParser.AtomExprContext ctx) { }
+	@Override public void enterAtomExpr(NCIntentIdlParser.AtomExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitAtomExpr(NCIntentDslParser.AtomExprContext ctx) { }
+	@Override public void exitAtomExpr(NCIntentIdlParser.AtomExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterMultDivModExpr(NCIntentDslParser.MultDivModExprContext ctx) { }
+	@Override public void enterMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitMultDivModExpr(NCIntentDslParser.MultDivModExprContext ctx) { }
+	@Override public void exitMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterAndOrExpr(NCIntentDslParser.AndOrExprContext ctx) { }
+	@Override public void enterAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitAndOrExpr(NCIntentDslParser.AndOrExprContext ctx) { }
+	@Override public void exitAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterCallExpr(NCIntentDslParser.CallExprContext ctx) { }
+	@Override public void enterCallExpr(NCIntentIdlParser.CallExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitCallExpr(NCIntentDslParser.CallExprContext ctx) { }
+	@Override public void exitCallExpr(NCIntentIdlParser.CallExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterEqNeqExpr(NCIntentDslParser.EqNeqExprContext ctx) { }
+	@Override public void enterEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitEqNeqExpr(NCIntentDslParser.EqNeqExprContext ctx) { }
+	@Override public void exitEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterParamList(NCIntentDslParser.ParamListContext ctx) { }
+	@Override public void enterParamList(NCIntentIdlParser.ParamListContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitParamList(NCIntentDslParser.ParamListContext ctx) { }
+	@Override public void exitParamList(NCIntentIdlParser.ParamListContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterAtom(NCIntentDslParser.AtomContext ctx) { }
+	@Override public void enterAtom(NCIntentIdlParser.AtomContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitAtom(NCIntentDslParser.AtomContext ctx) { }
+	@Override public void exitAtom(NCIntentIdlParser.AtomContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterQstring(NCIntentDslParser.QstringContext ctx) { }
+	@Override public void enterQstring(NCIntentIdlParser.QstringContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitQstring(NCIntentDslParser.QstringContext ctx) { }
+	@Override public void exitQstring(NCIntentIdlParser.QstringContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterMinMax(NCIntentDslParser.MinMaxContext ctx) { }
+	@Override public void enterMinMax(NCIntentIdlParser.MinMaxContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitMinMax(NCIntentDslParser.MinMaxContext ctx) { }
+	@Override public void exitMinMax(NCIntentIdlParser.MinMaxContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterMinMaxShortcut(NCIntentDslParser.MinMaxShortcutContext ctx) { }
+	@Override public void enterMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitMinMaxShortcut(NCIntentDslParser.MinMaxShortcutContext ctx) { }
+	@Override public void exitMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterMinMaxRange(NCIntentDslParser.MinMaxRangeContext ctx) { }
+	@Override public void enterMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitMinMaxRange(NCIntentDslParser.MinMaxRangeContext ctx) { }
+	@Override public void exitMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterId(NCIntentDslParser.IdContext ctx) { }
+	@Override public void enterId(NCIntentIdlParser.IdContext ctx) { }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void exitId(NCIntentDslParser.IdContext ctx) { }
+	@Override public void exitId(NCIntentIdlParser.IdContext ctx) { }
 
 	/**
 	 * {@inheritDoc}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslBaseVisitor.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseVisitor.java
similarity index 74%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslBaseVisitor.java
rename to nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseVisitor.java
index b25bd08..0a3871e 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslBaseVisitor.java
+++ b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseVisitor.java
@@ -1,315 +1,315 @@
-// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentDsl.g4 by ANTLR 4.9.1
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
 package org.apache.nlpcraft.model.intent.compiler.antlr4;
 import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
 
 /**
- * This class provides an empty implementation of {@link NCIntentDslVisitor},
+ * This class provides an empty implementation of {@link NCIntentIdlVisitor},
  * which can be extended to create a visitor which only needs to handle a subset
  * of the available methods.
  *
  * @param <T> The return type of the visit operation. Use {@link Void} for
  * operations with no return type.
  */
-public class NCIntentDslBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements NCIntentDslVisitor<T> {
+public class NCIntentIdlBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements NCIntentIdlVisitor<T> {
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitDsl(NCIntentDslParser.DslContext ctx) { return visitChildren(ctx); }
+	@Override public T visitIdl(NCIntentIdlParser.IdlContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitSynonym(NCIntentDslParser.SynonymContext ctx) { return visitChildren(ctx); }
+	@Override public T visitSynonym(NCIntentIdlParser.SynonymContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitAlias(NCIntentDslParser.AliasContext ctx) { return visitChildren(ctx); }
+	@Override public T visitAlias(NCIntentIdlParser.AliasContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitDslItems(NCIntentDslParser.DslItemsContext ctx) { return visitChildren(ctx); }
+	@Override public T visitIdlItems(NCIntentIdlParser.IdlItemsContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitDslItem(NCIntentDslParser.DslItemContext ctx) { return visitChildren(ctx); }
+	@Override public T visitIdlItem(NCIntentIdlParser.IdlItemContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitImp(NCIntentDslParser.ImpContext ctx) { return visitChildren(ctx); }
+	@Override public T visitImp(NCIntentIdlParser.ImpContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitFrag(NCIntentDslParser.FragContext ctx) { return visitChildren(ctx); }
+	@Override public T visitFrag(NCIntentIdlParser.FragContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitFragId(NCIntentDslParser.FragIdContext ctx) { return visitChildren(ctx); }
+	@Override public T visitFragId(NCIntentIdlParser.FragIdContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitFragRef(NCIntentDslParser.FragRefContext ctx) { return visitChildren(ctx); }
+	@Override public T visitFragRef(NCIntentIdlParser.FragRefContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitFragMeta(NCIntentDslParser.FragMetaContext ctx) { return visitChildren(ctx); }
+	@Override public T visitFragMeta(NCIntentIdlParser.FragMetaContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitIntent(NCIntentDslParser.IntentContext ctx) { return visitChildren(ctx); }
+	@Override public T visitIntent(NCIntentIdlParser.IntentContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitIntentId(NCIntentDslParser.IntentIdContext ctx) { return visitChildren(ctx); }
+	@Override public T visitIntentId(NCIntentIdlParser.IntentIdContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitOrderedDecl(NCIntentDslParser.OrderedDeclContext ctx) { return visitChildren(ctx); }
+	@Override public T visitOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitMtdDecl(NCIntentDslParser.MtdDeclContext ctx) { return visitChildren(ctx); }
+	@Override public T visitMtdDecl(NCIntentIdlParser.MtdDeclContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitFlowDecl(NCIntentDslParser.FlowDeclContext ctx) { return visitChildren(ctx); }
+	@Override public T visitFlowDecl(NCIntentIdlParser.FlowDeclContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitMetaDecl(NCIntentDslParser.MetaDeclContext ctx) { return visitChildren(ctx); }
+	@Override public T visitMetaDecl(NCIntentIdlParser.MetaDeclContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitJsonObj(NCIntentDslParser.JsonObjContext ctx) { return visitChildren(ctx); }
+	@Override public T visitJsonObj(NCIntentIdlParser.JsonObjContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitJsonPair(NCIntentDslParser.JsonPairContext ctx) { return visitChildren(ctx); }
+	@Override public T visitJsonPair(NCIntentIdlParser.JsonPairContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitJsonVal(NCIntentDslParser.JsonValContext ctx) { return visitChildren(ctx); }
+	@Override public T visitJsonVal(NCIntentIdlParser.JsonValContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitJsonArr(NCIntentDslParser.JsonArrContext ctx) { return visitChildren(ctx); }
+	@Override public T visitJsonArr(NCIntentIdlParser.JsonArrContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitTerms(NCIntentDslParser.TermsContext ctx) { return visitChildren(ctx); }
+	@Override public T visitTerms(NCIntentIdlParser.TermsContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitTermItem(NCIntentDslParser.TermItemContext ctx) { return visitChildren(ctx); }
+	@Override public T visitTermItem(NCIntentIdlParser.TermItemContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitTermEq(NCIntentDslParser.TermEqContext ctx) { return visitChildren(ctx); }
+	@Override public T visitTermEq(NCIntentIdlParser.TermEqContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitTerm(NCIntentDslParser.TermContext ctx) { return visitChildren(ctx); }
+	@Override public T visitTerm(NCIntentIdlParser.TermContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitMtdRef(NCIntentDslParser.MtdRefContext ctx) { return visitChildren(ctx); }
+	@Override public T visitMtdRef(NCIntentIdlParser.MtdRefContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitJavaFqn(NCIntentDslParser.JavaFqnContext ctx) { return visitChildren(ctx); }
+	@Override public T visitJavaFqn(NCIntentIdlParser.JavaFqnContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitTermId(NCIntentDslParser.TermIdContext ctx) { return visitChildren(ctx); }
+	@Override public T visitTermId(NCIntentIdlParser.TermIdContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitParExpr(NCIntentDslParser.ParExprContext ctx) { return visitChildren(ctx); }
+	@Override public T visitParExpr(NCIntentIdlParser.ParExprContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitUnaryExpr(NCIntentDslParser.UnaryExprContext ctx) { return visitChildren(ctx); }
+	@Override public T visitUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitCompExpr(NCIntentDslParser.CompExprContext ctx) { return visitChildren(ctx); }
+	@Override public T visitCompExpr(NCIntentIdlParser.CompExprContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitPlusMinusExpr(NCIntentDslParser.PlusMinusExprContext ctx) { return visitChildren(ctx); }
+	@Override public T visitPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitAtomExpr(NCIntentDslParser.AtomExprContext ctx) { return visitChildren(ctx); }
+	@Override public T visitAtomExpr(NCIntentIdlParser.AtomExprContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitMultDivModExpr(NCIntentDslParser.MultDivModExprContext ctx) { return visitChildren(ctx); }
+	@Override public T visitMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitAndOrExpr(NCIntentDslParser.AndOrExprContext ctx) { return visitChildren(ctx); }
+	@Override public T visitAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitCallExpr(NCIntentDslParser.CallExprContext ctx) { return visitChildren(ctx); }
+	@Override public T visitCallExpr(NCIntentIdlParser.CallExprContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitEqNeqExpr(NCIntentDslParser.EqNeqExprContext ctx) { return visitChildren(ctx); }
+	@Override public T visitEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitParamList(NCIntentDslParser.ParamListContext ctx) { return visitChildren(ctx); }
+	@Override public T visitParamList(NCIntentIdlParser.ParamListContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitAtom(NCIntentDslParser.AtomContext ctx) { return visitChildren(ctx); }
+	@Override public T visitAtom(NCIntentIdlParser.AtomContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitQstring(NCIntentDslParser.QstringContext ctx) { return visitChildren(ctx); }
+	@Override public T visitQstring(NCIntentIdlParser.QstringContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitMinMax(NCIntentDslParser.MinMaxContext ctx) { return visitChildren(ctx); }
+	@Override public T visitMinMax(NCIntentIdlParser.MinMaxContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitMinMaxShortcut(NCIntentDslParser.MinMaxShortcutContext ctx) { return visitChildren(ctx); }
+	@Override public T visitMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitMinMaxRange(NCIntentDslParser.MinMaxRangeContext ctx) { return visitChildren(ctx); }
+	@Override public T visitMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx) { return visitChildren(ctx); }
 	/**
 	 * {@inheritDoc}
 	 *
 	 * <p>The default implementation returns the result of calling
 	 * {@link #visitChildren} on {@code ctx}.</p>
 	 */
-	@Override public T visitId(NCIntentDslParser.IdContext ctx) { return visitChildren(ctx); }
+	@Override public T visitId(NCIntentIdlParser.IdContext ctx) { return visitChildren(ctx); }
 }
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslLexer.interp b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.interp
similarity index 100%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslLexer.interp
rename to nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.interp
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslLexer.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.java
similarity index 99%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslLexer.java
rename to nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.java
index 75464e4..70f4bf6 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslLexer.java
+++ b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.java
@@ -1,4 +1,4 @@
-// Generated from /Users/nivanov/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.g4 by ANTLR 4.9.1
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
 package org.apache.nlpcraft.model.intent.compiler.antlr4;
 import org.antlr.v4.runtime.Lexer;
 import org.antlr.v4.runtime.CharStream;
@@ -10,7 +10,7 @@ import org.antlr.v4.runtime.dfa.DFA;
 import org.antlr.v4.runtime.misc.*;
 
 @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
-public class NCIntentDslLexer extends Lexer {
+public class NCIntentIdlLexer extends Lexer {
 	static { RuntimeMetaData.checkVersion("4.9.1", RuntimeMetaData.VERSION); }
 
 	protected static final DFA[] _decisionToDFA;
@@ -100,13 +100,13 @@ public class NCIntentDslLexer extends Lexer {
 	}
 
 
-	public NCIntentDslLexer(CharStream input) {
+	public NCIntentIdlLexer(CharStream input) {
 		super(input);
 		_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
 	}
 
 	@Override
-	public String getGrammarFileName() { return "NCIntentDsl.g4"; }
+	public String getGrammarFileName() { return "NCIntentIdl.g4"; }
 
 	@Override
 	public String[] getRuleNames() { return ruleNames; }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.tokens b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.tokens
similarity index 100%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.tokens
rename to nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.tokens
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlListener.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlListener.java
new file mode 100644
index 0000000..2c02411
--- /dev/null
+++ b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlListener.java
@@ -0,0 +1,458 @@
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
+package org.apache.nlpcraft.model.intent.compiler.antlr4;
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+
+/**
+ * This interface defines a complete listener for a parse tree produced by
+ * {@link NCIntentIdlParser}.
+ */
+public interface NCIntentIdlListener extends ParseTreeListener {
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#idl}.
+	 * @param ctx the parse tree
+	 */
+	void enterIdl(NCIntentIdlParser.IdlContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#idl}.
+	 * @param ctx the parse tree
+	 */
+	void exitIdl(NCIntentIdlParser.IdlContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#synonym}.
+	 * @param ctx the parse tree
+	 */
+	void enterSynonym(NCIntentIdlParser.SynonymContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#synonym}.
+	 * @param ctx the parse tree
+	 */
+	void exitSynonym(NCIntentIdlParser.SynonymContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#alias}.
+	 * @param ctx the parse tree
+	 */
+	void enterAlias(NCIntentIdlParser.AliasContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#alias}.
+	 * @param ctx the parse tree
+	 */
+	void exitAlias(NCIntentIdlParser.AliasContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#idlItems}.
+	 * @param ctx the parse tree
+	 */
+	void enterIdlItems(NCIntentIdlParser.IdlItemsContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#idlItems}.
+	 * @param ctx the parse tree
+	 */
+	void exitIdlItems(NCIntentIdlParser.IdlItemsContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#idlItem}.
+	 * @param ctx the parse tree
+	 */
+	void enterIdlItem(NCIntentIdlParser.IdlItemContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#idlItem}.
+	 * @param ctx the parse tree
+	 */
+	void exitIdlItem(NCIntentIdlParser.IdlItemContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#imp}.
+	 * @param ctx the parse tree
+	 */
+	void enterImp(NCIntentIdlParser.ImpContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#imp}.
+	 * @param ctx the parse tree
+	 */
+	void exitImp(NCIntentIdlParser.ImpContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#frag}.
+	 * @param ctx the parse tree
+	 */
+	void enterFrag(NCIntentIdlParser.FragContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#frag}.
+	 * @param ctx the parse tree
+	 */
+	void exitFrag(NCIntentIdlParser.FragContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#fragId}.
+	 * @param ctx the parse tree
+	 */
+	void enterFragId(NCIntentIdlParser.FragIdContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#fragId}.
+	 * @param ctx the parse tree
+	 */
+	void exitFragId(NCIntentIdlParser.FragIdContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#fragRef}.
+	 * @param ctx the parse tree
+	 */
+	void enterFragRef(NCIntentIdlParser.FragRefContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#fragRef}.
+	 * @param ctx the parse tree
+	 */
+	void exitFragRef(NCIntentIdlParser.FragRefContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#fragMeta}.
+	 * @param ctx the parse tree
+	 */
+	void enterFragMeta(NCIntentIdlParser.FragMetaContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#fragMeta}.
+	 * @param ctx the parse tree
+	 */
+	void exitFragMeta(NCIntentIdlParser.FragMetaContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#intent}.
+	 * @param ctx the parse tree
+	 */
+	void enterIntent(NCIntentIdlParser.IntentContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#intent}.
+	 * @param ctx the parse tree
+	 */
+	void exitIntent(NCIntentIdlParser.IntentContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#intentId}.
+	 * @param ctx the parse tree
+	 */
+	void enterIntentId(NCIntentIdlParser.IntentIdContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#intentId}.
+	 * @param ctx the parse tree
+	 */
+	void exitIntentId(NCIntentIdlParser.IntentIdContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#orderedDecl}.
+	 * @param ctx the parse tree
+	 */
+	void enterOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#orderedDecl}.
+	 * @param ctx the parse tree
+	 */
+	void exitOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#mtdDecl}.
+	 * @param ctx the parse tree
+	 */
+	void enterMtdDecl(NCIntentIdlParser.MtdDeclContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#mtdDecl}.
+	 * @param ctx the parse tree
+	 */
+	void exitMtdDecl(NCIntentIdlParser.MtdDeclContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#flowDecl}.
+	 * @param ctx the parse tree
+	 */
+	void enterFlowDecl(NCIntentIdlParser.FlowDeclContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#flowDecl}.
+	 * @param ctx the parse tree
+	 */
+	void exitFlowDecl(NCIntentIdlParser.FlowDeclContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#metaDecl}.
+	 * @param ctx the parse tree
+	 */
+	void enterMetaDecl(NCIntentIdlParser.MetaDeclContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#metaDecl}.
+	 * @param ctx the parse tree
+	 */
+	void exitMetaDecl(NCIntentIdlParser.MetaDeclContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonObj}.
+	 * @param ctx the parse tree
+	 */
+	void enterJsonObj(NCIntentIdlParser.JsonObjContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonObj}.
+	 * @param ctx the parse tree
+	 */
+	void exitJsonObj(NCIntentIdlParser.JsonObjContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonPair}.
+	 * @param ctx the parse tree
+	 */
+	void enterJsonPair(NCIntentIdlParser.JsonPairContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonPair}.
+	 * @param ctx the parse tree
+	 */
+	void exitJsonPair(NCIntentIdlParser.JsonPairContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonVal}.
+	 * @param ctx the parse tree
+	 */
+	void enterJsonVal(NCIntentIdlParser.JsonValContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonVal}.
+	 * @param ctx the parse tree
+	 */
+	void exitJsonVal(NCIntentIdlParser.JsonValContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonArr}.
+	 * @param ctx the parse tree
+	 */
+	void enterJsonArr(NCIntentIdlParser.JsonArrContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonArr}.
+	 * @param ctx the parse tree
+	 */
+	void exitJsonArr(NCIntentIdlParser.JsonArrContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#terms}.
+	 * @param ctx the parse tree
+	 */
+	void enterTerms(NCIntentIdlParser.TermsContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#terms}.
+	 * @param ctx the parse tree
+	 */
+	void exitTerms(NCIntentIdlParser.TermsContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#termItem}.
+	 * @param ctx the parse tree
+	 */
+	void enterTermItem(NCIntentIdlParser.TermItemContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#termItem}.
+	 * @param ctx the parse tree
+	 */
+	void exitTermItem(NCIntentIdlParser.TermItemContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#termEq}.
+	 * @param ctx the parse tree
+	 */
+	void enterTermEq(NCIntentIdlParser.TermEqContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#termEq}.
+	 * @param ctx the parse tree
+	 */
+	void exitTermEq(NCIntentIdlParser.TermEqContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#term}.
+	 * @param ctx the parse tree
+	 */
+	void enterTerm(NCIntentIdlParser.TermContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#term}.
+	 * @param ctx the parse tree
+	 */
+	void exitTerm(NCIntentIdlParser.TermContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#mtdRef}.
+	 * @param ctx the parse tree
+	 */
+	void enterMtdRef(NCIntentIdlParser.MtdRefContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#mtdRef}.
+	 * @param ctx the parse tree
+	 */
+	void exitMtdRef(NCIntentIdlParser.MtdRefContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#javaFqn}.
+	 * @param ctx the parse tree
+	 */
+	void enterJavaFqn(NCIntentIdlParser.JavaFqnContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#javaFqn}.
+	 * @param ctx the parse tree
+	 */
+	void exitJavaFqn(NCIntentIdlParser.JavaFqnContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#termId}.
+	 * @param ctx the parse tree
+	 */
+	void enterTermId(NCIntentIdlParser.TermIdContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#termId}.
+	 * @param ctx the parse tree
+	 */
+	void exitTermId(NCIntentIdlParser.TermIdContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code parExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterParExpr(NCIntentIdlParser.ParExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code parExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitParExpr(NCIntentIdlParser.ParExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code unaryExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code unaryExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code compExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterCompExpr(NCIntentIdlParser.CompExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code compExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitCompExpr(NCIntentIdlParser.CompExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code plusMinusExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code plusMinusExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code atomExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterAtomExpr(NCIntentIdlParser.AtomExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code atomExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitAtomExpr(NCIntentIdlParser.AtomExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code multDivModExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code multDivModExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code andOrExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code andOrExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code callExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterCallExpr(NCIntentIdlParser.CallExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code callExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitCallExpr(NCIntentIdlParser.CallExprContext ctx);
+	/**
+	 * Enter a parse tree produced by the {@code eqNeqExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void enterEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx);
+	/**
+	 * Exit a parse tree produced by the {@code eqNeqExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 */
+	void exitEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#paramList}.
+	 * @param ctx the parse tree
+	 */
+	void enterParamList(NCIntentIdlParser.ParamListContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#paramList}.
+	 * @param ctx the parse tree
+	 */
+	void exitParamList(NCIntentIdlParser.ParamListContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#atom}.
+	 * @param ctx the parse tree
+	 */
+	void enterAtom(NCIntentIdlParser.AtomContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#atom}.
+	 * @param ctx the parse tree
+	 */
+	void exitAtom(NCIntentIdlParser.AtomContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#qstring}.
+	 * @param ctx the parse tree
+	 */
+	void enterQstring(NCIntentIdlParser.QstringContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#qstring}.
+	 * @param ctx the parse tree
+	 */
+	void exitQstring(NCIntentIdlParser.QstringContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#minMax}.
+	 * @param ctx the parse tree
+	 */
+	void enterMinMax(NCIntentIdlParser.MinMaxContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#minMax}.
+	 * @param ctx the parse tree
+	 */
+	void exitMinMax(NCIntentIdlParser.MinMaxContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#minMaxShortcut}.
+	 * @param ctx the parse tree
+	 */
+	void enterMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#minMaxShortcut}.
+	 * @param ctx the parse tree
+	 */
+	void exitMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#minMaxRange}.
+	 * @param ctx the parse tree
+	 */
+	void enterMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#minMaxRange}.
+	 * @param ctx the parse tree
+	 */
+	void exitMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx);
+	/**
+	 * Enter a parse tree produced by {@link NCIntentIdlParser#id}.
+	 * @param ctx the parse tree
+	 */
+	void enterId(NCIntentIdlParser.IdContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentIdlParser#id}.
+	 * @param ctx the parse tree
+	 */
+	void exitId(NCIntentIdlParser.IdContext ctx);
+}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslParser.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlParser.java
similarity index 75%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslParser.java
rename to nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlParser.java
index 7ad4210..e0e20cd 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslParser.java
+++ b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlParser.java
@@ -1,4 +1,4 @@
-// Generated from /Users/nivanov/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.g4 by ANTLR 4.9.1
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
 package org.apache.nlpcraft.model.intent.compiler.antlr4;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
@@ -10,7 +10,7 @@ import java.util.Iterator;
 import java.util.ArrayList;
 
 @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
-public class NCIntentDslParser extends Parser {
+public class NCIntentIdlParser extends Parser {
 	static { RuntimeMetaData.checkVersion("4.9.1", RuntimeMetaData.VERSION); }
 
 	protected static final DFA[] _decisionToDFA;
@@ -25,7 +25,7 @@ public class NCIntentDslParser extends Parser {
 		DIV=42, MOD=43, DOLLAR=44, INT=45, REAL=46, EXP=47, ID=48, COMMENT=49, 
 		WS=50, ErrorChar=51;
 	public static final int
-		RULE_dsl = 0, RULE_synonym = 1, RULE_alias = 2, RULE_dslItems = 3, RULE_dslItem = 4, 
+		RULE_idl = 0, RULE_synonym = 1, RULE_alias = 2, RULE_idlItems = 3, RULE_idlItem = 4, 
 		RULE_imp = 5, RULE_frag = 6, RULE_fragId = 7, RULE_fragRef = 8, RULE_fragMeta = 9, 
 		RULE_intent = 10, RULE_intentId = 11, RULE_orderedDecl = 12, RULE_mtdDecl = 13, 
 		RULE_flowDecl = 14, RULE_metaDecl = 15, RULE_jsonObj = 16, RULE_jsonPair = 17, 
@@ -36,7 +36,7 @@ public class NCIntentDslParser extends Parser {
 		RULE_id = 34;
 	private static String[] makeRuleNames() {
 		return new String[] {
-			"dsl", "synonym", "alias", "dslItems", "dslItem", "imp", "frag", "fragId", 
+			"idl", "synonym", "alias", "idlItems", "idlItem", "imp", "frag", "fragId", 
 			"fragRef", "fragMeta", "intent", "intentId", "orderedDecl", "mtdDecl", 
 			"flowDecl", "metaDecl", "jsonObj", "jsonPair", "jsonVal", "jsonArr", 
 			"terms", "termItem", "termEq", "term", "mtdRef", "javaFqn", "termId", 
@@ -101,7 +101,7 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	@Override
-	public String getGrammarFileName() { return "NCIntentDsl.g4"; }
+	public String getGrammarFileName() { return "NCIntentIdl.g4"; }
 
 	@Override
 	public String[] getRuleNames() { return ruleNames; }
@@ -112,38 +112,43 @@ public class NCIntentDslParser extends Parser {
 	@Override
 	public ATN getATN() { return _ATN; }
 
-	public NCIntentDslParser(TokenStream input) {
+	public NCIntentIdlParser(TokenStream input) {
 		super(input);
 		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
 	}
 
-	public static class DslContext extends ParserRuleContext {
-		public DslItemsContext dslItems() {
-			return getRuleContext(DslItemsContext.class,0);
+	public static class IdlContext extends ParserRuleContext {
+		public IdlItemsContext idlItems() {
+			return getRuleContext(IdlItemsContext.class,0);
 		}
-		public TerminalNode EOF() { return getToken(NCIntentDslParser.EOF, 0); }
-		public DslContext(ParserRuleContext parent, int invokingState) {
+		public TerminalNode EOF() { return getToken(NCIntentIdlParser.EOF, 0); }
+		public IdlContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
-		@Override public int getRuleIndex() { return RULE_dsl; }
+		@Override public int getRuleIndex() { return RULE_idl; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterDsl(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIdl(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitDsl(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIdl(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitIdl(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
-	public final DslContext dsl() throws RecognitionException {
-		DslContext _localctx = new DslContext(_ctx, getState());
-		enterRule(_localctx, 0, RULE_dsl);
+	public final IdlContext idl() throws RecognitionException {
+		IdlContext _localctx = new IdlContext(_ctx, getState());
+		enterRule(_localctx, 0, RULE_idl);
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
 			setState(70);
-			dslItems(0);
+			idlItems(0);
 			setState(71);
 			match(EOF);
 			}
@@ -160,12 +165,12 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class SynonymContext extends ParserRuleContext {
-		public TerminalNode LBRACE() { return getToken(NCIntentDslParser.LBRACE, 0); }
+		public TerminalNode LBRACE() { return getToken(NCIntentIdlParser.LBRACE, 0); }
 		public ExprContext expr() {
 			return getRuleContext(ExprContext.class,0);
 		}
-		public TerminalNode RBRACE() { return getToken(NCIntentDslParser.RBRACE, 0); }
-		public TerminalNode EOF() { return getToken(NCIntentDslParser.EOF, 0); }
+		public TerminalNode RBRACE() { return getToken(NCIntentIdlParser.RBRACE, 0); }
+		public TerminalNode EOF() { return getToken(NCIntentIdlParser.EOF, 0); }
 		public AliasContext alias() {
 			return getRuleContext(AliasContext.class,0);
 		}
@@ -175,11 +180,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_synonym; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterSynonym(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterSynonym(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitSynonym(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitSynonym(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitSynonym(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -222,22 +232,27 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class AliasContext extends ParserRuleContext {
-		public TerminalNode LBR() { return getToken(NCIntentDslParser.LBR, 0); }
+		public TerminalNode LBR() { return getToken(NCIntentIdlParser.LBR, 0); }
 		public IdContext id() {
 			return getRuleContext(IdContext.class,0);
 		}
-		public TerminalNode RBR() { return getToken(NCIntentDslParser.RBR, 0); }
+		public TerminalNode RBR() { return getToken(NCIntentIdlParser.RBR, 0); }
 		public AliasContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_alias; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterAlias(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAlias(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitAlias(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAlias(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitAlias(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -266,45 +281,50 @@ public class NCIntentDslParser extends Parser {
 		return _localctx;
 	}
 
-	public static class DslItemsContext extends ParserRuleContext {
-		public DslItemContext dslItem() {
-			return getRuleContext(DslItemContext.class,0);
+	public static class IdlItemsContext extends ParserRuleContext {
+		public IdlItemContext idlItem() {
+			return getRuleContext(IdlItemContext.class,0);
 		}
-		public DslItemsContext dslItems() {
-			return getRuleContext(DslItemsContext.class,0);
+		public IdlItemsContext idlItems() {
+			return getRuleContext(IdlItemsContext.class,0);
 		}
-		public DslItemsContext(ParserRuleContext parent, int invokingState) {
+		public IdlItemsContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
-		@Override public int getRuleIndex() { return RULE_dslItems; }
+		@Override public int getRuleIndex() { return RULE_idlItems; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterDslItems(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIdlItems(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitDslItems(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIdlItems(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitIdlItems(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
-	public final DslItemsContext dslItems() throws RecognitionException {
-		return dslItems(0);
+	public final IdlItemsContext idlItems() throws RecognitionException {
+		return idlItems(0);
 	}
 
-	private DslItemsContext dslItems(int _p) throws RecognitionException {
+	private IdlItemsContext idlItems(int _p) throws RecognitionException {
 		ParserRuleContext _parentctx = _ctx;
 		int _parentState = getState();
-		DslItemsContext _localctx = new DslItemsContext(_ctx, _parentState);
-		DslItemsContext _prevctx = _localctx;
+		IdlItemsContext _localctx = new IdlItemsContext(_ctx, _parentState);
+		IdlItemsContext _prevctx = _localctx;
 		int _startState = 6;
-		enterRecursionRule(_localctx, 6, RULE_dslItems, _p);
+		enterRecursionRule(_localctx, 6, RULE_idlItems, _p);
 		try {
 			int _alt;
 			enterOuterAlt(_localctx, 1);
 			{
 			{
 			setState(86);
-			dslItem();
+			idlItem();
 			}
 			_ctx.stop = _input.LT(-1);
 			setState(92);
@@ -316,12 +336,12 @@ public class NCIntentDslParser extends Parser {
 					_prevctx = _localctx;
 					{
 					{
-					_localctx = new DslItemsContext(_parentctx, _parentState);
-					pushNewRecursionContext(_localctx, _startState, RULE_dslItems);
+					_localctx = new IdlItemsContext(_parentctx, _parentState);
+					pushNewRecursionContext(_localctx, _startState, RULE_idlItems);
 					setState(88);
 					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
 					setState(89);
-					dslItem();
+					idlItem();
 					}
 					} 
 				}
@@ -342,7 +362,7 @@ public class NCIntentDslParser extends Parser {
 		return _localctx;
 	}
 
-	public static class DslItemContext extends ParserRuleContext {
+	public static class IdlItemContext extends ParserRuleContext {
 		public IntentContext intent() {
 			return getRuleContext(IntentContext.class,0);
 		}
@@ -352,23 +372,28 @@ public class NCIntentDslParser extends Parser {
 		public ImpContext imp() {
 			return getRuleContext(ImpContext.class,0);
 		}
-		public DslItemContext(ParserRuleContext parent, int invokingState) {
+		public IdlItemContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
-		@Override public int getRuleIndex() { return RULE_dslItem; }
+		@Override public int getRuleIndex() { return RULE_idlItem; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterDslItem(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIdlItem(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitDslItem(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIdlItem(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitIdlItem(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
-	public final DslItemContext dslItem() throws RecognitionException {
-		DslItemContext _localctx = new DslItemContext(_ctx, getState());
-		enterRule(_localctx, 8, RULE_dslItem);
+	public final IdlItemContext idlItem() throws RecognitionException {
+		IdlItemContext _localctx = new IdlItemContext(_ctx, getState());
+		enterRule(_localctx, 8, RULE_idlItem);
 		try {
 			setState(98);
 			_errHandler.sync(this);
@@ -410,22 +435,27 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class ImpContext extends ParserRuleContext {
-		public TerminalNode LPAR() { return getToken(NCIntentDslParser.LPAR, 0); }
+		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
 		public QstringContext qstring() {
 			return getRuleContext(QstringContext.class,0);
 		}
-		public TerminalNode RPAR() { return getToken(NCIntentDslParser.RPAR, 0); }
+		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
 		public ImpContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_imp; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterImp(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterImp(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitImp(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitImp(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitImp(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -469,11 +499,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_frag; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterFrag(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFrag(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitFrag(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFrag(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitFrag(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -501,8 +536,8 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class FragIdContext extends ParserRuleContext {
-		public TerminalNode FRAG() { return getToken(NCIntentDslParser.FRAG, 0); }
-		public TerminalNode ASSIGN() { return getToken(NCIntentDslParser.ASSIGN, 0); }
+		public TerminalNode FRAG() { return getToken(NCIntentIdlParser.FRAG, 0); }
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
 		public IdContext id() {
 			return getRuleContext(IdContext.class,0);
 		}
@@ -512,11 +547,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_fragId; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterFragId(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFragId(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitFragId(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFragId(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitFragId(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -546,12 +586,12 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class FragRefContext extends ParserRuleContext {
-		public TerminalNode FRAG() { return getToken(NCIntentDslParser.FRAG, 0); }
-		public TerminalNode LPAR() { return getToken(NCIntentDslParser.LPAR, 0); }
+		public TerminalNode FRAG() { return getToken(NCIntentIdlParser.FRAG, 0); }
+		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
 		public IdContext id() {
 			return getRuleContext(IdContext.class,0);
 		}
-		public TerminalNode RPAR() { return getToken(NCIntentDslParser.RPAR, 0); }
+		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
 		public FragMetaContext fragMeta() {
 			return getRuleContext(FragMetaContext.class,0);
 		}
@@ -561,11 +601,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_fragRef; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterFragRef(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFragRef(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitFragRef(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFragRef(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitFragRef(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -608,7 +653,7 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class FragMetaContext extends ParserRuleContext {
-		public TerminalNode COMMA() { return getToken(NCIntentDslParser.COMMA, 0); }
+		public TerminalNode COMMA() { return getToken(NCIntentIdlParser.COMMA, 0); }
 		public JsonObjContext jsonObj() {
 			return getRuleContext(JsonObjContext.class,0);
 		}
@@ -618,11 +663,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_fragMeta; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterFragMeta(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFragMeta(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitFragMeta(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFragMeta(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitFragMeta(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -671,11 +721,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_intent; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterIntent(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIntent(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitIntent(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIntent(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitIntent(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -734,7 +789,7 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class IntentIdContext extends ParserRuleContext {
-		public TerminalNode ASSIGN() { return getToken(NCIntentDslParser.ASSIGN, 0); }
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
 		public IdContext id() {
 			return getRuleContext(IdContext.class,0);
 		}
@@ -744,11 +799,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_intentId; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterIntentId(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIntentId(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitIntentId(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIntentId(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitIntentId(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -778,19 +838,24 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class OrderedDeclContext extends ParserRuleContext {
-		public TerminalNode ASSIGN() { return getToken(NCIntentDslParser.ASSIGN, 0); }
-		public TerminalNode BOOL() { return getToken(NCIntentDslParser.BOOL, 0); }
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
+		public TerminalNode BOOL() { return getToken(NCIntentIdlParser.BOOL, 0); }
 		public OrderedDeclContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_orderedDecl; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterOrderedDecl(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterOrderedDecl(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitOrderedDecl(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitOrderedDecl(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitOrderedDecl(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -820,9 +885,9 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class MtdDeclContext extends ParserRuleContext {
-		public List<TerminalNode> DIV() { return getTokens(NCIntentDslParser.DIV); }
+		public List<TerminalNode> DIV() { return getTokens(NCIntentIdlParser.DIV); }
 		public TerminalNode DIV(int i) {
-			return getToken(NCIntentDslParser.DIV, i);
+			return getToken(NCIntentIdlParser.DIV, i);
 		}
 		public MtdRefContext mtdRef() {
 			return getRuleContext(MtdRefContext.class,0);
@@ -833,11 +898,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_mtdDecl; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterMtdDecl(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMtdDecl(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMtdDecl(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMtdDecl(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMtdDecl(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -867,7 +937,7 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class FlowDeclContext extends ParserRuleContext {
-		public TerminalNode ASSIGN() { return getToken(NCIntentDslParser.ASSIGN, 0); }
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
 		public QstringContext qstring() {
 			return getRuleContext(QstringContext.class,0);
 		}
@@ -880,11 +950,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_flowDecl; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterFlowDecl(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFlowDecl(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitFlowDecl(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFlowDecl(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitFlowDecl(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -931,7 +1006,7 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class MetaDeclContext extends ParserRuleContext {
-		public TerminalNode ASSIGN() { return getToken(NCIntentDslParser.ASSIGN, 0); }
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
 		public JsonObjContext jsonObj() {
 			return getRuleContext(JsonObjContext.class,0);
 		}
@@ -941,11 +1016,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_metaDecl; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterMetaDecl(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMetaDecl(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMetaDecl(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMetaDecl(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMetaDecl(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -975,17 +1055,17 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class JsonObjContext extends ParserRuleContext {
-		public TerminalNode LBRACE() { return getToken(NCIntentDslParser.LBRACE, 0); }
+		public TerminalNode LBRACE() { return getToken(NCIntentIdlParser.LBRACE, 0); }
 		public List<JsonPairContext> jsonPair() {
 			return getRuleContexts(JsonPairContext.class);
 		}
 		public JsonPairContext jsonPair(int i) {
 			return getRuleContext(JsonPairContext.class,i);
 		}
-		public TerminalNode RBRACE() { return getToken(NCIntentDslParser.RBRACE, 0); }
-		public List<TerminalNode> COMMA() { return getTokens(NCIntentDslParser.COMMA); }
+		public TerminalNode RBRACE() { return getToken(NCIntentIdlParser.RBRACE, 0); }
+		public List<TerminalNode> COMMA() { return getTokens(NCIntentIdlParser.COMMA); }
 		public TerminalNode COMMA(int i) {
-			return getToken(NCIntentDslParser.COMMA, i);
+			return getToken(NCIntentIdlParser.COMMA, i);
 		}
 		public JsonObjContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
@@ -993,11 +1073,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_jsonObj; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterJsonObj(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonObj(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitJsonObj(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonObj(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitJsonObj(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1062,7 +1147,7 @@ public class NCIntentDslParser extends Parser {
 		public QstringContext qstring() {
 			return getRuleContext(QstringContext.class,0);
 		}
-		public TerminalNode COLON() { return getToken(NCIntentDslParser.COLON, 0); }
+		public TerminalNode COLON() { return getToken(NCIntentIdlParser.COLON, 0); }
 		public JsonValContext jsonVal() {
 			return getRuleContext(JsonValContext.class,0);
 		}
@@ -1072,11 +1157,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_jsonPair; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterJsonPair(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonPair(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitJsonPair(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonPair(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitJsonPair(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1109,29 +1199,34 @@ public class NCIntentDslParser extends Parser {
 		public QstringContext qstring() {
 			return getRuleContext(QstringContext.class,0);
 		}
-		public TerminalNode INT() { return getToken(NCIntentDslParser.INT, 0); }
-		public TerminalNode MINUS() { return getToken(NCIntentDslParser.MINUS, 0); }
-		public TerminalNode REAL() { return getToken(NCIntentDslParser.REAL, 0); }
-		public TerminalNode EXP() { return getToken(NCIntentDslParser.EXP, 0); }
+		public TerminalNode INT() { return getToken(NCIntentIdlParser.INT, 0); }
+		public TerminalNode MINUS() { return getToken(NCIntentIdlParser.MINUS, 0); }
+		public TerminalNode REAL() { return getToken(NCIntentIdlParser.REAL, 0); }
+		public TerminalNode EXP() { return getToken(NCIntentIdlParser.EXP, 0); }
 		public JsonObjContext jsonObj() {
 			return getRuleContext(JsonObjContext.class,0);
 		}
 		public JsonArrContext jsonArr() {
 			return getRuleContext(JsonArrContext.class,0);
 		}
-		public TerminalNode BOOL() { return getToken(NCIntentDslParser.BOOL, 0); }
-		public TerminalNode NULL() { return getToken(NCIntentDslParser.NULL, 0); }
+		public TerminalNode BOOL() { return getToken(NCIntentIdlParser.BOOL, 0); }
+		public TerminalNode NULL() { return getToken(NCIntentIdlParser.NULL, 0); }
 		public JsonValContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_jsonVal; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterJsonVal(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonVal(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitJsonVal(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonVal(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitJsonVal(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1233,17 +1328,17 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class JsonArrContext extends ParserRuleContext {
-		public TerminalNode LBR() { return getToken(NCIntentDslParser.LBR, 0); }
+		public TerminalNode LBR() { return getToken(NCIntentIdlParser.LBR, 0); }
 		public List<JsonValContext> jsonVal() {
 			return getRuleContexts(JsonValContext.class);
 		}
 		public JsonValContext jsonVal(int i) {
 			return getRuleContext(JsonValContext.class,i);
 		}
-		public TerminalNode RBR() { return getToken(NCIntentDslParser.RBR, 0); }
-		public List<TerminalNode> COMMA() { return getTokens(NCIntentDslParser.COMMA); }
+		public TerminalNode RBR() { return getToken(NCIntentIdlParser.RBR, 0); }
+		public List<TerminalNode> COMMA() { return getTokens(NCIntentIdlParser.COMMA); }
 		public TerminalNode COMMA(int i) {
-			return getToken(NCIntentDslParser.COMMA, i);
+			return getToken(NCIntentIdlParser.COMMA, i);
 		}
 		public JsonArrContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
@@ -1251,11 +1346,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_jsonArr; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterJsonArr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonArr(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitJsonArr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonArr(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitJsonArr(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1329,11 +1429,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_terms; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterTerms(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTerms(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitTerms(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTerms(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitTerms(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1405,11 +1510,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_termItem; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterTermItem(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTermItem(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitTermItem(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTermItem(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitTermItem(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1450,19 +1560,24 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class TermEqContext extends ParserRuleContext {
-		public TerminalNode ASSIGN() { return getToken(NCIntentDslParser.ASSIGN, 0); }
-		public TerminalNode TILDA() { return getToken(NCIntentDslParser.TILDA, 0); }
+		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
+		public TerminalNode TILDA() { return getToken(NCIntentIdlParser.TILDA, 0); }
 		public TermEqContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_termEq; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterTermEq(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTermEq(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitTermEq(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTermEq(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitTermEq(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1509,22 +1624,27 @@ public class NCIntentDslParser extends Parser {
 		public MinMaxContext minMax() {
 			return getRuleContext(MinMaxContext.class,0);
 		}
-		public TerminalNode LBRACE() { return getToken(NCIntentDslParser.LBRACE, 0); }
+		public TerminalNode LBRACE() { return getToken(NCIntentIdlParser.LBRACE, 0); }
 		public ExprContext expr() {
 			return getRuleContext(ExprContext.class,0);
 		}
-		public TerminalNode RBRACE() { return getToken(NCIntentDslParser.RBRACE, 0); }
+		public TerminalNode RBRACE() { return getToken(NCIntentIdlParser.RBRACE, 0); }
 		public TermContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_term; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterTerm(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTerm(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitTerm(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTerm(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitTerm(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1597,7 +1717,7 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class MtdRefContext extends ParserRuleContext {
-		public TerminalNode POUND() { return getToken(NCIntentDslParser.POUND, 0); }
+		public TerminalNode POUND() { return getToken(NCIntentIdlParser.POUND, 0); }
 		public IdContext id() {
 			return getRuleContext(IdContext.class,0);
 		}
@@ -1610,11 +1730,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_mtdRef; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterMtdRef(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMtdRef(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMtdRef(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMtdRef(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMtdRef(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1659,18 +1784,23 @@ public class NCIntentDslParser extends Parser {
 		public JavaFqnContext javaFqn() {
 			return getRuleContext(JavaFqnContext.class,0);
 		}
-		public TerminalNode DOT() { return getToken(NCIntentDslParser.DOT, 0); }
+		public TerminalNode DOT() { return getToken(NCIntentIdlParser.DOT, 0); }
 		public JavaFqnContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_javaFqn; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterJavaFqn(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJavaFqn(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitJavaFqn(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJavaFqn(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitJavaFqn(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1732,22 +1862,27 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class TermIdContext extends ParserRuleContext {
-		public TerminalNode LPAR() { return getToken(NCIntentDslParser.LPAR, 0); }
+		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
 		public IdContext id() {
 			return getRuleContext(IdContext.class,0);
 		}
-		public TerminalNode RPAR() { return getToken(NCIntentDslParser.RPAR, 0); }
+		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
 		public TermIdContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_termId; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterTermId(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTermId(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitTermId(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTermId(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitTermId(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -1788,19 +1923,24 @@ public class NCIntentDslParser extends Parser {
 		}
 	}
 	public static class ParExprContext extends ExprContext {
-		public TerminalNode LPAR() { return getToken(NCIntentDslParser.LPAR, 0); }
+		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
 		public ExprContext expr() {
 			return getRuleContext(ExprContext.class,0);
 		}
-		public TerminalNode RPAR() { return getToken(NCIntentDslParser.RPAR, 0); }
+		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
 		public ParExprContext(ExprContext ctx) { copyFrom(ctx); }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterParExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterParExpr(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitParExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitParExpr(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitParExpr(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 	public static class UnaryExprContext extends ExprContext {
@@ -1808,16 +1948,21 @@ public class NCIntentDslParser extends Parser {
 		public ExprContext expr() {
 			return getRuleContext(ExprContext.class,0);
 		}
-		public TerminalNode MINUS() { return getToken(NCIntentDslParser.MINUS, 0); }
-		public TerminalNode NOT() { return getToken(NCIntentDslParser.NOT, 0); }
+		public TerminalNode MINUS() { return getToken(NCIntentIdlParser.MINUS, 0); }
+		public TerminalNode NOT() { return getToken(NCIntentIdlParser.NOT, 0); }
 		public UnaryExprContext(ExprContext ctx) { copyFrom(ctx); }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterUnaryExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterUnaryExpr(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitUnaryExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitUnaryExpr(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitUnaryExpr(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 	public static class CompExprContext extends ExprContext {
@@ -1828,18 +1973,23 @@ public class NCIntentDslParser extends Parser {
 		public ExprContext expr(int i) {
 			return getRuleContext(ExprContext.class,i);
 		}
-		public TerminalNode LTEQ() { return getToken(NCIntentDslParser.LTEQ, 0); }
-		public TerminalNode GTEQ() { return getToken(NCIntentDslParser.GTEQ, 0); }
-		public TerminalNode LT() { return getToken(NCIntentDslParser.LT, 0); }
-		public TerminalNode GT() { return getToken(NCIntentDslParser.GT, 0); }
+		public TerminalNode LTEQ() { return getToken(NCIntentIdlParser.LTEQ, 0); }
+		public TerminalNode GTEQ() { return getToken(NCIntentIdlParser.GTEQ, 0); }
+		public TerminalNode LT() { return getToken(NCIntentIdlParser.LT, 0); }
+		public TerminalNode GT() { return getToken(NCIntentIdlParser.GT, 0); }
 		public CompExprContext(ExprContext ctx) { copyFrom(ctx); }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterCompExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterCompExpr(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitCompExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitCompExpr(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitCompExpr(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 	public static class PlusMinusExprContext extends ExprContext {
@@ -1850,16 +2000,21 @@ public class NCIntentDslParser extends Parser {
 		public ExprContext expr(int i) {
 			return getRuleContext(ExprContext.class,i);
 		}
-		public TerminalNode PLUS() { return getToken(NCIntentDslParser.PLUS, 0); }
-		public TerminalNode MINUS() { return getToken(NCIntentDslParser.MINUS, 0); }
+		public TerminalNode PLUS() { return getToken(NCIntentIdlParser.PLUS, 0); }
+		public TerminalNode MINUS() { return getToken(NCIntentIdlParser.MINUS, 0); }
 		public PlusMinusExprContext(ExprContext ctx) { copyFrom(ctx); }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterPlusMinusExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterPlusMinusExpr(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitPlusMinusExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitPlusMinusExpr(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitPlusMinusExpr(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 	public static class AtomExprContext extends ExprContext {
@@ -1869,11 +2024,16 @@ public class NCIntentDslParser extends Parser {
 		public AtomExprContext(ExprContext ctx) { copyFrom(ctx); }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterAtomExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAtomExpr(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitAtomExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAtomExpr(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitAtomExpr(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 	public static class MultDivModExprContext extends ExprContext {
@@ -1884,17 +2044,22 @@ public class NCIntentDslParser extends Parser {
 		public ExprContext expr(int i) {
 			return getRuleContext(ExprContext.class,i);
 		}
-		public TerminalNode MULT() { return getToken(NCIntentDslParser.MULT, 0); }
-		public TerminalNode DIV() { return getToken(NCIntentDslParser.DIV, 0); }
-		public TerminalNode MOD() { return getToken(NCIntentDslParser.MOD, 0); }
+		public TerminalNode MULT() { return getToken(NCIntentIdlParser.MULT, 0); }
+		public TerminalNode DIV() { return getToken(NCIntentIdlParser.DIV, 0); }
+		public TerminalNode MOD() { return getToken(NCIntentIdlParser.MOD, 0); }
 		public MultDivModExprContext(ExprContext ctx) { copyFrom(ctx); }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterMultDivModExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMultDivModExpr(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMultDivModExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMultDivModExpr(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMultDivModExpr(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 	public static class AndOrExprContext extends ExprContext {
@@ -1905,33 +2070,43 @@ public class NCIntentDslParser extends Parser {
 		public ExprContext expr(int i) {
 			return getRuleContext(ExprContext.class,i);
 		}
-		public TerminalNode AND() { return getToken(NCIntentDslParser.AND, 0); }
-		public TerminalNode OR() { return getToken(NCIntentDslParser.OR, 0); }
+		public TerminalNode AND() { return getToken(NCIntentIdlParser.AND, 0); }
+		public TerminalNode OR() { return getToken(NCIntentIdlParser.OR, 0); }
 		public AndOrExprContext(ExprContext ctx) { copyFrom(ctx); }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterAndOrExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAndOrExpr(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitAndOrExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAndOrExpr(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitAndOrExpr(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 	public static class CallExprContext extends ExprContext {
-		public TerminalNode FUN_NAME() { return getToken(NCIntentDslParser.FUN_NAME, 0); }
-		public TerminalNode LPAR() { return getToken(NCIntentDslParser.LPAR, 0); }
-		public TerminalNode RPAR() { return getToken(NCIntentDslParser.RPAR, 0); }
+		public TerminalNode FUN_NAME() { return getToken(NCIntentIdlParser.FUN_NAME, 0); }
+		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
+		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
 		public ParamListContext paramList() {
 			return getRuleContext(ParamListContext.class,0);
 		}
 		public CallExprContext(ExprContext ctx) { copyFrom(ctx); }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterCallExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterCallExpr(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitCallExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitCallExpr(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitCallExpr(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 	public static class EqNeqExprContext extends ExprContext {
@@ -1942,16 +2117,21 @@ public class NCIntentDslParser extends Parser {
 		public ExprContext expr(int i) {
 			return getRuleContext(ExprContext.class,i);
 		}
-		public TerminalNode EQ() { return getToken(NCIntentDslParser.EQ, 0); }
-		public TerminalNode NEQ() { return getToken(NCIntentDslParser.NEQ, 0); }
+		public TerminalNode EQ() { return getToken(NCIntentIdlParser.EQ, 0); }
+		public TerminalNode NEQ() { return getToken(NCIntentIdlParser.NEQ, 0); }
 		public EqNeqExprContext(ExprContext ctx) { copyFrom(ctx); }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterEqNeqExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterEqNeqExpr(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitEqNeqExpr(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitEqNeqExpr(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitEqNeqExpr(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -2192,18 +2372,23 @@ public class NCIntentDslParser extends Parser {
 		public ParamListContext paramList() {
 			return getRuleContext(ParamListContext.class,0);
 		}
-		public TerminalNode COMMA() { return getToken(NCIntentDslParser.COMMA, 0); }
+		public TerminalNode COMMA() { return getToken(NCIntentIdlParser.COMMA, 0); }
 		public ParamListContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_paramList; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterParamList(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterParamList(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitParamList(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitParamList(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitParamList(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -2265,11 +2450,11 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class AtomContext extends ParserRuleContext {
-		public TerminalNode NULL() { return getToken(NCIntentDslParser.NULL, 0); }
-		public TerminalNode INT() { return getToken(NCIntentDslParser.INT, 0); }
-		public TerminalNode REAL() { return getToken(NCIntentDslParser.REAL, 0); }
-		public TerminalNode EXP() { return getToken(NCIntentDslParser.EXP, 0); }
-		public TerminalNode BOOL() { return getToken(NCIntentDslParser.BOOL, 0); }
+		public TerminalNode NULL() { return getToken(NCIntentIdlParser.NULL, 0); }
+		public TerminalNode INT() { return getToken(NCIntentIdlParser.INT, 0); }
+		public TerminalNode REAL() { return getToken(NCIntentIdlParser.REAL, 0); }
+		public TerminalNode EXP() { return getToken(NCIntentIdlParser.EXP, 0); }
+		public TerminalNode BOOL() { return getToken(NCIntentIdlParser.BOOL, 0); }
 		public QstringContext qstring() {
 			return getRuleContext(QstringContext.class,0);
 		}
@@ -2279,11 +2464,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_atom; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterAtom(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAtom(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitAtom(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAtom(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitAtom(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -2359,19 +2549,24 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class QstringContext extends ParserRuleContext {
-		public TerminalNode SQSTRING() { return getToken(NCIntentDslParser.SQSTRING, 0); }
-		public TerminalNode DQSTRING() { return getToken(NCIntentDslParser.DQSTRING, 0); }
+		public TerminalNode SQSTRING() { return getToken(NCIntentIdlParser.SQSTRING, 0); }
+		public TerminalNode DQSTRING() { return getToken(NCIntentIdlParser.DQSTRING, 0); }
 		public QstringContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_qstring; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterQstring(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterQstring(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitQstring(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitQstring(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitQstring(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -2418,11 +2613,16 @@ public class NCIntentDslParser extends Parser {
 		@Override public int getRuleIndex() { return RULE_minMax; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterMinMax(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMinMax(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMinMax(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMinMax(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMinMax(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -2465,20 +2665,25 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class MinMaxShortcutContext extends ParserRuleContext {
-		public TerminalNode PLUS() { return getToken(NCIntentDslParser.PLUS, 0); }
-		public TerminalNode QUESTION() { return getToken(NCIntentDslParser.QUESTION, 0); }
-		public TerminalNode MULT() { return getToken(NCIntentDslParser.MULT, 0); }
+		public TerminalNode PLUS() { return getToken(NCIntentIdlParser.PLUS, 0); }
+		public TerminalNode QUESTION() { return getToken(NCIntentIdlParser.QUESTION, 0); }
+		public TerminalNode MULT() { return getToken(NCIntentIdlParser.MULT, 0); }
 		public MinMaxShortcutContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_minMaxShortcut; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterMinMaxShortcut(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMinMaxShortcut(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMinMaxShortcut(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMinMaxShortcut(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMinMaxShortcut(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -2513,24 +2718,29 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class MinMaxRangeContext extends ParserRuleContext {
-		public TerminalNode LBR() { return getToken(NCIntentDslParser.LBR, 0); }
-		public List<TerminalNode> INT() { return getTokens(NCIntentDslParser.INT); }
+		public TerminalNode LBR() { return getToken(NCIntentIdlParser.LBR, 0); }
+		public List<TerminalNode> INT() { return getTokens(NCIntentIdlParser.INT); }
 		public TerminalNode INT(int i) {
-			return getToken(NCIntentDslParser.INT, i);
+			return getToken(NCIntentIdlParser.INT, i);
 		}
-		public TerminalNode COMMA() { return getToken(NCIntentDslParser.COMMA, 0); }
-		public TerminalNode RBR() { return getToken(NCIntentDslParser.RBR, 0); }
+		public TerminalNode COMMA() { return getToken(NCIntentIdlParser.COMMA, 0); }
+		public TerminalNode RBR() { return getToken(NCIntentIdlParser.RBR, 0); }
 		public MinMaxRangeContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_minMaxRange; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterMinMaxRange(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMinMaxRange(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMinMaxRange(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMinMaxRange(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMinMaxRange(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -2564,19 +2774,24 @@ public class NCIntentDslParser extends Parser {
 	}
 
 	public static class IdContext extends ParserRuleContext {
-		public TerminalNode ID() { return getToken(NCIntentDslParser.ID, 0); }
-		public TerminalNode FUN_NAME() { return getToken(NCIntentDslParser.FUN_NAME, 0); }
+		public TerminalNode ID() { return getToken(NCIntentIdlParser.ID, 0); }
+		public TerminalNode FUN_NAME() { return getToken(NCIntentIdlParser.FUN_NAME, 0); }
 		public IdContext(ParserRuleContext parent, int invokingState) {
 			super(parent, invokingState);
 		}
 		@Override public int getRuleIndex() { return RULE_id; }
 		@Override
 		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterId(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterId(this);
 		}
 		@Override
 		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitId(this);
+			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitId(this);
+		}
+		@Override
+		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
+			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitId(this);
+			else return visitor.visitChildren(this);
 		}
 	}
 
@@ -2613,7 +2828,7 @@ public class NCIntentDslParser extends Parser {
 	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
 		switch (ruleIndex) {
 		case 3:
-			return dslItems_sempred((DslItemsContext)_localctx, predIndex);
+			return idlItems_sempred((IdlItemsContext)_localctx, predIndex);
 		case 20:
 			return terms_sempred((TermsContext)_localctx, predIndex);
 		case 25:
@@ -2625,7 +2840,7 @@ public class NCIntentDslParser extends Parser {
 		}
 		return true;
 	}
-	private boolean dslItems_sempred(DslItemsContext _localctx, int predIndex) {
+	private boolean idlItems_sempred(IdlItemsContext _localctx, int predIndex) {
 		switch (predIndex) {
 		case 0:
 			return precpred(_ctx, 1);
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlVisitor.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlVisitor.java
new file mode 100644
index 0000000..f78813a
--- /dev/null
+++ b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlVisitor.java
@@ -0,0 +1,280 @@
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
+package org.apache.nlpcraft.model.intent.compiler.antlr4;
+import org.antlr.v4.runtime.tree.ParseTreeVisitor;
+
+/**
+ * This interface defines a complete generic visitor for a parse tree produced
+ * by {@link NCIntentIdlParser}.
+ *
+ * @param <T> The return type of the visit operation. Use {@link Void} for
+ * operations with no return type.
+ */
+public interface NCIntentIdlVisitor<T> extends ParseTreeVisitor<T> {
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#idl}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitIdl(NCIntentIdlParser.IdlContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#synonym}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitSynonym(NCIntentIdlParser.SynonymContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#alias}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitAlias(NCIntentIdlParser.AliasContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#idlItems}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitIdlItems(NCIntentIdlParser.IdlItemsContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#idlItem}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitIdlItem(NCIntentIdlParser.IdlItemContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#imp}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitImp(NCIntentIdlParser.ImpContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#frag}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitFrag(NCIntentIdlParser.FragContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#fragId}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitFragId(NCIntentIdlParser.FragIdContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#fragRef}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitFragRef(NCIntentIdlParser.FragRefContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#fragMeta}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitFragMeta(NCIntentIdlParser.FragMetaContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#intent}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitIntent(NCIntentIdlParser.IntentContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#intentId}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitIntentId(NCIntentIdlParser.IntentIdContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#orderedDecl}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#mtdDecl}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitMtdDecl(NCIntentIdlParser.MtdDeclContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#flowDecl}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitFlowDecl(NCIntentIdlParser.FlowDeclContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#metaDecl}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitMetaDecl(NCIntentIdlParser.MetaDeclContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#jsonObj}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitJsonObj(NCIntentIdlParser.JsonObjContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#jsonPair}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitJsonPair(NCIntentIdlParser.JsonPairContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#jsonVal}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitJsonVal(NCIntentIdlParser.JsonValContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#jsonArr}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitJsonArr(NCIntentIdlParser.JsonArrContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#terms}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitTerms(NCIntentIdlParser.TermsContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#termItem}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitTermItem(NCIntentIdlParser.TermItemContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#termEq}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitTermEq(NCIntentIdlParser.TermEqContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#term}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitTerm(NCIntentIdlParser.TermContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#mtdRef}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitMtdRef(NCIntentIdlParser.MtdRefContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#javaFqn}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitJavaFqn(NCIntentIdlParser.JavaFqnContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#termId}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitTermId(NCIntentIdlParser.TermIdContext ctx);
+	/**
+	 * Visit a parse tree produced by the {@code parExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitParExpr(NCIntentIdlParser.ParExprContext ctx);
+	/**
+	 * Visit a parse tree produced by the {@code unaryExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx);
+	/**
+	 * Visit a parse tree produced by the {@code compExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitCompExpr(NCIntentIdlParser.CompExprContext ctx);
+	/**
+	 * Visit a parse tree produced by the {@code plusMinusExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx);
+	/**
+	 * Visit a parse tree produced by the {@code atomExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitAtomExpr(NCIntentIdlParser.AtomExprContext ctx);
+	/**
+	 * Visit a parse tree produced by the {@code multDivModExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx);
+	/**
+	 * Visit a parse tree produced by the {@code andOrExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx);
+	/**
+	 * Visit a parse tree produced by the {@code callExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitCallExpr(NCIntentIdlParser.CallExprContext ctx);
+	/**
+	 * Visit a parse tree produced by the {@code eqNeqExpr}
+	 * labeled alternative in {@link NCIntentIdlParser#expr}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#paramList}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitParamList(NCIntentIdlParser.ParamListContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#atom}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitAtom(NCIntentIdlParser.AtomContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#qstring}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitQstring(NCIntentIdlParser.QstringContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#minMax}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitMinMax(NCIntentIdlParser.MinMaxContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#minMaxShortcut}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#minMaxRange}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx);
+	/**
+	 * Visit a parse tree produced by {@link NCIntentIdlParser#id}.
+	 * @param ctx the parse tree
+	 * @return the visitor result
+	 */
+	T visitId(NCIntentIdlParser.IdContext ctx);
+}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompiler.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompiler.scala
index ac65656..7d538d0 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompiler.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompiler.scala
@@ -43,13 +43,13 @@ object NCDslCompiler extends LazyLogging {
     /**
       *
       * @param origin
-      * @param dsl
+      * @param idl
       * @param mdl
       */
-    class FiniteStateMachine(origin: String, dsl: String, mdl: NCModel) extends NCIntentDslBaseListener with NCDslCompilerBase {
+    class FiniteStateMachine(origin: String, idl: String, mdl: NCModel) extends NCIntentDslBaseListener with NCDslCompilerBase {
         // Actual value for '*' as in min/max shortcut.
         final private val MINMAX_MAX = 100
-        
+
         // Accumulators for parsed objects.
         private val intents = ArrayBuffer.empty[NCDslIntent]
         private var synonym: NCDslSynonym = _
@@ -113,10 +113,10 @@ object NCDslCompiler extends LazyLogging {
         override def exitOrderedDecl(ctx: IDP.OrderedDeclContext): Unit = ordered = ctx.BOOL().getText == "true"
         override def exitIntentId(ctx: IDP.IntentIdContext): Unit =  intentId = ctx.id().getText
         override def exitAlias(ctx: IDP.AliasContext): Unit = alias = ctx.id().getText
-    
+
         override def enterCallExpr(ctx: IDP.CallExprContext): Unit =
             instrs += ((_, stack: NCDslStack, _) ⇒ stack.push(stack.PLIST_MARKER))
-    
+
         /**
          *
          * @param min
@@ -126,7 +126,7 @@ object NCDslCompiler extends LazyLogging {
             this.min = min
             this.max = max
         }
-    
+
         override def exitMinMaxShortcut(ctx: IDP.MinMaxShortcutContext): Unit = {
             if (ctx.PLUS() != null)
                 setMinMax(1, MINMAX_MAX)
@@ -145,14 +145,14 @@ object NCDslCompiler extends LazyLogging {
             try {
                 val min = java.lang.Integer.parseInt(minStr)
                 val max = java.lang.Integer.parseInt(maxStr)
-                
+
                 if (min < 0)
                     throw newSyntaxError(s"Min value cannot be negative: $min")(ctx)
                 if (min > max)
                     throw newSyntaxError(s"Min value '$min' cannot be greater than max value '$min'.")(ctx)
                 if (max > MINMAX_MAX)
                     throw newSyntaxError(s"Max value '$max' cannot be greater than '$MINMAX_MAX'.")(ctx)
-                
+
                 setMinMax(min, max)
             }
             catch {
@@ -342,7 +342,7 @@ object NCDslCompiler extends LazyLogging {
             terms.clear()
             fragId = null
         }
-    
+
         /**
           *
           * @param intent
@@ -350,13 +350,13 @@ object NCDslCompiler extends LazyLogging {
           */
         private def addIntent(intent: NCDslIntent)(implicit ctx: ParserRuleContext): Unit = {
             val intentId = intent.id
-            
+
             if (intents.exists(_.id == intentId))
                 throw newSyntaxError(s"Duplicate intent ID: $intentId")
-                
+
             intents += intent
         }
-    
+
         override def exitImp(ctx: IDP.ImpContext): Unit = {
             val x = U.trimQuotes(ctx.qstring().getText)
 
@@ -407,12 +407,12 @@ object NCDslCompiler extends LazyLogging {
                 imports.foreach(addIntent(_)(ctx.qstring()))
             }
         }
-        
+
         override def exitIntent(ctx: IDP.IntentContext): Unit = {
             addIntent(
                 NCDslIntent(
                     origin,
-                    dsl,
+                    idl,
                     intentId,
                     ordered,
                     if (intentMeta == null) Map.empty else intentMeta,
@@ -430,10 +430,10 @@ object NCDslCompiler extends LazyLogging {
         }
 
         override def syntaxError(errMsg: String, srcName: String, line: Int, pos: Int): NCE =
-            throw new NCE(mkSyntaxError(errMsg, srcName, line, pos, dsl, origin, mdl))
+            throw new NCE(mkSyntaxError(errMsg, srcName, line, pos, idl, origin, mdl))
 
         override def runtimeError(errMsg: String, srcName: String, line: Int, pos: Int, cause: Exception = null): NCE =
-            throw new NCE(mkRuntimeError(errMsg, srcName, line, pos, dsl, origin, mdl), cause)
+            throw new NCE(mkRuntimeError(errMsg, srcName, line, pos, idl, origin, mdl), cause)
     }
 
     /**
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompilerBase.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompilerBase.scala
index 4d16389..7164d36 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompilerBase.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslCompilerBase.scala
@@ -125,6 +125,7 @@ trait NCDslCompilerBase {
     def isJMap(v: Object): Boolean = v.isInstanceOf[JMap[_, _]]
     def isStr(v: Object): Boolean = v.isInstanceOf[String]
     def isToken(v: Object): Boolean = v.isInstanceOf[NCToken]
+
     def asJList(v: Object): JList[_] = v.asInstanceOf[JList[_]]
     def asJMap(v: Object): JMap[_, _] = v.asInstanceOf[JMap[_, _]]
     def asStr(v: Object): String = v.asInstanceOf[String]
@@ -133,19 +134,19 @@ trait NCDslCompilerBase {
 
     // Runtime errors.
     def rtUnaryOpError(op: String, v: Object)(implicit ctx: PRC): NCE =
-        newRuntimeError(s"Unexpected '$op' DSL operation for value: $v")
+        newRuntimeError(s"Unexpected '$op' IDL operation for value: $v")
     def rtBinaryOpError(op: String, v1: Object, v2: Object)(implicit ctx: PRC): NCE =
-        newRuntimeError(s"Unexpected '$op' DSL operation for values: $v1, $v2")
+        newRuntimeError(s"Unexpected '$op' IDL operation for values: $v1, $v2")
     def rtUnknownFunError(fun: String)(implicit ctx: PRC): NCE =
-        newRuntimeError(s"Unknown DSL function: $fun()")
+        newRuntimeError(s"Unknown IDL function: $fun()")
     def rtMinParamNumError(min: Int, fun: String)(implicit ctx: PRC): NCE =
-        newRuntimeError(s"Invalid number of parameters for DSL function ($min is required): $fun()")
+        newRuntimeError(s"Invalid number of parameters for function ($min is required): $fun()")
     def rtParamNumError(fun: String)(implicit ctx: PRC): NCE =
-        newRuntimeError(s"Invalid number of parameters for DSL function: $fun()")
+        newRuntimeError(s"Invalid number of parameters for IDL function: $fun()")
     def rtParamTypeError(fun: String, invalid: Object, expectType: String)(implicit ctx: PRC): NCE =
-        newRuntimeError(s"Expected '$expectType' type of parameter for DSL function '$fun()', found: $invalid")
+        newRuntimeError(s"Expected '$expectType' type of parameter for IDL function '$fun()', found: $invalid")
     def rtListTypeError(fun: String, cause: Exception)(implicit ctx: PRC): NCE =
-        newRuntimeError(s"Expected uniform list type for DSL function '$fun()', found polymorphic list.", cause)
+        newRuntimeError(s"Expected uniform list type for IDL function '$fun()', found polymorphic list.", cause)
 
     /**
      *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslListener.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslListener.java
deleted file mode 100644
index 30eec9c..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslListener.java
+++ /dev/null
@@ -1,458 +0,0 @@
-// Generated from /Users/nivanov/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.g4 by ANTLR 4.9.1
-package org.apache.nlpcraft.model.intent.compiler.antlr4;
-import org.antlr.v4.runtime.tree.ParseTreeListener;
-
-/**
- * This interface defines a complete listener for a parse tree produced by
- * {@link NCIntentDslParser}.
- */
-public interface NCIntentDslListener extends ParseTreeListener {
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#dsl}.
-	 * @param ctx the parse tree
-	 */
-	void enterDsl(NCIntentDslParser.DslContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#dsl}.
-	 * @param ctx the parse tree
-	 */
-	void exitDsl(NCIntentDslParser.DslContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#synonym}.
-	 * @param ctx the parse tree
-	 */
-	void enterSynonym(NCIntentDslParser.SynonymContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#synonym}.
-	 * @param ctx the parse tree
-	 */
-	void exitSynonym(NCIntentDslParser.SynonymContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#alias}.
-	 * @param ctx the parse tree
-	 */
-	void enterAlias(NCIntentDslParser.AliasContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#alias}.
-	 * @param ctx the parse tree
-	 */
-	void exitAlias(NCIntentDslParser.AliasContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#dslItems}.
-	 * @param ctx the parse tree
-	 */
-	void enterDslItems(NCIntentDslParser.DslItemsContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#dslItems}.
-	 * @param ctx the parse tree
-	 */
-	void exitDslItems(NCIntentDslParser.DslItemsContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#dslItem}.
-	 * @param ctx the parse tree
-	 */
-	void enterDslItem(NCIntentDslParser.DslItemContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#dslItem}.
-	 * @param ctx the parse tree
-	 */
-	void exitDslItem(NCIntentDslParser.DslItemContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#imp}.
-	 * @param ctx the parse tree
-	 */
-	void enterImp(NCIntentDslParser.ImpContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#imp}.
-	 * @param ctx the parse tree
-	 */
-	void exitImp(NCIntentDslParser.ImpContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#frag}.
-	 * @param ctx the parse tree
-	 */
-	void enterFrag(NCIntentDslParser.FragContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#frag}.
-	 * @param ctx the parse tree
-	 */
-	void exitFrag(NCIntentDslParser.FragContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#fragId}.
-	 * @param ctx the parse tree
-	 */
-	void enterFragId(NCIntentDslParser.FragIdContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#fragId}.
-	 * @param ctx the parse tree
-	 */
-	void exitFragId(NCIntentDslParser.FragIdContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#fragRef}.
-	 * @param ctx the parse tree
-	 */
-	void enterFragRef(NCIntentDslParser.FragRefContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#fragRef}.
-	 * @param ctx the parse tree
-	 */
-	void exitFragRef(NCIntentDslParser.FragRefContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#fragMeta}.
-	 * @param ctx the parse tree
-	 */
-	void enterFragMeta(NCIntentDslParser.FragMetaContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#fragMeta}.
-	 * @param ctx the parse tree
-	 */
-	void exitFragMeta(NCIntentDslParser.FragMetaContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#intent}.
-	 * @param ctx the parse tree
-	 */
-	void enterIntent(NCIntentDslParser.IntentContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#intent}.
-	 * @param ctx the parse tree
-	 */
-	void exitIntent(NCIntentDslParser.IntentContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#intentId}.
-	 * @param ctx the parse tree
-	 */
-	void enterIntentId(NCIntentDslParser.IntentIdContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#intentId}.
-	 * @param ctx the parse tree
-	 */
-	void exitIntentId(NCIntentDslParser.IntentIdContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#orderedDecl}.
-	 * @param ctx the parse tree
-	 */
-	void enterOrderedDecl(NCIntentDslParser.OrderedDeclContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#orderedDecl}.
-	 * @param ctx the parse tree
-	 */
-	void exitOrderedDecl(NCIntentDslParser.OrderedDeclContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#mtdDecl}.
-	 * @param ctx the parse tree
-	 */
-	void enterMtdDecl(NCIntentDslParser.MtdDeclContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#mtdDecl}.
-	 * @param ctx the parse tree
-	 */
-	void exitMtdDecl(NCIntentDslParser.MtdDeclContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#flowDecl}.
-	 * @param ctx the parse tree
-	 */
-	void enterFlowDecl(NCIntentDslParser.FlowDeclContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#flowDecl}.
-	 * @param ctx the parse tree
-	 */
-	void exitFlowDecl(NCIntentDslParser.FlowDeclContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#metaDecl}.
-	 * @param ctx the parse tree
-	 */
-	void enterMetaDecl(NCIntentDslParser.MetaDeclContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#metaDecl}.
-	 * @param ctx the parse tree
-	 */
-	void exitMetaDecl(NCIntentDslParser.MetaDeclContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#jsonObj}.
-	 * @param ctx the parse tree
-	 */
-	void enterJsonObj(NCIntentDslParser.JsonObjContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#jsonObj}.
-	 * @param ctx the parse tree
-	 */
-	void exitJsonObj(NCIntentDslParser.JsonObjContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#jsonPair}.
-	 * @param ctx the parse tree
-	 */
-	void enterJsonPair(NCIntentDslParser.JsonPairContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#jsonPair}.
-	 * @param ctx the parse tree
-	 */
-	void exitJsonPair(NCIntentDslParser.JsonPairContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#jsonVal}.
-	 * @param ctx the parse tree
-	 */
-	void enterJsonVal(NCIntentDslParser.JsonValContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#jsonVal}.
-	 * @param ctx the parse tree
-	 */
-	void exitJsonVal(NCIntentDslParser.JsonValContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#jsonArr}.
-	 * @param ctx the parse tree
-	 */
-	void enterJsonArr(NCIntentDslParser.JsonArrContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#jsonArr}.
-	 * @param ctx the parse tree
-	 */
-	void exitJsonArr(NCIntentDslParser.JsonArrContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#terms}.
-	 * @param ctx the parse tree
-	 */
-	void enterTerms(NCIntentDslParser.TermsContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#terms}.
-	 * @param ctx the parse tree
-	 */
-	void exitTerms(NCIntentDslParser.TermsContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#termItem}.
-	 * @param ctx the parse tree
-	 */
-	void enterTermItem(NCIntentDslParser.TermItemContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#termItem}.
-	 * @param ctx the parse tree
-	 */
-	void exitTermItem(NCIntentDslParser.TermItemContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#termEq}.
-	 * @param ctx the parse tree
-	 */
-	void enterTermEq(NCIntentDslParser.TermEqContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#termEq}.
-	 * @param ctx the parse tree
-	 */
-	void exitTermEq(NCIntentDslParser.TermEqContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#term}.
-	 * @param ctx the parse tree
-	 */
-	void enterTerm(NCIntentDslParser.TermContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#term}.
-	 * @param ctx the parse tree
-	 */
-	void exitTerm(NCIntentDslParser.TermContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#mtdRef}.
-	 * @param ctx the parse tree
-	 */
-	void enterMtdRef(NCIntentDslParser.MtdRefContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#mtdRef}.
-	 * @param ctx the parse tree
-	 */
-	void exitMtdRef(NCIntentDslParser.MtdRefContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#javaFqn}.
-	 * @param ctx the parse tree
-	 */
-	void enterJavaFqn(NCIntentDslParser.JavaFqnContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#javaFqn}.
-	 * @param ctx the parse tree
-	 */
-	void exitJavaFqn(NCIntentDslParser.JavaFqnContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#termId}.
-	 * @param ctx the parse tree
-	 */
-	void enterTermId(NCIntentDslParser.TermIdContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#termId}.
-	 * @param ctx the parse tree
-	 */
-	void exitTermId(NCIntentDslParser.TermIdContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code parExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterParExpr(NCIntentDslParser.ParExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code parExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitParExpr(NCIntentDslParser.ParExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code unaryExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterUnaryExpr(NCIntentDslParser.UnaryExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code unaryExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitUnaryExpr(NCIntentDslParser.UnaryExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code compExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterCompExpr(NCIntentDslParser.CompExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code compExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitCompExpr(NCIntentDslParser.CompExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code plusMinusExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterPlusMinusExpr(NCIntentDslParser.PlusMinusExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code plusMinusExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitPlusMinusExpr(NCIntentDslParser.PlusMinusExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code atomExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterAtomExpr(NCIntentDslParser.AtomExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code atomExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitAtomExpr(NCIntentDslParser.AtomExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code multDivModExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterMultDivModExpr(NCIntentDslParser.MultDivModExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code multDivModExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitMultDivModExpr(NCIntentDslParser.MultDivModExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code andOrExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterAndOrExpr(NCIntentDslParser.AndOrExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code andOrExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitAndOrExpr(NCIntentDslParser.AndOrExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code callExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterCallExpr(NCIntentDslParser.CallExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code callExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitCallExpr(NCIntentDslParser.CallExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code eqNeqExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterEqNeqExpr(NCIntentDslParser.EqNeqExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code eqNeqExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitEqNeqExpr(NCIntentDslParser.EqNeqExprContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#paramList}.
-	 * @param ctx the parse tree
-	 */
-	void enterParamList(NCIntentDslParser.ParamListContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#paramList}.
-	 * @param ctx the parse tree
-	 */
-	void exitParamList(NCIntentDslParser.ParamListContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#atom}.
-	 * @param ctx the parse tree
-	 */
-	void enterAtom(NCIntentDslParser.AtomContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#atom}.
-	 * @param ctx the parse tree
-	 */
-	void exitAtom(NCIntentDslParser.AtomContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#qstring}.
-	 * @param ctx the parse tree
-	 */
-	void enterQstring(NCIntentDslParser.QstringContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#qstring}.
-	 * @param ctx the parse tree
-	 */
-	void exitQstring(NCIntentDslParser.QstringContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#minMax}.
-	 * @param ctx the parse tree
-	 */
-	void enterMinMax(NCIntentDslParser.MinMaxContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#minMax}.
-	 * @param ctx the parse tree
-	 */
-	void exitMinMax(NCIntentDslParser.MinMaxContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#minMaxShortcut}.
-	 * @param ctx the parse tree
-	 */
-	void enterMinMaxShortcut(NCIntentDslParser.MinMaxShortcutContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#minMaxShortcut}.
-	 * @param ctx the parse tree
-	 */
-	void exitMinMaxShortcut(NCIntentDslParser.MinMaxShortcutContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#minMaxRange}.
-	 * @param ctx the parse tree
-	 */
-	void enterMinMaxRange(NCIntentDslParser.MinMaxRangeContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#minMaxRange}.
-	 * @param ctx the parse tree
-	 */
-	void exitMinMaxRange(NCIntentDslParser.MinMaxRangeContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#id}.
-	 * @param ctx the parse tree
-	 */
-	void enterId(NCIntentDslParser.IdContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#id}.
-	 * @param ctx the parse tree
-	 */
-	void exitId(NCIntentDslParser.IdContext ctx);
-}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslVisitor.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslVisitor.java
deleted file mode 100644
index 9de16bc..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDslVisitor.java
+++ /dev/null
@@ -1,280 +0,0 @@
-// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentDsl.g4 by ANTLR 4.9.1
-package org.apache.nlpcraft.model.intent.compiler.antlr4;
-import org.antlr.v4.runtime.tree.ParseTreeVisitor;
-
-/**
- * This interface defines a complete generic visitor for a parse tree produced
- * by {@link NCIntentDslParser}.
- *
- * @param <T> The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public interface NCIntentDslVisitor<T> extends ParseTreeVisitor<T> {
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#dsl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitDsl(NCIntentDslParser.DslContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#synonym}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitSynonym(NCIntentDslParser.SynonymContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#alias}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitAlias(NCIntentDslParser.AliasContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#dslItems}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitDslItems(NCIntentDslParser.DslItemsContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#dslItem}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitDslItem(NCIntentDslParser.DslItemContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#imp}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitImp(NCIntentDslParser.ImpContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#frag}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFrag(NCIntentDslParser.FragContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#fragId}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFragId(NCIntentDslParser.FragIdContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#fragRef}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFragRef(NCIntentDslParser.FragRefContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#fragMeta}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFragMeta(NCIntentDslParser.FragMetaContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#intent}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitIntent(NCIntentDslParser.IntentContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#intentId}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitIntentId(NCIntentDslParser.IntentIdContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#orderedDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitOrderedDecl(NCIntentDslParser.OrderedDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#mtdDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMtdDecl(NCIntentDslParser.MtdDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#flowDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFlowDecl(NCIntentDslParser.FlowDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#metaDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMetaDecl(NCIntentDslParser.MetaDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#jsonObj}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitJsonObj(NCIntentDslParser.JsonObjContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#jsonPair}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitJsonPair(NCIntentDslParser.JsonPairContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#jsonVal}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitJsonVal(NCIntentDslParser.JsonValContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#jsonArr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitJsonArr(NCIntentDslParser.JsonArrContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#terms}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTerms(NCIntentDslParser.TermsContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#termItem}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTermItem(NCIntentDslParser.TermItemContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#termEq}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTermEq(NCIntentDslParser.TermEqContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#term}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTerm(NCIntentDslParser.TermContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#mtdRef}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMtdRef(NCIntentDslParser.MtdRefContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#javaFqn}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitJavaFqn(NCIntentDslParser.JavaFqnContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#termId}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTermId(NCIntentDslParser.TermIdContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code parExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitParExpr(NCIntentDslParser.ParExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code unaryExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitUnaryExpr(NCIntentDslParser.UnaryExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code compExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitCompExpr(NCIntentDslParser.CompExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code plusMinusExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitPlusMinusExpr(NCIntentDslParser.PlusMinusExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code atomExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitAtomExpr(NCIntentDslParser.AtomExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code multDivModExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMultDivModExpr(NCIntentDslParser.MultDivModExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code andOrExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitAndOrExpr(NCIntentDslParser.AndOrExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code callExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitCallExpr(NCIntentDslParser.CallExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code eqNeqExpr}
-	 * labeled alternative in {@link NCIntentDslParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitEqNeqExpr(NCIntentDslParser.EqNeqExprContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#paramList}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitParamList(NCIntentDslParser.ParamListContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#atom}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitAtom(NCIntentDslParser.AtomContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#qstring}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitQstring(NCIntentDslParser.QstringContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#minMax}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMinMax(NCIntentDslParser.MinMaxContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#minMaxShortcut}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMinMaxShortcut(NCIntentDslParser.MinMaxShortcutContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#minMaxRange}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMinMaxRange(NCIntentDslParser.MinMaxRangeContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#id}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitId(NCIntentDslParser.IdContext ctx);
-}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.g4 b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.g4
similarity index 96%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.g4
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.g4
index 8325b31..ed27486 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentDsl.g4
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.g4
@@ -15,20 +15,20 @@
  * limitations under the License.
  */
 
-grammar NCIntentDsl;
+grammar NCIntentIdl;
 
 // Parser.
-dsl: dslItems EOF; // Intent DSL enty point.
-synonym: alias? LBRACE expr RBRACE EOF; // Synonym DSL entry point.
+idl: idlItems EOF; // Intent enty point.
+synonym: alias? LBRACE expr RBRACE EOF; // Synonym entry point.
 alias: LBR id RBR;
-dslItems
-    : dslItem
-    | dslItems dslItem
+idlItems
+    : idlItem
+    | idlItems idlItem
     ;
-dslItem
+idlItem
     : intent // Intent declaration.
     | frag // Fragment declaration.
-    | imp // External URL containing DSL declarations (recursive parsing).
+    | imp // External URL containing IDL declarations (recursive parsing).
     ;
 imp: 'import' LPAR qstring RPAR;
 frag: fragId terms;

[incubator-nlpcraft] 02/05: WIP.

Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e76658246742a004bd03756c526c15f48dd293d9
Author: Aaron Radzinski <ar...@apache.org>
AuthorDate: Thu Mar 18 11:28:57 2021 -0700

    WIP.
---
 .../intent/compiler/antlr4/NCIntentIdl.interp      |  148 -
 .../intent/compiler/antlr4/NCIntentIdl.tokens      |   91 -
 .../compiler/antlr4/NCIntentIdlBaseListener.java   |  555 ----
 .../compiler/antlr4/NCIntentIdlBaseVisitor.java    |  315 --
 .../intent/compiler/antlr4/NCIntentIdlLexer.interp |  172 --
 .../intent/compiler/antlr4/NCIntentIdlLexer.java   |  568 ----
 .../intent/compiler/antlr4/NCIntentIdlLexer.tokens |   91 -
 .../compiler/antlr4/NCIntentIdlListener.java       |  458 ---
 .../intent/compiler/antlr4/NCIntentIdlParser.java  | 3012 --------------------
 .../intent/compiler/antlr4/NCIntentIdlVisitor.java |  280 --
 10 files changed, 5690 deletions(-)

diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.interp b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.interp
deleted file mode 100644
index d305c17..0000000
--- a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.interp
+++ /dev/null
@@ -1,148 +0,0 @@
-token literal names:
-null
-'import'
-'intent'
-'ordered'
-'flow'
-'meta'
-'term'
-null
-'fragment'
-null
-null
-null
-'null'
-'=='
-'!='
-'>='
-'<='
-'>'
-'<'
-'&&'
-'||'
-'|'
-'!'
-'('
-')'
-'{'
-'}'
-'\''
-'"'
-'~'
-'['
-']'
-'#'
-','
-':'
-'-'
-'.'
-'_'
-'='
-'+'
-'?'
-'*'
-'/'
-'%'
-'$'
-null
-null
-null
-null
-null
-null
-null
-
-token symbolic names:
-null
-null
-null
-null
-null
-null
-null
-FUN_NAME
-FRAG
-SQSTRING
-DQSTRING
-BOOL
-NULL
-EQ
-NEQ
-GTEQ
-LTEQ
-GT
-LT
-AND
-OR
-VERT
-NOT
-LPAR
-RPAR
-LBRACE
-RBRACE
-SQUOTE
-DQUOTE
-TILDA
-LBR
-RBR
-POUND
-COMMA
-COLON
-MINUS
-DOT
-UNDERSCORE
-ASSIGN
-PLUS
-QUESTION
-MULT
-DIV
-MOD
-DOLLAR
-INT
-REAL
-EXP
-ID
-COMMENT
-WS
-ErrorChar
-
-rule names:
-idl
-synonym
-alias
-idlItems
-idlItem
-imp
-frag
-fragId
-fragRef
-fragMeta
-intent
-intentId
-orderedDecl
-mtdDecl
-flowDecl
-metaDecl
-jsonObj
-jsonPair
-jsonVal
-jsonArr
-terms
-termItem
-termEq
-term
-mtdRef
-javaFqn
-termId
-expr
-paramList
-atom
-qstring
-minMax
-minMaxShortcut
-minMaxRange
-id
-
-
-atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 53, 338, 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, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, [...]
\ No newline at end of file
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.tokens b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.tokens
deleted file mode 100644
index 5680142..0000000
--- a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdl.tokens
+++ /dev/null
@@ -1,91 +0,0 @@
-T__0=1
-T__1=2
-T__2=3
-T__3=4
-T__4=5
-T__5=6
-FUN_NAME=7
-FRAG=8
-SQSTRING=9
-DQSTRING=10
-BOOL=11
-NULL=12
-EQ=13
-NEQ=14
-GTEQ=15
-LTEQ=16
-GT=17
-LT=18
-AND=19
-OR=20
-VERT=21
-NOT=22
-LPAR=23
-RPAR=24
-LBRACE=25
-RBRACE=26
-SQUOTE=27
-DQUOTE=28
-TILDA=29
-LBR=30
-RBR=31
-POUND=32
-COMMA=33
-COLON=34
-MINUS=35
-DOT=36
-UNDERSCORE=37
-ASSIGN=38
-PLUS=39
-QUESTION=40
-MULT=41
-DIV=42
-MOD=43
-DOLLAR=44
-INT=45
-REAL=46
-EXP=47
-ID=48
-COMMENT=49
-WS=50
-ErrorChar=51
-'import'=1
-'intent'=2
-'ordered'=3
-'flow'=4
-'meta'=5
-'term'=6
-'fragment'=8
-'null'=12
-'=='=13
-'!='=14
-'>='=15
-'<='=16
-'>'=17
-'<'=18
-'&&'=19
-'||'=20
-'|'=21
-'!'=22
-'('=23
-')'=24
-'{'=25
-'}'=26
-'\''=27
-'"'=28
-'~'=29
-'['=30
-']'=31
-'#'=32
-','=33
-':'=34
-'-'=35
-'.'=36
-'_'=37
-'='=38
-'+'=39
-'?'=40
-'*'=41
-'/'=42
-'%'=43
-'$'=44
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseListener.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseListener.java
deleted file mode 100644
index 4661771..0000000
--- a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseListener.java
+++ /dev/null
@@ -1,555 +0,0 @@
-// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
-package org.apache.nlpcraft.model.intent.compiler.antlr4;
-
-import org.antlr.v4.runtime.ParserRuleContext;
-import org.antlr.v4.runtime.tree.ErrorNode;
-import org.antlr.v4.runtime.tree.TerminalNode;
-
-/**
- * This class provides an empty implementation of {@link NCIntentIdlListener},
- * which can be extended to create a listener which only needs to handle a subset
- * of the available methods.
- */
-public class NCIntentIdlBaseListener implements NCIntentIdlListener {
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterIdl(NCIntentIdlParser.IdlContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitIdl(NCIntentIdlParser.IdlContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterSynonym(NCIntentIdlParser.SynonymContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitSynonym(NCIntentIdlParser.SynonymContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterAlias(NCIntentIdlParser.AliasContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitAlias(NCIntentIdlParser.AliasContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterIdlItems(NCIntentIdlParser.IdlItemsContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitIdlItems(NCIntentIdlParser.IdlItemsContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterIdlItem(NCIntentIdlParser.IdlItemContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitIdlItem(NCIntentIdlParser.IdlItemContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterImp(NCIntentIdlParser.ImpContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitImp(NCIntentIdlParser.ImpContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterFrag(NCIntentIdlParser.FragContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitFrag(NCIntentIdlParser.FragContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterFragId(NCIntentIdlParser.FragIdContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitFragId(NCIntentIdlParser.FragIdContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterFragRef(NCIntentIdlParser.FragRefContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitFragRef(NCIntentIdlParser.FragRefContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterFragMeta(NCIntentIdlParser.FragMetaContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitFragMeta(NCIntentIdlParser.FragMetaContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterIntent(NCIntentIdlParser.IntentContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitIntent(NCIntentIdlParser.IntentContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterIntentId(NCIntentIdlParser.IntentIdContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitIntentId(NCIntentIdlParser.IntentIdContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterMtdDecl(NCIntentIdlParser.MtdDeclContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitMtdDecl(NCIntentIdlParser.MtdDeclContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterFlowDecl(NCIntentIdlParser.FlowDeclContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitFlowDecl(NCIntentIdlParser.FlowDeclContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterMetaDecl(NCIntentIdlParser.MetaDeclContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitMetaDecl(NCIntentIdlParser.MetaDeclContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterJsonObj(NCIntentIdlParser.JsonObjContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitJsonObj(NCIntentIdlParser.JsonObjContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterJsonPair(NCIntentIdlParser.JsonPairContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitJsonPair(NCIntentIdlParser.JsonPairContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterJsonVal(NCIntentIdlParser.JsonValContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitJsonVal(NCIntentIdlParser.JsonValContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterJsonArr(NCIntentIdlParser.JsonArrContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitJsonArr(NCIntentIdlParser.JsonArrContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterTerms(NCIntentIdlParser.TermsContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitTerms(NCIntentIdlParser.TermsContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterTermItem(NCIntentIdlParser.TermItemContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitTermItem(NCIntentIdlParser.TermItemContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterTermEq(NCIntentIdlParser.TermEqContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitTermEq(NCIntentIdlParser.TermEqContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterTerm(NCIntentIdlParser.TermContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitTerm(NCIntentIdlParser.TermContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterMtdRef(NCIntentIdlParser.MtdRefContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitMtdRef(NCIntentIdlParser.MtdRefContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterJavaFqn(NCIntentIdlParser.JavaFqnContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitJavaFqn(NCIntentIdlParser.JavaFqnContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterTermId(NCIntentIdlParser.TermIdContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitTermId(NCIntentIdlParser.TermIdContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterParExpr(NCIntentIdlParser.ParExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitParExpr(NCIntentIdlParser.ParExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterCompExpr(NCIntentIdlParser.CompExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitCompExpr(NCIntentIdlParser.CompExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterAtomExpr(NCIntentIdlParser.AtomExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitAtomExpr(NCIntentIdlParser.AtomExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterCallExpr(NCIntentIdlParser.CallExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitCallExpr(NCIntentIdlParser.CallExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterParamList(NCIntentIdlParser.ParamListContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitParamList(NCIntentIdlParser.ParamListContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterAtom(NCIntentIdlParser.AtomContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitAtom(NCIntentIdlParser.AtomContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterQstring(NCIntentIdlParser.QstringContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitQstring(NCIntentIdlParser.QstringContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterMinMax(NCIntentIdlParser.MinMaxContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitMinMax(NCIntentIdlParser.MinMaxContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterId(NCIntentIdlParser.IdContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitId(NCIntentIdlParser.IdContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterEveryRule(ParserRuleContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitEveryRule(ParserRuleContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void visitTerminal(TerminalNode node) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void visitErrorNode(ErrorNode node) { }
-}
\ No newline at end of file
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseVisitor.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseVisitor.java
deleted file mode 100644
index 0a3871e..0000000
--- a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlBaseVisitor.java
+++ /dev/null
@@ -1,315 +0,0 @@
-// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
-package org.apache.nlpcraft.model.intent.compiler.antlr4;
-import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
-
-/**
- * This class provides an empty implementation of {@link NCIntentIdlVisitor},
- * which can be extended to create a visitor which only needs to handle a subset
- * of the available methods.
- *
- * @param <T> The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public class NCIntentIdlBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements NCIntentIdlVisitor<T> {
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitIdl(NCIntentIdlParser.IdlContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitSynonym(NCIntentIdlParser.SynonymContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitAlias(NCIntentIdlParser.AliasContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitIdlItems(NCIntentIdlParser.IdlItemsContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitIdlItem(NCIntentIdlParser.IdlItemContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitImp(NCIntentIdlParser.ImpContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitFrag(NCIntentIdlParser.FragContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitFragId(NCIntentIdlParser.FragIdContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitFragRef(NCIntentIdlParser.FragRefContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitFragMeta(NCIntentIdlParser.FragMetaContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitIntent(NCIntentIdlParser.IntentContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitIntentId(NCIntentIdlParser.IntentIdContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMtdDecl(NCIntentIdlParser.MtdDeclContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitFlowDecl(NCIntentIdlParser.FlowDeclContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMetaDecl(NCIntentIdlParser.MetaDeclContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitJsonObj(NCIntentIdlParser.JsonObjContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitJsonPair(NCIntentIdlParser.JsonPairContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitJsonVal(NCIntentIdlParser.JsonValContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitJsonArr(NCIntentIdlParser.JsonArrContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitTerms(NCIntentIdlParser.TermsContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitTermItem(NCIntentIdlParser.TermItemContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitTermEq(NCIntentIdlParser.TermEqContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitTerm(NCIntentIdlParser.TermContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMtdRef(NCIntentIdlParser.MtdRefContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitJavaFqn(NCIntentIdlParser.JavaFqnContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitTermId(NCIntentIdlParser.TermIdContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitParExpr(NCIntentIdlParser.ParExprContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitCompExpr(NCIntentIdlParser.CompExprContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitAtomExpr(NCIntentIdlParser.AtomExprContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitCallExpr(NCIntentIdlParser.CallExprContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitParamList(NCIntentIdlParser.ParamListContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitAtom(NCIntentIdlParser.AtomContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitQstring(NCIntentIdlParser.QstringContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMinMax(NCIntentIdlParser.MinMaxContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitId(NCIntentIdlParser.IdContext ctx) { return visitChildren(ctx); }
-}
\ No newline at end of file
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.interp b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.interp
deleted file mode 100644
index 218e2cb..0000000
--- a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.interp
+++ /dev/null
@@ -1,172 +0,0 @@
-token literal names:
-null
-'import'
-'intent'
-'ordered'
-'flow'
-'meta'
-'term'
-null
-'fragment'
-null
-null
-null
-'null'
-'=='
-'!='
-'>='
-'<='
-'>'
-'<'
-'&&'
-'||'
-'|'
-'!'
-'('
-')'
-'{'
-'}'
-'\''
-'"'
-'~'
-'['
-']'
-'#'
-','
-':'
-'-'
-'.'
-'_'
-'='
-'+'
-'?'
-'*'
-'/'
-'%'
-'$'
-null
-null
-null
-null
-null
-null
-null
-
-token symbolic names:
-null
-null
-null
-null
-null
-null
-null
-FUN_NAME
-FRAG
-SQSTRING
-DQSTRING
-BOOL
-NULL
-EQ
-NEQ
-GTEQ
-LTEQ
-GT
-LT
-AND
-OR
-VERT
-NOT
-LPAR
-RPAR
-LBRACE
-RBRACE
-SQUOTE
-DQUOTE
-TILDA
-LBR
-RBR
-POUND
-COMMA
-COLON
-MINUS
-DOT
-UNDERSCORE
-ASSIGN
-PLUS
-QUESTION
-MULT
-DIV
-MOD
-DOLLAR
-INT
-REAL
-EXP
-ID
-COMMENT
-WS
-ErrorChar
-
-rule names:
-T__0
-T__1
-T__2
-T__3
-T__4
-T__5
-FUN_NAME
-FRAG
-SQSTRING
-DQSTRING
-BOOL
-NULL
-EQ
-NEQ
-GTEQ
-LTEQ
-GT
-LT
-AND
-OR
-VERT
-NOT
-LPAR
-RPAR
-LBRACE
-RBRACE
-SQUOTE
-DQUOTE
-TILDA
-LBR
-RBR
-POUND
-COMMA
-COLON
-MINUS
-DOT
-UNDERSCORE
-ASSIGN
-PLUS
-QUESTION
-MULT
-DIV
-MOD
-DOLLAR
-INT
-REAL
-EXP
-UNI_CHAR
-LETTER
-ID
-COMMENT
-WS
-ErrorChar
-
-channel names:
-DEFAULT_TOKEN_CHANNEL
-HIDDEN
-
-mode names:
-DEFAULT_MODE
-
-atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 53, 1185, 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, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, [...]
\ No newline at end of file
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.java
deleted file mode 100644
index 70f4bf6..0000000
--- a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.java
+++ /dev/null
@@ -1,568 +0,0 @@
-// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
-package org.apache.nlpcraft.model.intent.compiler.antlr4;
-import org.antlr.v4.runtime.Lexer;
-import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.TokenStream;
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.atn.*;
-import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.misc.*;
-
-@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
-public class NCIntentIdlLexer extends Lexer {
-	static { RuntimeMetaData.checkVersion("4.9.1", RuntimeMetaData.VERSION); }
-
-	protected static final DFA[] _decisionToDFA;
-	protected static final PredictionContextCache _sharedContextCache =
-		new PredictionContextCache();
-	public static final int
-		T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, FUN_NAME=7, FRAG=8, SQSTRING=9, 
-		DQSTRING=10, BOOL=11, NULL=12, EQ=13, NEQ=14, GTEQ=15, LTEQ=16, GT=17, 
-		LT=18, AND=19, OR=20, VERT=21, NOT=22, LPAR=23, RPAR=24, LBRACE=25, RBRACE=26, 
-		SQUOTE=27, DQUOTE=28, TILDA=29, LBR=30, RBR=31, POUND=32, COMMA=33, COLON=34, 
-		MINUS=35, DOT=36, UNDERSCORE=37, ASSIGN=38, PLUS=39, QUESTION=40, MULT=41, 
-		DIV=42, MOD=43, DOLLAR=44, INT=45, REAL=46, EXP=47, ID=48, COMMENT=49, 
-		WS=50, ErrorChar=51;
-	public static String[] channelNames = {
-		"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
-	};
-
-	public static String[] modeNames = {
-		"DEFAULT_MODE"
-	};
-
-	private static String[] makeRuleNames() {
-		return new String[] {
-			"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "FUN_NAME", "FRAG", "SQSTRING", 
-			"DQSTRING", "BOOL", "NULL", "EQ", "NEQ", "GTEQ", "LTEQ", "GT", "LT", 
-			"AND", "OR", "VERT", "NOT", "LPAR", "RPAR", "LBRACE", "RBRACE", "SQUOTE", 
-			"DQUOTE", "TILDA", "LBR", "RBR", "POUND", "COMMA", "COLON", "MINUS", 
-			"DOT", "UNDERSCORE", "ASSIGN", "PLUS", "QUESTION", "MULT", "DIV", "MOD", 
-			"DOLLAR", "INT", "REAL", "EXP", "UNI_CHAR", "LETTER", "ID", "COMMENT", 
-			"WS", "ErrorChar"
-		};
-	}
-	public static final String[] ruleNames = makeRuleNames();
-
-	private static String[] makeLiteralNames() {
-		return new String[] {
-			null, "'import'", "'intent'", "'ordered'", "'flow'", "'meta'", "'term'", 
-			null, "'fragment'", null, null, null, "'null'", "'=='", "'!='", "'>='", 
-			"'<='", "'>'", "'<'", "'&&'", "'||'", "'|'", "'!'", "'('", "')'", "'{'", 
-			"'}'", "'''", "'\"'", "'~'", "'['", "']'", "'#'", "','", "':'", "'-'", 
-			"'.'", "'_'", "'='", "'+'", "'?'", "'*'", "'/'", "'%'", "'$'"
-		};
-	}
-	private static final String[] _LITERAL_NAMES = makeLiteralNames();
-	private static String[] makeSymbolicNames() {
-		return new String[] {
-			null, null, null, null, null, null, null, "FUN_NAME", "FRAG", "SQSTRING", 
-			"DQSTRING", "BOOL", "NULL", "EQ", "NEQ", "GTEQ", "LTEQ", "GT", "LT", 
-			"AND", "OR", "VERT", "NOT", "LPAR", "RPAR", "LBRACE", "RBRACE", "SQUOTE", 
-			"DQUOTE", "TILDA", "LBR", "RBR", "POUND", "COMMA", "COLON", "MINUS", 
-			"DOT", "UNDERSCORE", "ASSIGN", "PLUS", "QUESTION", "MULT", "DIV", "MOD", 
-			"DOLLAR", "INT", "REAL", "EXP", "ID", "COMMENT", "WS", "ErrorChar"
-		};
-	}
-	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
-	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
-
-	/**
-	 * @deprecated Use {@link #VOCABULARY} instead.
-	 */
-	@Deprecated
-	public static final String[] tokenNames;
-	static {
-		tokenNames = new String[_SYMBOLIC_NAMES.length];
-		for (int i = 0; i < tokenNames.length; i++) {
-			tokenNames[i] = VOCABULARY.getLiteralName(i);
-			if (tokenNames[i] == null) {
-				tokenNames[i] = VOCABULARY.getSymbolicName(i);
-			}
-
-			if (tokenNames[i] == null) {
-				tokenNames[i] = "<INVALID>";
-			}
-		}
-	}
-
-	@Override
-	@Deprecated
-	public String[] getTokenNames() {
-		return tokenNames;
-	}
-
-	@Override
-
-	public Vocabulary getVocabulary() {
-		return VOCABULARY;
-	}
-
-
-	public NCIntentIdlLexer(CharStream input) {
-		super(input);
-		_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
-	}
-
-	@Override
-	public String getGrammarFileName() { return "NCIntentIdl.g4"; }
-
-	@Override
-	public String[] getRuleNames() { return ruleNames; }
-
-	@Override
-	public String getSerializedATN() { return _serializedATN; }
-
-	@Override
-	public String[] getChannelNames() { return channelNames; }
-
-	@Override
-	public String[] getModeNames() { return modeNames; }
-
-	@Override
-	public ATN getATN() { return _ATN; }
-
-	public static final String _serializedATN =
-		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\65\u04a1\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\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+
-		"\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+
-		"\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t"+
-		" \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t"+
-		"+\4,\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64"+
-		"\t\64\4\65\t\65\4\66\t\66\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3"+
-		"\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3"+
-		"\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
-		"\b\3\b\3\b\3\b\5\b\u03d6\n\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3"+
-		"\n\3\n\3\n\7\n\u03e5\n\n\f\n\16\n\u03e8\13\n\3\n\3\n\3\13\3\13\3\13\3"+
-		"\13\7\13\u03f0\n\13\f\13\16\13\u03f3\13\13\3\13\3\13\3\f\3\f\3\f\3\f\3"+
-		"\f\3\f\3\f\3\f\3\f\5\f\u0400\n\f\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3"+
-		"\17\3\17\3\17\3\20\3\20\3\20\3\21\3\21\3\21\3\22\3\22\3\23\3\23\3\24\3"+
-		"\24\3\24\3\25\3\25\3\25\3\26\3\26\3\27\3\27\3\30\3\30\3\31\3\31\3\32\3"+
-		"\32\3\33\3\33\3\34\3\34\3\35\3\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\""+
-		"\3\"\3#\3#\3$\3$\3%\3%\3&\3&\3\'\3\'\3(\3(\3)\3)\3*\3*\3+\3+\3,\3,\3-"+
-		"\3-\3.\3.\3.\7.\u0450\n.\f.\16.\u0453\13.\5.\u0455\n.\3/\3/\6/\u0459\n"+
-		"/\r/\16/\u045a\3\60\3\60\5\60\u045f\n\60\3\60\3\60\3\61\3\61\3\62\3\62"+
-		"\3\63\3\63\3\63\3\63\6\63\u046b\n\63\r\63\16\63\u046c\3\63\3\63\3\63\3"+
-		"\63\3\63\3\63\3\63\7\63\u0476\n\63\f\63\16\63\u0479\13\63\3\64\3\64\3"+
-		"\64\3\64\7\64\u047f\n\64\f\64\16\64\u0482\13\64\3\64\5\64\u0485\n\64\3"+
-		"\64\5\64\u0488\n\64\3\64\3\64\3\64\3\64\7\64\u048e\n\64\f\64\16\64\u0491"+
-		"\13\64\3\64\3\64\5\64\u0495\n\64\3\64\3\64\3\65\6\65\u049a\n\65\r\65\16"+
-		"\65\u049b\3\65\3\65\3\66\3\66\3\u048f\2\67\3\3\5\4\7\5\t\6\13\7\r\b\17"+
-		"\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+"+
-		"\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+"+
-		"U,W-Y.[/]\60_\61a\2c\2e\62g\63i\64k\65\3\2\16\3\2))\3\2$$\3\2\63;\4\2"+
-		"\62;aa\3\2\62;\4\2GGgg\4\2--//\17\2\u00a2\u0251\u025b\u0294\u02b2\u0371"+
-		"\u0402\u0501\u1e04\u1ef5\u1f03\u2001\u200e\u200f\u2041\u2042\u2072\u2191"+
-		"\u2c02\u2ff1\u3003\ud801\uf902\ufdd1\ufdf2\uffff\4\2C\\c|\4\2\f\f\17\17"+
-		"\3\3\f\f\5\2\13\f\16\17\"\"\2\u0531\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\21\3\2\2\2\2\23"+
-		"\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\2\35\3\2"+
-		"\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2"+
-		"\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3"+
-		"\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2"+
-		"\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2"+
-		"\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2["+
-		"\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2"+
-		"\2\2\3m\3\2\2\2\5t\3\2\2\2\7{\3\2\2\2\t\u0083\3\2\2\2\13\u0088\3\2\2\2"+
-		"\r\u008d\3\2\2\2\17\u03d5\3\2\2\2\21\u03d7\3\2\2\2\23\u03e0\3\2\2\2\25"+
-		"\u03eb\3\2\2\2\27\u03ff\3\2\2\2\31\u0401\3\2\2\2\33\u0406\3\2\2\2\35\u0409"+
-		"\3\2\2\2\37\u040c\3\2\2\2!\u040f\3\2\2\2#\u0412\3\2\2\2%\u0414\3\2\2\2"+
-		"\'\u0416\3\2\2\2)\u0419\3\2\2\2+\u041c\3\2\2\2-\u041e\3\2\2\2/\u0420\3"+
-		"\2\2\2\61\u0422\3\2\2\2\63\u0424\3\2\2\2\65\u0426\3\2\2\2\67\u0428\3\2"+
-		"\2\29\u042a\3\2\2\2;\u042c\3\2\2\2=\u042e\3\2\2\2?\u0430\3\2\2\2A\u0432"+
-		"\3\2\2\2C\u0434\3\2\2\2E\u0436\3\2\2\2G\u0438\3\2\2\2I\u043a\3\2\2\2K"+
-		"\u043c\3\2\2\2M\u043e\3\2\2\2O\u0440\3\2\2\2Q\u0442\3\2\2\2S\u0444\3\2"+
-		"\2\2U\u0446\3\2\2\2W\u0448\3\2\2\2Y\u044a\3\2\2\2[\u0454\3\2\2\2]\u0456"+
-		"\3\2\2\2_\u045c\3\2\2\2a\u0462\3\2\2\2c\u0464\3\2\2\2e\u046a\3\2\2\2g"+
-		"\u0494\3\2\2\2i\u0499\3\2\2\2k\u049f\3\2\2\2mn\7k\2\2no\7o\2\2op\7r\2"+
-		"\2pq\7q\2\2qr\7t\2\2rs\7v\2\2s\4\3\2\2\2tu\7k\2\2uv\7p\2\2vw\7v\2\2wx"+
-		"\7g\2\2xy\7p\2\2yz\7v\2\2z\6\3\2\2\2{|\7q\2\2|}\7t\2\2}~\7f\2\2~\177\7"+
-		"g\2\2\177\u0080\7t\2\2\u0080\u0081\7g\2\2\u0081\u0082\7f\2\2\u0082\b\3"+
-		"\2\2\2\u0083\u0084\7h\2\2\u0084\u0085\7n\2\2\u0085\u0086\7q\2\2\u0086"+
-		"\u0087\7y\2\2\u0087\n\3\2\2\2\u0088\u0089\7o\2\2\u0089\u008a\7g\2\2\u008a"+
-		"\u008b\7v\2\2\u008b\u008c\7c\2\2\u008c\f\3\2\2\2\u008d\u008e\7v\2\2\u008e"+
-		"\u008f\7g\2\2\u008f\u0090\7t\2\2\u0090\u0091\7o\2\2\u0091\16\3\2\2\2\u0092"+
-		"\u0093\7o\2\2\u0093\u0094\7g\2\2\u0094\u0095\7v\2\2\u0095\u0096\7c\2\2"+
-		"\u0096\u0097\7a\2\2\u0097\u0098\7v\2\2\u0098\u0099\7q\2\2\u0099\u009a"+
-		"\7m\2\2\u009a\u009b\7g\2\2\u009b\u03d6\7p\2\2\u009c\u009d\7o\2\2\u009d"+
-		"\u009e\7g\2\2\u009e\u009f\7v\2\2\u009f\u00a0\7c\2\2\u00a0\u00a1\7a\2\2"+
-		"\u00a1\u00a2\7r\2\2\u00a2\u00a3\7c\2\2\u00a3\u00a4\7t\2\2\u00a4\u03d6"+
-		"\7v\2\2\u00a5\u00a6\7o\2\2\u00a6\u00a7\7g\2\2\u00a7\u00a8\7v\2\2\u00a8"+
-		"\u00a9\7c\2\2\u00a9\u00aa\7a\2\2\u00aa\u00ab\7o\2\2\u00ab\u00ac\7q\2\2"+
-		"\u00ac\u00ad\7f\2\2\u00ad\u00ae\7g\2\2\u00ae\u03d6\7n\2\2\u00af\u00b0"+
-		"\7o\2\2\u00b0\u00b1\7g\2\2\u00b1\u00b2\7v\2\2\u00b2\u00b3\7c\2\2\u00b3"+
-		"\u00b4\7a\2\2\u00b4\u00b5\7k\2\2\u00b5\u00b6\7p\2\2\u00b6\u00b7\7v\2\2"+
-		"\u00b7\u00b8\7g\2\2\u00b8\u00b9\7p\2\2\u00b9\u03d6\7v\2\2\u00ba\u00bb"+
-		"\7o\2\2\u00bb\u00bc\7g\2\2\u00bc\u00bd\7v\2\2\u00bd\u00be\7c\2\2\u00be"+
-		"\u00bf\7a\2\2\u00bf\u00c0\7t\2\2\u00c0\u00c1\7g\2\2\u00c1\u03d6\7s\2\2"+
-		"\u00c2\u00c3\7o\2\2\u00c3\u00c4\7g\2\2\u00c4\u00c5\7v\2\2\u00c5\u00c6"+
-		"\7c\2\2\u00c6\u00c7\7a\2\2\u00c7\u00c8\7w\2\2\u00c8\u00c9\7u\2\2\u00c9"+
-		"\u00ca\7g\2\2\u00ca\u03d6\7t\2\2\u00cb\u00cc\7o\2\2\u00cc\u00cd\7g\2\2"+
-		"\u00cd\u00ce\7v\2\2\u00ce\u00cf\7c\2\2\u00cf\u00d0\7a\2\2\u00d0\u00d1"+
-		"\7e\2\2\u00d1\u00d2\7q\2\2\u00d2\u00d3\7o\2\2\u00d3\u00d4\7r\2\2\u00d4"+
-		"\u00d5\7c\2\2\u00d5\u00d6\7p\2\2\u00d6\u03d6\7{\2\2\u00d7\u00d8\7o\2\2"+
-		"\u00d8\u00d9\7g\2\2\u00d9\u00da\7v\2\2\u00da\u00db\7c\2\2\u00db\u00dc"+
-		"\7a\2\2\u00dc\u00dd\7u\2\2\u00dd\u00de\7{\2\2\u00de\u03d6\7u\2\2\u00df"+
-		"\u00e0\7o\2\2\u00e0\u00e1\7g\2\2\u00e1\u00e2\7v\2\2\u00e2\u00e3\7c\2\2"+
-		"\u00e3\u00e4\7a\2\2\u00e4\u00e5\7e\2\2\u00e5\u00e6\7q\2\2\u00e6\u00e7"+
-		"\7p\2\2\u00e7\u03d6\7x\2\2\u00e8\u00e9\7o\2\2\u00e9\u00ea\7g\2\2\u00ea"+
-		"\u00eb\7v\2\2\u00eb\u00ec\7c\2\2\u00ec\u00ed\7a\2\2\u00ed\u00ee\7h\2\2"+
-		"\u00ee\u00ef\7t\2\2\u00ef\u00f0\7c\2\2\u00f0\u03d6\7i\2\2\u00f1\u00f2"+
-		"\7l\2\2\u00f2\u00f3\7u\2\2\u00f3\u00f4\7q\2\2\u00f4\u03d6\7p\2\2\u00f5"+
-		"\u00f6\7k\2\2\u00f6\u03d6\7h\2\2\u00f7\u00f8\7k\2\2\u00f8\u03d6\7f\2\2"+
-		"\u00f9\u00fa\7v\2\2\u00fa\u00fb\7j\2\2\u00fb\u00fc\7k\2\2\u00fc\u03d6"+
-		"\7u\2\2\u00fd\u00fe\7r\2\2\u00fe\u00ff\7c\2\2\u00ff\u0100\7t\2\2\u0100"+
-		"\u03d6\7v\2\2\u0101\u0102\7r\2\2\u0102\u0103\7c\2\2\u0103\u0104\7t\2\2"+
-		"\u0104\u0105\7v\2\2\u0105\u03d6\7u\2\2\u0106\u0107\7c\2\2\u0107\u0108"+
-		"\7p\2\2\u0108\u0109\7e\2\2\u0109\u010a\7g\2\2\u010a\u010b\7u\2\2\u010b"+
-		"\u010c\7v\2\2\u010c\u010d\7q\2\2\u010d\u010e\7t\2\2\u010e\u03d6\7u\2\2"+
-		"\u010f\u0110\7r\2\2\u0110\u0111\7c\2\2\u0111\u0112\7t\2\2\u0112\u0113"+
-		"\7g\2\2\u0113\u0114\7p\2\2\u0114\u03d6\7v\2\2\u0115\u0116\7i\2\2\u0116"+
-		"\u0117\7t\2\2\u0117\u0118\7q\2\2\u0118\u0119\7w\2\2\u0119\u011a\7r\2\2"+
-		"\u011a\u03d6\7u\2\2\u011b\u011c\7x\2\2\u011c\u011d\7c\2\2\u011d\u011e"+
-		"\7n\2\2\u011e\u011f\7w\2\2\u011f\u03d6\7g\2\2\u0120\u0121\7c\2\2\u0121"+
-		"\u0122\7n\2\2\u0122\u0123\7k\2\2\u0123\u0124\7c\2\2\u0124\u0125\7u\2\2"+
-		"\u0125\u0126\7g\2\2\u0126\u03d6\7u\2\2\u0127\u0128\7u\2\2\u0128\u0129"+
-		"\7v\2\2\u0129\u012a\7c\2\2\u012a\u012b\7t\2\2\u012b\u012c\7v\2\2\u012c"+
-		"\u012d\7a\2\2\u012d\u012e\7k\2\2\u012e\u012f\7f\2\2\u012f\u03d6\7z\2\2"+
-		"\u0130\u0131\7g\2\2\u0131\u0132\7p\2\2\u0132\u0133\7f\2\2\u0133\u0134"+
-		"\7a\2\2\u0134\u0135\7k\2\2\u0135\u0136\7f\2\2\u0136\u03d6\7z\2\2\u0137"+
-		"\u0138\7t\2\2\u0138\u0139\7g\2\2\u0139\u013a\7s\2\2\u013a\u013b\7a\2\2"+
-		"\u013b\u013c\7k\2\2\u013c\u03d6\7f\2\2\u013d\u013e\7t\2\2\u013e\u013f"+
-		"\7g\2\2\u013f\u0140\7s\2\2\u0140\u0141\7a\2\2\u0141\u0142\7p\2\2\u0142"+
-		"\u0143\7q\2\2\u0143\u0144\7t\2\2\u0144\u0145\7o\2\2\u0145\u0146\7v\2\2"+
-		"\u0146\u0147\7g\2\2\u0147\u0148\7z\2\2\u0148\u03d6\7v\2\2\u0149\u014a"+
-		"\7t\2\2\u014a\u014b\7g\2\2\u014b\u014c\7s\2\2\u014c\u014d\7a\2\2\u014d"+
-		"\u014e\7v\2\2\u014e\u014f\7u\2\2\u014f\u0150\7v\2\2\u0150\u0151\7c\2\2"+
-		"\u0151\u0152\7o\2\2\u0152\u03d6\7r\2\2\u0153\u0154\7t\2\2\u0154\u0155"+
-		"\7g\2\2\u0155\u0156\7s\2\2\u0156\u0157\7a\2\2\u0157\u0158\7c\2\2\u0158"+
-		"\u0159\7f\2\2\u0159\u015a\7f\2\2\u015a\u03d6\7t\2\2\u015b\u015c\7t\2\2"+
-		"\u015c\u015d\7g\2\2\u015d\u015e\7s\2\2\u015e\u015f\7a\2\2\u015f\u0160"+
-		"\7c\2\2\u0160\u0161\7i\2\2\u0161\u0162\7g\2\2\u0162\u0163\7p\2\2\u0163"+
-		"\u03d6\7v\2\2\u0164\u0165\7w\2\2\u0165\u0166\7u\2\2\u0166\u0167\7g\2\2"+
-		"\u0167\u0168\7t\2\2\u0168\u0169\7a\2\2\u0169\u016a\7k\2\2\u016a\u03d6"+
-		"\7f\2\2\u016b\u016c\7w\2\2\u016c\u016d\7u\2\2\u016d\u016e\7g\2\2\u016e"+
-		"\u016f\7t\2\2\u016f\u0170\7a\2\2\u0170\u0171\7h\2\2\u0171\u0172\7p\2\2"+
-		"\u0172\u0173\7c\2\2\u0173\u0174\7o\2\2\u0174\u03d6\7g\2\2\u0175\u0176"+
-		"\7w\2\2\u0176\u0177\7u\2\2\u0177\u0178\7g\2\2\u0178\u0179\7t\2\2\u0179"+
-		"\u017a\7a\2\2\u017a\u017b\7n\2\2\u017b\u017c\7p\2\2\u017c\u017d\7c\2\2"+
-		"\u017d\u017e\7o\2\2\u017e\u03d6\7g\2\2\u017f\u0180\7w\2\2\u0180\u0181"+
-		"\7u\2\2\u0181\u0182\7g\2\2\u0182\u0183\7t\2\2\u0183\u0184\7a\2\2\u0184"+
-		"\u0185\7g\2\2\u0185\u0186\7o\2\2\u0186\u0187\7c\2\2\u0187\u0188\7k\2\2"+
-		"\u0188\u03d6\7n\2\2\u0189\u018a\7w\2\2\u018a\u018b\7u\2\2\u018b\u018c"+
-		"\7g\2\2\u018c\u018d\7t\2\2\u018d\u018e\7a\2\2\u018e\u018f\7c\2\2\u018f"+
-		"\u0190\7f\2\2\u0190\u0191\7o\2\2\u0191\u0192\7k\2\2\u0192\u03d6\7p\2\2"+
-		"\u0193\u0194\7w\2\2\u0194\u0195\7u\2\2\u0195\u0196\7g\2\2\u0196\u0197"+
-		"\7t\2\2\u0197\u0198\7a\2\2\u0198\u0199\7u\2\2\u0199\u019a\7k\2\2\u019a"+
-		"\u019b\7i\2\2\u019b\u019c\7p\2\2\u019c\u019d\7w\2\2\u019d\u019e\7r\2\2"+
-		"\u019e\u019f\7a\2\2\u019f\u01a0\7v\2\2\u01a0\u01a1\7u\2\2\u01a1\u01a2"+
-		"\7v\2\2\u01a2\u01a3\7c\2\2\u01a3\u01a4\7o\2\2\u01a4\u03d6\7r\2\2\u01a5"+
-		"\u01a6\7e\2\2\u01a6\u01a7\7q\2\2\u01a7\u01a8\7o\2\2\u01a8\u01a9\7r\2\2"+
-		"\u01a9\u01aa\7a\2\2\u01aa\u01ab\7k\2\2\u01ab\u03d6\7f\2\2\u01ac\u01ad"+
-		"\7e\2\2\u01ad\u01ae\7q\2\2\u01ae\u01af\7o\2\2\u01af\u01b0\7r\2\2\u01b0"+
-		"\u01b1\7a\2\2\u01b1\u01b2\7p\2\2\u01b2\u01b3\7c\2\2\u01b3\u01b4\7o\2\2"+
-		"\u01b4\u03d6\7g\2\2\u01b5\u01b6\7e\2\2\u01b6\u01b7\7q\2\2\u01b7\u01b8"+
-		"\7o\2\2\u01b8\u01b9\7r\2\2\u01b9\u01ba\7a\2\2\u01ba\u01bb\7y\2\2\u01bb"+
-		"\u01bc\7g\2\2\u01bc\u01bd\7d\2\2\u01bd\u01be\7u\2\2\u01be\u01bf\7k\2\2"+
-		"\u01bf\u01c0\7v\2\2\u01c0\u03d6\7g\2\2\u01c1\u01c2\7e\2\2\u01c2\u01c3"+
-		"\7q\2\2\u01c3\u01c4\7o\2\2\u01c4\u01c5\7r\2\2\u01c5\u01c6\7a\2\2\u01c6"+
-		"\u01c7\7e\2\2\u01c7\u01c8\7q\2\2\u01c8\u01c9\7w\2\2\u01c9\u01ca\7p\2\2"+
-		"\u01ca\u01cb\7v\2\2\u01cb\u01cc\7t\2\2\u01cc\u03d6\7{\2\2\u01cd\u01ce"+
-		"\7e\2\2\u01ce\u01cf\7q\2\2\u01cf\u01d0\7o\2\2\u01d0\u01d1\7r\2\2\u01d1"+
-		"\u01d2\7a\2\2\u01d2\u01d3\7t\2\2\u01d3\u01d4\7g\2\2\u01d4\u01d5\7i\2\2"+
-		"\u01d5\u01d6\7k\2\2\u01d6\u01d7\7q\2\2\u01d7\u03d6\7p\2\2\u01d8\u01d9"+
-		"\7e\2\2\u01d9\u01da\7q\2\2\u01da\u01db\7o\2\2\u01db\u01dc\7r\2\2\u01dc"+
-		"\u01dd\7a\2\2\u01dd\u01de\7e\2\2\u01de\u01df\7k\2\2\u01df\u01e0\7v\2\2"+
-		"\u01e0\u03d6\7{\2\2\u01e1\u01e2\7e\2\2\u01e2\u01e3\7q\2\2\u01e3\u01e4"+
-		"\7o\2\2\u01e4\u01e5\7r\2\2\u01e5\u01e6\7a\2\2\u01e6\u01e7\7c\2\2\u01e7"+
-		"\u01e8\7f\2\2\u01e8\u01e9\7f\2\2\u01e9\u03d6\7t\2\2\u01ea\u01eb\7e\2\2"+
-		"\u01eb\u01ec\7q\2\2\u01ec\u01ed\7o\2\2\u01ed\u01ee\7r\2\2\u01ee\u01ef"+
-		"\7a\2\2\u01ef\u01f0\7r\2\2\u01f0\u01f1\7q\2\2\u01f1\u01f2\7u\2\2\u01f2"+
-		"\u01f3\7v\2\2\u01f3\u01f4\7e\2\2\u01f4\u01f5\7q\2\2\u01f5\u01f6\7f\2\2"+
-		"\u01f6\u03d6\7g\2\2\u01f7\u01f8\7v\2\2\u01f8\u01f9\7t\2\2\u01f9\u01fa"+
-		"\7k\2\2\u01fa\u03d6\7o\2\2\u01fb\u01fc\7u\2\2\u01fc\u01fd\7v\2\2\u01fd"+
-		"\u01fe\7t\2\2\u01fe\u01ff\7k\2\2\u01ff\u03d6\7r\2\2\u0200\u0201\7w\2\2"+
-		"\u0201\u0202\7r\2\2\u0202\u0203\7r\2\2\u0203\u0204\7g\2\2\u0204\u0205"+
-		"\7t\2\2\u0205\u0206\7e\2\2\u0206\u0207\7c\2\2\u0207\u0208\7u\2\2\u0208"+
-		"\u03d6\7g\2\2\u0209\u020a\7n\2\2\u020a\u020b\7q\2\2\u020b\u020c\7y\2\2"+
-		"\u020c\u020d\7g\2\2\u020d\u020e\7t\2\2\u020e\u020f\7e\2\2\u020f\u0210"+
-		"\7c\2\2\u0210\u0211\7u\2\2\u0211\u03d6\7g\2\2\u0212\u0213\7k\2\2\u0213"+
-		"\u0214\7u\2\2\u0214\u0215\7a\2\2\u0215\u0216\7c\2\2\u0216\u0217\7n\2\2"+
-		"\u0217\u0218\7r\2\2\u0218\u0219\7j\2\2\u0219\u03d6\7c\2\2\u021a\u021b"+
-		"\7k\2\2\u021b\u021c\7u\2\2\u021c\u021d\7a\2\2\u021d\u021e\7c\2\2\u021e"+
-		"\u021f\7n\2\2\u021f\u0220\7r\2\2\u0220\u0221\7j\2\2\u0221\u0222\7c\2\2"+
-		"\u0222\u0223\7p\2\2\u0223\u0224\7w\2\2\u0224\u03d6\7o\2\2\u0225\u0226"+
-		"\7k\2\2\u0226\u0227\7u\2\2\u0227\u0228\7a\2\2\u0228\u0229\7y\2\2\u0229"+
-		"\u022a\7j\2\2\u022a\u022b\7k\2\2\u022b\u022c\7v\2\2\u022c\u022d\7g\2\2"+
-		"\u022d\u022e\7u\2\2\u022e\u022f\7r\2\2\u022f\u0230\7c\2\2\u0230\u0231"+
-		"\7e\2\2\u0231\u03d6\7g\2\2\u0232\u0233\7k\2\2\u0233\u0234\7u\2\2\u0234"+
-		"\u0235\7a\2\2\u0235\u0236\7p\2\2\u0236\u0237\7w\2\2\u0237\u03d6\7o\2\2"+
-		"\u0238\u0239\7k\2\2\u0239\u023a\7u\2\2\u023a\u023b\7a\2\2\u023b\u023c"+
-		"\7p\2\2\u023c\u023d\7w\2\2\u023d\u023e\7o\2\2\u023e\u023f\7u\2\2\u023f"+
-		"\u0240\7r\2\2\u0240\u0241\7c\2\2\u0241\u0242\7e\2\2\u0242\u03d6\7g\2\2"+
-		"\u0243\u0244\7k\2\2\u0244\u0245\7u\2\2\u0245\u0246\7a\2\2\u0246\u0247"+
-		"\7c\2\2\u0247\u0248\7n\2\2\u0248\u0249\7r\2\2\u0249\u024a\7j\2\2\u024a"+
-		"\u024b\7c\2\2\u024b\u024c\7u\2\2\u024c\u024d\7r\2\2\u024d\u024e\7c\2\2"+
-		"\u024e\u024f\7e\2\2\u024f\u03d6\7g\2\2\u0250\u0251\7k\2\2\u0251\u0252"+
-		"\7u\2\2\u0252\u0253\7a\2\2\u0253\u0254\7c\2\2\u0254\u0255\7n\2\2\u0255"+
-		"\u0256\7r\2\2\u0256\u0257\7j\2\2\u0257\u0258\7c\2\2\u0258\u0259\7p\2\2"+
-		"\u0259\u025a\7w\2\2\u025a\u025b\7o\2\2\u025b\u025c\7u\2\2\u025c\u025d"+
-		"\7r\2\2\u025d\u025e\7c\2\2\u025e\u025f\7e\2\2\u025f\u03d6\7g\2\2\u0260"+
-		"\u0261\7u\2\2\u0261\u0262\7w\2\2\u0262\u0263\7d\2\2\u0263\u0264\7u\2\2"+
-		"\u0264\u0265\7v\2\2\u0265\u0266\7t\2\2\u0266\u0267\7k\2\2\u0267\u0268"+
-		"\7p\2\2\u0268\u03d6\7i\2\2\u0269\u026a\7e\2\2\u026a\u026b\7j\2\2\u026b"+
-		"\u026c\7c\2\2\u026c\u026d\7t\2\2\u026d\u026e\7C\2\2\u026e\u03d6\7v\2\2"+
-		"\u026f\u0270\7t\2\2\u0270\u0271\7g\2\2\u0271\u0272\7i\2\2\u0272\u0273"+
-		"\7g\2\2\u0273\u03d6\7z\2\2\u0274\u0275\7u\2\2\u0275\u0276\7q\2\2\u0276"+
-		"\u0277\7w\2\2\u0277\u0278\7p\2\2\u0278\u0279\7f\2\2\u0279\u027a\7g\2\2"+
-		"\u027a\u03d6\7z\2\2\u027b\u027c\7u\2\2\u027c\u027d\7r\2\2\u027d\u027e"+
-		"\7n\2\2\u027e\u027f\7k\2\2\u027f\u03d6\7v\2\2\u0280\u0281\7u\2\2\u0281"+
-		"\u0282\7r\2\2\u0282\u0283\7n\2\2\u0283\u0284\7k\2\2\u0284\u0285\7v\2\2"+
-		"\u0285\u0286\7a\2\2\u0286\u0287\7v\2\2\u0287\u0288\7t\2\2\u0288\u0289"+
-		"\7k\2\2\u0289\u03d6\7o\2\2\u028a\u028b\7t\2\2\u028b\u028c\7g\2\2\u028c"+
-		"\u028d\7r\2\2\u028d\u028e\7n\2\2\u028e\u028f\7c\2\2\u028f\u0290\7e\2\2"+
-		"\u0290\u03d6\7g\2\2\u0291\u0292\7c\2\2\u0292\u0293\7d\2\2\u0293\u03d6"+
-		"\7u\2\2\u0294\u0295\7e\2\2\u0295\u0296\7g\2\2\u0296\u0297\7k\2\2\u0297"+
-		"\u03d6\7n\2\2\u0298\u0299\7h\2\2\u0299\u029a\7n\2\2\u029a\u029b\7q\2\2"+
-		"\u029b\u029c\7q\2\2\u029c\u03d6\7t\2\2\u029d\u029e\7t\2\2\u029e\u029f"+
-		"\7k\2\2\u029f\u02a0\7p\2\2\u02a0\u03d6\7v\2\2\u02a1\u02a2\7t\2\2\u02a2"+
-		"\u02a3\7q\2\2\u02a3\u02a4\7w\2\2\u02a4\u02a5\7p\2\2\u02a5\u03d6\7f\2\2"+
-		"\u02a6\u02a7\7u\2\2\u02a7\u02a8\7k\2\2\u02a8\u02a9\7i\2\2\u02a9\u02aa"+
-		"\7p\2\2\u02aa\u02ab\7w\2\2\u02ab\u03d6\7o\2\2\u02ac\u02ad\7u\2\2\u02ad"+
-		"\u02ae\7s\2\2\u02ae\u02af\7t\2\2\u02af\u03d6\7v\2\2\u02b0\u02b1\7e\2\2"+
-		"\u02b1\u02b2\7d\2\2\u02b2\u02b3\7t\2\2\u02b3\u03d6\7v\2\2\u02b4\u02b5"+
-		"\7r\2\2\u02b5\u03d6\7k\2\2\u02b6\u02b7\7g\2\2\u02b7\u02b8\7w\2\2\u02b8"+
-		"\u02b9\7n\2\2\u02b9\u02ba\7g\2\2\u02ba\u03d6\7t\2\2\u02bb\u02bc\7c\2\2"+
-		"\u02bc\u02bd\7e\2\2\u02bd\u02be\7q\2\2\u02be\u03d6\7u\2\2\u02bf\u02c0"+
-		"\7c\2\2\u02c0\u02c1\7u\2\2\u02c1\u02c2\7k\2\2\u02c2\u03d6\7p\2\2\u02c3"+
-		"\u02c4\7c\2\2\u02c4\u02c5\7v\2\2\u02c5\u02c6\7c\2\2\u02c6\u03d6\7p\2\2"+
-		"\u02c7\u02c8\7e\2\2\u02c8\u02c9\7q\2\2\u02c9\u03d6\7u\2\2\u02ca\u02cb"+
-		"\7u\2\2\u02cb\u02cc\7k\2\2\u02cc\u03d6\7p\2\2\u02cd\u02ce\7v\2\2\u02ce"+
-		"\u02cf\7c\2\2\u02cf\u03d6\7p\2\2\u02d0\u02d1\7e\2\2\u02d1\u02d2\7q\2\2"+
-		"\u02d2\u02d3\7u\2\2\u02d3\u03d6\7j\2\2\u02d4\u02d5\7u\2\2\u02d5\u02d6"+
-		"\7k\2\2\u02d6\u02d7\7p\2\2\u02d7\u03d6\7j\2\2\u02d8\u02d9\7v\2\2\u02d9"+
-		"\u02da\7c\2\2\u02da\u02db\7p\2\2\u02db\u03d6\7j\2\2\u02dc\u02dd\7c\2\2"+
-		"\u02dd\u02de\7v\2\2\u02de\u02df\7p\2\2\u02df\u03d6\7\64\2\2\u02e0\u02e1"+
-		"\7f\2\2\u02e1\u02e2\7g\2\2\u02e2\u02e3\7i\2\2\u02e3\u02e4\7t\2\2\u02e4"+
-		"\u02e5\7g\2\2\u02e5\u02e6\7g\2\2\u02e6\u03d6\7u\2\2\u02e7\u02e8\7t\2\2"+
-		"\u02e8\u02e9\7c\2\2\u02e9\u02ea\7f\2\2\u02ea\u02eb\7k\2\2\u02eb\u02ec"+
-		"\7c\2\2\u02ec\u02ed\7p\2\2\u02ed\u03d6\7u\2\2\u02ee\u02ef\7g\2\2\u02ef"+
-		"\u02f0\7z\2\2\u02f0\u03d6\7r\2\2\u02f1\u02f2\7g\2\2\u02f2\u02f3\7z\2\2"+
-		"\u02f3\u02f4\7r\2\2\u02f4\u02f5\7o\2\2\u02f5\u03d6\7\63\2\2\u02f6\u02f7"+
-		"\7j\2\2\u02f7\u02f8\7{\2\2\u02f8\u02f9\7r\2\2\u02f9\u02fa\7q\2\2\u02fa"+
-		"\u03d6\7v\2\2\u02fb\u02fc\7n\2\2\u02fc\u02fd\7q\2\2\u02fd\u03d6\7i\2\2"+
-		"\u02fe\u02ff\7n\2\2\u02ff\u0300\7q\2\2\u0300\u0301\7i\2\2\u0301\u0302"+
-		"\7\63\2\2\u0302\u03d6\7\62\2\2\u0303\u0304\7n\2\2\u0304\u0305\7q\2\2\u0305"+
-		"\u0306\7i\2\2\u0306\u0307\7\63\2\2\u0307\u03d6\7r\2\2\u0308\u0309\7r\2"+
-		"\2\u0309\u030a\7q\2\2\u030a\u03d6\7y\2\2\u030b\u030c\7t\2\2\u030c\u030d"+
-		"\7c\2\2\u030d\u030e\7p\2\2\u030e\u03d6\7f\2\2\u030f\u0310\7u\2\2\u0310"+
-		"\u0311\7s\2\2\u0311\u0312\7w\2\2\u0312\u0313\7c\2\2\u0313\u0314\7t\2\2"+
-		"\u0314\u03d6\7g\2\2\u0315\u0316\7n\2\2\u0316\u0317\7k\2\2\u0317\u0318"+
-		"\7u\2\2\u0318\u03d6\7v\2\2\u0319\u031a\7i\2\2\u031a\u031b\7g\2\2\u031b"+
-		"\u03d6\7v\2\2\u031c\u031d\7j\2\2\u031d\u031e\7c\2\2\u031e\u03d6\7u\2\2"+
-		"\u031f\u0320\7h\2\2\u0320\u0321\7k\2\2\u0321\u0322\7t\2\2\u0322\u0323"+
-		"\7u\2\2\u0323\u03d6\7v\2\2\u0324\u0325\7n\2\2\u0325\u0326\7c\2\2\u0326"+
-		"\u0327\7u\2\2\u0327\u03d6\7v\2\2\u0328\u0329\7m\2\2\u0329\u032a\7g\2\2"+
-		"\u032a\u032b\7{\2\2\u032b\u03d6\7u\2\2\u032c\u032d\7x\2\2\u032d\u032e"+
-		"\7c\2\2\u032e\u032f\7n\2\2\u032f\u0330\7w\2\2\u0330\u0331\7g\2\2\u0331"+
-		"\u03d6\7u\2\2\u0332\u0333\7n\2\2\u0333\u0334\7g\2\2\u0334\u0335\7p\2\2"+
-		"\u0335\u0336\7i\2\2\u0336\u0337\7v\2\2\u0337\u03d6\7j\2\2\u0338\u0339"+
-		"\7e\2\2\u0339\u033a\7q\2\2\u033a\u033b\7w\2\2\u033b\u033c\7p\2\2\u033c"+
-		"\u03d6\7v\2\2\u033d\u033e\7u\2\2\u033e\u033f\7k\2\2\u033f\u0340\7|\2\2"+
-		"\u0340\u03d6\7g\2\2\u0341\u0342\7u\2\2\u0342\u0343\7q\2\2\u0343\u0344"+
-		"\7t\2\2\u0344\u03d6\7v\2\2\u0345\u0346\7t\2\2\u0346\u0347\7g\2\2\u0347"+
-		"\u0348\7x\2\2\u0348\u0349\7g\2\2\u0349\u034a\7t\2\2\u034a\u034b\7u\2\2"+
-		"\u034b\u03d6\7g\2\2\u034c\u034d\7k\2\2\u034d\u034e\7u\2\2\u034e\u034f"+
-		"\7a\2\2\u034f\u0350\7g\2\2\u0350\u0351\7o\2\2\u0351\u0352\7r\2\2\u0352"+
-		"\u0353\7v\2\2\u0353\u03d6\7{\2\2\u0354\u0355\7p\2\2\u0355\u0356\7q\2\2"+
-		"\u0356\u0357\7p\2\2\u0357\u0358\7a\2\2\u0358\u0359\7g\2\2\u0359\u035a"+
-		"\7o\2\2\u035a\u035b\7r\2\2\u035b\u035c\7v\2\2\u035c\u03d6\7{\2\2\u035d"+
-		"\u035e\7v\2\2\u035e\u035f\7q\2\2\u035f\u0360\7a\2\2\u0360\u0361\7u\2\2"+
-		"\u0361\u0362\7v\2\2\u0362\u0363\7t\2\2\u0363\u0364\7k\2\2\u0364\u0365"+
-		"\7p\2\2\u0365\u03d6\7i\2\2\u0366\u0367\7c\2\2\u0367\u0368\7x\2\2\u0368"+
-		"\u03d6\7i\2\2\u0369\u036a\7o\2\2\u036a\u036b\7c\2\2\u036b\u03d6\7z\2\2"+
-		"\u036c\u036d\7o\2\2\u036d\u036e\7k\2\2\u036e\u03d6\7p\2\2\u036f\u0370"+
-		"\7u\2\2\u0370\u0371\7v\2\2\u0371\u0372\7f\2\2\u0372\u0373\7g\2\2\u0373"+
-		"\u03d6\7x\2\2\u0374\u0375\7u\2\2\u0375\u0376\7w\2\2\u0376\u03d6\7o\2\2"+
-		"\u0377\u0378\7{\2\2\u0378\u0379\7g\2\2\u0379\u037a\7c\2\2\u037a\u03d6"+
-		"\7t\2\2\u037b\u037c\7o\2\2\u037c\u037d\7q\2\2\u037d\u037e\7p\2\2\u037e"+
-		"\u037f\7v\2\2\u037f\u03d6\7j\2\2\u0380\u0381\7f\2\2\u0381\u0382\7c\2\2"+
-		"\u0382\u0383\7{\2\2\u0383\u0384\7a\2\2\u0384\u0385\7q\2\2\u0385\u0386"+
-		"\7h\2\2\u0386\u0387\7a\2\2\u0387\u0388\7o\2\2\u0388\u0389\7q\2\2\u0389"+
-		"\u038a\7p\2\2\u038a\u038b\7v\2\2\u038b\u03d6\7j\2\2\u038c\u038d\7f\2\2"+
-		"\u038d\u038e\7c\2\2\u038e\u038f\7{\2\2\u038f\u0390\7a\2\2\u0390\u0391"+
-		"\7q\2\2\u0391\u0392\7h\2\2\u0392\u0393\7a\2\2\u0393\u0394\7y\2\2\u0394"+
-		"\u0395\7g\2\2\u0395\u0396\7g\2\2\u0396\u03d6\7m\2\2\u0397\u0398\7f\2\2"+
-		"\u0398\u0399\7c\2\2\u0399\u039a\7{\2\2\u039a\u039b\7a\2\2\u039b\u039c"+
-		"\7q\2\2\u039c\u039d\7h\2\2\u039d\u039e\7a\2\2\u039e\u039f\7{\2\2\u039f"+
-		"\u03a0\7g\2\2\u03a0\u03a1\7c\2\2\u03a1\u03d6\7t\2\2\u03a2\u03a3\7j\2\2"+
-		"\u03a3\u03a4\7q\2\2\u03a4\u03a5\7w\2\2\u03a5\u03d6\7t\2\2\u03a6\u03a7"+
-		"\7o\2\2\u03a7\u03a8\7k\2\2\u03a8\u03a9\7p\2\2\u03a9\u03aa\7w\2\2\u03aa"+
-		"\u03ab\7v\2\2\u03ab\u03d6\7g\2\2\u03ac\u03ad\7u\2\2\u03ad\u03ae\7g\2\2"+
-		"\u03ae\u03af\7e\2\2\u03af\u03b0\7q\2\2\u03b0\u03b1\7p\2\2\u03b1\u03d6"+
-		"\7f\2\2\u03b2\u03b3\7y\2\2\u03b3\u03b4\7g\2\2\u03b4\u03b5\7g\2\2\u03b5"+
-		"\u03b6\7m\2\2\u03b6\u03b7\7a\2\2\u03b7\u03b8\7q\2\2\u03b8\u03b9\7h\2\2"+
-		"\u03b9\u03ba\7a\2\2\u03ba\u03bb\7o\2\2\u03bb\u03bc\7q\2\2\u03bc\u03bd"+
-		"\7p\2\2\u03bd\u03be\7v\2\2\u03be\u03d6\7j\2\2\u03bf\u03c0\7y\2\2\u03c0"+
-		"\u03c1\7g\2\2\u03c1\u03c2\7g\2\2\u03c2\u03c3\7m\2\2\u03c3\u03c4\7a\2\2"+
-		"\u03c4\u03c5\7q\2\2\u03c5\u03c6\7h\2\2\u03c6\u03c7\7a\2\2\u03c7\u03c8"+
-		"\7{\2\2\u03c8\u03c9\7g\2\2\u03c9\u03ca\7c\2\2\u03ca\u03d6\7t\2\2\u03cb"+
-		"\u03cc\7s\2\2\u03cc\u03cd\7w\2\2\u03cd\u03ce\7c\2\2\u03ce\u03cf\7t\2\2"+
-		"\u03cf\u03d0\7v\2\2\u03d0\u03d1\7g\2\2\u03d1\u03d6\7t\2\2\u03d2\u03d3"+
-		"\7p\2\2\u03d3\u03d4\7q\2\2\u03d4\u03d6\7y\2\2\u03d5\u0092\3\2\2\2\u03d5"+
-		"\u009c\3\2\2\2\u03d5\u00a5\3\2\2\2\u03d5\u00af\3\2\2\2\u03d5\u00ba\3\2"+
-		"\2\2\u03d5\u00c2\3\2\2\2\u03d5\u00cb\3\2\2\2\u03d5\u00d7\3\2\2\2\u03d5"+
-		"\u00df\3\2\2\2\u03d5\u00e8\3\2\2\2\u03d5\u00f1\3\2\2\2\u03d5\u00f5\3\2"+
-		"\2\2\u03d5\u00f7\3\2\2\2\u03d5\u00f9\3\2\2\2\u03d5\u00fd\3\2\2\2\u03d5"+
-		"\u0101\3\2\2\2\u03d5\u0106\3\2\2\2\u03d5\u010f\3\2\2\2\u03d5\u0115\3\2"+
-		"\2\2\u03d5\u011b\3\2\2\2\u03d5\u0120\3\2\2\2\u03d5\u0127\3\2\2\2\u03d5"+
-		"\u0130\3\2\2\2\u03d5\u0137\3\2\2\2\u03d5\u013d\3\2\2\2\u03d5\u0149\3\2"+
-		"\2\2\u03d5\u0153\3\2\2\2\u03d5\u015b\3\2\2\2\u03d5\u0164\3\2\2\2\u03d5"+
-		"\u016b\3\2\2\2\u03d5\u0175\3\2\2\2\u03d5\u017f\3\2\2\2\u03d5\u0189\3\2"+
-		"\2\2\u03d5\u0193\3\2\2\2\u03d5\u01a5\3\2\2\2\u03d5\u01ac\3\2\2\2\u03d5"+
-		"\u01b5\3\2\2\2\u03d5\u01c1\3\2\2\2\u03d5\u01cd\3\2\2\2\u03d5\u01d8\3\2"+
-		"\2\2\u03d5\u01e1\3\2\2\2\u03d5\u01ea\3\2\2\2\u03d5\u01f7\3\2\2\2\u03d5"+
-		"\u01fb\3\2\2\2\u03d5\u0200\3\2\2\2\u03d5\u0209\3\2\2\2\u03d5\u0212\3\2"+
-		"\2\2\u03d5\u021a\3\2\2\2\u03d5\u0225\3\2\2\2\u03d5\u0232\3\2\2\2\u03d5"+
-		"\u0238\3\2\2\2\u03d5\u0243\3\2\2\2\u03d5\u0250\3\2\2\2\u03d5\u0260\3\2"+
-		"\2\2\u03d5\u0269\3\2\2\2\u03d5\u026f\3\2\2\2\u03d5\u0274\3\2\2\2\u03d5"+
-		"\u027b\3\2\2\2\u03d5\u0280\3\2\2\2\u03d5\u028a\3\2\2\2\u03d5\u0291\3\2"+
-		"\2\2\u03d5\u0294\3\2\2\2\u03d5\u0298\3\2\2\2\u03d5\u029d\3\2\2\2\u03d5"+
-		"\u02a1\3\2\2\2\u03d5\u02a6\3\2\2\2\u03d5\u02ac\3\2\2\2\u03d5\u02b0\3\2"+
-		"\2\2\u03d5\u02b4\3\2\2\2\u03d5\u02b6\3\2\2\2\u03d5\u02bb\3\2\2\2\u03d5"+
-		"\u02bf\3\2\2\2\u03d5\u02c3\3\2\2\2\u03d5\u02c7\3\2\2\2\u03d5\u02ca\3\2"+
-		"\2\2\u03d5\u02cd\3\2\2\2\u03d5\u02d0\3\2\2\2\u03d5\u02d4\3\2\2\2\u03d5"+
-		"\u02d8\3\2\2\2\u03d5\u02dc\3\2\2\2\u03d5\u02e0\3\2\2\2\u03d5\u02e7\3\2"+
-		"\2\2\u03d5\u02ee\3\2\2\2\u03d5\u02f1\3\2\2\2\u03d5\u02f6\3\2\2\2\u03d5"+
-		"\u02fb\3\2\2\2\u03d5\u02fe\3\2\2\2\u03d5\u0303\3\2\2\2\u03d5\u0308\3\2"+
-		"\2\2\u03d5\u030b\3\2\2\2\u03d5\u030f\3\2\2\2\u03d5\u0315\3\2\2\2\u03d5"+
-		"\u0319\3\2\2\2\u03d5\u031c\3\2\2\2\u03d5\u031f\3\2\2\2\u03d5\u0324\3\2"+
-		"\2\2\u03d5\u0328\3\2\2\2\u03d5\u032c\3\2\2\2\u03d5\u0332\3\2\2\2\u03d5"+
-		"\u0338\3\2\2\2\u03d5\u033d\3\2\2\2\u03d5\u0341\3\2\2\2\u03d5\u0345\3\2"+
-		"\2\2\u03d5\u034c\3\2\2\2\u03d5\u0354\3\2\2\2\u03d5\u035d\3\2\2\2\u03d5"+
-		"\u0366\3\2\2\2\u03d5\u0369\3\2\2\2\u03d5\u036c\3\2\2\2\u03d5\u036f\3\2"+
-		"\2\2\u03d5\u0374\3\2\2\2\u03d5\u0377\3\2\2\2\u03d5\u037b\3\2\2\2\u03d5"+
-		"\u0380\3\2\2\2\u03d5\u038c\3\2\2\2\u03d5\u0397\3\2\2\2\u03d5\u03a2\3\2"+
-		"\2\2\u03d5\u03a6\3\2\2\2\u03d5\u03ac\3\2\2\2\u03d5\u03b2\3\2\2\2\u03d5"+
-		"\u03bf\3\2\2\2\u03d5\u03cb\3\2\2\2\u03d5\u03d2\3\2\2\2\u03d6\20\3\2\2"+
-		"\2\u03d7\u03d8\7h\2\2\u03d8\u03d9\7t\2\2\u03d9\u03da\7c\2\2\u03da\u03db"+
-		"\7i\2\2\u03db\u03dc\7o\2\2\u03dc\u03dd\7g\2\2\u03dd\u03de\7p\2\2\u03de"+
-		"\u03df\7v\2\2\u03df\22\3\2\2\2\u03e0\u03e6\5\67\34\2\u03e1\u03e5\n\2\2"+
-		"\2\u03e2\u03e3\7^\2\2\u03e3\u03e5\7)\2\2\u03e4\u03e1\3\2\2\2\u03e4\u03e2"+
-		"\3\2\2\2\u03e5\u03e8\3\2\2\2\u03e6\u03e4\3\2\2\2\u03e6\u03e7\3\2\2\2\u03e7"+
-		"\u03e9\3\2\2\2\u03e8\u03e6\3\2\2\2\u03e9\u03ea\5\67\34\2\u03ea\24\3\2"+
-		"\2\2\u03eb\u03f1\59\35\2\u03ec\u03f0\n\3\2\2\u03ed\u03ee\7^\2\2\u03ee"+
-		"\u03f0\7$\2\2\u03ef\u03ec\3\2\2\2\u03ef\u03ed\3\2\2\2\u03f0\u03f3\3\2"+
-		"\2\2\u03f1\u03ef\3\2\2\2\u03f1\u03f2\3\2\2\2\u03f2\u03f4\3\2\2\2\u03f3"+
-		"\u03f1\3\2\2\2\u03f4\u03f5\59\35\2\u03f5\26\3\2\2\2\u03f6\u03f7\7v\2\2"+
-		"\u03f7\u03f8\7t\2\2\u03f8\u03f9\7w\2\2\u03f9\u0400\7g\2\2\u03fa\u03fb"+
-		"\7h\2\2\u03fb\u03fc\7c\2\2\u03fc\u03fd\7n\2\2\u03fd\u03fe\7u\2\2\u03fe"+
-		"\u0400\7g\2\2\u03ff\u03f6\3\2\2\2\u03ff\u03fa\3\2\2\2\u0400\30\3\2\2\2"+
-		"\u0401\u0402\7p\2\2\u0402\u0403\7w\2\2\u0403\u0404\7n\2\2\u0404\u0405"+
-		"\7n\2\2\u0405\32\3\2\2\2\u0406\u0407\7?\2\2\u0407\u0408\7?\2\2\u0408\34"+
-		"\3\2\2\2\u0409\u040a\7#\2\2\u040a\u040b\7?\2\2\u040b\36\3\2\2\2\u040c"+
-		"\u040d\7@\2\2\u040d\u040e\7?\2\2\u040e \3\2\2\2\u040f\u0410\7>\2\2\u0410"+
-		"\u0411\7?\2\2\u0411\"\3\2\2\2\u0412\u0413\7@\2\2\u0413$\3\2\2\2\u0414"+
-		"\u0415\7>\2\2\u0415&\3\2\2\2\u0416\u0417\7(\2\2\u0417\u0418\7(\2\2\u0418"+
-		"(\3\2\2\2\u0419\u041a\7~\2\2\u041a\u041b\7~\2\2\u041b*\3\2\2\2\u041c\u041d"+
-		"\7~\2\2\u041d,\3\2\2\2\u041e\u041f\7#\2\2\u041f.\3\2\2\2\u0420\u0421\7"+
-		"*\2\2\u0421\60\3\2\2\2\u0422\u0423\7+\2\2\u0423\62\3\2\2\2\u0424\u0425"+
-		"\7}\2\2\u0425\64\3\2\2\2\u0426\u0427\7\177\2\2\u0427\66\3\2\2\2\u0428"+
-		"\u0429\7)\2\2\u04298\3\2\2\2\u042a\u042b\7$\2\2\u042b:\3\2\2\2\u042c\u042d"+
-		"\7\u0080\2\2\u042d<\3\2\2\2\u042e\u042f\7]\2\2\u042f>\3\2\2\2\u0430\u0431"+
-		"\7_\2\2\u0431@\3\2\2\2\u0432\u0433\7%\2\2\u0433B\3\2\2\2\u0434\u0435\7"+
-		".\2\2\u0435D\3\2\2\2\u0436\u0437\7<\2\2\u0437F\3\2\2\2\u0438\u0439\7/"+
-		"\2\2\u0439H\3\2\2\2\u043a\u043b\7\60\2\2\u043bJ\3\2\2\2\u043c\u043d\7"+
-		"a\2\2\u043dL\3\2\2\2\u043e\u043f\7?\2\2\u043fN\3\2\2\2\u0440\u0441\7-"+
-		"\2\2\u0441P\3\2\2\2\u0442\u0443\7A\2\2\u0443R\3\2\2\2\u0444\u0445\7,\2"+
-		"\2\u0445T\3\2\2\2\u0446\u0447\7\61\2\2\u0447V\3\2\2\2\u0448\u0449\7\'"+
-		"\2\2\u0449X\3\2\2\2\u044a\u044b\7&\2\2\u044bZ\3\2\2\2\u044c\u0455\7\62"+
-		"\2\2\u044d\u0451\t\4\2\2\u044e\u0450\t\5\2\2\u044f\u044e\3\2\2\2\u0450"+
-		"\u0453\3\2\2\2\u0451\u044f\3\2\2\2\u0451\u0452\3\2\2\2\u0452\u0455\3\2"+
-		"\2\2\u0453\u0451\3\2\2\2\u0454\u044c\3\2\2\2\u0454\u044d\3\2\2\2\u0455"+
-		"\\\3\2\2\2\u0456\u0458\5I%\2\u0457\u0459\t\6\2\2\u0458\u0457\3\2\2\2\u0459"+
-		"\u045a\3\2\2\2\u045a\u0458\3\2\2\2\u045a\u045b\3\2\2\2\u045b^\3\2\2\2"+
-		"\u045c\u045e\t\7\2\2\u045d\u045f\t\b\2\2\u045e\u045d\3\2\2\2\u045e\u045f"+
-		"\3\2\2\2\u045f\u0460\3\2\2\2\u0460\u0461\5[.\2\u0461`\3\2\2\2\u0462\u0463"+
-		"\t\t\2\2\u0463b\3\2\2\2\u0464\u0465\t\n\2\2\u0465d\3\2\2\2\u0466\u046b"+
-		"\5a\61\2\u0467\u046b\5K&\2\u0468\u046b\5c\62\2\u0469\u046b\5Y-\2\u046a"+
-		"\u0466\3\2\2\2\u046a\u0467\3\2\2\2\u046a\u0468\3\2\2\2\u046a\u0469\3\2"+
-		"\2\2\u046b\u046c\3\2\2\2\u046c\u046a\3\2\2\2\u046c\u046d\3\2\2\2\u046d"+
-		"\u0477\3\2\2\2\u046e\u0476\5a\61\2\u046f\u0476\5Y-\2\u0470\u0476\5c\62"+
-		"\2\u0471\u0476\t\6\2\2\u0472\u0476\5E#\2\u0473\u0476\5G$\2\u0474\u0476"+
-		"\5K&\2\u0475\u046e\3\2\2\2\u0475\u046f\3\2\2\2\u0475\u0470\3\2\2\2\u0475"+
-		"\u0471\3\2\2\2\u0475\u0472\3\2\2\2\u0475\u0473\3\2\2\2\u0475\u0474\3\2"+
-		"\2\2\u0476\u0479\3\2\2\2\u0477\u0475\3\2\2\2\u0477\u0478\3\2\2\2\u0478"+
-		"f\3\2\2\2\u0479\u0477\3\2\2\2\u047a\u047b\7\61\2\2\u047b\u047c\7\61\2"+
-		"\2\u047c\u0480\3\2\2\2\u047d\u047f\n\13\2\2\u047e\u047d\3\2\2\2\u047f"+
-		"\u0482\3\2\2\2\u0480\u047e\3\2\2\2\u0480\u0481\3\2\2\2\u0481\u0484\3\2"+
-		"\2\2\u0482\u0480\3\2\2\2\u0483\u0485\7\17\2\2\u0484\u0483\3\2\2\2\u0484"+
-		"\u0485\3\2\2\2\u0485\u0487\3\2\2\2\u0486\u0488\t\f\2\2\u0487\u0486\3\2"+
-		"\2\2\u0488\u0495\3\2\2\2\u0489\u048a\7\61\2\2\u048a\u048b\7,\2\2\u048b"+
-		"\u048f\3\2\2\2\u048c\u048e\13\2\2\2\u048d\u048c\3\2\2\2\u048e\u0491\3"+
-		"\2\2\2\u048f\u0490\3\2\2\2\u048f\u048d\3\2\2\2\u0490\u0492\3\2\2\2\u0491"+
-		"\u048f\3\2\2\2\u0492\u0493\7,\2\2\u0493\u0495\7\61\2\2\u0494\u047a\3\2"+
-		"\2\2\u0494\u0489\3\2\2\2\u0495\u0496\3\2\2\2\u0496\u0497\b\64\2\2\u0497"+
-		"h\3\2\2\2\u0498\u049a\t\r\2\2\u0499\u0498\3\2\2\2\u049a\u049b\3\2\2\2"+
-		"\u049b\u0499\3\2\2\2\u049b\u049c\3\2\2\2\u049c\u049d\3\2\2\2\u049d\u049e"+
-		"\b\65\2\2\u049ej\3\2\2\2\u049f\u04a0\13\2\2\2\u04a0l\3\2\2\2\27\2\u03d5"+
-		"\u03e4\u03e6\u03ef\u03f1\u03ff\u0451\u0454\u045a\u045e\u046a\u046c\u0475"+
-		"\u0477\u0480\u0484\u0487\u048f\u0494\u049b\3\b\2\2";
-	public static final ATN _ATN =
-		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
-	static {
-		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
-		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
-			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
-		}
-	}
-}
\ No newline at end of file
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.tokens b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.tokens
deleted file mode 100644
index 5680142..0000000
--- a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlLexer.tokens
+++ /dev/null
@@ -1,91 +0,0 @@
-T__0=1
-T__1=2
-T__2=3
-T__3=4
-T__4=5
-T__5=6
-FUN_NAME=7
-FRAG=8
-SQSTRING=9
-DQSTRING=10
-BOOL=11
-NULL=12
-EQ=13
-NEQ=14
-GTEQ=15
-LTEQ=16
-GT=17
-LT=18
-AND=19
-OR=20
-VERT=21
-NOT=22
-LPAR=23
-RPAR=24
-LBRACE=25
-RBRACE=26
-SQUOTE=27
-DQUOTE=28
-TILDA=29
-LBR=30
-RBR=31
-POUND=32
-COMMA=33
-COLON=34
-MINUS=35
-DOT=36
-UNDERSCORE=37
-ASSIGN=38
-PLUS=39
-QUESTION=40
-MULT=41
-DIV=42
-MOD=43
-DOLLAR=44
-INT=45
-REAL=46
-EXP=47
-ID=48
-COMMENT=49
-WS=50
-ErrorChar=51
-'import'=1
-'intent'=2
-'ordered'=3
-'flow'=4
-'meta'=5
-'term'=6
-'fragment'=8
-'null'=12
-'=='=13
-'!='=14
-'>='=15
-'<='=16
-'>'=17
-'<'=18
-'&&'=19
-'||'=20
-'|'=21
-'!'=22
-'('=23
-')'=24
-'{'=25
-'}'=26
-'\''=27
-'"'=28
-'~'=29
-'['=30
-']'=31
-'#'=32
-','=33
-':'=34
-'-'=35
-'.'=36
-'_'=37
-'='=38
-'+'=39
-'?'=40
-'*'=41
-'/'=42
-'%'=43
-'$'=44
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlListener.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlListener.java
deleted file mode 100644
index 2c02411..0000000
--- a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlListener.java
+++ /dev/null
@@ -1,458 +0,0 @@
-// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
-package org.apache.nlpcraft.model.intent.compiler.antlr4;
-import org.antlr.v4.runtime.tree.ParseTreeListener;
-
-/**
- * This interface defines a complete listener for a parse tree produced by
- * {@link NCIntentIdlParser}.
- */
-public interface NCIntentIdlListener extends ParseTreeListener {
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#idl}.
-	 * @param ctx the parse tree
-	 */
-	void enterIdl(NCIntentIdlParser.IdlContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#idl}.
-	 * @param ctx the parse tree
-	 */
-	void exitIdl(NCIntentIdlParser.IdlContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#synonym}.
-	 * @param ctx the parse tree
-	 */
-	void enterSynonym(NCIntentIdlParser.SynonymContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#synonym}.
-	 * @param ctx the parse tree
-	 */
-	void exitSynonym(NCIntentIdlParser.SynonymContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#alias}.
-	 * @param ctx the parse tree
-	 */
-	void enterAlias(NCIntentIdlParser.AliasContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#alias}.
-	 * @param ctx the parse tree
-	 */
-	void exitAlias(NCIntentIdlParser.AliasContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#idlItems}.
-	 * @param ctx the parse tree
-	 */
-	void enterIdlItems(NCIntentIdlParser.IdlItemsContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#idlItems}.
-	 * @param ctx the parse tree
-	 */
-	void exitIdlItems(NCIntentIdlParser.IdlItemsContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#idlItem}.
-	 * @param ctx the parse tree
-	 */
-	void enterIdlItem(NCIntentIdlParser.IdlItemContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#idlItem}.
-	 * @param ctx the parse tree
-	 */
-	void exitIdlItem(NCIntentIdlParser.IdlItemContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#imp}.
-	 * @param ctx the parse tree
-	 */
-	void enterImp(NCIntentIdlParser.ImpContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#imp}.
-	 * @param ctx the parse tree
-	 */
-	void exitImp(NCIntentIdlParser.ImpContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#frag}.
-	 * @param ctx the parse tree
-	 */
-	void enterFrag(NCIntentIdlParser.FragContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#frag}.
-	 * @param ctx the parse tree
-	 */
-	void exitFrag(NCIntentIdlParser.FragContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#fragId}.
-	 * @param ctx the parse tree
-	 */
-	void enterFragId(NCIntentIdlParser.FragIdContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#fragId}.
-	 * @param ctx the parse tree
-	 */
-	void exitFragId(NCIntentIdlParser.FragIdContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#fragRef}.
-	 * @param ctx the parse tree
-	 */
-	void enterFragRef(NCIntentIdlParser.FragRefContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#fragRef}.
-	 * @param ctx the parse tree
-	 */
-	void exitFragRef(NCIntentIdlParser.FragRefContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#fragMeta}.
-	 * @param ctx the parse tree
-	 */
-	void enterFragMeta(NCIntentIdlParser.FragMetaContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#fragMeta}.
-	 * @param ctx the parse tree
-	 */
-	void exitFragMeta(NCIntentIdlParser.FragMetaContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#intent}.
-	 * @param ctx the parse tree
-	 */
-	void enterIntent(NCIntentIdlParser.IntentContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#intent}.
-	 * @param ctx the parse tree
-	 */
-	void exitIntent(NCIntentIdlParser.IntentContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#intentId}.
-	 * @param ctx the parse tree
-	 */
-	void enterIntentId(NCIntentIdlParser.IntentIdContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#intentId}.
-	 * @param ctx the parse tree
-	 */
-	void exitIntentId(NCIntentIdlParser.IntentIdContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#orderedDecl}.
-	 * @param ctx the parse tree
-	 */
-	void enterOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#orderedDecl}.
-	 * @param ctx the parse tree
-	 */
-	void exitOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#mtdDecl}.
-	 * @param ctx the parse tree
-	 */
-	void enterMtdDecl(NCIntentIdlParser.MtdDeclContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#mtdDecl}.
-	 * @param ctx the parse tree
-	 */
-	void exitMtdDecl(NCIntentIdlParser.MtdDeclContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#flowDecl}.
-	 * @param ctx the parse tree
-	 */
-	void enterFlowDecl(NCIntentIdlParser.FlowDeclContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#flowDecl}.
-	 * @param ctx the parse tree
-	 */
-	void exitFlowDecl(NCIntentIdlParser.FlowDeclContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#metaDecl}.
-	 * @param ctx the parse tree
-	 */
-	void enterMetaDecl(NCIntentIdlParser.MetaDeclContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#metaDecl}.
-	 * @param ctx the parse tree
-	 */
-	void exitMetaDecl(NCIntentIdlParser.MetaDeclContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonObj}.
-	 * @param ctx the parse tree
-	 */
-	void enterJsonObj(NCIntentIdlParser.JsonObjContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonObj}.
-	 * @param ctx the parse tree
-	 */
-	void exitJsonObj(NCIntentIdlParser.JsonObjContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonPair}.
-	 * @param ctx the parse tree
-	 */
-	void enterJsonPair(NCIntentIdlParser.JsonPairContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonPair}.
-	 * @param ctx the parse tree
-	 */
-	void exitJsonPair(NCIntentIdlParser.JsonPairContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonVal}.
-	 * @param ctx the parse tree
-	 */
-	void enterJsonVal(NCIntentIdlParser.JsonValContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonVal}.
-	 * @param ctx the parse tree
-	 */
-	void exitJsonVal(NCIntentIdlParser.JsonValContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#jsonArr}.
-	 * @param ctx the parse tree
-	 */
-	void enterJsonArr(NCIntentIdlParser.JsonArrContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#jsonArr}.
-	 * @param ctx the parse tree
-	 */
-	void exitJsonArr(NCIntentIdlParser.JsonArrContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#terms}.
-	 * @param ctx the parse tree
-	 */
-	void enterTerms(NCIntentIdlParser.TermsContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#terms}.
-	 * @param ctx the parse tree
-	 */
-	void exitTerms(NCIntentIdlParser.TermsContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#termItem}.
-	 * @param ctx the parse tree
-	 */
-	void enterTermItem(NCIntentIdlParser.TermItemContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#termItem}.
-	 * @param ctx the parse tree
-	 */
-	void exitTermItem(NCIntentIdlParser.TermItemContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#termEq}.
-	 * @param ctx the parse tree
-	 */
-	void enterTermEq(NCIntentIdlParser.TermEqContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#termEq}.
-	 * @param ctx the parse tree
-	 */
-	void exitTermEq(NCIntentIdlParser.TermEqContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#term}.
-	 * @param ctx the parse tree
-	 */
-	void enterTerm(NCIntentIdlParser.TermContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#term}.
-	 * @param ctx the parse tree
-	 */
-	void exitTerm(NCIntentIdlParser.TermContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#mtdRef}.
-	 * @param ctx the parse tree
-	 */
-	void enterMtdRef(NCIntentIdlParser.MtdRefContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#mtdRef}.
-	 * @param ctx the parse tree
-	 */
-	void exitMtdRef(NCIntentIdlParser.MtdRefContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#javaFqn}.
-	 * @param ctx the parse tree
-	 */
-	void enterJavaFqn(NCIntentIdlParser.JavaFqnContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#javaFqn}.
-	 * @param ctx the parse tree
-	 */
-	void exitJavaFqn(NCIntentIdlParser.JavaFqnContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#termId}.
-	 * @param ctx the parse tree
-	 */
-	void enterTermId(NCIntentIdlParser.TermIdContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#termId}.
-	 * @param ctx the parse tree
-	 */
-	void exitTermId(NCIntentIdlParser.TermIdContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code parExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterParExpr(NCIntentIdlParser.ParExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code parExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitParExpr(NCIntentIdlParser.ParExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code unaryExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code unaryExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code compExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterCompExpr(NCIntentIdlParser.CompExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code compExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitCompExpr(NCIntentIdlParser.CompExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code plusMinusExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code plusMinusExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code atomExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterAtomExpr(NCIntentIdlParser.AtomExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code atomExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitAtomExpr(NCIntentIdlParser.AtomExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code multDivModExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code multDivModExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code andOrExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code andOrExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code callExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterCallExpr(NCIntentIdlParser.CallExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code callExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitCallExpr(NCIntentIdlParser.CallExprContext ctx);
-	/**
-	 * Enter a parse tree produced by the {@code eqNeqExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code eqNeqExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#paramList}.
-	 * @param ctx the parse tree
-	 */
-	void enterParamList(NCIntentIdlParser.ParamListContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#paramList}.
-	 * @param ctx the parse tree
-	 */
-	void exitParamList(NCIntentIdlParser.ParamListContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#atom}.
-	 * @param ctx the parse tree
-	 */
-	void enterAtom(NCIntentIdlParser.AtomContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#atom}.
-	 * @param ctx the parse tree
-	 */
-	void exitAtom(NCIntentIdlParser.AtomContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#qstring}.
-	 * @param ctx the parse tree
-	 */
-	void enterQstring(NCIntentIdlParser.QstringContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#qstring}.
-	 * @param ctx the parse tree
-	 */
-	void exitQstring(NCIntentIdlParser.QstringContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#minMax}.
-	 * @param ctx the parse tree
-	 */
-	void enterMinMax(NCIntentIdlParser.MinMaxContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#minMax}.
-	 * @param ctx the parse tree
-	 */
-	void exitMinMax(NCIntentIdlParser.MinMaxContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#minMaxShortcut}.
-	 * @param ctx the parse tree
-	 */
-	void enterMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#minMaxShortcut}.
-	 * @param ctx the parse tree
-	 */
-	void exitMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#minMaxRange}.
-	 * @param ctx the parse tree
-	 */
-	void enterMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#minMaxRange}.
-	 * @param ctx the parse tree
-	 */
-	void exitMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx);
-	/**
-	 * Enter a parse tree produced by {@link NCIntentIdlParser#id}.
-	 * @param ctx the parse tree
-	 */
-	void enterId(NCIntentIdlParser.IdContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentIdlParser#id}.
-	 * @param ctx the parse tree
-	 */
-	void exitId(NCIntentIdlParser.IdContext ctx);
-}
\ No newline at end of file
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlParser.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlParser.java
deleted file mode 100644
index e0e20cd..0000000
--- a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlParser.java
+++ /dev/null
@@ -1,3012 +0,0 @@
-// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
-package org.apache.nlpcraft.model.intent.compiler.antlr4;
-import org.antlr.v4.runtime.atn.*;
-import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.misc.*;
-import org.antlr.v4.runtime.tree.*;
-import java.util.List;
-import java.util.Iterator;
-import java.util.ArrayList;
-
-@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
-public class NCIntentIdlParser extends Parser {
-	static { RuntimeMetaData.checkVersion("4.9.1", RuntimeMetaData.VERSION); }
-
-	protected static final DFA[] _decisionToDFA;
-	protected static final PredictionContextCache _sharedContextCache =
-		new PredictionContextCache();
-	public static final int
-		T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, FUN_NAME=7, FRAG=8, SQSTRING=9, 
-		DQSTRING=10, BOOL=11, NULL=12, EQ=13, NEQ=14, GTEQ=15, LTEQ=16, GT=17, 
-		LT=18, AND=19, OR=20, VERT=21, NOT=22, LPAR=23, RPAR=24, LBRACE=25, RBRACE=26, 
-		SQUOTE=27, DQUOTE=28, TILDA=29, LBR=30, RBR=31, POUND=32, COMMA=33, COLON=34, 
-		MINUS=35, DOT=36, UNDERSCORE=37, ASSIGN=38, PLUS=39, QUESTION=40, MULT=41, 
-		DIV=42, MOD=43, DOLLAR=44, INT=45, REAL=46, EXP=47, ID=48, COMMENT=49, 
-		WS=50, ErrorChar=51;
-	public static final int
-		RULE_idl = 0, RULE_synonym = 1, RULE_alias = 2, RULE_idlItems = 3, RULE_idlItem = 4, 
-		RULE_imp = 5, RULE_frag = 6, RULE_fragId = 7, RULE_fragRef = 8, RULE_fragMeta = 9, 
-		RULE_intent = 10, RULE_intentId = 11, RULE_orderedDecl = 12, RULE_mtdDecl = 13, 
-		RULE_flowDecl = 14, RULE_metaDecl = 15, RULE_jsonObj = 16, RULE_jsonPair = 17, 
-		RULE_jsonVal = 18, RULE_jsonArr = 19, RULE_terms = 20, RULE_termItem = 21, 
-		RULE_termEq = 22, RULE_term = 23, RULE_mtdRef = 24, RULE_javaFqn = 25, 
-		RULE_termId = 26, RULE_expr = 27, RULE_paramList = 28, RULE_atom = 29, 
-		RULE_qstring = 30, RULE_minMax = 31, RULE_minMaxShortcut = 32, RULE_minMaxRange = 33, 
-		RULE_id = 34;
-	private static String[] makeRuleNames() {
-		return new String[] {
-			"idl", "synonym", "alias", "idlItems", "idlItem", "imp", "frag", "fragId", 
-			"fragRef", "fragMeta", "intent", "intentId", "orderedDecl", "mtdDecl", 
-			"flowDecl", "metaDecl", "jsonObj", "jsonPair", "jsonVal", "jsonArr", 
-			"terms", "termItem", "termEq", "term", "mtdRef", "javaFqn", "termId", 
-			"expr", "paramList", "atom", "qstring", "minMax", "minMaxShortcut", "minMaxRange", 
-			"id"
-		};
-	}
-	public static final String[] ruleNames = makeRuleNames();
-
-	private static String[] makeLiteralNames() {
-		return new String[] {
-			null, "'import'", "'intent'", "'ordered'", "'flow'", "'meta'", "'term'", 
-			null, "'fragment'", null, null, null, "'null'", "'=='", "'!='", "'>='", 
-			"'<='", "'>'", "'<'", "'&&'", "'||'", "'|'", "'!'", "'('", "')'", "'{'", 
-			"'}'", "'''", "'\"'", "'~'", "'['", "']'", "'#'", "','", "':'", "'-'", 
-			"'.'", "'_'", "'='", "'+'", "'?'", "'*'", "'/'", "'%'", "'$'"
-		};
-	}
-	private static final String[] _LITERAL_NAMES = makeLiteralNames();
-	private static String[] makeSymbolicNames() {
-		return new String[] {
-			null, null, null, null, null, null, null, "FUN_NAME", "FRAG", "SQSTRING", 
-			"DQSTRING", "BOOL", "NULL", "EQ", "NEQ", "GTEQ", "LTEQ", "GT", "LT", 
-			"AND", "OR", "VERT", "NOT", "LPAR", "RPAR", "LBRACE", "RBRACE", "SQUOTE", 
-			"DQUOTE", "TILDA", "LBR", "RBR", "POUND", "COMMA", "COLON", "MINUS", 
-			"DOT", "UNDERSCORE", "ASSIGN", "PLUS", "QUESTION", "MULT", "DIV", "MOD", 
-			"DOLLAR", "INT", "REAL", "EXP", "ID", "COMMENT", "WS", "ErrorChar"
-		};
-	}
-	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
-	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
-
-	/**
-	 * @deprecated Use {@link #VOCABULARY} instead.
-	 */
-	@Deprecated
-	public static final String[] tokenNames;
-	static {
-		tokenNames = new String[_SYMBOLIC_NAMES.length];
-		for (int i = 0; i < tokenNames.length; i++) {
-			tokenNames[i] = VOCABULARY.getLiteralName(i);
-			if (tokenNames[i] == null) {
-				tokenNames[i] = VOCABULARY.getSymbolicName(i);
-			}
-
-			if (tokenNames[i] == null) {
-				tokenNames[i] = "<INVALID>";
-			}
-		}
-	}
-
-	@Override
-	@Deprecated
-	public String[] getTokenNames() {
-		return tokenNames;
-	}
-
-	@Override
-
-	public Vocabulary getVocabulary() {
-		return VOCABULARY;
-	}
-
-	@Override
-	public String getGrammarFileName() { return "NCIntentIdl.g4"; }
-
-	@Override
-	public String[] getRuleNames() { return ruleNames; }
-
-	@Override
-	public String getSerializedATN() { return _serializedATN; }
-
-	@Override
-	public ATN getATN() { return _ATN; }
-
-	public NCIntentIdlParser(TokenStream input) {
-		super(input);
-		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
-	}
-
-	public static class IdlContext extends ParserRuleContext {
-		public IdlItemsContext idlItems() {
-			return getRuleContext(IdlItemsContext.class,0);
-		}
-		public TerminalNode EOF() { return getToken(NCIntentIdlParser.EOF, 0); }
-		public IdlContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_idl; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIdl(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIdl(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitIdl(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final IdlContext idl() throws RecognitionException {
-		IdlContext _localctx = new IdlContext(_ctx, getState());
-		enterRule(_localctx, 0, RULE_idl);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(70);
-			idlItems(0);
-			setState(71);
-			match(EOF);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class SynonymContext extends ParserRuleContext {
-		public TerminalNode LBRACE() { return getToken(NCIntentIdlParser.LBRACE, 0); }
-		public ExprContext expr() {
-			return getRuleContext(ExprContext.class,0);
-		}
-		public TerminalNode RBRACE() { return getToken(NCIntentIdlParser.RBRACE, 0); }
-		public TerminalNode EOF() { return getToken(NCIntentIdlParser.EOF, 0); }
-		public AliasContext alias() {
-			return getRuleContext(AliasContext.class,0);
-		}
-		public SynonymContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_synonym; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterSynonym(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitSynonym(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitSynonym(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final SynonymContext synonym() throws RecognitionException {
-		SynonymContext _localctx = new SynonymContext(_ctx, getState());
-		enterRule(_localctx, 2, RULE_synonym);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(74);
-			_errHandler.sync(this);
-			_la = _input.LA(1);
-			if (_la==LBR) {
-				{
-				setState(73);
-				alias();
-				}
-			}
-
-			setState(76);
-			match(LBRACE);
-			setState(77);
-			expr(0);
-			setState(78);
-			match(RBRACE);
-			setState(79);
-			match(EOF);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class AliasContext extends ParserRuleContext {
-		public TerminalNode LBR() { return getToken(NCIntentIdlParser.LBR, 0); }
-		public IdContext id() {
-			return getRuleContext(IdContext.class,0);
-		}
-		public TerminalNode RBR() { return getToken(NCIntentIdlParser.RBR, 0); }
-		public AliasContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_alias; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAlias(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAlias(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitAlias(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final AliasContext alias() throws RecognitionException {
-		AliasContext _localctx = new AliasContext(_ctx, getState());
-		enterRule(_localctx, 4, RULE_alias);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(81);
-			match(LBR);
-			setState(82);
-			id();
-			setState(83);
-			match(RBR);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class IdlItemsContext extends ParserRuleContext {
-		public IdlItemContext idlItem() {
-			return getRuleContext(IdlItemContext.class,0);
-		}
-		public IdlItemsContext idlItems() {
-			return getRuleContext(IdlItemsContext.class,0);
-		}
-		public IdlItemsContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_idlItems; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIdlItems(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIdlItems(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitIdlItems(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final IdlItemsContext idlItems() throws RecognitionException {
-		return idlItems(0);
-	}
-
-	private IdlItemsContext idlItems(int _p) throws RecognitionException {
-		ParserRuleContext _parentctx = _ctx;
-		int _parentState = getState();
-		IdlItemsContext _localctx = new IdlItemsContext(_ctx, _parentState);
-		IdlItemsContext _prevctx = _localctx;
-		int _startState = 6;
-		enterRecursionRule(_localctx, 6, RULE_idlItems, _p);
-		try {
-			int _alt;
-			enterOuterAlt(_localctx, 1);
-			{
-			{
-			setState(86);
-			idlItem();
-			}
-			_ctx.stop = _input.LT(-1);
-			setState(92);
-			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,1,_ctx);
-			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
-				if ( _alt==1 ) {
-					if ( _parseListeners!=null ) triggerExitRuleEvent();
-					_prevctx = _localctx;
-					{
-					{
-					_localctx = new IdlItemsContext(_parentctx, _parentState);
-					pushNewRecursionContext(_localctx, _startState, RULE_idlItems);
-					setState(88);
-					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
-					setState(89);
-					idlItem();
-					}
-					} 
-				}
-				setState(94);
-				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,1,_ctx);
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			unrollRecursionContexts(_parentctx);
-		}
-		return _localctx;
-	}
-
-	public static class IdlItemContext extends ParserRuleContext {
-		public IntentContext intent() {
-			return getRuleContext(IntentContext.class,0);
-		}
-		public FragContext frag() {
-			return getRuleContext(FragContext.class,0);
-		}
-		public ImpContext imp() {
-			return getRuleContext(ImpContext.class,0);
-		}
-		public IdlItemContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_idlItem; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIdlItem(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIdlItem(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitIdlItem(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final IdlItemContext idlItem() throws RecognitionException {
-		IdlItemContext _localctx = new IdlItemContext(_ctx, getState());
-		enterRule(_localctx, 8, RULE_idlItem);
-		try {
-			setState(98);
-			_errHandler.sync(this);
-			switch (_input.LA(1)) {
-			case T__1:
-				enterOuterAlt(_localctx, 1);
-				{
-				setState(95);
-				intent();
-				}
-				break;
-			case FRAG:
-				enterOuterAlt(_localctx, 2);
-				{
-				setState(96);
-				frag();
-				}
-				break;
-			case T__0:
-				enterOuterAlt(_localctx, 3);
-				{
-				setState(97);
-				imp();
-				}
-				break;
-			default:
-				throw new NoViableAltException(this);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class ImpContext extends ParserRuleContext {
-		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
-		public QstringContext qstring() {
-			return getRuleContext(QstringContext.class,0);
-		}
-		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
-		public ImpContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_imp; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterImp(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitImp(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitImp(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final ImpContext imp() throws RecognitionException {
-		ImpContext _localctx = new ImpContext(_ctx, getState());
-		enterRule(_localctx, 10, RULE_imp);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(100);
-			match(T__0);
-			setState(101);
-			match(LPAR);
-			setState(102);
-			qstring();
-			setState(103);
-			match(RPAR);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class FragContext extends ParserRuleContext {
-		public FragIdContext fragId() {
-			return getRuleContext(FragIdContext.class,0);
-		}
-		public TermsContext terms() {
-			return getRuleContext(TermsContext.class,0);
-		}
-		public FragContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_frag; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFrag(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFrag(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitFrag(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final FragContext frag() throws RecognitionException {
-		FragContext _localctx = new FragContext(_ctx, getState());
-		enterRule(_localctx, 12, RULE_frag);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(105);
-			fragId();
-			setState(106);
-			terms(0);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class FragIdContext extends ParserRuleContext {
-		public TerminalNode FRAG() { return getToken(NCIntentIdlParser.FRAG, 0); }
-		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
-		public IdContext id() {
-			return getRuleContext(IdContext.class,0);
-		}
-		public FragIdContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_fragId; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFragId(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFragId(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitFragId(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final FragIdContext fragId() throws RecognitionException {
-		FragIdContext _localctx = new FragIdContext(_ctx, getState());
-		enterRule(_localctx, 14, RULE_fragId);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(108);
-			match(FRAG);
-			setState(109);
-			match(ASSIGN);
-			setState(110);
-			id();
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class FragRefContext extends ParserRuleContext {
-		public TerminalNode FRAG() { return getToken(NCIntentIdlParser.FRAG, 0); }
-		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
-		public IdContext id() {
-			return getRuleContext(IdContext.class,0);
-		}
-		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
-		public FragMetaContext fragMeta() {
-			return getRuleContext(FragMetaContext.class,0);
-		}
-		public FragRefContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_fragRef; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFragRef(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFragRef(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitFragRef(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final FragRefContext fragRef() throws RecognitionException {
-		FragRefContext _localctx = new FragRefContext(_ctx, getState());
-		enterRule(_localctx, 16, RULE_fragRef);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(112);
-			match(FRAG);
-			setState(113);
-			match(LPAR);
-			setState(114);
-			id();
-			setState(116);
-			_errHandler.sync(this);
-			_la = _input.LA(1);
-			if (_la==COMMA) {
-				{
-				setState(115);
-				fragMeta();
-				}
-			}
-
-			setState(118);
-			match(RPAR);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class FragMetaContext extends ParserRuleContext {
-		public TerminalNode COMMA() { return getToken(NCIntentIdlParser.COMMA, 0); }
-		public JsonObjContext jsonObj() {
-			return getRuleContext(JsonObjContext.class,0);
-		}
-		public FragMetaContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_fragMeta; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFragMeta(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFragMeta(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitFragMeta(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final FragMetaContext fragMeta() throws RecognitionException {
-		FragMetaContext _localctx = new FragMetaContext(_ctx, getState());
-		enterRule(_localctx, 18, RULE_fragMeta);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(120);
-			match(COMMA);
-			setState(121);
-			jsonObj();
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class IntentContext extends ParserRuleContext {
-		public IntentIdContext intentId() {
-			return getRuleContext(IntentIdContext.class,0);
-		}
-		public TermsContext terms() {
-			return getRuleContext(TermsContext.class,0);
-		}
-		public OrderedDeclContext orderedDecl() {
-			return getRuleContext(OrderedDeclContext.class,0);
-		}
-		public FlowDeclContext flowDecl() {
-			return getRuleContext(FlowDeclContext.class,0);
-		}
-		public MetaDeclContext metaDecl() {
-			return getRuleContext(MetaDeclContext.class,0);
-		}
-		public IntentContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_intent; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIntent(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIntent(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitIntent(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final IntentContext intent() throws RecognitionException {
-		IntentContext _localctx = new IntentContext(_ctx, getState());
-		enterRule(_localctx, 20, RULE_intent);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(123);
-			intentId();
-			setState(125);
-			_errHandler.sync(this);
-			_la = _input.LA(1);
-			if (_la==T__2) {
-				{
-				setState(124);
-				orderedDecl();
-				}
-			}
-
-			setState(128);
-			_errHandler.sync(this);
-			_la = _input.LA(1);
-			if (_la==T__3) {
-				{
-				setState(127);
-				flowDecl();
-				}
-			}
-
-			setState(131);
-			_errHandler.sync(this);
-			_la = _input.LA(1);
-			if (_la==T__4) {
-				{
-				setState(130);
-				metaDecl();
-				}
-			}
-
-			setState(133);
-			terms(0);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class IntentIdContext extends ParserRuleContext {
-		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
-		public IdContext id() {
-			return getRuleContext(IdContext.class,0);
-		}
-		public IntentIdContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_intentId; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterIntentId(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitIntentId(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitIntentId(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final IntentIdContext intentId() throws RecognitionException {
-		IntentIdContext _localctx = new IntentIdContext(_ctx, getState());
-		enterRule(_localctx, 22, RULE_intentId);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(135);
-			match(T__1);
-			setState(136);
-			match(ASSIGN);
-			setState(137);
-			id();
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class OrderedDeclContext extends ParserRuleContext {
-		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
-		public TerminalNode BOOL() { return getToken(NCIntentIdlParser.BOOL, 0); }
-		public OrderedDeclContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_orderedDecl; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterOrderedDecl(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitOrderedDecl(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitOrderedDecl(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final OrderedDeclContext orderedDecl() throws RecognitionException {
-		OrderedDeclContext _localctx = new OrderedDeclContext(_ctx, getState());
-		enterRule(_localctx, 24, RULE_orderedDecl);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(139);
-			match(T__2);
-			setState(140);
-			match(ASSIGN);
-			setState(141);
-			match(BOOL);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class MtdDeclContext extends ParserRuleContext {
-		public List<TerminalNode> DIV() { return getTokens(NCIntentIdlParser.DIV); }
-		public TerminalNode DIV(int i) {
-			return getToken(NCIntentIdlParser.DIV, i);
-		}
-		public MtdRefContext mtdRef() {
-			return getRuleContext(MtdRefContext.class,0);
-		}
-		public MtdDeclContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_mtdDecl; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMtdDecl(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMtdDecl(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMtdDecl(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final MtdDeclContext mtdDecl() throws RecognitionException {
-		MtdDeclContext _localctx = new MtdDeclContext(_ctx, getState());
-		enterRule(_localctx, 26, RULE_mtdDecl);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(143);
-			match(DIV);
-			setState(144);
-			mtdRef();
-			setState(145);
-			match(DIV);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class FlowDeclContext extends ParserRuleContext {
-		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
-		public QstringContext qstring() {
-			return getRuleContext(QstringContext.class,0);
-		}
-		public MtdDeclContext mtdDecl() {
-			return getRuleContext(MtdDeclContext.class,0);
-		}
-		public FlowDeclContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_flowDecl; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterFlowDecl(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitFlowDecl(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitFlowDecl(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final FlowDeclContext flowDecl() throws RecognitionException {
-		FlowDeclContext _localctx = new FlowDeclContext(_ctx, getState());
-		enterRule(_localctx, 28, RULE_flowDecl);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(147);
-			match(T__3);
-			setState(148);
-			match(ASSIGN);
-			setState(151);
-			_errHandler.sync(this);
-			switch (_input.LA(1)) {
-			case SQSTRING:
-			case DQSTRING:
-				{
-				setState(149);
-				qstring();
-				}
-				break;
-			case DIV:
-				{
-				setState(150);
-				mtdDecl();
-				}
-				break;
-			default:
-				throw new NoViableAltException(this);
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class MetaDeclContext extends ParserRuleContext {
-		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
-		public JsonObjContext jsonObj() {
-			return getRuleContext(JsonObjContext.class,0);
-		}
-		public MetaDeclContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_metaDecl; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMetaDecl(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMetaDecl(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMetaDecl(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final MetaDeclContext metaDecl() throws RecognitionException {
-		MetaDeclContext _localctx = new MetaDeclContext(_ctx, getState());
-		enterRule(_localctx, 30, RULE_metaDecl);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(153);
-			match(T__4);
-			setState(154);
-			match(ASSIGN);
-			setState(155);
-			jsonObj();
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class JsonObjContext extends ParserRuleContext {
-		public TerminalNode LBRACE() { return getToken(NCIntentIdlParser.LBRACE, 0); }
-		public List<JsonPairContext> jsonPair() {
-			return getRuleContexts(JsonPairContext.class);
-		}
-		public JsonPairContext jsonPair(int i) {
-			return getRuleContext(JsonPairContext.class,i);
-		}
-		public TerminalNode RBRACE() { return getToken(NCIntentIdlParser.RBRACE, 0); }
-		public List<TerminalNode> COMMA() { return getTokens(NCIntentIdlParser.COMMA); }
-		public TerminalNode COMMA(int i) {
-			return getToken(NCIntentIdlParser.COMMA, i);
-		}
-		public JsonObjContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_jsonObj; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonObj(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonObj(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitJsonObj(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final JsonObjContext jsonObj() throws RecognitionException {
-		JsonObjContext _localctx = new JsonObjContext(_ctx, getState());
-		enterRule(_localctx, 32, RULE_jsonObj);
-		int _la;
-		try {
-			setState(170);
-			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
-			case 1:
-				enterOuterAlt(_localctx, 1);
-				{
-				setState(157);
-				match(LBRACE);
-				setState(158);
-				jsonPair();
-				setState(163);
-				_errHandler.sync(this);
-				_la = _input.LA(1);
-				while (_la==COMMA) {
-					{
-					{
-					setState(159);
-					match(COMMA);
-					setState(160);
-					jsonPair();
-					}
-					}
-					setState(165);
-					_errHandler.sync(this);
-					_la = _input.LA(1);
-				}
-				setState(166);
-				match(RBRACE);
-				}
-				break;
-			case 2:
-				enterOuterAlt(_localctx, 2);
-				{
-				setState(168);
-				match(LBRACE);
-				setState(169);
-				match(RBRACE);
-				}
-				break;
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class JsonPairContext extends ParserRuleContext {
-		public QstringContext qstring() {
-			return getRuleContext(QstringContext.class,0);
-		}
-		public TerminalNode COLON() { return getToken(NCIntentIdlParser.COLON, 0); }
-		public JsonValContext jsonVal() {
-			return getRuleContext(JsonValContext.class,0);
-		}
-		public JsonPairContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_jsonPair; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonPair(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonPair(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitJsonPair(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final JsonPairContext jsonPair() throws RecognitionException {
-		JsonPairContext _localctx = new JsonPairContext(_ctx, getState());
-		enterRule(_localctx, 34, RULE_jsonPair);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(172);
-			qstring();
-			setState(173);
-			match(COLON);
-			setState(174);
-			jsonVal();
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class JsonValContext extends ParserRuleContext {
-		public QstringContext qstring() {
-			return getRuleContext(QstringContext.class,0);
-		}
-		public TerminalNode INT() { return getToken(NCIntentIdlParser.INT, 0); }
-		public TerminalNode MINUS() { return getToken(NCIntentIdlParser.MINUS, 0); }
-		public TerminalNode REAL() { return getToken(NCIntentIdlParser.REAL, 0); }
-		public TerminalNode EXP() { return getToken(NCIntentIdlParser.EXP, 0); }
-		public JsonObjContext jsonObj() {
-			return getRuleContext(JsonObjContext.class,0);
-		}
-		public JsonArrContext jsonArr() {
-			return getRuleContext(JsonArrContext.class,0);
-		}
-		public TerminalNode BOOL() { return getToken(NCIntentIdlParser.BOOL, 0); }
-		public TerminalNode NULL() { return getToken(NCIntentIdlParser.NULL, 0); }
-		public JsonValContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_jsonVal; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonVal(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonVal(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitJsonVal(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final JsonValContext jsonVal() throws RecognitionException {
-		JsonValContext _localctx = new JsonValContext(_ctx, getState());
-		enterRule(_localctx, 36, RULE_jsonVal);
-		int _la;
-		try {
-			setState(191);
-			_errHandler.sync(this);
-			switch (_input.LA(1)) {
-			case SQSTRING:
-			case DQSTRING:
-				enterOuterAlt(_localctx, 1);
-				{
-				setState(176);
-				qstring();
-				}
-				break;
-			case MINUS:
-			case INT:
-				enterOuterAlt(_localctx, 2);
-				{
-				setState(178);
-				_errHandler.sync(this);
-				_la = _input.LA(1);
-				if (_la==MINUS) {
-					{
-					setState(177);
-					match(MINUS);
-					}
-				}
-
-				setState(180);
-				match(INT);
-				setState(182);
-				_errHandler.sync(this);
-				_la = _input.LA(1);
-				if (_la==REAL) {
-					{
-					setState(181);
-					match(REAL);
-					}
-				}
-
-				setState(185);
-				_errHandler.sync(this);
-				_la = _input.LA(1);
-				if (_la==EXP) {
-					{
-					setState(184);
-					match(EXP);
-					}
-				}
-
-				}
-				break;
-			case LBRACE:
-				enterOuterAlt(_localctx, 3);
-				{
-				setState(187);
-				jsonObj();
-				}
-				break;
-			case LBR:
-				enterOuterAlt(_localctx, 4);
-				{
-				setState(188);
-				jsonArr();
-				}
-				break;
-			case BOOL:
-				enterOuterAlt(_localctx, 5);
-				{
-				setState(189);
-				match(BOOL);
-				}
-				break;
-			case NULL:
-				enterOuterAlt(_localctx, 6);
-				{
-				setState(190);
-				match(NULL);
-				}
-				break;
-			default:
-				throw new NoViableAltException(this);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class JsonArrContext extends ParserRuleContext {
-		public TerminalNode LBR() { return getToken(NCIntentIdlParser.LBR, 0); }
-		public List<JsonValContext> jsonVal() {
-			return getRuleContexts(JsonValContext.class);
-		}
-		public JsonValContext jsonVal(int i) {
-			return getRuleContext(JsonValContext.class,i);
-		}
-		public TerminalNode RBR() { return getToken(NCIntentIdlParser.RBR, 0); }
-		public List<TerminalNode> COMMA() { return getTokens(NCIntentIdlParser.COMMA); }
-		public TerminalNode COMMA(int i) {
-			return getToken(NCIntentIdlParser.COMMA, i);
-		}
-		public JsonArrContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_jsonArr; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJsonArr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJsonArr(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitJsonArr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final JsonArrContext jsonArr() throws RecognitionException {
-		JsonArrContext _localctx = new JsonArrContext(_ctx, getState());
-		enterRule(_localctx, 38, RULE_jsonArr);
-		int _la;
-		try {
-			setState(206);
-			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
-			case 1:
-				enterOuterAlt(_localctx, 1);
-				{
-				setState(193);
-				match(LBR);
-				setState(194);
-				jsonVal();
-				setState(199);
-				_errHandler.sync(this);
-				_la = _input.LA(1);
-				while (_la==COMMA) {
-					{
-					{
-					setState(195);
-					match(COMMA);
-					setState(196);
-					jsonVal();
-					}
-					}
-					setState(201);
-					_errHandler.sync(this);
-					_la = _input.LA(1);
-				}
-				setState(202);
-				match(RBR);
-				}
-				break;
-			case 2:
-				enterOuterAlt(_localctx, 2);
-				{
-				setState(204);
-				match(LBR);
-				setState(205);
-				match(RBR);
-				}
-				break;
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class TermsContext extends ParserRuleContext {
-		public TermItemContext termItem() {
-			return getRuleContext(TermItemContext.class,0);
-		}
-		public TermsContext terms() {
-			return getRuleContext(TermsContext.class,0);
-		}
-		public TermsContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_terms; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTerms(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTerms(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitTerms(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final TermsContext terms() throws RecognitionException {
-		return terms(0);
-	}
-
-	private TermsContext terms(int _p) throws RecognitionException {
-		ParserRuleContext _parentctx = _ctx;
-		int _parentState = getState();
-		TermsContext _localctx = new TermsContext(_ctx, _parentState);
-		TermsContext _prevctx = _localctx;
-		int _startState = 40;
-		enterRecursionRule(_localctx, 40, RULE_terms, _p);
-		try {
-			int _alt;
-			enterOuterAlt(_localctx, 1);
-			{
-			{
-			setState(209);
-			termItem();
-			}
-			_ctx.stop = _input.LT(-1);
-			setState(215);
-			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,16,_ctx);
-			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
-				if ( _alt==1 ) {
-					if ( _parseListeners!=null ) triggerExitRuleEvent();
-					_prevctx = _localctx;
-					{
-					{
-					_localctx = new TermsContext(_parentctx, _parentState);
-					pushNewRecursionContext(_localctx, _startState, RULE_terms);
-					setState(211);
-					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
-					setState(212);
-					termItem();
-					}
-					} 
-				}
-				setState(217);
-				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,16,_ctx);
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			unrollRecursionContexts(_parentctx);
-		}
-		return _localctx;
-	}
-
-	public static class TermItemContext extends ParserRuleContext {
-		public TermContext term() {
-			return getRuleContext(TermContext.class,0);
-		}
-		public FragRefContext fragRef() {
-			return getRuleContext(FragRefContext.class,0);
-		}
-		public TermItemContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_termItem; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTermItem(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTermItem(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitTermItem(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final TermItemContext termItem() throws RecognitionException {
-		TermItemContext _localctx = new TermItemContext(_ctx, getState());
-		enterRule(_localctx, 42, RULE_termItem);
-		try {
-			setState(220);
-			_errHandler.sync(this);
-			switch (_input.LA(1)) {
-			case T__5:
-				enterOuterAlt(_localctx, 1);
-				{
-				setState(218);
-				term();
-				}
-				break;
-			case FRAG:
-				enterOuterAlt(_localctx, 2);
-				{
-				setState(219);
-				fragRef();
-				}
-				break;
-			default:
-				throw new NoViableAltException(this);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class TermEqContext extends ParserRuleContext {
-		public TerminalNode ASSIGN() { return getToken(NCIntentIdlParser.ASSIGN, 0); }
-		public TerminalNode TILDA() { return getToken(NCIntentIdlParser.TILDA, 0); }
-		public TermEqContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_termEq; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTermEq(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTermEq(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitTermEq(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final TermEqContext termEq() throws RecognitionException {
-		TermEqContext _localctx = new TermEqContext(_ctx, getState());
-		enterRule(_localctx, 44, RULE_termEq);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(222);
-			_la = _input.LA(1);
-			if ( !(_la==TILDA || _la==ASSIGN) ) {
-			_errHandler.recoverInline(this);
-			}
-			else {
-				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
-				_errHandler.reportMatch(this);
-				consume();
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class TermContext extends ParserRuleContext {
-		public TermEqContext termEq() {
-			return getRuleContext(TermEqContext.class,0);
-		}
-		public MtdDeclContext mtdDecl() {
-			return getRuleContext(MtdDeclContext.class,0);
-		}
-		public TermIdContext termId() {
-			return getRuleContext(TermIdContext.class,0);
-		}
-		public MinMaxContext minMax() {
-			return getRuleContext(MinMaxContext.class,0);
-		}
-		public TerminalNode LBRACE() { return getToken(NCIntentIdlParser.LBRACE, 0); }
-		public ExprContext expr() {
-			return getRuleContext(ExprContext.class,0);
-		}
-		public TerminalNode RBRACE() { return getToken(NCIntentIdlParser.RBRACE, 0); }
-		public TermContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_term; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTerm(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTerm(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitTerm(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final TermContext term() throws RecognitionException {
-		TermContext _localctx = new TermContext(_ctx, getState());
-		enterRule(_localctx, 46, RULE_term);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(224);
-			match(T__5);
-			setState(226);
-			_errHandler.sync(this);
-			_la = _input.LA(1);
-			if (_la==LPAR) {
-				{
-				setState(225);
-				termId();
-				}
-			}
-
-			setState(228);
-			termEq();
-			setState(234);
-			_errHandler.sync(this);
-			switch (_input.LA(1)) {
-			case LBRACE:
-				{
-				{
-				setState(229);
-				match(LBRACE);
-				setState(230);
-				expr(0);
-				setState(231);
-				match(RBRACE);
-				}
-				}
-				break;
-			case DIV:
-				{
-				setState(233);
-				mtdDecl();
-				}
-				break;
-			default:
-				throw new NoViableAltException(this);
-			}
-			setState(237);
-			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
-			case 1:
-				{
-				setState(236);
-				minMax();
-				}
-				break;
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class MtdRefContext extends ParserRuleContext {
-		public TerminalNode POUND() { return getToken(NCIntentIdlParser.POUND, 0); }
-		public IdContext id() {
-			return getRuleContext(IdContext.class,0);
-		}
-		public JavaFqnContext javaFqn() {
-			return getRuleContext(JavaFqnContext.class,0);
-		}
-		public MtdRefContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_mtdRef; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMtdRef(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMtdRef(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMtdRef(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final MtdRefContext mtdRef() throws RecognitionException {
-		MtdRefContext _localctx = new MtdRefContext(_ctx, getState());
-		enterRule(_localctx, 48, RULE_mtdRef);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(240);
-			_errHandler.sync(this);
-			_la = _input.LA(1);
-			if (_la==FUN_NAME || _la==ID) {
-				{
-				setState(239);
-				javaFqn(0);
-				}
-			}
-
-			setState(242);
-			match(POUND);
-			setState(243);
-			id();
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class JavaFqnContext extends ParserRuleContext {
-		public IdContext id() {
-			return getRuleContext(IdContext.class,0);
-		}
-		public JavaFqnContext javaFqn() {
-			return getRuleContext(JavaFqnContext.class,0);
-		}
-		public TerminalNode DOT() { return getToken(NCIntentIdlParser.DOT, 0); }
-		public JavaFqnContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_javaFqn; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterJavaFqn(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitJavaFqn(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitJavaFqn(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final JavaFqnContext javaFqn() throws RecognitionException {
-		return javaFqn(0);
-	}
-
-	private JavaFqnContext javaFqn(int _p) throws RecognitionException {
-		ParserRuleContext _parentctx = _ctx;
-		int _parentState = getState();
-		JavaFqnContext _localctx = new JavaFqnContext(_ctx, _parentState);
-		JavaFqnContext _prevctx = _localctx;
-		int _startState = 50;
-		enterRecursionRule(_localctx, 50, RULE_javaFqn, _p);
-		try {
-			int _alt;
-			enterOuterAlt(_localctx, 1);
-			{
-			{
-			setState(246);
-			id();
-			}
-			_ctx.stop = _input.LT(-1);
-			setState(253);
-			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,22,_ctx);
-			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
-				if ( _alt==1 ) {
-					if ( _parseListeners!=null ) triggerExitRuleEvent();
-					_prevctx = _localctx;
-					{
-					{
-					_localctx = new JavaFqnContext(_parentctx, _parentState);
-					pushNewRecursionContext(_localctx, _startState, RULE_javaFqn);
-					setState(248);
-					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
-					setState(249);
-					match(DOT);
-					setState(250);
-					id();
-					}
-					} 
-				}
-				setState(255);
-				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,22,_ctx);
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			unrollRecursionContexts(_parentctx);
-		}
-		return _localctx;
-	}
-
-	public static class TermIdContext extends ParserRuleContext {
-		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
-		public IdContext id() {
-			return getRuleContext(IdContext.class,0);
-		}
-		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
-		public TermIdContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_termId; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterTermId(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitTermId(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitTermId(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final TermIdContext termId() throws RecognitionException {
-		TermIdContext _localctx = new TermIdContext(_ctx, getState());
-		enterRule(_localctx, 52, RULE_termId);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(256);
-			match(LPAR);
-			setState(257);
-			id();
-			setState(258);
-			match(RPAR);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class ExprContext extends ParserRuleContext {
-		public ExprContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_expr; }
-	 
-		public ExprContext() { }
-		public void copyFrom(ExprContext ctx) {
-			super.copyFrom(ctx);
-		}
-	}
-	public static class ParExprContext extends ExprContext {
-		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
-		public ExprContext expr() {
-			return getRuleContext(ExprContext.class,0);
-		}
-		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
-		public ParExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterParExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitParExpr(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitParExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class UnaryExprContext extends ExprContext {
-		public Token op;
-		public ExprContext expr() {
-			return getRuleContext(ExprContext.class,0);
-		}
-		public TerminalNode MINUS() { return getToken(NCIntentIdlParser.MINUS, 0); }
-		public TerminalNode NOT() { return getToken(NCIntentIdlParser.NOT, 0); }
-		public UnaryExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterUnaryExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitUnaryExpr(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitUnaryExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class CompExprContext extends ExprContext {
-		public Token op;
-		public List<ExprContext> expr() {
-			return getRuleContexts(ExprContext.class);
-		}
-		public ExprContext expr(int i) {
-			return getRuleContext(ExprContext.class,i);
-		}
-		public TerminalNode LTEQ() { return getToken(NCIntentIdlParser.LTEQ, 0); }
-		public TerminalNode GTEQ() { return getToken(NCIntentIdlParser.GTEQ, 0); }
-		public TerminalNode LT() { return getToken(NCIntentIdlParser.LT, 0); }
-		public TerminalNode GT() { return getToken(NCIntentIdlParser.GT, 0); }
-		public CompExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterCompExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitCompExpr(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitCompExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class PlusMinusExprContext extends ExprContext {
-		public Token op;
-		public List<ExprContext> expr() {
-			return getRuleContexts(ExprContext.class);
-		}
-		public ExprContext expr(int i) {
-			return getRuleContext(ExprContext.class,i);
-		}
-		public TerminalNode PLUS() { return getToken(NCIntentIdlParser.PLUS, 0); }
-		public TerminalNode MINUS() { return getToken(NCIntentIdlParser.MINUS, 0); }
-		public PlusMinusExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterPlusMinusExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitPlusMinusExpr(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitPlusMinusExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class AtomExprContext extends ExprContext {
-		public AtomContext atom() {
-			return getRuleContext(AtomContext.class,0);
-		}
-		public AtomExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAtomExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAtomExpr(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitAtomExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class MultDivModExprContext extends ExprContext {
-		public Token op;
-		public List<ExprContext> expr() {
-			return getRuleContexts(ExprContext.class);
-		}
-		public ExprContext expr(int i) {
-			return getRuleContext(ExprContext.class,i);
-		}
-		public TerminalNode MULT() { return getToken(NCIntentIdlParser.MULT, 0); }
-		public TerminalNode DIV() { return getToken(NCIntentIdlParser.DIV, 0); }
-		public TerminalNode MOD() { return getToken(NCIntentIdlParser.MOD, 0); }
-		public MultDivModExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMultDivModExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMultDivModExpr(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMultDivModExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class AndOrExprContext extends ExprContext {
-		public Token op;
-		public List<ExprContext> expr() {
-			return getRuleContexts(ExprContext.class);
-		}
-		public ExprContext expr(int i) {
-			return getRuleContext(ExprContext.class,i);
-		}
-		public TerminalNode AND() { return getToken(NCIntentIdlParser.AND, 0); }
-		public TerminalNode OR() { return getToken(NCIntentIdlParser.OR, 0); }
-		public AndOrExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAndOrExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAndOrExpr(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitAndOrExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class CallExprContext extends ExprContext {
-		public TerminalNode FUN_NAME() { return getToken(NCIntentIdlParser.FUN_NAME, 0); }
-		public TerminalNode LPAR() { return getToken(NCIntentIdlParser.LPAR, 0); }
-		public TerminalNode RPAR() { return getToken(NCIntentIdlParser.RPAR, 0); }
-		public ParamListContext paramList() {
-			return getRuleContext(ParamListContext.class,0);
-		}
-		public CallExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterCallExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitCallExpr(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitCallExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class EqNeqExprContext extends ExprContext {
-		public Token op;
-		public List<ExprContext> expr() {
-			return getRuleContexts(ExprContext.class);
-		}
-		public ExprContext expr(int i) {
-			return getRuleContext(ExprContext.class,i);
-		}
-		public TerminalNode EQ() { return getToken(NCIntentIdlParser.EQ, 0); }
-		public TerminalNode NEQ() { return getToken(NCIntentIdlParser.NEQ, 0); }
-		public EqNeqExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterEqNeqExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitEqNeqExpr(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitEqNeqExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final ExprContext expr() throws RecognitionException {
-		return expr(0);
-	}
-
-	private ExprContext expr(int _p) throws RecognitionException {
-		ParserRuleContext _parentctx = _ctx;
-		int _parentState = getState();
-		ExprContext _localctx = new ExprContext(_ctx, _parentState);
-		ExprContext _prevctx = _localctx;
-		int _startState = 54;
-		enterRecursionRule(_localctx, 54, RULE_expr, _p);
-		int _la;
-		try {
-			int _alt;
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(274);
-			_errHandler.sync(this);
-			switch (_input.LA(1)) {
-			case NOT:
-			case MINUS:
-				{
-				_localctx = new UnaryExprContext(_localctx);
-				_ctx = _localctx;
-				_prevctx = _localctx;
-
-				setState(261);
-				((UnaryExprContext)_localctx).op = _input.LT(1);
-				_la = _input.LA(1);
-				if ( !(_la==NOT || _la==MINUS) ) {
-					((UnaryExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
-				}
-				else {
-					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
-					_errHandler.reportMatch(this);
-					consume();
-				}
-				setState(262);
-				expr(9);
-				}
-				break;
-			case LPAR:
-				{
-				_localctx = new ParExprContext(_localctx);
-				_ctx = _localctx;
-				_prevctx = _localctx;
-				setState(263);
-				match(LPAR);
-				setState(264);
-				expr(0);
-				setState(265);
-				match(RPAR);
-				}
-				break;
-			case SQSTRING:
-			case DQSTRING:
-			case BOOL:
-			case NULL:
-			case INT:
-				{
-				_localctx = new AtomExprContext(_localctx);
-				_ctx = _localctx;
-				_prevctx = _localctx;
-				setState(267);
-				atom();
-				}
-				break;
-			case FUN_NAME:
-				{
-				_localctx = new CallExprContext(_localctx);
-				_ctx = _localctx;
-				_prevctx = _localctx;
-				setState(268);
-				match(FUN_NAME);
-				setState(269);
-				match(LPAR);
-				setState(271);
-				_errHandler.sync(this);
-				_la = _input.LA(1);
-				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUN_NAME) | (1L << SQSTRING) | (1L << DQSTRING) | (1L << BOOL) | (1L << NULL) | (1L << NOT) | (1L << LPAR) | (1L << MINUS) | (1L << INT))) != 0)) {
-					{
-					setState(270);
-					paramList(0);
-					}
-				}
-
-				setState(273);
-				match(RPAR);
-				}
-				break;
-			default:
-				throw new NoViableAltException(this);
-			}
-			_ctx.stop = _input.LT(-1);
-			setState(293);
-			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,26,_ctx);
-			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
-				if ( _alt==1 ) {
-					if ( _parseListeners!=null ) triggerExitRuleEvent();
-					_prevctx = _localctx;
-					{
-					setState(291);
-					_errHandler.sync(this);
-					switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
-					case 1:
-						{
-						_localctx = new MultDivModExprContext(new ExprContext(_parentctx, _parentState));
-						pushNewRecursionContext(_localctx, _startState, RULE_expr);
-						setState(276);
-						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
-						setState(277);
-						((MultDivModExprContext)_localctx).op = _input.LT(1);
-						_la = _input.LA(1);
-						if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << MULT) | (1L << DIV) | (1L << MOD))) != 0)) ) {
-							((MultDivModExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
-						}
-						else {
-							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
-							_errHandler.reportMatch(this);
-							consume();
-						}
-						setState(278);
-						expr(8);
-						}
-						break;
-					case 2:
-						{
-						_localctx = new PlusMinusExprContext(new ExprContext(_parentctx, _parentState));
-						pushNewRecursionContext(_localctx, _startState, RULE_expr);
-						setState(279);
-						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
-						setState(280);
-						((PlusMinusExprContext)_localctx).op = _input.LT(1);
-						_la = _input.LA(1);
-						if ( !(_la==MINUS || _la==PLUS) ) {
-							((PlusMinusExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
-						}
-						else {
-							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
-							_errHandler.reportMatch(this);
-							consume();
-						}
-						setState(281);
-						expr(7);
-						}
-						break;
-					case 3:
-						{
-						_localctx = new CompExprContext(new ExprContext(_parentctx, _parentState));
-						pushNewRecursionContext(_localctx, _startState, RULE_expr);
-						setState(282);
-						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
-						setState(283);
-						((CompExprContext)_localctx).op = _input.LT(1);
-						_la = _input.LA(1);
-						if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << GTEQ) | (1L << LTEQ) | (1L << GT) | (1L << LT))) != 0)) ) {
-							((CompExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
-						}
-						else {
-							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
-							_errHandler.reportMatch(this);
-							consume();
-						}
-						setState(284);
-						expr(6);
-						}
-						break;
-					case 4:
-						{
-						_localctx = new EqNeqExprContext(new ExprContext(_parentctx, _parentState));
-						pushNewRecursionContext(_localctx, _startState, RULE_expr);
-						setState(285);
-						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
-						setState(286);
-						((EqNeqExprContext)_localctx).op = _input.LT(1);
-						_la = _input.LA(1);
-						if ( !(_la==EQ || _la==NEQ) ) {
-							((EqNeqExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
-						}
-						else {
-							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
-							_errHandler.reportMatch(this);
-							consume();
-						}
-						setState(287);
-						expr(5);
-						}
-						break;
-					case 5:
-						{
-						_localctx = new AndOrExprContext(new ExprContext(_parentctx, _parentState));
-						pushNewRecursionContext(_localctx, _startState, RULE_expr);
-						setState(288);
-						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
-						setState(289);
-						((AndOrExprContext)_localctx).op = _input.LT(1);
-						_la = _input.LA(1);
-						if ( !(_la==AND || _la==OR) ) {
-							((AndOrExprContext)_localctx).op = (Token)_errHandler.recoverInline(this);
-						}
-						else {
-							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
-							_errHandler.reportMatch(this);
-							consume();
-						}
-						setState(290);
-						expr(4);
-						}
-						break;
-					}
-					} 
-				}
-				setState(295);
-				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,26,_ctx);
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			unrollRecursionContexts(_parentctx);
-		}
-		return _localctx;
-	}
-
-	public static class ParamListContext extends ParserRuleContext {
-		public ExprContext expr() {
-			return getRuleContext(ExprContext.class,0);
-		}
-		public ParamListContext paramList() {
-			return getRuleContext(ParamListContext.class,0);
-		}
-		public TerminalNode COMMA() { return getToken(NCIntentIdlParser.COMMA, 0); }
-		public ParamListContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_paramList; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterParamList(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitParamList(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitParamList(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final ParamListContext paramList() throws RecognitionException {
-		return paramList(0);
-	}
-
-	private ParamListContext paramList(int _p) throws RecognitionException {
-		ParserRuleContext _parentctx = _ctx;
-		int _parentState = getState();
-		ParamListContext _localctx = new ParamListContext(_ctx, _parentState);
-		ParamListContext _prevctx = _localctx;
-		int _startState = 56;
-		enterRecursionRule(_localctx, 56, RULE_paramList, _p);
-		try {
-			int _alt;
-			enterOuterAlt(_localctx, 1);
-			{
-			{
-			setState(297);
-			expr(0);
-			}
-			_ctx.stop = _input.LT(-1);
-			setState(304);
-			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,27,_ctx);
-			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
-				if ( _alt==1 ) {
-					if ( _parseListeners!=null ) triggerExitRuleEvent();
-					_prevctx = _localctx;
-					{
-					{
-					_localctx = new ParamListContext(_parentctx, _parentState);
-					pushNewRecursionContext(_localctx, _startState, RULE_paramList);
-					setState(299);
-					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
-					setState(300);
-					match(COMMA);
-					setState(301);
-					expr(0);
-					}
-					} 
-				}
-				setState(306);
-				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,27,_ctx);
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			unrollRecursionContexts(_parentctx);
-		}
-		return _localctx;
-	}
-
-	public static class AtomContext extends ParserRuleContext {
-		public TerminalNode NULL() { return getToken(NCIntentIdlParser.NULL, 0); }
-		public TerminalNode INT() { return getToken(NCIntentIdlParser.INT, 0); }
-		public TerminalNode REAL() { return getToken(NCIntentIdlParser.REAL, 0); }
-		public TerminalNode EXP() { return getToken(NCIntentIdlParser.EXP, 0); }
-		public TerminalNode BOOL() { return getToken(NCIntentIdlParser.BOOL, 0); }
-		public QstringContext qstring() {
-			return getRuleContext(QstringContext.class,0);
-		}
-		public AtomContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_atom; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterAtom(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitAtom(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitAtom(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final AtomContext atom() throws RecognitionException {
-		AtomContext _localctx = new AtomContext(_ctx, getState());
-		enterRule(_localctx, 58, RULE_atom);
-		try {
-			setState(317);
-			_errHandler.sync(this);
-			switch (_input.LA(1)) {
-			case NULL:
-				enterOuterAlt(_localctx, 1);
-				{
-				setState(307);
-				match(NULL);
-				}
-				break;
-			case INT:
-				enterOuterAlt(_localctx, 2);
-				{
-				setState(308);
-				match(INT);
-				setState(310);
-				_errHandler.sync(this);
-				switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
-				case 1:
-					{
-					setState(309);
-					match(REAL);
-					}
-					break;
-				}
-				setState(313);
-				_errHandler.sync(this);
-				switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
-				case 1:
-					{
-					setState(312);
-					match(EXP);
-					}
-					break;
-				}
-				}
-				break;
-			case BOOL:
-				enterOuterAlt(_localctx, 3);
-				{
-				setState(315);
-				match(BOOL);
-				}
-				break;
-			case SQSTRING:
-			case DQSTRING:
-				enterOuterAlt(_localctx, 4);
-				{
-				setState(316);
-				qstring();
-				}
-				break;
-			default:
-				throw new NoViableAltException(this);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class QstringContext extends ParserRuleContext {
-		public TerminalNode SQSTRING() { return getToken(NCIntentIdlParser.SQSTRING, 0); }
-		public TerminalNode DQSTRING() { return getToken(NCIntentIdlParser.DQSTRING, 0); }
-		public QstringContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_qstring; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterQstring(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitQstring(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitQstring(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final QstringContext qstring() throws RecognitionException {
-		QstringContext _localctx = new QstringContext(_ctx, getState());
-		enterRule(_localctx, 60, RULE_qstring);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(319);
-			_la = _input.LA(1);
-			if ( !(_la==SQSTRING || _la==DQSTRING) ) {
-			_errHandler.recoverInline(this);
-			}
-			else {
-				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
-				_errHandler.reportMatch(this);
-				consume();
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class MinMaxContext extends ParserRuleContext {
-		public MinMaxShortcutContext minMaxShortcut() {
-			return getRuleContext(MinMaxShortcutContext.class,0);
-		}
-		public MinMaxRangeContext minMaxRange() {
-			return getRuleContext(MinMaxRangeContext.class,0);
-		}
-		public MinMaxContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_minMax; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMinMax(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMinMax(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMinMax(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final MinMaxContext minMax() throws RecognitionException {
-		MinMaxContext _localctx = new MinMaxContext(_ctx, getState());
-		enterRule(_localctx, 62, RULE_minMax);
-		try {
-			setState(323);
-			_errHandler.sync(this);
-			switch (_input.LA(1)) {
-			case PLUS:
-			case QUESTION:
-			case MULT:
-				enterOuterAlt(_localctx, 1);
-				{
-				setState(321);
-				minMaxShortcut();
-				}
-				break;
-			case LBR:
-				enterOuterAlt(_localctx, 2);
-				{
-				setState(322);
-				minMaxRange();
-				}
-				break;
-			default:
-				throw new NoViableAltException(this);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class MinMaxShortcutContext extends ParserRuleContext {
-		public TerminalNode PLUS() { return getToken(NCIntentIdlParser.PLUS, 0); }
-		public TerminalNode QUESTION() { return getToken(NCIntentIdlParser.QUESTION, 0); }
-		public TerminalNode MULT() { return getToken(NCIntentIdlParser.MULT, 0); }
-		public MinMaxShortcutContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_minMaxShortcut; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMinMaxShortcut(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMinMaxShortcut(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMinMaxShortcut(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final MinMaxShortcutContext minMaxShortcut() throws RecognitionException {
-		MinMaxShortcutContext _localctx = new MinMaxShortcutContext(_ctx, getState());
-		enterRule(_localctx, 64, RULE_minMaxShortcut);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(325);
-			_la = _input.LA(1);
-			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PLUS) | (1L << QUESTION) | (1L << MULT))) != 0)) ) {
-			_errHandler.recoverInline(this);
-			}
-			else {
-				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
-				_errHandler.reportMatch(this);
-				consume();
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class MinMaxRangeContext extends ParserRuleContext {
-		public TerminalNode LBR() { return getToken(NCIntentIdlParser.LBR, 0); }
-		public List<TerminalNode> INT() { return getTokens(NCIntentIdlParser.INT); }
-		public TerminalNode INT(int i) {
-			return getToken(NCIntentIdlParser.INT, i);
-		}
-		public TerminalNode COMMA() { return getToken(NCIntentIdlParser.COMMA, 0); }
-		public TerminalNode RBR() { return getToken(NCIntentIdlParser.RBR, 0); }
-		public MinMaxRangeContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_minMaxRange; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterMinMaxRange(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitMinMaxRange(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitMinMaxRange(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final MinMaxRangeContext minMaxRange() throws RecognitionException {
-		MinMaxRangeContext _localctx = new MinMaxRangeContext(_ctx, getState());
-		enterRule(_localctx, 66, RULE_minMaxRange);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(327);
-			match(LBR);
-			setState(328);
-			match(INT);
-			setState(329);
-			match(COMMA);
-			setState(330);
-			match(INT);
-			setState(331);
-			match(RBR);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class IdContext extends ParserRuleContext {
-		public TerminalNode ID() { return getToken(NCIntentIdlParser.ID, 0); }
-		public TerminalNode FUN_NAME() { return getToken(NCIntentIdlParser.FUN_NAME, 0); }
-		public IdContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_id; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).enterId(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentIdlListener ) ((NCIntentIdlListener)listener).exitId(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentIdlVisitor ) return ((NCIntentIdlVisitor<? extends T>)visitor).visitId(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final IdContext id() throws RecognitionException {
-		IdContext _localctx = new IdContext(_ctx, getState());
-		enterRule(_localctx, 68, RULE_id);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(333);
-			_la = _input.LA(1);
-			if ( !(_la==FUN_NAME || _la==ID) ) {
-			_errHandler.recoverInline(this);
-			}
-			else {
-				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
-				_errHandler.reportMatch(this);
-				consume();
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
-		switch (ruleIndex) {
-		case 3:
-			return idlItems_sempred((IdlItemsContext)_localctx, predIndex);
-		case 20:
-			return terms_sempred((TermsContext)_localctx, predIndex);
-		case 25:
-			return javaFqn_sempred((JavaFqnContext)_localctx, predIndex);
-		case 27:
-			return expr_sempred((ExprContext)_localctx, predIndex);
-		case 28:
-			return paramList_sempred((ParamListContext)_localctx, predIndex);
-		}
-		return true;
-	}
-	private boolean idlItems_sempred(IdlItemsContext _localctx, int predIndex) {
-		switch (predIndex) {
-		case 0:
-			return precpred(_ctx, 1);
-		}
-		return true;
-	}
-	private boolean terms_sempred(TermsContext _localctx, int predIndex) {
-		switch (predIndex) {
-		case 1:
-			return precpred(_ctx, 1);
-		}
-		return true;
-	}
-	private boolean javaFqn_sempred(JavaFqnContext _localctx, int predIndex) {
-		switch (predIndex) {
-		case 2:
-			return precpred(_ctx, 1);
-		}
-		return true;
-	}
-	private boolean expr_sempred(ExprContext _localctx, int predIndex) {
-		switch (predIndex) {
-		case 3:
-			return precpred(_ctx, 7);
-		case 4:
-			return precpred(_ctx, 6);
-		case 5:
-			return precpred(_ctx, 5);
-		case 6:
-			return precpred(_ctx, 4);
-		case 7:
-			return precpred(_ctx, 3);
-		}
-		return true;
-	}
-	private boolean paramList_sempred(ParamListContext _localctx, int predIndex) {
-		switch (predIndex) {
-		case 8:
-			return precpred(_ctx, 1);
-		}
-		return true;
-	}
-
-	public static final String _serializedATN =
-		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\65\u0152\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\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
-		"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
-		"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
-		"\t!\4\"\t\"\4#\t#\4$\t$\3\2\3\2\3\2\3\3\5\3M\n\3\3\3\3\3\3\3\3\3\3\3\3"+
-		"\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\7\5]\n\5\f\5\16\5`\13\5\3\6\3\6\3\6"+
-		"\5\6e\n\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\n\3\n\3\n"+
-		"\3\n\5\nw\n\n\3\n\3\n\3\13\3\13\3\13\3\f\3\f\5\f\u0080\n\f\3\f\5\f\u0083"+
-		"\n\f\3\f\5\f\u0086\n\f\3\f\3\f\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\17"+
-		"\3\17\3\17\3\17\3\20\3\20\3\20\3\20\5\20\u009a\n\20\3\21\3\21\3\21\3\21"+
-		"\3\22\3\22\3\22\3\22\7\22\u00a4\n\22\f\22\16\22\u00a7\13\22\3\22\3\22"+
-		"\3\22\3\22\5\22\u00ad\n\22\3\23\3\23\3\23\3\23\3\24\3\24\5\24\u00b5\n"+
-		"\24\3\24\3\24\5\24\u00b9\n\24\3\24\5\24\u00bc\n\24\3\24\3\24\3\24\3\24"+
-		"\5\24\u00c2\n\24\3\25\3\25\3\25\3\25\7\25\u00c8\n\25\f\25\16\25\u00cb"+
-		"\13\25\3\25\3\25\3\25\3\25\5\25\u00d1\n\25\3\26\3\26\3\26\3\26\3\26\7"+
-		"\26\u00d8\n\26\f\26\16\26\u00db\13\26\3\27\3\27\5\27\u00df\n\27\3\30\3"+
-		"\30\3\31\3\31\5\31\u00e5\n\31\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u00ed"+
-		"\n\31\3\31\5\31\u00f0\n\31\3\32\5\32\u00f3\n\32\3\32\3\32\3\32\3\33\3"+
-		"\33\3\33\3\33\3\33\3\33\7\33\u00fe\n\33\f\33\16\33\u0101\13\33\3\34\3"+
-		"\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\5"+
-		"\35\u0112\n\35\3\35\5\35\u0115\n\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35"+
-		"\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\7\35\u0126\n\35\f\35\16\35\u0129"+
-		"\13\35\3\36\3\36\3\36\3\36\3\36\3\36\7\36\u0131\n\36\f\36\16\36\u0134"+
-		"\13\36\3\37\3\37\3\37\5\37\u0139\n\37\3\37\5\37\u013c\n\37\3\37\3\37\5"+
-		"\37\u0140\n\37\3 \3 \3!\3!\5!\u0146\n!\3\"\3\"\3#\3#\3#\3#\3#\3#\3$\3"+
-		"$\3$\2\7\b*\648:%\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62"+
-		"\64\668:<>@BDF\2\f\4\2\37\37((\4\2\30\30%%\3\2+-\4\2%%))\3\2\21\24\3\2"+
-		"\17\20\3\2\25\26\3\2\13\f\3\2)+\4\2\t\t\62\62\2\u015a\2H\3\2\2\2\4L\3"+
-		"\2\2\2\6S\3\2\2\2\bW\3\2\2\2\nd\3\2\2\2\ff\3\2\2\2\16k\3\2\2\2\20n\3\2"+
-		"\2\2\22r\3\2\2\2\24z\3\2\2\2\26}\3\2\2\2\30\u0089\3\2\2\2\32\u008d\3\2"+
-		"\2\2\34\u0091\3\2\2\2\36\u0095\3\2\2\2 \u009b\3\2\2\2\"\u00ac\3\2\2\2"+
-		"$\u00ae\3\2\2\2&\u00c1\3\2\2\2(\u00d0\3\2\2\2*\u00d2\3\2\2\2,\u00de\3"+
-		"\2\2\2.\u00e0\3\2\2\2\60\u00e2\3\2\2\2\62\u00f2\3\2\2\2\64\u00f7\3\2\2"+
-		"\2\66\u0102\3\2\2\28\u0114\3\2\2\2:\u012a\3\2\2\2<\u013f\3\2\2\2>\u0141"+
-		"\3\2\2\2@\u0145\3\2\2\2B\u0147\3\2\2\2D\u0149\3\2\2\2F\u014f\3\2\2\2H"+
-		"I\5\b\5\2IJ\7\2\2\3J\3\3\2\2\2KM\5\6\4\2LK\3\2\2\2LM\3\2\2\2MN\3\2\2\2"+
-		"NO\7\33\2\2OP\58\35\2PQ\7\34\2\2QR\7\2\2\3R\5\3\2\2\2ST\7 \2\2TU\5F$\2"+
-		"UV\7!\2\2V\7\3\2\2\2WX\b\5\1\2XY\5\n\6\2Y^\3\2\2\2Z[\f\3\2\2[]\5\n\6\2"+
-		"\\Z\3\2\2\2]`\3\2\2\2^\\\3\2\2\2^_\3\2\2\2_\t\3\2\2\2`^\3\2\2\2ae\5\26"+
-		"\f\2be\5\16\b\2ce\5\f\7\2da\3\2\2\2db\3\2\2\2dc\3\2\2\2e\13\3\2\2\2fg"+
-		"\7\3\2\2gh\7\31\2\2hi\5> \2ij\7\32\2\2j\r\3\2\2\2kl\5\20\t\2lm\5*\26\2"+
-		"m\17\3\2\2\2no\7\n\2\2op\7(\2\2pq\5F$\2q\21\3\2\2\2rs\7\n\2\2st\7\31\2"+
-		"\2tv\5F$\2uw\5\24\13\2vu\3\2\2\2vw\3\2\2\2wx\3\2\2\2xy\7\32\2\2y\23\3"+
-		"\2\2\2z{\7#\2\2{|\5\"\22\2|\25\3\2\2\2}\177\5\30\r\2~\u0080\5\32\16\2"+
-		"\177~\3\2\2\2\177\u0080\3\2\2\2\u0080\u0082\3\2\2\2\u0081\u0083\5\36\20"+
-		"\2\u0082\u0081\3\2\2\2\u0082\u0083\3\2\2\2\u0083\u0085\3\2\2\2\u0084\u0086"+
-		"\5 \21\2\u0085\u0084\3\2\2\2\u0085\u0086\3\2\2\2\u0086\u0087\3\2\2\2\u0087"+
-		"\u0088\5*\26\2\u0088\27\3\2\2\2\u0089\u008a\7\4\2\2\u008a\u008b\7(\2\2"+
-		"\u008b\u008c\5F$\2\u008c\31\3\2\2\2\u008d\u008e\7\5\2\2\u008e\u008f\7"+
-		"(\2\2\u008f\u0090\7\r\2\2\u0090\33\3\2\2\2\u0091\u0092\7,\2\2\u0092\u0093"+
-		"\5\62\32\2\u0093\u0094\7,\2\2\u0094\35\3\2\2\2\u0095\u0096\7\6\2\2\u0096"+
-		"\u0099\7(\2\2\u0097\u009a\5> \2\u0098\u009a\5\34\17\2\u0099\u0097\3\2"+
-		"\2\2\u0099\u0098\3\2\2\2\u009a\37\3\2\2\2\u009b\u009c\7\7\2\2\u009c\u009d"+
-		"\7(\2\2\u009d\u009e\5\"\22\2\u009e!\3\2\2\2\u009f\u00a0\7\33\2\2\u00a0"+
-		"\u00a5\5$\23\2\u00a1\u00a2\7#\2\2\u00a2\u00a4\5$\23\2\u00a3\u00a1\3\2"+
-		"\2\2\u00a4\u00a7\3\2\2\2\u00a5\u00a3\3\2\2\2\u00a5\u00a6\3\2\2\2\u00a6"+
-		"\u00a8\3\2\2\2\u00a7\u00a5\3\2\2\2\u00a8\u00a9\7\34\2\2\u00a9\u00ad\3"+
-		"\2\2\2\u00aa\u00ab\7\33\2\2\u00ab\u00ad\7\34\2\2\u00ac\u009f\3\2\2\2\u00ac"+
-		"\u00aa\3\2\2\2\u00ad#\3\2\2\2\u00ae\u00af\5> \2\u00af\u00b0\7$\2\2\u00b0"+
-		"\u00b1\5&\24\2\u00b1%\3\2\2\2\u00b2\u00c2\5> \2\u00b3\u00b5\7%\2\2\u00b4"+
-		"\u00b3\3\2\2\2\u00b4\u00b5\3\2\2\2\u00b5\u00b6\3\2\2\2\u00b6\u00b8\7/"+
-		"\2\2\u00b7\u00b9\7\60\2\2\u00b8\u00b7\3\2\2\2\u00b8\u00b9\3\2\2\2\u00b9"+
-		"\u00bb\3\2\2\2\u00ba\u00bc\7\61\2\2\u00bb\u00ba\3\2\2\2\u00bb\u00bc\3"+
-		"\2\2\2\u00bc\u00c2\3\2\2\2\u00bd\u00c2\5\"\22\2\u00be\u00c2\5(\25\2\u00bf"+
-		"\u00c2\7\r\2\2\u00c0\u00c2\7\16\2\2\u00c1\u00b2\3\2\2\2\u00c1\u00b4\3"+
-		"\2\2\2\u00c1\u00bd\3\2\2\2\u00c1\u00be\3\2\2\2\u00c1\u00bf\3\2\2\2\u00c1"+
-		"\u00c0\3\2\2\2\u00c2\'\3\2\2\2\u00c3\u00c4\7 \2\2\u00c4\u00c9\5&\24\2"+
-		"\u00c5\u00c6\7#\2\2\u00c6\u00c8\5&\24\2\u00c7\u00c5\3\2\2\2\u00c8\u00cb"+
-		"\3\2\2\2\u00c9\u00c7\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00cc\3\2\2\2\u00cb"+
-		"\u00c9\3\2\2\2\u00cc\u00cd\7!\2\2\u00cd\u00d1\3\2\2\2\u00ce\u00cf\7 \2"+
-		"\2\u00cf\u00d1\7!\2\2\u00d0\u00c3\3\2\2\2\u00d0\u00ce\3\2\2\2\u00d1)\3"+
-		"\2\2\2\u00d2\u00d3\b\26\1\2\u00d3\u00d4\5,\27\2\u00d4\u00d9\3\2\2\2\u00d5"+
-		"\u00d6\f\3\2\2\u00d6\u00d8\5,\27\2\u00d7\u00d5\3\2\2\2\u00d8\u00db\3\2"+
-		"\2\2\u00d9\u00d7\3\2\2\2\u00d9\u00da\3\2\2\2\u00da+\3\2\2\2\u00db\u00d9"+
-		"\3\2\2\2\u00dc\u00df\5\60\31\2\u00dd\u00df\5\22\n\2\u00de\u00dc\3\2\2"+
-		"\2\u00de\u00dd\3\2\2\2\u00df-\3\2\2\2\u00e0\u00e1\t\2\2\2\u00e1/\3\2\2"+
-		"\2\u00e2\u00e4\7\b\2\2\u00e3\u00e5\5\66\34\2\u00e4\u00e3\3\2\2\2\u00e4"+
-		"\u00e5\3\2\2\2\u00e5\u00e6\3\2\2\2\u00e6\u00ec\5.\30\2\u00e7\u00e8\7\33"+
-		"\2\2\u00e8\u00e9\58\35\2\u00e9\u00ea\7\34\2\2\u00ea\u00ed\3\2\2\2\u00eb"+
-		"\u00ed\5\34\17\2\u00ec\u00e7\3\2\2\2\u00ec\u00eb\3\2\2\2\u00ed\u00ef\3"+
-		"\2\2\2\u00ee\u00f0\5@!\2\u00ef\u00ee\3\2\2\2\u00ef\u00f0\3\2\2\2\u00f0"+
-		"\61\3\2\2\2\u00f1\u00f3\5\64\33\2\u00f2\u00f1\3\2\2\2\u00f2\u00f3\3\2"+
-		"\2\2\u00f3\u00f4\3\2\2\2\u00f4\u00f5\7\"\2\2\u00f5\u00f6\5F$\2\u00f6\63"+
-		"\3\2\2\2\u00f7\u00f8\b\33\1\2\u00f8\u00f9\5F$\2\u00f9\u00ff\3\2\2\2\u00fa"+
-		"\u00fb\f\3\2\2\u00fb\u00fc\7&\2\2\u00fc\u00fe\5F$\2\u00fd\u00fa\3\2\2"+
-		"\2\u00fe\u0101\3\2\2\2\u00ff\u00fd\3\2\2\2\u00ff\u0100\3\2\2\2\u0100\65"+
-		"\3\2\2\2\u0101\u00ff\3\2\2\2\u0102\u0103\7\31\2\2\u0103\u0104\5F$\2\u0104"+
-		"\u0105\7\32\2\2\u0105\67\3\2\2\2\u0106\u0107\b\35\1\2\u0107\u0108\t\3"+
-		"\2\2\u0108\u0115\58\35\13\u0109\u010a\7\31\2\2\u010a\u010b\58\35\2\u010b"+
-		"\u010c\7\32\2\2\u010c\u0115\3\2\2\2\u010d\u0115\5<\37\2\u010e\u010f\7"+
-		"\t\2\2\u010f\u0111\7\31\2\2\u0110\u0112\5:\36\2\u0111\u0110\3\2\2\2\u0111"+
-		"\u0112\3\2\2\2\u0112\u0113\3\2\2\2\u0113\u0115\7\32\2\2\u0114\u0106\3"+
-		"\2\2\2\u0114\u0109\3\2\2\2\u0114\u010d\3\2\2\2\u0114\u010e\3\2\2\2\u0115"+
-		"\u0127\3\2\2\2\u0116\u0117\f\t\2\2\u0117\u0118\t\4\2\2\u0118\u0126\58"+
-		"\35\n\u0119\u011a\f\b\2\2\u011a\u011b\t\5\2\2\u011b\u0126\58\35\t\u011c"+
-		"\u011d\f\7\2\2\u011d\u011e\t\6\2\2\u011e\u0126\58\35\b\u011f\u0120\f\6"+
-		"\2\2\u0120\u0121\t\7\2\2\u0121\u0126\58\35\7\u0122\u0123\f\5\2\2\u0123"+
-		"\u0124\t\b\2\2\u0124\u0126\58\35\6\u0125\u0116\3\2\2\2\u0125\u0119\3\2"+
-		"\2\2\u0125\u011c\3\2\2\2\u0125\u011f\3\2\2\2\u0125\u0122\3\2\2\2\u0126"+
-		"\u0129\3\2\2\2\u0127\u0125\3\2\2\2\u0127\u0128\3\2\2\2\u01289\3\2\2\2"+
-		"\u0129\u0127\3\2\2\2\u012a\u012b\b\36\1\2\u012b\u012c\58\35\2\u012c\u0132"+
-		"\3\2\2\2\u012d\u012e\f\3\2\2\u012e\u012f\7#\2\2\u012f\u0131\58\35\2\u0130"+
-		"\u012d\3\2\2\2\u0131\u0134\3\2\2\2\u0132\u0130\3\2\2\2\u0132\u0133\3\2"+
-		"\2\2\u0133;\3\2\2\2\u0134\u0132\3\2\2\2\u0135\u0140\7\16\2\2\u0136\u0138"+
-		"\7/\2\2\u0137\u0139\7\60\2\2\u0138\u0137\3\2\2\2\u0138\u0139\3\2\2\2\u0139"+
-		"\u013b\3\2\2\2\u013a\u013c\7\61\2\2\u013b\u013a\3\2\2\2\u013b\u013c\3"+
-		"\2\2\2\u013c\u0140\3\2\2\2\u013d\u0140\7\r\2\2\u013e\u0140\5> \2\u013f"+
-		"\u0135\3\2\2\2\u013f\u0136\3\2\2\2\u013f\u013d\3\2\2\2\u013f\u013e\3\2"+
-		"\2\2\u0140=\3\2\2\2\u0141\u0142\t\t\2\2\u0142?\3\2\2\2\u0143\u0146\5B"+
-		"\"\2\u0144\u0146\5D#\2\u0145\u0143\3\2\2\2\u0145\u0144\3\2\2\2\u0146A"+
-		"\3\2\2\2\u0147\u0148\t\n\2\2\u0148C\3\2\2\2\u0149\u014a\7 \2\2\u014a\u014b"+
-		"\7/\2\2\u014b\u014c\7#\2\2\u014c\u014d\7/\2\2\u014d\u014e\7!\2\2\u014e"+
-		"E\3\2\2\2\u014f\u0150\t\13\2\2\u0150G\3\2\2\2\"L^dv\177\u0082\u0085\u0099"+
-		"\u00a5\u00ac\u00b4\u00b8\u00bb\u00c1\u00c9\u00d0\u00d9\u00de\u00e4\u00ec"+
-		"\u00ef\u00f2\u00ff\u0111\u0114\u0125\u0127\u0132\u0138\u013b\u013f\u0145";
-	public static final ATN _ATN =
-		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
-	static {
-		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
-		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
-			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
-		}
-	}
-}
\ No newline at end of file
diff --git a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlVisitor.java b/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlVisitor.java
deleted file mode 100644
index f78813a..0000000
--- a/nlpcraft/gen/org/apache/nlpcraft/model/intent/compiler/antlr4/NCIntentIdlVisitor.java
+++ /dev/null
@@ -1,280 +0,0 @@
-// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/antlr4\NCIntentIdl.g4 by ANTLR 4.9.1
-package org.apache.nlpcraft.model.intent.compiler.antlr4;
-import org.antlr.v4.runtime.tree.ParseTreeVisitor;
-
-/**
- * This interface defines a complete generic visitor for a parse tree produced
- * by {@link NCIntentIdlParser}.
- *
- * @param <T> The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public interface NCIntentIdlVisitor<T> extends ParseTreeVisitor<T> {
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#idl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitIdl(NCIntentIdlParser.IdlContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#synonym}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitSynonym(NCIntentIdlParser.SynonymContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#alias}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitAlias(NCIntentIdlParser.AliasContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#idlItems}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitIdlItems(NCIntentIdlParser.IdlItemsContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#idlItem}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitIdlItem(NCIntentIdlParser.IdlItemContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#imp}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitImp(NCIntentIdlParser.ImpContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#frag}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFrag(NCIntentIdlParser.FragContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#fragId}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFragId(NCIntentIdlParser.FragIdContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#fragRef}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFragRef(NCIntentIdlParser.FragRefContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#fragMeta}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFragMeta(NCIntentIdlParser.FragMetaContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#intent}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitIntent(NCIntentIdlParser.IntentContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#intentId}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitIntentId(NCIntentIdlParser.IntentIdContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#orderedDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitOrderedDecl(NCIntentIdlParser.OrderedDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#mtdDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMtdDecl(NCIntentIdlParser.MtdDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#flowDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFlowDecl(NCIntentIdlParser.FlowDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#metaDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMetaDecl(NCIntentIdlParser.MetaDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#jsonObj}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitJsonObj(NCIntentIdlParser.JsonObjContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#jsonPair}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitJsonPair(NCIntentIdlParser.JsonPairContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#jsonVal}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitJsonVal(NCIntentIdlParser.JsonValContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#jsonArr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitJsonArr(NCIntentIdlParser.JsonArrContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#terms}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTerms(NCIntentIdlParser.TermsContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#termItem}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTermItem(NCIntentIdlParser.TermItemContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#termEq}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTermEq(NCIntentIdlParser.TermEqContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#term}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTerm(NCIntentIdlParser.TermContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#mtdRef}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMtdRef(NCIntentIdlParser.MtdRefContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#javaFqn}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitJavaFqn(NCIntentIdlParser.JavaFqnContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#termId}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTermId(NCIntentIdlParser.TermIdContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code parExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitParExpr(NCIntentIdlParser.ParExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code unaryExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitUnaryExpr(NCIntentIdlParser.UnaryExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code compExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitCompExpr(NCIntentIdlParser.CompExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code plusMinusExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitPlusMinusExpr(NCIntentIdlParser.PlusMinusExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code atomExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitAtomExpr(NCIntentIdlParser.AtomExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code multDivModExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMultDivModExpr(NCIntentIdlParser.MultDivModExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code andOrExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitAndOrExpr(NCIntentIdlParser.AndOrExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code callExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitCallExpr(NCIntentIdlParser.CallExprContext ctx);
-	/**
-	 * Visit a parse tree produced by the {@code eqNeqExpr}
-	 * labeled alternative in {@link NCIntentIdlParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitEqNeqExpr(NCIntentIdlParser.EqNeqExprContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#paramList}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitParamList(NCIntentIdlParser.ParamListContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#atom}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitAtom(NCIntentIdlParser.AtomContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#qstring}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitQstring(NCIntentIdlParser.QstringContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#minMax}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMinMax(NCIntentIdlParser.MinMaxContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#minMaxShortcut}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMinMaxShortcut(NCIntentIdlParser.MinMaxShortcutContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#minMaxRange}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMinMaxRange(NCIntentIdlParser.MinMaxRangeContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentIdlParser#id}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitId(NCIntentIdlParser.IdContext ctx);
-}
\ No newline at end of file

[incubator-nlpcraft] 05/05: Merge branch 'NLPCRAFT-206' of https://github.com/apache/incubator-nlpcraft into NLPCRAFT-206

Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d61e45dbe5bb1c0582d0e69a2c0555a390d3ad08
Merge: eb07ce0 457384e
Author: Aaron Radzinski <ar...@apache.org>
AuthorDate: Thu Mar 18 11:51:28 2021 -0700

    Merge branch 'NLPCRAFT-206' of https://github.com/apache/incubator-nlpcraft into NLPCRAFT-206

 .../probe/mgrs/nlp/enrichers/model/NCEnricherNestedModelSpec5.scala     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)