This is an automated email from the ASF dual-hosted git repository.
aradzinski pushed a commit to branch NLPCRAFT-161
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
The following commit(s) were added to refs/heads/NLPCRAFT-161 by this push:
new bb1c35a WIP.
bb1c35a is described below
commit bb1c35af5ca07c19adeed451e8d3e7738a72d54a
Author: Aaron Radzinski <[email protected]>
AuthorDate: Sat Oct 24 23:14:08 2020 -0700
WIP.
---
README.md | 2 +-
.../nlpcraft/examples/alarm/alarm_model.json | 2 +-
.../examples/lightswitch/lightswitch_model.yaml | 2 +-
.../apache/nlpcraft/examples/phone/PhoneModel.java | 1 -
.../apache/nlpcraft/examples/sql/SqlModel.scala | 36 +-
.../apache/nlpcraft/examples/time/TimeModel.java | 4 +-
.../nlpcraft/examples/weather/WeatherModel.java | 9 +-
.../model/intent/impl/NCIntentDslCompiler.scala | 27 +-
.../model/intent/impl/NCIntentSolverEngine.scala | 11 +-
.../model/intent/impl/antlr4/NCIntentDsl.g4 | 6 +-
.../model/intent/impl/antlr4/NCIntentDsl.interp | 6 +-
.../model/intent/impl/antlr4/NCIntentDsl.tokens | 128 ++--
.../impl/antlr4/NCIntentDslBaseListener.java | 26 +-
.../intent/impl/antlr4/NCIntentDslBaseVisitor.java | 189 -----
.../intent/impl/antlr4/NCIntentDslLexer.interp | 5 +-
.../model/intent/impl/antlr4/NCIntentDslLexer.java | 211 +++---
.../intent/impl/antlr4/NCIntentDslLexer.tokens | 128 ++--
.../intent/impl/antlr4/NCIntentDslListener.java | 22 +-
.../intent/impl/antlr4/NCIntentDslParser.java | 810 +++++++++------------
.../intent/impl/antlr4/NCIntentDslVisitor.java | 163 -----
.../nlpcraft/model/intent/utils/NCDslIntent.scala | 5 +-
.../nlpcraft/model/intent/utils/NCDslTerm.java | 20 +-
.../apache/nlpcraft/model/NCIntentSampleSpec.scala | 4 +-
.../conversation/NCConversationTimeoutSpec.scala | 2 +-
.../nlpcraft/model/intent/dsl/dsl_test_model.yaml | 2 +-
.../nlpcraft/models/stm/NCStmTestModel.scala | 8 +-
26 files changed, 677 insertions(+), 1152 deletions(-)
diff --git a/README.md b/README.md
index 20e7e82..177cb63 100644
--- a/README.md
+++ b/README.md
@@ -138,7 +138,7 @@ elements:
- "{<ACTION>|shut|kill|stop|eliminate} {off|out} <LIGHT>"
- "no <LIGHT>"
intents:
- - "intent=ls conv=false term(act)={groups @@ 'act'} term(loc)={id ==
'ls:loc'}*"
+ - "intent=ls term(act)~{groups @@ 'act'} term(loc)~{id == 'ls:loc'}*"
```
### Model Implementation
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json
b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json
index a076fa7..0e17713 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json
@@ -34,6 +34,6 @@
}
],
"intents": [
- "intent=alarm term={id=='x:alarm'} term(nums)={id=='nlpcraft:num' &&
~nlpcraft:num:unittype=='datetime' &&
~nlpcraft:num:isequalcondition==true}[0,7]"
+ "intent=alarm term~{id=='x:alarm'} term(nums)~{id=='nlpcraft:num' &&
~nlpcraft:num:unittype=='datetime' &&
~nlpcraft:num:isequalcondition==true}[0,7]"
]
}
\ No newline at end of file
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/lightswitch/lightswitch_model.yaml
b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/lightswitch/lightswitch_model.yaml
index 94087f4..44419c5 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/lightswitch/lightswitch_model.yaml
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/lightswitch/lightswitch_model.yaml
@@ -52,4 +52,4 @@ elements:
- "{<ACTION>|shut|kill|stop|eliminate} {off|out} <LIGHT>"
- "no <LIGHT>"
intents:
- - "intent=ls conv=false term(act)={groups @@ 'act'} term(loc)={id ==
'ls:loc'}*"
\ No newline at end of file
+ - "intent=ls term(act)={groups @@ 'act'} term(loc)={id == 'ls:loc'}*"
\ No newline at end of file
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 05c94aa..250c492 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
@@ -51,7 +51,6 @@ public class PhoneModel extends NCModelFileAdapter {
*/
@NCIntent("" +
"intent=action " +
- "conv=false " + // No conversation support.
"term={id == 'phone:act'} " +
// Either organization, person or a phone number (or a combination of).
"term(rcpt)={id == 'google:organization' || id == 'google:person' ||
id == 'google:phone_number'}[1,3]"
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/sql/SqlModel.scala
b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/sql/SqlModel.scala
index 931f7ac..a837967 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/sql/SqlModel.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/sql/SqlModel.scala
@@ -277,15 +277,15 @@ class SqlModel extends
NCModelFileAdapter("org/apache/nlpcraft/examples/sql/sql_
* @param limitTokOpt Limit token. Optional.
*/
@NCIntent(
- "intent=commonReport conv=true " +
- "term(tbls)={groups @@ 'table'}[0,7] " +
- "term(cols)={id == 'col:date' || id == 'col:num' || id ==
'col:varchar'}[0,7] " +
- "term(condNums)={id == 'condition:num'}[0,7] " +
- "term(condVals)={id == 'condition:value'}[0,7] " +
- "term(condDates)={id == 'condition:date'}[0,7] " +
- "term(condFreeDate)={id == 'nlpcraft:date'}? " +
- "term(sort)={id == 'nlpcraft:sort'}? " +
- "term(limit)={id == 'nlpcraft:limit'}?"
+ "intent=commonReport " +
+ "term(tbls)~{groups @@ 'table'}[0,7] " +
+ "term(cols)~{id == 'col:date' || id == 'col:num' || id ==
'col:varchar'}[0,7] " +
+ "term(condNums)~{id == 'condition:num'}[0,7] " +
+ "term(condVals)~{id == 'condition:value'}[0,7] " +
+ "term(condDates)~{id == 'condition:date'}[0,7] " +
+ "term(condFreeDate)~{id == 'nlpcraft:date'}? " +
+ "term(sort)~{id == 'nlpcraft:sort'}? " +
+ "term(limit)~{id == 'nlpcraft:limit'}?"
)
@NCIntentSample(Array(
"order date, please!",
@@ -339,15 +339,15 @@ class SqlModel extends
NCModelFileAdapter("org/apache/nlpcraft/examples/sql/sql_
* @param limitTokOpt Limit token. Optional.
*/
@NCIntent(
- "intent=customSortReport conv=true " +
- "term(sort)={id == 'sort:best' || id == 'sort:worst'} " +
- "term(tbls)={groups @@ 'table'}[0,7] " +
- "term(cols)={id == 'col:date' || id == 'col:num' || id ==
'col:varchar'}[0,7] " +
- "term(condNums)={id == 'condition:num'}[0,7] " +
- "term(condVals)={id == 'condition:value'}[0,7] " +
- "term(condDates)={id == 'condition:date'}[0,7] " +
- "term(condFreeDate)={id == 'nlpcraft:date'}? " +
- "term(limit)={id == 'nlpcraft:limit'}?"
+ "intent=customSortReport " +
+ "term(sort)~{id == 'sort:best' || id == 'sort:worst'} " +
+ "term(tbls)~{groups @@ 'table'}[0,7] " +
+ "term(cols)~{id == 'col:date' || id == 'col:num' || id ==
'col:varchar'}[0,7] " +
+ "term(condNums)~{id == 'condition:num'}[0,7] " +
+ "term(condVals)~{id == 'condition:value'}[0,7] " +
+ "term(condDates)~{id == 'condition:date'}[0,7] " +
+ "term(condFreeDate)~{id == 'nlpcraft:date'}? " +
+ "term(limit)~{id == 'nlpcraft:limit'}?"
)
@NCIntentSample(Array(
"What are the least performing categories for the last quarter?"
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.java
index 696529e..63b7090 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.java
@@ -92,7 +92,7 @@ public class TimeModel extends NCModelFileAdapter {
* @param cityTok Token for 'geo' term.
* @return Query result.
*/
- @NCIntent("intent=intent2 conv=true term={id=='x:time'}
term(city)={id=='nlpcraft:city'}")
+ @NCIntent("intent=intent2 term~{id=='x:time'}
term(city)~{id=='nlpcraft:city'}")
@NCIntentSample({
"What time is it now in New York City?",
"What's the current time in Moscow?",
@@ -119,7 +119,7 @@ public class TimeModel extends NCModelFileAdapter {
* @param ctx Intent solver context.
* @return Query result.
*/
- @NCIntent("intent=intent1 conv=false term={id=='x:time'}")
+ @NCIntent("intent=intent1 term={id=='x:time'}")
@NCIntentSample({
"What's the local time?"
})
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 872cb03..46dcfad 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
@@ -124,11 +124,10 @@ public class WeatherModel extends NCModelFileAdapter {
*/
@NCIntent(
"intent=req " +
- "conv=true " + // Support conversation context (i.e. short term
memory).
- "term={id == 'wt:phen'}* " + // Zero or more weather phenomenon.
- "term(ind)={groups @@ 'indicator'}* " + // Optional indicator words
(zero or more).
- "term(city)={id == 'nlpcraft:city'}? " + // Optional city.
- "term(date)={id == 'nlpcraft:date'}?" // Optional date (overrides
indicator words).
+ "term~{id == 'wt:phen'}* " + // Zero or more weather phenomenon.
+ "term(ind)~{groups @@ 'indicator'}* " + // Optional indicator words
(zero or more).
+ "term(city)~{id == 'nlpcraft:city'}? " + // Optional city.
+ "term(date)~{id == 'nlpcraft:date'}?" // Optional date (overrides
indicator words).
)
// NOTE: each samples group will reset conversation STM.
@NCIntentSample({
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
index fa56ba2..edb8591 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
@@ -43,7 +43,6 @@ object NCIntentDslCompiler extends LazyLogging {
*/
class FiniteStateMachine extends NCIntentDslBaseListener {
// Intent components.
- private var conv: Boolean = true
private var ordered: Boolean = false
private var id: String = _
private val terms = ArrayBuffer.empty[NCDslTerm] // Accumulator for
parsed terms.
@@ -52,6 +51,7 @@ object NCIntentDslCompiler extends LazyLogging {
// Currently parsed term.
private var termId: String = _
+ private var termConv: Boolean = _
// Current min/max quantifier.
private var min = 1
@@ -70,7 +70,7 @@ object NCIntentDslCompiler extends LazyLogging {
require(id != null)
require(terms.nonEmpty)
- NCDslIntent(id, conv, ordered, flow.toArray, terms.toArray)
+ NCDslIntent(id, ordered, flow.toArray, terms.toArray)
}
/**
@@ -101,7 +101,11 @@ object NCIntentDslCompiler extends LazyLogging {
override def exitTermId(ctx: NCIntentDslParser.TermIdContext): Unit = {
termId = ctx.ID().getText
}
-
+
+ override def exitTermEq(ctx: NCIntentDslParser.TermEqContext): Unit = {
+ termConv = ctx.TILDA() != null
+ }
+
override def exitMinMaxRange(ctx:
NCIntentDslParser.MinMaxRangeContext): Unit = {
val minStr = ctx.getChild(1).getText
val maxStr = ctx.getChild(3).getText
@@ -118,10 +122,6 @@ object NCIntentDslCompiler extends LazyLogging {
id = ctx.ID().getText
}
- override def exitConvDecl(ctx: NCIntentDslParser.ConvDeclContext):
Unit = {
- conv = ctx.BOOL().getText == "true"
- }
-
override def exitOrderedDecl(ctx:
NCIntentDslParser.OrderedDeclContext): Unit = {
ordered = ctx.BOOL().getText == "true"
}
@@ -131,10 +131,15 @@ object NCIntentDslCompiler extends LazyLogging {
val p = predStack.pop
- terms += new NCDslTerm(termId, new
java.util.function.Function[NCToken, java.lang.Boolean]() {
- override def apply(tok: NCToken): java.lang.Boolean =
p.apply(tok)
- override def toString: String = p.toString()
//ctx.item().getText
- }, min, max)
+ terms += new NCDslTerm(
+ termId,
+ new java.util.function.Function[NCToken, java.lang.Boolean]() {
+ override def apply(tok: NCToken): java.lang.Boolean =
p.apply(tok)
+ override def toString: String = p.toString()
//ctx.item().getText
+ },
+ min,
+ max,
+ termConv)
// Reset.
termId = null
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
index e42c92c..db41dd0 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
@@ -114,7 +114,6 @@ object NCIntentSolverEngine extends LazyLogging with
NCOpenCensusTrace {
usedTokens: List[UsedToken],
weight: Weight
) {
- lazy val minIndex: Int = usedTokens.minBy(_.token.index).token.index
lazy val maxIndex: Int = usedTokens.maxBy(_.token.index).token.index
}
@@ -163,7 +162,6 @@ object NCIntentSolverEngine extends LazyLogging with
NCOpenCensusTrace {
variantIdx: Int // Variant index.
)
val req = ctx.getRequest
- val conv = ctx.getConversation.getTokens
startScopedSpan("solve",
"srvReqId" → req.getServerRequestId,
@@ -187,17 +185,17 @@ object NCIntentSolverEngine extends LazyLogging with
NCOpenCensusTrace {
// Isolated conversation tokens.
val convToks =
- if (intent.conv)
+ if (intent.terms.exists(_.isConversational))
Seq.empty[UsedToken] ++
// We shouldn't mix tokens with same group
from conversation
// history and processed sentence.
- conv.
+ ctx.getConversation.getTokens.
filter(t ⇒ {
val convTokGroups =
t.getGroups.sorted
!senTokGroups.exists(convTokGroups.containsSlice)
}).
- map(UsedToken(false, true, _))
+ map(UsedToken(used = false, conv =
true, _))
else
Seq.empty[UsedToken]
@@ -418,7 +416,7 @@ object NCIntentSolverEngine extends LazyLogging with
NCOpenCensusTrace {
solveTerm(
term,
senToks,
- convToks
+ if (term.isConversational) convToks else Seq.empty
) match {
case Some(termMatch) ⇒
if (ordered && lastTermMatch != null &&
lastTermMatch.maxIndex > termMatch.maxIndex)
@@ -511,6 +509,7 @@ object NCIntentSolverEngine extends LazyLogging with
NCOpenCensusTrace {
termWeight ++= t._2
Some(TermMatch(term.getId, termToks, termWeight))
+
case None ⇒
None
}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
index 5486689..b3025c4 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
@@ -17,9 +17,8 @@
grammar NCIntentDsl;
-intent: intentId convDecl? orderedDecl? flowDecl? terms EOF;
+intent: intentId orderedDecl? flowDecl? terms EOF;
intentId: 'intent' EQ ID;
-convDecl: 'conv' EQ BOOL;
orderedDecl: 'ordered' EQ BOOL;
flowDecl: 'flow' EQ SQUOTE flow SQUOTE;
flow
@@ -37,7 +36,8 @@ idList
| idList VERT ID
;
terms: term | terms term;
-term: 'term' termId? EQ LCURLY item RCURLY minMax?;
+termEq: EQ | TILDA;
+term: 'term' termId? termEq LCURLY item RCURLY minMax?;
termId: LPAREN ID RPAREN;
item
: predicate
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.interp
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.interp
index 6ea233e..40e4f1c 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.interp
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.interp
@@ -1,7 +1,6 @@
token literal names:
null
'intent'
-'conv'
'ordered'
'flow'
'term'
@@ -59,7 +58,6 @@ null
null
null
null
-null
PRED_OP
AND
OR
@@ -93,7 +91,6 @@ ErrorCharacter
rule names:
intent
intentId
-convDecl
orderedDecl
flowDecl
flow
@@ -101,6 +98,7 @@ flowItem
flowItemIds
idList
terms
+termEq
term
termId
item
@@ -119,4 +117,4 @@ minMaxRange
atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 45, 268, 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, 3, 2, 3, 2, 5, 2, 55, 10, 2, 3, 2, 5, 2, 58, 10, 2, 3, 2, 5,
2, 61, 10, 2, 3, 2, 3, 2, [...]
\ No newline at end of file
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 44, 263, 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, 3, 2, 3, 2, 5, 2, 55, 10, 2, 3, 2, 5, 2, 58, 10, 2, 3, 2, 3,
2, 3, 2, 3, 3, 3, 3, 3, 3 [...]
\ No newline at end of file
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.tokens
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.tokens
index 8ae22bf..e2c3312 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.tokens
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.tokens
@@ -11,69 +11,67 @@ T__9=10
T__10=11
T__11=12
T__12=13
-T__13=14
-PRED_OP=15
-AND=16
-OR=17
-VERT=18
-EXCL=19
-LPAREN=20
-RPAREN=21
-LCURLY=22
-RCURLY=23
-SQUOTE=24
-TILDA=25
-RIGHT=26
-LBR=27
-RBR=28
-COMMA=29
-COLON=30
-MINUS=31
-DOT=32
-UNDERSCORE=33
-EQ=34
-PLUS=35
-QUESTION=36
-STAR=37
-BOOL=38
-INT=39
-EXP=40
-ID=41
-WS=42
-ErrorCharacter=43
+PRED_OP=14
+AND=15
+OR=16
+VERT=17
+EXCL=18
+LPAREN=19
+RPAREN=20
+LCURLY=21
+RCURLY=22
+SQUOTE=23
+TILDA=24
+RIGHT=25
+LBR=26
+RBR=27
+COMMA=28
+COLON=29
+MINUS=30
+DOT=31
+UNDERSCORE=32
+EQ=33
+PLUS=34
+QUESTION=35
+STAR=36
+BOOL=37
+INT=38
+EXP=39
+ID=40
+WS=41
+ErrorCharacter=42
'intent'=1
-'conv'=2
-'ordered'=3
-'flow'=4
-'term'=5
-'id'=6
-'aliases'=7
-'startidx'=8
-'endidx'=9
-'parent'=10
-'groups'=11
-'ancestors'=12
-'value'=13
-'null'=14
-'&&'=16
-'||'=17
-'|'=18
-'!'=19
-'('=20
-')'=21
-'{'=22
-'}'=23
-'\''=24
-'~'=25
-'>>'=26
-'['=27
-']'=28
-','=29
-':'=30
-'-'=31
-'.'=32
-'_'=33
-'='=34
-'+'=35
-'?'=36
-'*'=37
+'ordered'=2
+'flow'=3
+'term'=4
+'id'=5
+'aliases'=6
+'startidx'=7
+'endidx'=8
+'parent'=9
+'groups'=10
+'ancestors'=11
+'value'=12
+'null'=13
+'&&'=15
+'||'=16
+'|'=17
+'!'=18
+'('=19
+')'=20
+'{'=21
+'}'=22
+'\''=23
+'~'=24
+'>>'=25
+'['=26
+']'=27
+','=28
+':'=29
+'-'=30
+'.'=31
+'_'=32
+'='=33
+'+'=34
+'?'=35
+'*'=36
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseListener.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseListener.java
index 14bfb7d..32fdf9c 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseListener.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseListener.java
@@ -1,4 +1,4 @@
-// Generated from
/Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
by ANTLR 4.8
+// Generated from C:/Users/Nikita
Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4\NCIntentDsl.g4
by ANTLR 4.8
package org.apache.nlpcraft.model.intent.impl.antlr4;
import org.antlr.v4.runtime.ParserRuleContext;
@@ -40,18 +40,6 @@ public class NCIntentDslBaseListener implements
NCIntentDslListener {
*
* <p>The default implementation does nothing.</p>
*/
- @Override public void enterConvDecl(NCIntentDslParser.ConvDeclContext
ctx) { }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation does nothing.</p>
- */
- @Override public void exitConvDecl(NCIntentDslParser.ConvDeclContext
ctx) { }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation does nothing.</p>
- */
@Override public void
enterOrderedDecl(NCIntentDslParser.OrderedDeclContext ctx) { }
/**
* {@inheritDoc}
@@ -136,6 +124,18 @@ public class NCIntentDslBaseListener implements
NCIntentDslListener {
*
* <p>The default implementation does nothing.</p>
*/
+ @Override public void enterTermEq(NCIntentDslParser.TermEqContext ctx)
{ }
+ /**
+ * {@inheritDoc}
+ *
+ * <p>The default implementation does nothing.</p>
+ */
+ @Override public void exitTermEq(NCIntentDslParser.TermEqContext ctx) {
}
+ /**
+ * {@inheritDoc}
+ *
+ * <p>The default implementation does nothing.</p>
+ */
@Override public void enterTerm(NCIntentDslParser.TermContext ctx) { }
/**
* {@inheritDoc}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseVisitor.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseVisitor.java
deleted file mode 100644
index 5865db4..0000000
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseVisitor.java
+++ /dev/null
@@ -1,189 +0,0 @@
-// Generated from
/Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
by ANTLR 4.8
-package org.apache.nlpcraft.model.intent.impl.antlr4;
-import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
-
-/**
- * This class provides an empty implementation of {@link NCIntentDslVisitor},
- * 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> {
- /**
- * {@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); }
- /**
- * {@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); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitConvDecl(NCIntentDslParser.ConvDeclContext 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); }
- /**
- * {@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); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitFlow(NCIntentDslParser.FlowContext ctx) {
return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitFlowItem(NCIntentDslParser.FlowItemContext ctx)
{ return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T
visitFlowItemIds(NCIntentDslParser.FlowItemIdsContext ctx) { return
visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitIdList(NCIntentDslParser.IdListContext 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); }
- /**
- * {@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); }
- /**
- * {@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); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitItem(NCIntentDslParser.ItemContext ctx) {
return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitPredicate(NCIntentDslParser.PredicateContext
ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitLval(NCIntentDslParser.LvalContext ctx) {
return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitLvalQual(NCIntentDslParser.LvalQualContext ctx)
{ return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitLvalPart(NCIntentDslParser.LvalPartContext ctx)
{ return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitRvalSingle(NCIntentDslParser.RvalSingleContext
ctx) { return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitRval(NCIntentDslParser.RvalContext ctx) {
return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitRvalList(NCIntentDslParser.RvalListContext ctx)
{ return visitChildren(ctx); }
- /**
- * {@inheritDoc}
- *
- * <p>The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.</p>
- */
- @Override public T visitMeta(NCIntentDslParser.MetaContext 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); }
- /**
- * {@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); }
- /**
- * {@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); }
- /**
- * {@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); }
-}
\ No newline at end of file
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.interp
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.interp
index fcb2a0c..4fb76df 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.interp
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.interp
@@ -1,7 +1,6 @@
token literal names:
null
'intent'
-'conv'
'ordered'
'flow'
'term'
@@ -59,7 +58,6 @@ null
null
null
null
-null
PRED_OP
AND
OR
@@ -104,7 +102,6 @@ T__9
T__10
T__11
T__12
-T__13
PRED_OP
AND
OR
@@ -143,4 +140,4 @@ mode names:
DEFAULT_MODE
atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 45, 294, 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
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 44, 287, 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/impl/antlr4/NCIntentDslLexer.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.java
index 1f458a1..a7c7c26 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.java
@@ -1,10 +1,13 @@
-// Generated from
/Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
by ANTLR 4.8
+// Generated from C:/Users/Nikita
Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4\NCIntentDsl.g4
by ANTLR 4.8
package org.apache.nlpcraft.model.intent.impl.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 NCIntentDslLexer extends Lexer {
@@ -15,11 +18,11 @@ public class NCIntentDslLexer extends Lexer {
new PredictionContextCache();
public static final int
T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8,
T__8=9,
- T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, PRED_OP=15,
AND=16, OR=17,
- VERT=18, EXCL=19, LPAREN=20, RPAREN=21, LCURLY=22, RCURLY=23,
SQUOTE=24,
- TILDA=25, RIGHT=26, LBR=27, RBR=28, COMMA=29, COLON=30,
MINUS=31, DOT=32,
- UNDERSCORE=33, EQ=34, PLUS=35, QUESTION=36, STAR=37, BOOL=38,
INT=39,
- EXP=40, ID=41, WS=42, ErrorCharacter=43;
+ T__9=10, T__10=11, T__11=12, T__12=13, PRED_OP=14, AND=15,
OR=16, VERT=17,
+ EXCL=18, LPAREN=19, RPAREN=20, LCURLY=21, RCURLY=22, SQUOTE=23,
TILDA=24,
+ RIGHT=25, LBR=26, RBR=27, COMMA=28, COLON=29, MINUS=30, DOT=31,
UNDERSCORE=32,
+ EQ=33, PLUS=34, QUESTION=35, STAR=36, BOOL=37, INT=38, EXP=39,
ID=40,
+ WS=41, ErrorCharacter=42;
public static String[] channelNames = {
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
};
@@ -31,9 +34,9 @@ public class NCIntentDslLexer extends Lexer {
private static String[] makeRuleNames() {
return new String[] {
"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6",
"T__7", "T__8",
- "T__9", "T__10", "T__11", "T__12", "T__13", "PRED_OP",
"AND", "OR", "VERT",
- "EXCL", "LPAREN", "RPAREN", "LCURLY", "RCURLY",
"SQUOTE", "TILDA", "RIGHT",
- "LBR", "RBR", "COMMA", "COLON", "MINUS", "DOT",
"UNDERSCORE", "EQ", "PLUS",
+ "T__9", "T__10", "T__11", "T__12", "PRED_OP", "AND",
"OR", "VERT", "EXCL",
+ "LPAREN", "RPAREN", "LCURLY", "RCURLY", "SQUOTE",
"TILDA", "RIGHT", "LBR",
+ "RBR", "COMMA", "COLON", "MINUS", "DOT", "UNDERSCORE",
"EQ", "PLUS",
"QUESTION", "STAR", "BOOL", "INT", "EXP", "ID", "WS",
"ErrorCharacter"
};
}
@@ -41,18 +44,18 @@ public class NCIntentDslLexer extends Lexer {
private static String[] makeLiteralNames() {
return new String[] {
- null, "'intent'", "'conv'", "'ordered'", "'flow'",
"'term'", "'id'",
- "'aliases'", "'startidx'", "'endidx'", "'parent'",
"'groups'", "'ancestors'",
- "'value'", "'null'", null, "'&&'", "'||'", "'|'",
"'!'", "'('", "')'",
- "'{'", "'}'", "'''", "'~'", "'>>'", "'['", "']'",
"','", "':'", "'-'",
- "'.'", "'_'", "'='", "'+'", "'?'", "'*'"
+ null, "'intent'", "'ordered'", "'flow'", "'term'",
"'id'", "'aliases'",
+ "'startidx'", "'endidx'", "'parent'", "'groups'",
"'ancestors'", "'value'",
+ "'null'", null, "'&&'", "'||'", "'|'", "'!'", "'('",
"')'", "'{'", "'}'",
+ "'''", "'~'", "'>>'", "'['", "']'", "','", "':'",
"'-'", "'.'", "'_'",
+ "'='", "'+'", "'?'", "'*'"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
private static String[] makeSymbolicNames() {
return new String[] {
null, null, null, null, null, null, null, null, null,
null, null, null,
- null, null, null, "PRED_OP", "AND", "OR", "VERT",
"EXCL", "LPAREN", "RPAREN",
+ null, null, "PRED_OP", "AND", "OR", "VERT", "EXCL",
"LPAREN", "RPAREN",
"LCURLY", "RCURLY", "SQUOTE", "TILDA", "RIGHT", "LBR",
"RBR", "COMMA",
"COLON", "MINUS", "DOT", "UNDERSCORE", "EQ", "PLUS",
"QUESTION", "STAR",
"BOOL", "INT", "EXP", "ID", "WS", "ErrorCharacter"
@@ -117,100 +120,98 @@ public class NCIntentDslLexer extends Lexer {
public ATN getATN() { return _ATN; }
public static final String _serializedATN =
-
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2-\u0126\b\1\4\2\t"+
+
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2,\u011f\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,\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\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\b"+
-
"\3\b\3\b\3\b\3\b\3\b\3\b\3\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\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f"+
-
"\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16"+
-
"\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20"+
-
"\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00c3\n\20\3\21\3\21\3\21\3\22"+
-
"\3\22\3\22\3\23\3\23\3\24\3\24\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\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\'\5\'\u00fd\n\'\3(\3(\3(\7(\u0102\n(\f(\16(\u0105\13(\5"+
-
"(\u0107\n(\3)\3)\6)\u010b\n)\r)\16)\u010c\3*\3*\6*\u0111\n*\r*\16*\u0112"+
-
"\3*\3*\3*\3*\7*\u0119\n*\f*\16*\u011c\13*\3+\6+\u011f\n+\r+\16+\u0120"+
-
"\3+\3+\3,\3,\2\2-\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-\3\2\t\4\2>>@@\3\2\63;"+
-
"\4\2\62;aa\3\2\62;\4\2C\\c|\5\2\62;C\\c|\5\2\13\f\16\17\"\"\2\u0136\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\3Y\3\2\2\2\5`\3\2\2\2\7e\3\2\2\2\tm\3\2\2\2\13r\3"+
-
"\2\2\2\rw\3\2\2\2\17z\3\2\2\2\21\u0082\3\2\2\2\23\u008b\3\2\2\2\25\u0092"+
-
"\3\2\2\2\27\u0099\3\2\2\2\31\u00a0\3\2\2\2\33\u00aa\3\2\2\2\35\u00b0\3"+
-
"\2\2\2\37\u00c2\3\2\2\2!\u00c4\3\2\2\2#\u00c7\3\2\2\2%\u00ca\3\2\2\2\'"+
-
"\u00cc\3\2\2\2)\u00ce\3\2\2\2+\u00d0\3\2\2\2-\u00d2\3\2\2\2/\u00d4\3\2"+
-
"\2\2\61\u00d6\3\2\2\2\63\u00d8\3\2\2\2\65\u00da\3\2\2\2\67\u00dd\3\2\2"+
-
"\29\u00df\3\2\2\2;\u00e1\3\2\2\2=\u00e3\3\2\2\2?\u00e5\3\2\2\2A\u00e7"+
-
"\3\2\2\2C\u00e9\3\2\2\2E\u00eb\3\2\2\2G\u00ed\3\2\2\2I\u00ef\3\2\2\2K"+
-
"\u00f1\3\2\2\2M\u00fc\3\2\2\2O\u0106\3\2\2\2Q\u0108\3\2\2\2S\u0110\3\2"+
-
"\2\2U\u011e\3\2\2\2W\u0124\3\2\2\2YZ\7k\2\2Z[\7p\2\2[\\\7v\2\2\\]\7g\2"+
-
"\2]^\7p\2\2^_\7v\2\2_\4\3\2\2\2`a\7e\2\2ab\7q\2\2bc\7p\2\2cd\7x\2\2d\6"+
-
"\3\2\2\2ef\7q\2\2fg\7t\2\2gh\7f\2\2hi\7g\2\2ij\7t\2\2jk\7g\2\2kl\7f\2"+
-
"\2l\b\3\2\2\2mn\7h\2\2no\7n\2\2op\7q\2\2pq\7y\2\2q\n\3\2\2\2rs\7v\2\2"+
-
"st\7g\2\2tu\7t\2\2uv\7o\2\2v\f\3\2\2\2wx\7k\2\2xy\7f\2\2y\16\3\2\2\2z"+
-
"{\7c\2\2{|\7n\2\2|}\7k\2\2}~\7c\2\2~\177\7u\2\2\177\u0080\7g\2\2\u0080"+
-
"\u0081\7u\2\2\u0081\20\3\2\2\2\u0082\u0083\7u\2\2\u0083\u0084\7v\2\2\u0084"+
-
"\u0085\7c\2\2\u0085\u0086\7t\2\2\u0086\u0087\7v\2\2\u0087\u0088\7k\2\2"+
-
"\u0088\u0089\7f\2\2\u0089\u008a\7z\2\2\u008a\22\3\2\2\2\u008b\u008c\7"+
-
"g\2\2\u008c\u008d\7p\2\2\u008d\u008e\7f\2\2\u008e\u008f\7k\2\2\u008f\u0090"+
-
"\7f\2\2\u0090\u0091\7z\2\2\u0091\24\3\2\2\2\u0092\u0093\7r\2\2\u0093\u0094"+
-
"\7c\2\2\u0094\u0095\7t\2\2\u0095\u0096\7g\2\2\u0096\u0097\7p\2\2\u0097"+
-
"\u0098\7v\2\2\u0098\26\3\2\2\2\u0099\u009a\7i\2\2\u009a\u009b\7t\2\2\u009b"+
-
"\u009c\7q\2\2\u009c\u009d\7w\2\2\u009d\u009e\7r\2\2\u009e\u009f\7u\2\2"+
-
"\u009f\30\3\2\2\2\u00a0\u00a1\7c\2\2\u00a1\u00a2\7p\2\2\u00a2\u00a3\7"+
-
"e\2\2\u00a3\u00a4\7g\2\2\u00a4\u00a5\7u\2\2\u00a5\u00a6\7v\2\2\u00a6\u00a7"+
-
"\7q\2\2\u00a7\u00a8\7t\2\2\u00a8\u00a9\7u\2\2\u00a9\32\3\2\2\2\u00aa\u00ab"+
-
"\7x\2\2\u00ab\u00ac\7c\2\2\u00ac\u00ad\7n\2\2\u00ad\u00ae\7w\2\2\u00ae"+
-
"\u00af\7g\2\2\u00af\34\3\2\2\2\u00b0\u00b1\7p\2\2\u00b1\u00b2\7w\2\2\u00b2"+
-
"\u00b3\7n\2\2\u00b3\u00b4\7n\2\2\u00b4\36\3\2\2\2\u00b5\u00b6\7?\2\2\u00b6"+
-
"\u00c3\7?\2\2\u00b7\u00b8\7#\2\2\u00b8\u00c3\7?\2\2\u00b9\u00ba\7@\2\2"+
-
"\u00ba\u00c3\7?\2\2\u00bb\u00bc\7>\2\2\u00bc\u00c3\7?\2\2\u00bd\u00c3"+
-
"\t\2\2\2\u00be\u00bf\7B\2\2\u00bf\u00c3\7B\2\2\u00c0\u00c1\7#\2\2\u00c1"+
-
"\u00c3\7B\2\2\u00c2\u00b5\3\2\2\2\u00c2\u00b7\3\2\2\2\u00c2\u00b9\3\2"+
-
"\2\2\u00c2\u00bb\3\2\2\2\u00c2\u00bd\3\2\2\2\u00c2\u00be\3\2\2\2\u00c2"+
- "\u00c0\3\2\2\2\u00c3
\3\2\2\2\u00c4\u00c5\7(\2\2\u00c5\u00c6\7(\2\2\u00c6"+
-
"\"\3\2\2\2\u00c7\u00c8\7~\2\2\u00c8\u00c9\7~\2\2\u00c9$\3\2\2\2\u00ca"+
-
"\u00cb\7~\2\2\u00cb&\3\2\2\2\u00cc\u00cd\7#\2\2\u00cd(\3\2\2\2\u00ce\u00cf"+
-
"\7*\2\2\u00cf*\3\2\2\2\u00d0\u00d1\7+\2\2\u00d1,\3\2\2\2\u00d2\u00d3\7"+
-
"}\2\2\u00d3.\3\2\2\2\u00d4\u00d5\7\177\2\2\u00d5\60\3\2\2\2\u00d6\u00d7"+
-
"\7)\2\2\u00d7\62\3\2\2\2\u00d8\u00d9\7\u0080\2\2\u00d9\64\3\2\2\2\u00da"+
-
"\u00db\7@\2\2\u00db\u00dc\7@\2\2\u00dc\66\3\2\2\2\u00dd\u00de\7]\2\2\u00de"+
-
"8\3\2\2\2\u00df\u00e0\7_\2\2\u00e0:\3\2\2\2\u00e1\u00e2\7.\2\2\u00e2<"+
-
"\3\2\2\2\u00e3\u00e4\7<\2\2\u00e4>\3\2\2\2\u00e5\u00e6\7/\2\2\u00e6@\3"+
-
"\2\2\2\u00e7\u00e8\7\60\2\2\u00e8B\3\2\2\2\u00e9\u00ea\7a\2\2\u00eaD\3"+
-
"\2\2\2\u00eb\u00ec\7?\2\2\u00ecF\3\2\2\2\u00ed\u00ee\7-\2\2\u00eeH\3\2"+
-
"\2\2\u00ef\u00f0\7A\2\2\u00f0J\3\2\2\2\u00f1\u00f2\7,\2\2\u00f2L\3\2\2"+
-
"\2\u00f3\u00f4\7v\2\2\u00f4\u00f5\7t\2\2\u00f5\u00f6\7w\2\2\u00f6\u00fd"+
-
"\7g\2\2\u00f7\u00f8\7h\2\2\u00f8\u00f9\7c\2\2\u00f9\u00fa\7n\2\2\u00fa"+
-
"\u00fb\7u\2\2\u00fb\u00fd\7g\2\2\u00fc\u00f3\3\2\2\2\u00fc\u00f7\3\2\2"+
-
"\2\u00fdN\3\2\2\2\u00fe\u0107\7\62\2\2\u00ff\u0103\t\3\2\2\u0100\u0102"+
-
"\t\4\2\2\u0101\u0100\3\2\2\2\u0102\u0105\3\2\2\2\u0103\u0101\3\2\2\2\u0103"+
-
"\u0104\3\2\2\2\u0104\u0107\3\2\2\2\u0105\u0103\3\2\2\2\u0106\u00fe\3\2"+
-
"\2\2\u0106\u00ff\3\2\2\2\u0107P\3\2\2\2\u0108\u010a\5A!\2\u0109\u010b"+
-
"\t\5\2\2\u010a\u0109\3\2\2\2\u010b\u010c\3\2\2\2\u010c\u010a\3\2\2\2\u010c"+
-
"\u010d\3\2\2\2\u010dR\3\2\2\2\u010e\u0111\5C\"\2\u010f\u0111\t\6\2\2\u0110"+
-
"\u010e\3\2\2\2\u0110\u010f\3\2\2\2\u0111\u0112\3\2\2\2\u0112\u0110\3\2"+
-
"\2\2\u0112\u0113\3\2\2\2\u0113\u011a\3\2\2\2\u0114\u0119\t\7\2\2\u0115"+
- "\u0119\5=\37\2\u0116\u0119\5?
\2\u0117\u0119\5C\"\2\u0118\u0114\3\2\2"+
-
"\2\u0118\u0115\3\2\2\2\u0118\u0116\3\2\2\2\u0118\u0117\3\2\2\2\u0119\u011c"+
-
"\3\2\2\2\u011a\u0118\3\2\2\2\u011a\u011b\3\2\2\2\u011bT\3\2\2\2\u011c"+
-
"\u011a\3\2\2\2\u011d\u011f\t\b\2\2\u011e\u011d\3\2\2\2\u011f\u0120\3\2"+
-
"\2\2\u0120\u011e\3\2\2\2\u0120\u0121\3\2\2\2\u0121\u0122\3\2\2\2\u0122"+
-
"\u0123\b+\2\2\u0123V\3\2\2\2\u0124\u0125\13\2\2\2\u0125X\3\2\2\2\r\2\u00c2"+
-
"\u00fc\u0103\u0106\u010c\u0110\u0112\u0118\u011a\u0120\3\b\2\2";
+
"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\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\3\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\7\3\7\3\7\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\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n"+
+
"\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3"+
+
"\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16"+
+
"\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17"+
+
"\3\17\5\17\u00bc\n\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\25\3\25\3\26\3\26\3\27\3\27\3\30\3\30\3\31\3\31\3\32\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&\5&\u00f6\n&\3\'\3"+
+
"\'\3\'\7\'\u00fb\n\'\f\'\16\'\u00fe\13\'\5\'\u0100\n\'\3(\3(\6(\u0104"+
+
"\n(\r(\16(\u0105\3)\3)\6)\u010a\n)\r)\16)\u010b\3)\3)\3)\3)\7)\u0112\n"+
+
")\f)\16)\u0115\13)\3*\6*\u0118\n*\r*\16*\u0119\3*\3*\3+\3+\2\2,\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,\3\2\t\4\2>>@@\3\2\63;\4\2\62;aa\3\2\62;\4\2C"+
+
"\\c|\5\2\62;C\\c|\5\2\13\f\16\17\"\"\2\u012f\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\2"+
+
"M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\3W\3\2\2\2\5^\3"+
+
"\2\2\2\7f\3\2\2\2\tk\3\2\2\2\13p\3\2\2\2\rs\3\2\2\2\17{\3\2\2\2\21\u0084"+
+
"\3\2\2\2\23\u008b\3\2\2\2\25\u0092\3\2\2\2\27\u0099\3\2\2\2\31\u00a3\3"+
+
"\2\2\2\33\u00a9\3\2\2\2\35\u00bb\3\2\2\2\37\u00bd\3\2\2\2!\u00c0\3\2\2"+
+
"\2#\u00c3\3\2\2\2%\u00c5\3\2\2\2\'\u00c7\3\2\2\2)\u00c9\3\2\2\2+\u00cb"+
+
"\3\2\2\2-\u00cd\3\2\2\2/\u00cf\3\2\2\2\61\u00d1\3\2\2\2\63\u00d3\3\2\2"+
+
"\2\65\u00d6\3\2\2\2\67\u00d8\3\2\2\29\u00da\3\2\2\2;\u00dc\3\2\2\2=\u00de"+
+
"\3\2\2\2?\u00e0\3\2\2\2A\u00e2\3\2\2\2C\u00e4\3\2\2\2E\u00e6\3\2\2\2G"+
+
"\u00e8\3\2\2\2I\u00ea\3\2\2\2K\u00f5\3\2\2\2M\u00ff\3\2\2\2O\u0101\3\2"+
+
"\2\2Q\u0109\3\2\2\2S\u0117\3\2\2\2U\u011d\3\2\2\2WX\7k\2\2XY\7p\2\2YZ"+
+
"\7v\2\2Z[\7g\2\2[\\\7p\2\2\\]\7v\2\2]\4\3\2\2\2^_\7q\2\2_`\7t\2\2`a\7"+
+
"f\2\2ab\7g\2\2bc\7t\2\2cd\7g\2\2de\7f\2\2e\6\3\2\2\2fg\7h\2\2gh\7n\2\2"+
+
"hi\7q\2\2ij\7y\2\2j\b\3\2\2\2kl\7v\2\2lm\7g\2\2mn\7t\2\2no\7o\2\2o\n\3"+
+
"\2\2\2pq\7k\2\2qr\7f\2\2r\f\3\2\2\2st\7c\2\2tu\7n\2\2uv\7k\2\2vw\7c\2"+
+
"\2wx\7u\2\2xy\7g\2\2yz\7u\2\2z\16\3\2\2\2{|\7u\2\2|}\7v\2\2}~\7c\2\2~"+
+
"\177\7t\2\2\177\u0080\7v\2\2\u0080\u0081\7k\2\2\u0081\u0082\7f\2\2\u0082"+
+
"\u0083\7z\2\2\u0083\20\3\2\2\2\u0084\u0085\7g\2\2\u0085\u0086\7p\2\2\u0086"+
+
"\u0087\7f\2\2\u0087\u0088\7k\2\2\u0088\u0089\7f\2\2\u0089\u008a\7z\2\2"+
+
"\u008a\22\3\2\2\2\u008b\u008c\7r\2\2\u008c\u008d\7c\2\2\u008d\u008e\7"+
+
"t\2\2\u008e\u008f\7g\2\2\u008f\u0090\7p\2\2\u0090\u0091\7v\2\2\u0091\24"+
+
"\3\2\2\2\u0092\u0093\7i\2\2\u0093\u0094\7t\2\2\u0094\u0095\7q\2\2\u0095"+
+
"\u0096\7w\2\2\u0096\u0097\7r\2\2\u0097\u0098\7u\2\2\u0098\26\3\2\2\2\u0099"+
+
"\u009a\7c\2\2\u009a\u009b\7p\2\2\u009b\u009c\7e\2\2\u009c\u009d\7g\2\2"+
+
"\u009d\u009e\7u\2\2\u009e\u009f\7v\2\2\u009f\u00a0\7q\2\2\u00a0\u00a1"+
+
"\7t\2\2\u00a1\u00a2\7u\2\2\u00a2\30\3\2\2\2\u00a3\u00a4\7x\2\2\u00a4\u00a5"+
+
"\7c\2\2\u00a5\u00a6\7n\2\2\u00a6\u00a7\7w\2\2\u00a7\u00a8\7g\2\2\u00a8"+
+
"\32\3\2\2\2\u00a9\u00aa\7p\2\2\u00aa\u00ab\7w\2\2\u00ab\u00ac\7n\2\2\u00ac"+
+
"\u00ad\7n\2\2\u00ad\34\3\2\2\2\u00ae\u00af\7?\2\2\u00af\u00bc\7?\2\2\u00b0"+
+
"\u00b1\7#\2\2\u00b1\u00bc\7?\2\2\u00b2\u00b3\7@\2\2\u00b3\u00bc\7?\2\2"+
+
"\u00b4\u00b5\7>\2\2\u00b5\u00bc\7?\2\2\u00b6\u00bc\t\2\2\2\u00b7\u00b8"+
+
"\7B\2\2\u00b8\u00bc\7B\2\2\u00b9\u00ba\7#\2\2\u00ba\u00bc\7B\2\2\u00bb"+
+
"\u00ae\3\2\2\2\u00bb\u00b0\3\2\2\2\u00bb\u00b2\3\2\2\2\u00bb\u00b4\3\2"+
+
"\2\2\u00bb\u00b6\3\2\2\2\u00bb\u00b7\3\2\2\2\u00bb\u00b9\3\2\2\2\u00bc"+
+ "\36\3\2\2\2\u00bd\u00be\7(\2\2\u00be\u00bf\7(\2\2\u00bf
\3\2\2\2\u00c0"+
+
"\u00c1\7~\2\2\u00c1\u00c2\7~\2\2\u00c2\"\3\2\2\2\u00c3\u00c4\7~\2\2\u00c4"+
+
"$\3\2\2\2\u00c5\u00c6\7#\2\2\u00c6&\3\2\2\2\u00c7\u00c8\7*\2\2\u00c8("+
+
"\3\2\2\2\u00c9\u00ca\7+\2\2\u00ca*\3\2\2\2\u00cb\u00cc\7}\2\2\u00cc,\3"+
+
"\2\2\2\u00cd\u00ce\7\177\2\2\u00ce.\3\2\2\2\u00cf\u00d0\7)\2\2\u00d0\60"+
+
"\3\2\2\2\u00d1\u00d2\7\u0080\2\2\u00d2\62\3\2\2\2\u00d3\u00d4\7@\2\2\u00d4"+
+
"\u00d5\7@\2\2\u00d5\64\3\2\2\2\u00d6\u00d7\7]\2\2\u00d7\66\3\2\2\2\u00d8"+
+
"\u00d9\7_\2\2\u00d98\3\2\2\2\u00da\u00db\7.\2\2\u00db:\3\2\2\2\u00dc\u00dd"+
+
"\7<\2\2\u00dd<\3\2\2\2\u00de\u00df\7/\2\2\u00df>\3\2\2\2\u00e0\u00e1\7"+
+
"\60\2\2\u00e1@\3\2\2\2\u00e2\u00e3\7a\2\2\u00e3B\3\2\2\2\u00e4\u00e5\7"+
+
"?\2\2\u00e5D\3\2\2\2\u00e6\u00e7\7-\2\2\u00e7F\3\2\2\2\u00e8\u00e9\7A"+
+
"\2\2\u00e9H\3\2\2\2\u00ea\u00eb\7,\2\2\u00ebJ\3\2\2\2\u00ec\u00ed\7v\2"+
+
"\2\u00ed\u00ee\7t\2\2\u00ee\u00ef\7w\2\2\u00ef\u00f6\7g\2\2\u00f0\u00f1"+
+
"\7h\2\2\u00f1\u00f2\7c\2\2\u00f2\u00f3\7n\2\2\u00f3\u00f4\7u\2\2\u00f4"+
+
"\u00f6\7g\2\2\u00f5\u00ec\3\2\2\2\u00f5\u00f0\3\2\2\2\u00f6L\3\2\2\2\u00f7"+
+
"\u0100\7\62\2\2\u00f8\u00fc\t\3\2\2\u00f9\u00fb\t\4\2\2\u00fa\u00f9\3"+
+
"\2\2\2\u00fb\u00fe\3\2\2\2\u00fc\u00fa\3\2\2\2\u00fc\u00fd\3\2\2\2\u00fd"+
+
"\u0100\3\2\2\2\u00fe\u00fc\3\2\2\2\u00ff\u00f7\3\2\2\2\u00ff\u00f8\3\2"+
+ "\2\2\u0100N\3\2\2\2\u0101\u0103\5?
\2\u0102\u0104\t\5\2\2\u0103\u0102"+
+
"\3\2\2\2\u0104\u0105\3\2\2\2\u0105\u0103\3\2\2\2\u0105\u0106\3\2\2\2\u0106"+
+
"P\3\2\2\2\u0107\u010a\5A!\2\u0108\u010a\t\6\2\2\u0109\u0107\3\2\2\2\u0109"+
+
"\u0108\3\2\2\2\u010a\u010b\3\2\2\2\u010b\u0109\3\2\2\2\u010b\u010c\3\2"+
+
"\2\2\u010c\u0113\3\2\2\2\u010d\u0112\t\7\2\2\u010e\u0112\5;\36\2\u010f"+
+
"\u0112\5=\37\2\u0110\u0112\5A!\2\u0111\u010d\3\2\2\2\u0111\u010e\3\2\2"+
+
"\2\u0111\u010f\3\2\2\2\u0111\u0110\3\2\2\2\u0112\u0115\3\2\2\2\u0113\u0111"+
+
"\3\2\2\2\u0113\u0114\3\2\2\2\u0114R\3\2\2\2\u0115\u0113\3\2\2\2\u0116"+
+
"\u0118\t\b\2\2\u0117\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119\u0117\3\2"+
+
"\2\2\u0119\u011a\3\2\2\2\u011a\u011b\3\2\2\2\u011b\u011c\b*\2\2\u011c"+
+
"T\3\2\2\2\u011d\u011e\13\2\2\2\u011eV\3\2\2\2\r\2\u00bb\u00f5\u00fc\u00ff"+
+ "\u0105\u0109\u010b\u0111\u0113\u0119\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/model/intent/impl/antlr4/NCIntentDslLexer.tokens
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.tokens
index 8ae22bf..e2c3312 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.tokens
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.tokens
@@ -11,69 +11,67 @@ T__9=10
T__10=11
T__11=12
T__12=13
-T__13=14
-PRED_OP=15
-AND=16
-OR=17
-VERT=18
-EXCL=19
-LPAREN=20
-RPAREN=21
-LCURLY=22
-RCURLY=23
-SQUOTE=24
-TILDA=25
-RIGHT=26
-LBR=27
-RBR=28
-COMMA=29
-COLON=30
-MINUS=31
-DOT=32
-UNDERSCORE=33
-EQ=34
-PLUS=35
-QUESTION=36
-STAR=37
-BOOL=38
-INT=39
-EXP=40
-ID=41
-WS=42
-ErrorCharacter=43
+PRED_OP=14
+AND=15
+OR=16
+VERT=17
+EXCL=18
+LPAREN=19
+RPAREN=20
+LCURLY=21
+RCURLY=22
+SQUOTE=23
+TILDA=24
+RIGHT=25
+LBR=26
+RBR=27
+COMMA=28
+COLON=29
+MINUS=30
+DOT=31
+UNDERSCORE=32
+EQ=33
+PLUS=34
+QUESTION=35
+STAR=36
+BOOL=37
+INT=38
+EXP=39
+ID=40
+WS=41
+ErrorCharacter=42
'intent'=1
-'conv'=2
-'ordered'=3
-'flow'=4
-'term'=5
-'id'=6
-'aliases'=7
-'startidx'=8
-'endidx'=9
-'parent'=10
-'groups'=11
-'ancestors'=12
-'value'=13
-'null'=14
-'&&'=16
-'||'=17
-'|'=18
-'!'=19
-'('=20
-')'=21
-'{'=22
-'}'=23
-'\''=24
-'~'=25
-'>>'=26
-'['=27
-']'=28
-','=29
-':'=30
-'-'=31
-'.'=32
-'_'=33
-'='=34
-'+'=35
-'?'=36
-'*'=37
+'ordered'=2
+'flow'=3
+'term'=4
+'id'=5
+'aliases'=6
+'startidx'=7
+'endidx'=8
+'parent'=9
+'groups'=10
+'ancestors'=11
+'value'=12
+'null'=13
+'&&'=15
+'||'=16
+'|'=17
+'!'=18
+'('=19
+')'=20
+'{'=21
+'}'=22
+'\''=23
+'~'=24
+'>>'=25
+'['=26
+']'=27
+','=28
+':'=29
+'-'=30
+'.'=31
+'_'=32
+'='=33
+'+'=34
+'?'=35
+'*'=36
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslListener.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslListener.java
index f600b0d..59ff399 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslListener.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslListener.java
@@ -1,4 +1,4 @@
-// Generated from
/Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
by ANTLR 4.8
+// Generated from C:/Users/Nikita
Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4\NCIntentDsl.g4
by ANTLR 4.8
package org.apache.nlpcraft.model.intent.impl.antlr4;
import org.antlr.v4.runtime.tree.ParseTreeListener;
@@ -28,16 +28,6 @@ public interface NCIntentDslListener extends
ParseTreeListener {
*/
void exitIntentId(NCIntentDslParser.IntentIdContext ctx);
/**
- * Enter a parse tree produced by {@link NCIntentDslParser#convDecl}.
- * @param ctx the parse tree
- */
- void enterConvDecl(NCIntentDslParser.ConvDeclContext ctx);
- /**
- * Exit a parse tree produced by {@link NCIntentDslParser#convDecl}.
- * @param ctx the parse tree
- */
- void exitConvDecl(NCIntentDslParser.ConvDeclContext ctx);
- /**
* Enter a parse tree produced by {@link NCIntentDslParser#orderedDecl}.
* @param ctx the parse tree
*/
@@ -108,6 +98,16 @@ public interface NCIntentDslListener extends
ParseTreeListener {
*/
void exitTerms(NCIntentDslParser.TermsContext 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
*/
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslParser.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslParser.java
index 66f90dd..ef12ce8 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslParser.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslParser.java
@@ -1,10 +1,13 @@
-// Generated from
/Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
by ANTLR 4.8
+// Generated from C:/Users/Nikita
Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4\NCIntentDsl.g4
by ANTLR 4.8
package org.apache.nlpcraft.model.intent.impl.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 NCIntentDslParser extends Parser {
@@ -15,22 +18,22 @@ public class NCIntentDslParser extends Parser {
new PredictionContextCache();
public static final int
T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8,
T__8=9,
- T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, PRED_OP=15,
AND=16, OR=17,
- VERT=18, EXCL=19, LPAREN=20, RPAREN=21, LCURLY=22, RCURLY=23,
SQUOTE=24,
- TILDA=25, RIGHT=26, LBR=27, RBR=28, COMMA=29, COLON=30,
MINUS=31, DOT=32,
- UNDERSCORE=33, EQ=34, PLUS=35, QUESTION=36, STAR=37, BOOL=38,
INT=39,
- EXP=40, ID=41, WS=42, ErrorCharacter=43;
+ T__9=10, T__10=11, T__11=12, T__12=13, PRED_OP=14, AND=15,
OR=16, VERT=17,
+ EXCL=18, LPAREN=19, RPAREN=20, LCURLY=21, RCURLY=22, SQUOTE=23,
TILDA=24,
+ RIGHT=25, LBR=26, RBR=27, COMMA=28, COLON=29, MINUS=30, DOT=31,
UNDERSCORE=32,
+ EQ=33, PLUS=34, QUESTION=35, STAR=36, BOOL=37, INT=38, EXP=39,
ID=40,
+ WS=41, ErrorCharacter=42;
public static final int
- RULE_intent = 0, RULE_intentId = 1, RULE_convDecl = 2,
RULE_orderedDecl = 3,
- RULE_flowDecl = 4, RULE_flow = 5, RULE_flowItem = 6,
RULE_flowItemIds = 7,
- RULE_idList = 8, RULE_terms = 9, RULE_term = 10, RULE_termId =
11, RULE_item = 12,
+ RULE_intent = 0, RULE_intentId = 1, RULE_orderedDecl = 2,
RULE_flowDecl = 3,
+ RULE_flow = 4, RULE_flowItem = 5, RULE_flowItemIds = 6,
RULE_idList = 7,
+ RULE_terms = 8, RULE_termEq = 9, RULE_term = 10, RULE_termId =
11, RULE_item = 12,
RULE_predicate = 13, RULE_lval = 14, RULE_lvalQual = 15,
RULE_lvalPart = 16,
RULE_rvalSingle = 17, RULE_rval = 18, RULE_rvalList = 19,
RULE_meta = 20,
RULE_qstring = 21, RULE_minMax = 22, RULE_minMaxShortcut = 23,
RULE_minMaxRange = 24;
private static String[] makeRuleNames() {
return new String[] {
- "intent", "intentId", "convDecl", "orderedDecl",
"flowDecl", "flow",
- "flowItem", "flowItemIds", "idList", "terms", "term",
"termId", "item",
+ "intent", "intentId", "orderedDecl", "flowDecl",
"flow", "flowItem",
+ "flowItemIds", "idList", "terms", "termEq", "term",
"termId", "item",
"predicate", "lval", "lvalQual", "lvalPart",
"rvalSingle", "rval", "rvalList",
"meta", "qstring", "minMax", "minMaxShortcut",
"minMaxRange"
};
@@ -39,18 +42,18 @@ public class NCIntentDslParser extends Parser {
private static String[] makeLiteralNames() {
return new String[] {
- null, "'intent'", "'conv'", "'ordered'", "'flow'",
"'term'", "'id'",
- "'aliases'", "'startidx'", "'endidx'", "'parent'",
"'groups'", "'ancestors'",
- "'value'", "'null'", null, "'&&'", "'||'", "'|'",
"'!'", "'('", "')'",
- "'{'", "'}'", "'''", "'~'", "'>>'", "'['", "']'",
"','", "':'", "'-'",
- "'.'", "'_'", "'='", "'+'", "'?'", "'*'"
+ null, "'intent'", "'ordered'", "'flow'", "'term'",
"'id'", "'aliases'",
+ "'startidx'", "'endidx'", "'parent'", "'groups'",
"'ancestors'", "'value'",
+ "'null'", null, "'&&'", "'||'", "'|'", "'!'", "'('",
"')'", "'{'", "'}'",
+ "'''", "'~'", "'>>'", "'['", "']'", "','", "':'",
"'-'", "'.'", "'_'",
+ "'='", "'+'", "'?'", "'*'"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
private static String[] makeSymbolicNames() {
return new String[] {
null, null, null, null, null, null, null, null, null,
null, null, null,
- null, null, null, "PRED_OP", "AND", "OR", "VERT",
"EXCL", "LPAREN", "RPAREN",
+ null, null, "PRED_OP", "AND", "OR", "VERT", "EXCL",
"LPAREN", "RPAREN",
"LCURLY", "RCURLY", "SQUOTE", "TILDA", "RIGHT", "LBR",
"RBR", "COMMA",
"COLON", "MINUS", "DOT", "UNDERSCORE", "EQ", "PLUS",
"QUESTION", "STAR",
"BOOL", "INT", "EXP", "ID", "WS", "ErrorCharacter"
@@ -115,9 +118,6 @@ public class NCIntentDslParser extends Parser {
return getRuleContext(TermsContext.class,0);
}
public TerminalNode EOF() { return
getToken(NCIntentDslParser.EOF, 0); }
- public ConvDeclContext convDecl() {
- return getRuleContext(ConvDeclContext.class,0);
- }
public OrderedDeclContext orderedDecl() {
return getRuleContext(OrderedDeclContext.class,0);
}
@@ -136,11 +136,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitIntent(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitIntent(this);
- else return visitor.visitChildren(this);
- }
}
public final IntentContext intent() throws RecognitionException {
@@ -158,7 +153,7 @@ public class NCIntentDslParser extends Parser {
if (_la==T__1) {
{
setState(51);
- convDecl();
+ orderedDecl();
}
}
@@ -168,23 +163,13 @@ public class NCIntentDslParser extends Parser {
if (_la==T__2) {
{
setState(54);
- orderedDecl();
- }
- }
-
- setState(58);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==T__3) {
- {
- setState(57);
flowDecl();
}
}
- setState(60);
+ setState(57);
terms(0);
- setState(61);
+ setState(58);
match(EOF);
}
}
@@ -214,11 +199,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitIntentId(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitIntentId(this);
- else return visitor.visitChildren(this);
- }
}
public final IntentIdContext intentId() throws RecognitionException {
@@ -227,11 +207,11 @@ public class NCIntentDslParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(63);
+ setState(60);
match(T__0);
- setState(64);
+ setState(61);
match(EQ);
- setState(65);
+ setState(62);
match(ID);
}
}
@@ -246,53 +226,6 @@ public class NCIntentDslParser extends Parser {
return _localctx;
}
- public static class ConvDeclContext extends ParserRuleContext {
- public TerminalNode EQ() { return
getToken(NCIntentDslParser.EQ, 0); }
- public TerminalNode BOOL() { return
getToken(NCIntentDslParser.BOOL, 0); }
- public ConvDeclContext(ParserRuleContext parent, int
invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_convDecl; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).enterConvDecl(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitConvDecl(this);
- }
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitConvDecl(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final ConvDeclContext convDecl() throws RecognitionException {
- ConvDeclContext _localctx = new ConvDeclContext(_ctx,
getState());
- enterRule(_localctx, 4, RULE_convDecl);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(67);
- match(T__1);
- setState(68);
- match(EQ);
- setState(69);
- match(BOOL);
- }
- }
- 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 EQ() { return
getToken(NCIntentDslParser.EQ, 0); }
public TerminalNode BOOL() { return
getToken(NCIntentDslParser.BOOL, 0); }
@@ -308,24 +241,19 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitOrderedDecl(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitOrderedDecl(this);
- else return visitor.visitChildren(this);
- }
}
public final OrderedDeclContext orderedDecl() throws
RecognitionException {
OrderedDeclContext _localctx = new OrderedDeclContext(_ctx,
getState());
- enterRule(_localctx, 6, RULE_orderedDecl);
+ enterRule(_localctx, 4, RULE_orderedDecl);
try {
enterOuterAlt(_localctx, 1);
{
- setState(71);
- match(T__2);
- setState(72);
+ setState(64);
+ match(T__1);
+ setState(65);
match(EQ);
- setState(73);
+ setState(66);
match(BOOL);
}
}
@@ -361,28 +289,23 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitFlowDecl(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitFlowDecl(this);
- else return visitor.visitChildren(this);
- }
}
public final FlowDeclContext flowDecl() throws RecognitionException {
FlowDeclContext _localctx = new FlowDeclContext(_ctx,
getState());
- enterRule(_localctx, 8, RULE_flowDecl);
+ enterRule(_localctx, 6, RULE_flowDecl);
try {
enterOuterAlt(_localctx, 1);
{
- setState(75);
- match(T__3);
- setState(76);
+ setState(68);
+ match(T__2);
+ setState(69);
match(EQ);
- setState(77);
+ setState(70);
match(SQUOTE);
- setState(78);
+ setState(71);
flow(0);
- setState(79);
+ setState(72);
match(SQUOTE);
}
}
@@ -417,11 +340,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitFlow(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitFlow(this);
- else return visitor.visitChildren(this);
- }
}
public final FlowContext flow() throws RecognitionException {
@@ -433,30 +351,30 @@ public class NCIntentDslParser extends Parser {
int _parentState = getState();
FlowContext _localctx = new FlowContext(_ctx, _parentState);
FlowContext _prevctx = _localctx;
- int _startState = 10;
- enterRecursionRule(_localctx, 10, RULE_flow, _p);
+ int _startState = 8;
+ enterRecursionRule(_localctx, 8, RULE_flow, _p);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(83);
+ setState(76);
_errHandler.sync(this);
- switch (
getInterpreter().adaptivePredict(_input,3,_ctx) ) {
+ switch (
getInterpreter().adaptivePredict(_input,2,_ctx) ) {
case 1:
{
}
break;
case 2:
{
- setState(82);
+ setState(75);
flowItem();
}
break;
}
_ctx.stop = _input.LT(-1);
- setState(90);
+ setState(83);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,4,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,3,_ctx);
while ( _alt!=2 &&
_alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null )
triggerExitRuleEvent();
@@ -465,18 +383,18 @@ public class NCIntentDslParser extends Parser {
{
_localctx = new FlowContext(_parentctx,
_parentState);
pushNewRecursionContext(_localctx,
_startState, RULE_flow);
- setState(85);
+ setState(78);
if (!(precpred(_ctx, 1))) throw new
FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(86);
+ setState(79);
match(RIGHT);
- setState(87);
+ setState(80);
flowItem();
}
}
}
- setState(92);
+ setState(85);
_errHandler.sync(this);
- _alt =
getInterpreter().adaptivePredict(_input,4,_ctx);
+ _alt =
getInterpreter().adaptivePredict(_input,3,_ctx);
}
}
}
@@ -510,27 +428,22 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitFlowItem(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitFlowItem(this);
- else return visitor.visitChildren(this);
- }
}
public final FlowItemContext flowItem() throws RecognitionException {
FlowItemContext _localctx = new FlowItemContext(_ctx,
getState());
- enterRule(_localctx, 12, RULE_flowItem);
+ enterRule(_localctx, 10, RULE_flowItem);
try {
enterOuterAlt(_localctx, 1);
{
- setState(93);
+ setState(86);
flowItemIds();
- setState(95);
+ setState(88);
_errHandler.sync(this);
- switch (
getInterpreter().adaptivePredict(_input,5,_ctx) ) {
+ switch (
getInterpreter().adaptivePredict(_input,4,_ctx) ) {
case 1:
{
- setState(94);
+ setState(87);
minMax();
}
break;
@@ -567,35 +480,30 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitFlowItemIds(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitFlowItemIds(this);
- else return visitor.visitChildren(this);
- }
}
public final FlowItemIdsContext flowItemIds() throws
RecognitionException {
FlowItemIdsContext _localctx = new FlowItemIdsContext(_ctx,
getState());
- enterRule(_localctx, 14, RULE_flowItemIds);
+ enterRule(_localctx, 12, RULE_flowItemIds);
try {
- setState(102);
+ setState(95);
_errHandler.sync(this);
switch (_input.LA(1)) {
case ID:
enterOuterAlt(_localctx, 1);
{
- setState(97);
+ setState(90);
match(ID);
}
break;
case LPAREN:
enterOuterAlt(_localctx, 2);
{
- setState(98);
+ setState(91);
match(LPAREN);
- setState(99);
+ setState(92);
idList(0);
- setState(100);
+ setState(93);
match(RPAREN);
}
break;
@@ -632,11 +540,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitIdList(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitIdList(this);
- else return visitor.visitChildren(this);
- }
}
public final IdListContext idList() throws RecognitionException {
@@ -648,20 +551,20 @@ public class NCIntentDslParser extends Parser {
int _parentState = getState();
IdListContext _localctx = new IdListContext(_ctx, _parentState);
IdListContext _prevctx = _localctx;
- int _startState = 16;
- enterRecursionRule(_localctx, 16, RULE_idList, _p);
+ int _startState = 14;
+ enterRecursionRule(_localctx, 14, RULE_idList, _p);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
{
- setState(105);
+ setState(98);
match(ID);
}
_ctx.stop = _input.LT(-1);
- setState(112);
+ setState(105);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,7,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,6,_ctx);
while ( _alt!=2 &&
_alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null )
triggerExitRuleEvent();
@@ -670,18 +573,18 @@ public class NCIntentDslParser extends Parser {
{
_localctx = new
IdListContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx,
_startState, RULE_idList);
- setState(107);
+ setState(100);
if (!(precpred(_ctx, 1))) throw new
FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(108);
+ setState(101);
match(VERT);
- setState(109);
+ setState(102);
match(ID);
}
}
}
- setState(114);
+ setState(107);
_errHandler.sync(this);
- _alt =
getInterpreter().adaptivePredict(_input,7,_ctx);
+ _alt =
getInterpreter().adaptivePredict(_input,6,_ctx);
}
}
}
@@ -715,11 +618,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitTerms(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitTerms(this);
- else return visitor.visitChildren(this);
- }
}
public final TermsContext terms() throws RecognitionException {
@@ -731,20 +629,20 @@ public class NCIntentDslParser extends Parser {
int _parentState = getState();
TermsContext _localctx = new TermsContext(_ctx, _parentState);
TermsContext _prevctx = _localctx;
- int _startState = 18;
- enterRecursionRule(_localctx, 18, RULE_terms, _p);
+ int _startState = 16;
+ enterRecursionRule(_localctx, 16, RULE_terms, _p);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
{
- setState(116);
+ setState(109);
term();
}
_ctx.stop = _input.LT(-1);
- setState(122);
+ setState(115);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,7,_ctx);
while ( _alt!=2 &&
_alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null )
triggerExitRuleEvent();
@@ -753,16 +651,16 @@ public class NCIntentDslParser extends Parser {
{
_localctx = new
TermsContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx,
_startState, RULE_terms);
- setState(118);
+ setState(111);
if (!(precpred(_ctx, 1))) throw new
FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(119);
+ setState(112);
term();
}
}
}
- setState(124);
+ setState(117);
_errHandler.sync(this);
- _alt =
getInterpreter().adaptivePredict(_input,8,_ctx);
+ _alt =
getInterpreter().adaptivePredict(_input,7,_ctx);
}
}
}
@@ -777,8 +675,57 @@ public class NCIntentDslParser extends Parser {
return _localctx;
}
- public static class TermContext extends ParserRuleContext {
+ public static class TermEqContext extends ParserRuleContext {
public TerminalNode EQ() { return
getToken(NCIntentDslParser.EQ, 0); }
+ public TerminalNode TILDA() { return
getToken(NCIntentDslParser.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);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitTermEq(this);
+ }
+ }
+
+ public final TermEqContext termEq() throws RecognitionException {
+ TermEqContext _localctx = new TermEqContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_termEq);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(118);
+ _la = _input.LA(1);
+ if ( !(_la==TILDA || _la==EQ) ) {
+ _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 TerminalNode LCURLY() { return
getToken(NCIntentDslParser.LCURLY, 0); }
public ItemContext item() {
return getRuleContext(ItemContext.class,0);
@@ -802,11 +749,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitTerm(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitTerm(this);
- else return visitor.visitChildren(this);
- }
}
public final TermContext term() throws RecognitionException {
@@ -816,32 +758,32 @@ public class NCIntentDslParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(125);
- match(T__4);
- setState(127);
+ setState(120);
+ match(T__3);
+ setState(122);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==LPAREN) {
{
- setState(126);
+ setState(121);
termId();
}
}
- setState(129);
- match(EQ);
- setState(130);
+ setState(124);
+ termEq();
+ setState(125);
match(LCURLY);
- setState(131);
+ setState(126);
item(0);
- setState(132);
+ setState(127);
match(RCURLY);
- setState(134);
+ setState(129);
_errHandler.sync(this);
- switch (
getInterpreter().adaptivePredict(_input,10,_ctx) ) {
+ switch (
getInterpreter().adaptivePredict(_input,9,_ctx) ) {
case 1:
{
- setState(133);
+ setState(128);
minMax();
}
break;
@@ -875,11 +817,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitTermId(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitTermId(this);
- else return visitor.visitChildren(this);
- }
}
public final TermIdContext termId() throws RecognitionException {
@@ -888,11 +825,11 @@ public class NCIntentDslParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(136);
+ setState(131);
match(LPAREN);
- setState(137);
+ setState(132);
match(ID);
- setState(138);
+ setState(133);
match(RPAREN);
}
}
@@ -934,11 +871,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitItem(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitItem(this);
- else return visitor.visitChildren(this);
- }
}
public final ItemContext item() throws RecognitionException {
@@ -957,9 +889,10 @@ public class NCIntentDslParser extends Parser {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(148);
+ setState(143);
_errHandler.sync(this);
switch (_input.LA(1)) {
+ case T__4:
case T__5:
case T__6:
case T__7:
@@ -967,29 +900,28 @@ public class NCIntentDslParser extends Parser {
case T__9:
case T__10:
case T__11:
- case T__12:
case TILDA:
case ID:
{
- setState(141);
+ setState(136);
predicate();
}
break;
case LPAREN:
{
- setState(142);
+ setState(137);
match(LPAREN);
- setState(143);
+ setState(138);
item(0);
- setState(144);
+ setState(139);
match(RPAREN);
}
break;
case EXCL:
{
- setState(146);
+ setState(141);
match(EXCL);
- setState(147);
+ setState(142);
item(1);
}
break;
@@ -997,9 +929,9 @@ public class NCIntentDslParser extends Parser {
throw new NoViableAltException(this);
}
_ctx.stop = _input.LT(-1);
- setState(155);
+ setState(150);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,12,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,11,_ctx);
while ( _alt!=2 &&
_alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null )
triggerExitRuleEvent();
@@ -1008,9 +940,9 @@ public class NCIntentDslParser extends Parser {
{
_localctx = new ItemContext(_parentctx,
_parentState);
pushNewRecursionContext(_localctx,
_startState, RULE_item);
- setState(150);
+ setState(145);
if (!(precpred(_ctx, 2))) throw new
FailedPredicateException(this, "precpred(_ctx, 2)");
- setState(151);
+ setState(146);
_la = _input.LA(1);
if ( !(_la==AND || _la==OR) ) {
_errHandler.recoverInline(this);
@@ -1020,14 +952,14 @@ public class NCIntentDslParser extends Parser {
_errHandler.reportMatch(this);
consume();
}
- setState(152);
+ setState(147);
item(3);
}
}
}
- setState(157);
+ setState(152);
_errHandler.sync(this);
- _alt =
getInterpreter().adaptivePredict(_input,12,_ctx);
+ _alt =
getInterpreter().adaptivePredict(_input,11,_ctx);
}
}
}
@@ -1065,45 +997,40 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitPredicate(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitPredicate(this);
- else return visitor.visitChildren(this);
- }
}
public final PredicateContext predicate() throws RecognitionException {
PredicateContext _localctx = new PredicateContext(_ctx,
getState());
enterRule(_localctx, 26, RULE_predicate);
try {
- setState(169);
+ setState(164);
_errHandler.sync(this);
- switch (
getInterpreter().adaptivePredict(_input,13,_ctx) ) {
+ switch (
getInterpreter().adaptivePredict(_input,12,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(158);
+ setState(153);
lval();
- setState(159);
+ setState(154);
match(PRED_OP);
- setState(160);
+ setState(155);
rval();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(162);
+ setState(157);
match(ID);
- setState(163);
+ setState(158);
match(LPAREN);
- setState(164);
+ setState(159);
lval();
- setState(165);
+ setState(160);
match(RPAREN);
- setState(166);
+ setState(161);
match(PRED_OP);
- setState(167);
+ setState(162);
rval();
}
break;
@@ -1139,11 +1066,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitLval(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitLval(this);
- else return visitor.visitChildren(this);
- }
}
public final LvalContext lval() throws RecognitionException {
@@ -1153,70 +1075,70 @@ public class NCIntentDslParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(172);
+ setState(167);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==ID) {
{
- setState(171);
+ setState(166);
lvalQual(0);
}
}
- setState(183);
+ setState(178);
_errHandler.sync(this);
switch (_input.LA(1)) {
+ case T__4:
+ {
+ setState(169);
+ match(T__4);
+ }
+ break;
case T__5:
{
- setState(174);
+ setState(170);
match(T__5);
}
break;
case T__6:
{
- setState(175);
+ setState(171);
match(T__6);
}
break;
case T__7:
{
- setState(176);
+ setState(172);
match(T__7);
}
break;
case T__8:
{
- setState(177);
+ setState(173);
match(T__8);
}
break;
case T__9:
{
- setState(178);
+ setState(174);
match(T__9);
}
break;
case T__10:
{
- setState(179);
+ setState(175);
match(T__10);
}
break;
case T__11:
{
- setState(180);
+ setState(176);
match(T__11);
}
break;
- case T__12:
- {
- setState(181);
- match(T__12);
- }
- break;
case TILDA:
{
- setState(182);
+ setState(177);
meta();
}
break;
@@ -1255,11 +1177,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitLvalQual(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitLvalQual(this);
- else return visitor.visitChildren(this);
- }
}
public final LvalQualContext lvalQual() throws RecognitionException {
@@ -1278,13 +1195,13 @@ public class NCIntentDslParser extends Parser {
enterOuterAlt(_localctx, 1);
{
{
- setState(186);
+ setState(181);
lvalPart();
}
_ctx.stop = _input.LT(-1);
- setState(192);
+ setState(187);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,15,_ctx);
while ( _alt!=2 &&
_alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null )
triggerExitRuleEvent();
@@ -1293,16 +1210,16 @@ public class NCIntentDslParser extends Parser {
{
_localctx = new
LvalQualContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx,
_startState, RULE_lvalQual);
- setState(188);
+ setState(183);
if (!(precpred(_ctx, 1))) throw new
FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(189);
+ setState(184);
lvalPart();
}
}
}
- setState(194);
+ setState(189);
_errHandler.sync(this);
- _alt =
getInterpreter().adaptivePredict(_input,16,_ctx);
+ _alt =
getInterpreter().adaptivePredict(_input,15,_ctx);
}
}
}
@@ -1332,11 +1249,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitLvalPart(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitLvalPart(this);
- else return visitor.visitChildren(this);
- }
}
public final LvalPartContext lvalPart() throws RecognitionException {
@@ -1345,9 +1257,9 @@ public class NCIntentDslParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(195);
+ setState(190);
match(ID);
- setState(196);
+ setState(191);
match(DOT);
}
}
@@ -1382,11 +1294,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitRvalSingle(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitRvalSingle(this);
- else return visitor.visitChildren(this);
- }
}
public final RvalSingleContext rvalSingle() throws RecognitionException
{
@@ -1394,44 +1301,44 @@ public class NCIntentDslParser extends Parser {
enterRule(_localctx, 34, RULE_rvalSingle);
int _la;
try {
- setState(209);
+ setState(204);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__13:
+ case T__12:
enterOuterAlt(_localctx, 1);
{
- setState(198);
- match(T__13);
+ setState(193);
+ match(T__12);
}
break;
case MINUS:
case INT:
enterOuterAlt(_localctx, 2);
{
- setState(200);
+ setState(195);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==MINUS) {
{
- setState(199);
+ setState(194);
match(MINUS);
}
}
- setState(205);
+ setState(200);
_errHandler.sync(this);
- switch (
getInterpreter().adaptivePredict(_input,18,_ctx) ) {
+ switch (
getInterpreter().adaptivePredict(_input,17,_ctx) ) {
case 1:
{
- setState(202);
+ setState(197);
match(INT);
}
break;
case 2:
{
- setState(203);
+ setState(198);
match(INT);
- setState(204);
+ setState(199);
match(EXP);
}
break;
@@ -1441,14 +1348,14 @@ public class NCIntentDslParser extends Parser {
case BOOL:
enterOuterAlt(_localctx, 3);
{
- setState(207);
+ setState(202);
match(BOOL);
}
break;
case SQUOTE:
enterOuterAlt(_localctx, 4);
{
- setState(208);
+ setState(203);
qstring();
}
break;
@@ -1488,39 +1395,34 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitRval(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitRval(this);
- else return visitor.visitChildren(this);
- }
}
public final RvalContext rval() throws RecognitionException {
RvalContext _localctx = new RvalContext(_ctx, getState());
enterRule(_localctx, 36, RULE_rval);
try {
- setState(216);
+ setState(211);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__13:
+ case T__12:
case SQUOTE:
case MINUS:
case BOOL:
case INT:
enterOuterAlt(_localctx, 1);
{
- setState(211);
+ setState(206);
rvalSingle();
}
break;
case LPAREN:
enterOuterAlt(_localctx, 2);
{
- setState(212);
+ setState(207);
match(LPAREN);
- setState(213);
+ setState(208);
rvalList(0);
- setState(214);
+ setState(209);
match(RPAREN);
}
break;
@@ -1559,11 +1461,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitRvalList(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitRvalList(this);
- else return visitor.visitChildren(this);
- }
}
public final RvalListContext rvalList() throws RecognitionException {
@@ -1582,13 +1479,13 @@ public class NCIntentDslParser extends Parser {
enterOuterAlt(_localctx, 1);
{
{
- setState(219);
+ setState(214);
rvalSingle();
}
_ctx.stop = _input.LT(-1);
- setState(226);
+ setState(221);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,21,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,20,_ctx);
while ( _alt!=2 &&
_alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
if ( _parseListeners!=null )
triggerExitRuleEvent();
@@ -1597,18 +1494,18 @@ public class NCIntentDslParser extends Parser {
{
_localctx = new
RvalListContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx,
_startState, RULE_rvalList);
- setState(221);
+ setState(216);
if (!(precpred(_ctx, 1))) throw new
FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(222);
+ setState(217);
match(COMMA);
- setState(223);
+ setState(218);
rvalSingle();
}
}
}
- setState(228);
+ setState(223);
_errHandler.sync(this);
- _alt =
getInterpreter().adaptivePredict(_input,21,_ctx);
+ _alt =
getInterpreter().adaptivePredict(_input,20,_ctx);
}
}
}
@@ -1644,56 +1541,51 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitMeta(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitMeta(this);
- else return visitor.visitChildren(this);
- }
}
public final MetaContext meta() throws RecognitionException {
MetaContext _localctx = new MetaContext(_ctx, getState());
enterRule(_localctx, 40, RULE_meta);
try {
- setState(242);
+ setState(237);
_errHandler.sync(this);
- switch (
getInterpreter().adaptivePredict(_input,22,_ctx) ) {
+ switch (
getInterpreter().adaptivePredict(_input,21,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(229);
+ setState(224);
match(TILDA);
- setState(230);
+ setState(225);
match(ID);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(231);
+ setState(226);
match(TILDA);
- setState(232);
+ setState(227);
match(ID);
- setState(233);
+ setState(228);
match(LBR);
- setState(234);
+ setState(229);
match(INT);
- setState(235);
+ setState(230);
match(RBR);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(236);
+ setState(231);
match(TILDA);
- setState(237);
+ setState(232);
match(ID);
- setState(238);
+ setState(233);
match(LBR);
- setState(239);
+ setState(234);
qstring();
- setState(240);
+ setState(235);
match(RBR);
}
break;
@@ -1727,11 +1619,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitQstring(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitQstring(this);
- else return visitor.visitChildren(this);
- }
}
public final QstringContext qstring() throws RecognitionException {
@@ -1741,15 +1628,15 @@ public class NCIntentDslParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(244);
+ setState(239);
match(SQUOTE);
- setState(248);
+ setState(243);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L <<
T__0) | (1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__4) | (1L <<
T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__9) | (1L <<
T__10) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << PRED_OP) | (1L
<< AND) | (1L << OR) | (1L << VERT) | (1L << EXCL) | (1L << LPAREN) | (1L <<
RPAREN) | (1L << LCURLY) | (1L << RCURLY) | (1L << TILDA) | (1L << RIGHT) | (1L
<< LBR) | (1L << RBR) | (1L << COMMA) | (1L << C [...]
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L <<
T__0) | (1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__4) | (1L <<
T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__9) | (1L <<
T__10) | (1L << T__11) | (1L << T__12) | (1L << PRED_OP) | (1L << AND) | (1L <<
OR) | (1L << VERT) | (1L << EXCL) | (1L << LPAREN) | (1L << RPAREN) | (1L <<
LCURLY) | (1L << RCURLY) | (1L << TILDA) | (1L << RIGHT) | (1L << LBR) | (1L <<
RBR) | (1L << COMMA) | (1L << COLON) | (1L << M [...]
{
{
- setState(245);
+ setState(240);
_la = _input.LA(1);
if ( _la <= 0 || (_la==SQUOTE) ) {
_errHandler.recoverInline(this);
@@ -1761,11 +1648,11 @@ public class NCIntentDslParser extends Parser {
}
}
}
- setState(250);
+ setState(245);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(251);
+ setState(246);
match(SQUOTE);
}
}
@@ -1799,18 +1686,13 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitMinMax(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitMinMax(this);
- else return visitor.visitChildren(this);
- }
}
public final MinMaxContext minMax() throws RecognitionException {
MinMaxContext _localctx = new MinMaxContext(_ctx, getState());
enterRule(_localctx, 44, RULE_minMax);
try {
- setState(255);
+ setState(250);
_errHandler.sync(this);
switch (_input.LA(1)) {
case PLUS:
@@ -1818,14 +1700,14 @@ public class NCIntentDslParser extends Parser {
case STAR:
enterOuterAlt(_localctx, 1);
{
- setState(253);
+ setState(248);
minMaxShortcut();
}
break;
case LBR:
enterOuterAlt(_localctx, 2);
{
- setState(254);
+ setState(249);
minMaxRange();
}
break;
@@ -1860,11 +1742,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitMinMaxShortcut(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitMinMaxShortcut(this);
- else return visitor.visitChildren(this);
- }
}
public final MinMaxShortcutContext minMaxShortcut() throws
RecognitionException {
@@ -1874,7 +1751,7 @@ public class NCIntentDslParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(257);
+ setState(252);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L <<
PLUS) | (1L << QUESTION) | (1L << STAR))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -1917,11 +1794,6 @@ public class NCIntentDslParser extends Parser {
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof NCIntentDslListener )
((NCIntentDslListener)listener).exitMinMaxRange(this);
}
- @Override
- public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
- if ( visitor instanceof NCIntentDslVisitor ) return
((NCIntentDslVisitor<? extends T>)visitor).visitMinMaxRange(this);
- else return visitor.visitChildren(this);
- }
}
public final MinMaxRangeContext minMaxRange() throws
RecognitionException {
@@ -1930,15 +1802,15 @@ public class NCIntentDslParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
- setState(259);
+ setState(254);
match(LBR);
- setState(260);
+ setState(255);
match(INT);
- setState(261);
+ setState(256);
match(COMMA);
- setState(262);
+ setState(257);
match(INT);
- setState(263);
+ setState(258);
match(RBR);
}
}
@@ -1955,11 +1827,11 @@ public class NCIntentDslParser extends Parser {
public boolean sempred(RuleContext _localctx, int ruleIndex, int
predIndex) {
switch (ruleIndex) {
- case 5:
+ case 4:
return flow_sempred((FlowContext)_localctx, predIndex);
- case 8:
+ case 7:
return idList_sempred((IdListContext)_localctx,
predIndex);
- case 9:
+ case 8:
return terms_sempred((TermsContext)_localctx,
predIndex);
case 12:
return item_sempred((ItemContext)_localctx, predIndex);
@@ -2014,95 +1886,93 @@ public class NCIntentDslParser extends Parser {
}
public static final String _serializedATN =
-
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3-\u010c\4\2\t\2\4"+
+
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3,\u0107\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\3\2\3\2\5\2\67\n\2\3\2\5\2:\n\2\3\2\5\2=\n\2\3\2\3\2\3\2\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\6\3\6\3\6\3\6\3\6\3\6"+
-
"\3\7\3\7\5\7V\n\7\3\7\3\7\3\7\7\7[\n\7\f\7\16\7^\13\7\3\b\3\b\5\bb\n\b"+
-
"\3\t\3\t\3\t\3\t\3\t\5\ti\n\t\3\n\3\n\3\n\3\n\3\n\3\n\7\nq\n\n\f\n\16"+
-
"\nt\13\n\3\13\3\13\3\13\3\13\3\13\7\13{\n\13\f\13\16\13~\13\13\3\f\3\f"+
-
"\5\f\u0082\n\f\3\f\3\f\3\f\3\f\3\f\5\f\u0089\n\f\3\r\3\r\3\r\3\r\3\16"+
-
"\3\16\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u0097\n\16\3\16\3\16\3\16\7\16"+
-
"\u009c\n\16\f\16\16\16\u009f\13\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17"+
-
"\3\17\3\17\3\17\3\17\5\17\u00ac\n\17\3\20\5\20\u00af\n\20\3\20\3\20\3"+
-
"\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00ba\n\20\3\21\3\21\3\21\3\21"+
-
"\3\21\7\21\u00c1\n\21\f\21\16\21\u00c4\13\21\3\22\3\22\3\22\3\23\3\23"+
-
"\5\23\u00cb\n\23\3\23\3\23\3\23\5\23\u00d0\n\23\3\23\3\23\5\23\u00d4\n"+
-
"\23\3\24\3\24\3\24\3\24\3\24\5\24\u00db\n\24\3\25\3\25\3\25\3\25\3\25"+
-
"\3\25\7\25\u00e3\n\25\f\25\16\25\u00e6\13\25\3\26\3\26\3\26\3\26\3\26"+
-
"\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u00f5\n\26\3\27\3\27\7\27"+
-
"\u00f9\n\27\f\27\16\27\u00fc\13\27\3\27\3\27\3\30\3\30\5\30\u0102\n\30"+
- "\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\2\b\f\22\24\32
(\33\2\4"+
- "\6\b\n\f\16\20\22\24\26\30\32\34\36
\"$&(*,.\60\62\2\5\3\2\22\23\3\2\32"+
-
"\32\3\2%\'\2\u0116\2\64\3\2\2\2\4A\3\2\2\2\6E\3\2\2\2\bI\3\2\2\2\nM\3"+
-
"\2\2\2\fU\3\2\2\2\16_\3\2\2\2\20h\3\2\2\2\22j\3\2\2\2\24u\3\2\2\2\26\177"+
-
"\3\2\2\2\30\u008a\3\2\2\2\32\u0096\3\2\2\2\34\u00ab\3\2\2\2\36\u00ae\3"+
- "\2\2\2
\u00bb\3\2\2\2\"\u00c5\3\2\2\2$\u00d3\3\2\2\2&\u00da\3\2\2\2(\u00dc"+
-
"\3\2\2\2*\u00f4\3\2\2\2,\u00f6\3\2\2\2.\u0101\3\2\2\2\60\u0103\3\2\2\2"+
-
"\62\u0105\3\2\2\2\64\66\5\4\3\2\65\67\5\6\4\2\66\65\3\2\2\2\66\67\3\2"+
-
"\2\2\679\3\2\2\28:\5\b\5\298\3\2\2\29:\3\2\2\2:<\3\2\2\2;=\5\n\6\2<;\3"+
-
"\2\2\2<=\3\2\2\2=>\3\2\2\2>?\5\24\13\2?@\7\2\2\3@\3\3\2\2\2AB\7\3\2\2"+
-
"BC\7$\2\2CD\7+\2\2D\5\3\2\2\2EF\7\4\2\2FG\7$\2\2GH\7(\2\2H\7\3\2\2\2I"+
-
"J\7\5\2\2JK\7$\2\2KL\7(\2\2L\t\3\2\2\2MN\7\6\2\2NO\7$\2\2OP\7\32\2\2P"+
-
"Q\5\f\7\2QR\7\32\2\2R\13\3\2\2\2SV\b\7\1\2TV\5\16\b\2US\3\2\2\2UT\3\2"+
-
"\2\2V\\\3\2\2\2WX\f\3\2\2XY\7\34\2\2Y[\5\16\b\2ZW\3\2\2\2[^\3\2\2\2\\"+
-
"Z\3\2\2\2\\]\3\2\2\2]\r\3\2\2\2^\\\3\2\2\2_a\5\20\t\2`b\5.\30\2a`\3\2"+
-
"\2\2ab\3\2\2\2b\17\3\2\2\2ci\7+\2\2de\7\26\2\2ef\5\22\n\2fg\7\27\2\2g"+
-
"i\3\2\2\2hc\3\2\2\2hd\3\2\2\2i\21\3\2\2\2jk\b\n\1\2kl\7+\2\2lr\3\2\2\2"+
-
"mn\f\3\2\2no\7\24\2\2oq\7+\2\2pm\3\2\2\2qt\3\2\2\2rp\3\2\2\2rs\3\2\2\2"+
-
"s\23\3\2\2\2tr\3\2\2\2uv\b\13\1\2vw\5\26\f\2w|\3\2\2\2xy\f\3\2\2y{\5\26"+
-
"\f\2zx\3\2\2\2{~\3\2\2\2|z\3\2\2\2|}\3\2\2\2}\25\3\2\2\2~|\3\2\2\2\177"+
-
"\u0081\7\7\2\2\u0080\u0082\5\30\r\2\u0081\u0080\3\2\2\2\u0081\u0082\3"+
-
"\2\2\2\u0082\u0083\3\2\2\2\u0083\u0084\7$\2\2\u0084\u0085\7\30\2\2\u0085"+
-
"\u0086\5\32\16\2\u0086\u0088\7\31\2\2\u0087\u0089\5.\30\2\u0088\u0087"+
-
"\3\2\2\2\u0088\u0089\3\2\2\2\u0089\27\3\2\2\2\u008a\u008b\7\26\2\2\u008b"+
-
"\u008c\7+\2\2\u008c\u008d\7\27\2\2\u008d\31\3\2\2\2\u008e\u008f\b\16\1"+
-
"\2\u008f\u0097\5\34\17\2\u0090\u0091\7\26\2\2\u0091\u0092\5\32\16\2\u0092"+
-
"\u0093\7\27\2\2\u0093\u0097\3\2\2\2\u0094\u0095\7\25\2\2\u0095\u0097\5"+
-
"\32\16\3\u0096\u008e\3\2\2\2\u0096\u0090\3\2\2\2\u0096\u0094\3\2\2\2\u0097"+
-
"\u009d\3\2\2\2\u0098\u0099\f\4\2\2\u0099\u009a\t\2\2\2\u009a\u009c\5\32"+
-
"\16\5\u009b\u0098\3\2\2\2\u009c\u009f\3\2\2\2\u009d\u009b\3\2\2\2\u009d"+
-
"\u009e\3\2\2\2\u009e\33\3\2\2\2\u009f\u009d\3\2\2\2\u00a0\u00a1\5\36\20"+
-
"\2\u00a1\u00a2\7\21\2\2\u00a2\u00a3\5&\24\2\u00a3\u00ac\3\2\2\2\u00a4"+
-
"\u00a5\7+\2\2\u00a5\u00a6\7\26\2\2\u00a6\u00a7\5\36\20\2\u00a7\u00a8\7"+
-
"\27\2\2\u00a8\u00a9\7\21\2\2\u00a9\u00aa\5&\24\2\u00aa\u00ac\3\2\2\2\u00ab"+
-
"\u00a0\3\2\2\2\u00ab\u00a4\3\2\2\2\u00ac\35\3\2\2\2\u00ad\u00af\5 \21"+
-
"\2\u00ae\u00ad\3\2\2\2\u00ae\u00af\3\2\2\2\u00af\u00b9\3\2\2\2\u00b0\u00ba"+
-
"\7\b\2\2\u00b1\u00ba\7\t\2\2\u00b2\u00ba\7\n\2\2\u00b3\u00ba\7\13\2\2"+
-
"\u00b4\u00ba\7\f\2\2\u00b5\u00ba\7\r\2\2\u00b6\u00ba\7\16\2\2\u00b7\u00ba"+
-
"\7\17\2\2\u00b8\u00ba\5*\26\2\u00b9\u00b0\3\2\2\2\u00b9\u00b1\3\2\2\2"+
-
"\u00b9\u00b2\3\2\2\2\u00b9\u00b3\3\2\2\2\u00b9\u00b4\3\2\2\2\u00b9\u00b5"+
-
"\3\2\2\2\u00b9\u00b6\3\2\2\2\u00b9\u00b7\3\2\2\2\u00b9\u00b8\3\2\2\2\u00ba"+
-
"\37\3\2\2\2\u00bb\u00bc\b\21\1\2\u00bc\u00bd\5\"\22\2\u00bd\u00c2\3\2"+
-
"\2\2\u00be\u00bf\f\3\2\2\u00bf\u00c1\5\"\22\2\u00c0\u00be\3\2\2\2\u00c1"+
-
"\u00c4\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3!\3\2\2\2"+
-
"\u00c4\u00c2\3\2\2\2\u00c5\u00c6\7+\2\2\u00c6\u00c7\7\"\2\2\u00c7#\3\2"+
-
"\2\2\u00c8\u00d4\7\20\2\2\u00c9\u00cb\7!\2\2\u00ca\u00c9\3\2\2\2\u00ca"+
-
"\u00cb\3\2\2\2\u00cb\u00cf\3\2\2\2\u00cc\u00d0\7)\2\2\u00cd\u00ce\7)\2"+
-
"\2\u00ce\u00d0\7*\2\2\u00cf\u00cc\3\2\2\2\u00cf\u00cd\3\2\2\2\u00d0\u00d4"+
-
"\3\2\2\2\u00d1\u00d4\7(\2\2\u00d2\u00d4\5,\27\2\u00d3\u00c8\3\2\2\2\u00d3"+
-
"\u00ca\3\2\2\2\u00d3\u00d1\3\2\2\2\u00d3\u00d2\3\2\2\2\u00d4%\3\2\2\2"+
-
"\u00d5\u00db\5$\23\2\u00d6\u00d7\7\26\2\2\u00d7\u00d8\5(\25\2\u00d8\u00d9"+
-
"\7\27\2\2\u00d9\u00db\3\2\2\2\u00da\u00d5\3\2\2\2\u00da\u00d6\3\2\2\2"+
-
"\u00db\'\3\2\2\2\u00dc\u00dd\b\25\1\2\u00dd\u00de\5$\23\2\u00de\u00e4"+
-
"\3\2\2\2\u00df\u00e0\f\3\2\2\u00e0\u00e1\7\37\2\2\u00e1\u00e3\5$\23\2"+
-
"\u00e2\u00df\3\2\2\2\u00e3\u00e6\3\2\2\2\u00e4\u00e2\3\2\2\2\u00e4\u00e5"+
-
"\3\2\2\2\u00e5)\3\2\2\2\u00e6\u00e4\3\2\2\2\u00e7\u00e8\7\33\2\2\u00e8"+
-
"\u00f5\7+\2\2\u00e9\u00ea\7\33\2\2\u00ea\u00eb\7+\2\2\u00eb\u00ec\7\35"+
-
"\2\2\u00ec\u00ed\7)\2\2\u00ed\u00f5\7\36\2\2\u00ee\u00ef\7\33\2\2\u00ef"+
-
"\u00f0\7+\2\2\u00f0\u00f1\7\35\2\2\u00f1\u00f2\5,\27\2\u00f2\u00f3\7\36"+
-
"\2\2\u00f3\u00f5\3\2\2\2\u00f4\u00e7\3\2\2\2\u00f4\u00e9\3\2\2\2\u00f4"+
-
"\u00ee\3\2\2\2\u00f5+\3\2\2\2\u00f6\u00fa\7\32\2\2\u00f7\u00f9\n\3\2\2"+
-
"\u00f8\u00f7\3\2\2\2\u00f9\u00fc\3\2\2\2\u00fa\u00f8\3\2\2\2\u00fa\u00fb"+
-
"\3\2\2\2\u00fb\u00fd\3\2\2\2\u00fc\u00fa\3\2\2\2\u00fd\u00fe\7\32\2\2"+
-
"\u00fe-\3\2\2\2\u00ff\u0102\5\60\31\2\u0100\u0102\5\62\32\2\u0101\u00ff"+
-
"\3\2\2\2\u0101\u0100\3\2\2\2\u0102/\3\2\2\2\u0103\u0104\t\4\2\2\u0104"+
-
"\61\3\2\2\2\u0105\u0106\7\35\2\2\u0106\u0107\7)\2\2\u0107\u0108\7\37\2"+
-
"\2\u0108\u0109\7)\2\2\u0109\u010a\7\36\2\2\u010a\63\3\2\2\2\33\669<U\\"+
-
"ahr|\u0081\u0088\u0096\u009d\u00ab\u00ae\u00b9\u00c2\u00ca\u00cf\u00d3"+
- "\u00da\u00e4\u00f4\u00fa\u0101";
+
"\4\32\t\32\3\2\3\2\5\2\67\n\2\3\2\5\2:\n\2\3\2\3\2\3\2\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\3\5\3\6\3\6\5\6O\n\6\3\6\3\6\3\6"+
+
"\7\6T\n\6\f\6\16\6W\13\6\3\7\3\7\5\7[\n\7\3\b\3\b\3\b\3\b\3\b\5\bb\n\b"+
+
"\3\t\3\t\3\t\3\t\3\t\3\t\7\tj\n\t\f\t\16\tm\13\t\3\n\3\n\3\n\3\n\3\n\7"+
+
"\nt\n\n\f\n\16\nw\13\n\3\13\3\13\3\f\3\f\5\f}\n\f\3\f\3\f\3\f\3\f\3\f"+
+
"\5\f\u0084\n\f\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+
+
"\5\16\u0092\n\16\3\16\3\16\3\16\7\16\u0097\n\16\f\16\16\16\u009a\13\16"+
+
"\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u00a7\n\17"+
+
"\3\20\5\20\u00aa\n\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20"+
+
"\u00b5\n\20\3\21\3\21\3\21\3\21\3\21\7\21\u00bc\n\21\f\21\16\21\u00bf"+
+
"\13\21\3\22\3\22\3\22\3\23\3\23\5\23\u00c6\n\23\3\23\3\23\3\23\5\23\u00cb"+
+
"\n\23\3\23\3\23\5\23\u00cf\n\23\3\24\3\24\3\24\3\24\3\24\5\24\u00d6\n"+
+
"\24\3\25\3\25\3\25\3\25\3\25\3\25\7\25\u00de\n\25\f\25\16\25\u00e1\13"+
+
"\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5"+
+
"\26\u00f0\n\26\3\27\3\27\7\27\u00f4\n\27\f\27\16\27\u00f7\13\27\3\27\3"+
+
"\27\3\30\3\30\5\30\u00fd\n\30\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32"+
+ "\3\32\2\b\n\20\22\32
(\33\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&"+
+
"(*,.\60\62\2\6\4\2\32\32##\3\2\21\22\3\2\31\31\3\2$&\2\u0110\2\64\3\2"+
+
"\2\2\4>\3\2\2\2\6B\3\2\2\2\bF\3\2\2\2\nN\3\2\2\2\fX\3\2\2\2\16a\3\2\2"+
+
"\2\20c\3\2\2\2\22n\3\2\2\2\24x\3\2\2\2\26z\3\2\2\2\30\u0085\3\2\2\2\32"+
+ "\u0091\3\2\2\2\34\u00a6\3\2\2\2\36\u00a9\3\2\2\2
\u00b6\3\2\2\2\"\u00c0"+
+
"\3\2\2\2$\u00ce\3\2\2\2&\u00d5\3\2\2\2(\u00d7\3\2\2\2*\u00ef\3\2\2\2,"+
+
"\u00f1\3\2\2\2.\u00fc\3\2\2\2\60\u00fe\3\2\2\2\62\u0100\3\2\2\2\64\66"+
+
"\5\4\3\2\65\67\5\6\4\2\66\65\3\2\2\2\66\67\3\2\2\2\679\3\2\2\28:\5\b\5"+
+
"\298\3\2\2\29:\3\2\2\2:;\3\2\2\2;<\5\22\n\2<=\7\2\2\3=\3\3\2\2\2>?\7\3"+
+
"\2\2?@\7#\2\2@A\7*\2\2A\5\3\2\2\2BC\7\4\2\2CD\7#\2\2DE\7\'\2\2E\7\3\2"+
+
"\2\2FG\7\5\2\2GH\7#\2\2HI\7\31\2\2IJ\5\n\6\2JK\7\31\2\2K\t\3\2\2\2LO\b"+
+
"\6\1\2MO\5\f\7\2NL\3\2\2\2NM\3\2\2\2OU\3\2\2\2PQ\f\3\2\2QR\7\33\2\2RT"+
+
"\5\f\7\2SP\3\2\2\2TW\3\2\2\2US\3\2\2\2UV\3\2\2\2V\13\3\2\2\2WU\3\2\2\2"+
+
"XZ\5\16\b\2Y[\5.\30\2ZY\3\2\2\2Z[\3\2\2\2[\r\3\2\2\2\\b\7*\2\2]^\7\25"+
+
"\2\2^_\5\20\t\2_`\7\26\2\2`b\3\2\2\2a\\\3\2\2\2a]\3\2\2\2b\17\3\2\2\2"+
+
"cd\b\t\1\2de\7*\2\2ek\3\2\2\2fg\f\3\2\2gh\7\23\2\2hj\7*\2\2if\3\2\2\2"+
+
"jm\3\2\2\2ki\3\2\2\2kl\3\2\2\2l\21\3\2\2\2mk\3\2\2\2no\b\n\1\2op\5\26"+
+
"\f\2pu\3\2\2\2qr\f\3\2\2rt\5\26\f\2sq\3\2\2\2tw\3\2\2\2us\3\2\2\2uv\3"+
+
"\2\2\2v\23\3\2\2\2wu\3\2\2\2xy\t\2\2\2y\25\3\2\2\2z|\7\6\2\2{}\5\30\r"+
+
"\2|{\3\2\2\2|}\3\2\2\2}~\3\2\2\2~\177\5\24\13\2\177\u0080\7\27\2\2\u0080"+
+
"\u0081\5\32\16\2\u0081\u0083\7\30\2\2\u0082\u0084\5.\30\2\u0083\u0082"+
+
"\3\2\2\2\u0083\u0084\3\2\2\2\u0084\27\3\2\2\2\u0085\u0086\7\25\2\2\u0086"+
+
"\u0087\7*\2\2\u0087\u0088\7\26\2\2\u0088\31\3\2\2\2\u0089\u008a\b\16\1"+
+
"\2\u008a\u0092\5\34\17\2\u008b\u008c\7\25\2\2\u008c\u008d\5\32\16\2\u008d"+
+
"\u008e\7\26\2\2\u008e\u0092\3\2\2\2\u008f\u0090\7\24\2\2\u0090\u0092\5"+
+
"\32\16\3\u0091\u0089\3\2\2\2\u0091\u008b\3\2\2\2\u0091\u008f\3\2\2\2\u0092"+
+
"\u0098\3\2\2\2\u0093\u0094\f\4\2\2\u0094\u0095\t\3\2\2\u0095\u0097\5\32"+
+
"\16\5\u0096\u0093\3\2\2\2\u0097\u009a\3\2\2\2\u0098\u0096\3\2\2\2\u0098"+
+
"\u0099\3\2\2\2\u0099\33\3\2\2\2\u009a\u0098\3\2\2\2\u009b\u009c\5\36\20"+
+
"\2\u009c\u009d\7\20\2\2\u009d\u009e\5&\24\2\u009e\u00a7\3\2\2\2\u009f"+
+
"\u00a0\7*\2\2\u00a0\u00a1\7\25\2\2\u00a1\u00a2\5\36\20\2\u00a2\u00a3\7"+
+
"\26\2\2\u00a3\u00a4\7\20\2\2\u00a4\u00a5\5&\24\2\u00a5\u00a7\3\2\2\2\u00a6"+
+
"\u009b\3\2\2\2\u00a6\u009f\3\2\2\2\u00a7\35\3\2\2\2\u00a8\u00aa\5 \21"+
+
"\2\u00a9\u00a8\3\2\2\2\u00a9\u00aa\3\2\2\2\u00aa\u00b4\3\2\2\2\u00ab\u00b5"+
+
"\7\7\2\2\u00ac\u00b5\7\b\2\2\u00ad\u00b5\7\t\2\2\u00ae\u00b5\7\n\2\2\u00af"+
+
"\u00b5\7\13\2\2\u00b0\u00b5\7\f\2\2\u00b1\u00b5\7\r\2\2\u00b2\u00b5\7"+
+
"\16\2\2\u00b3\u00b5\5*\26\2\u00b4\u00ab\3\2\2\2\u00b4\u00ac\3\2\2\2\u00b4"+
+
"\u00ad\3\2\2\2\u00b4\u00ae\3\2\2\2\u00b4\u00af\3\2\2\2\u00b4\u00b0\3\2"+
+
"\2\2\u00b4\u00b1\3\2\2\2\u00b4\u00b2\3\2\2\2\u00b4\u00b3\3\2\2\2\u00b5"+
+
"\37\3\2\2\2\u00b6\u00b7\b\21\1\2\u00b7\u00b8\5\"\22\2\u00b8\u00bd\3\2"+
+
"\2\2\u00b9\u00ba\f\3\2\2\u00ba\u00bc\5\"\22\2\u00bb\u00b9\3\2\2\2\u00bc"+
+
"\u00bf\3\2\2\2\u00bd\u00bb\3\2\2\2\u00bd\u00be\3\2\2\2\u00be!\3\2\2\2"+
+
"\u00bf\u00bd\3\2\2\2\u00c0\u00c1\7*\2\2\u00c1\u00c2\7!\2\2\u00c2#\3\2"+
+ "\2\2\u00c3\u00cf\7\17\2\2\u00c4\u00c6\7
\2\2\u00c5\u00c4\3\2\2\2\u00c5"+
+
"\u00c6\3\2\2\2\u00c6\u00ca\3\2\2\2\u00c7\u00cb\7(\2\2\u00c8\u00c9\7(\2"+
+
"\2\u00c9\u00cb\7)\2\2\u00ca\u00c7\3\2\2\2\u00ca\u00c8\3\2\2\2\u00cb\u00cf"+
+
"\3\2\2\2\u00cc\u00cf\7\'\2\2\u00cd\u00cf\5,\27\2\u00ce\u00c3\3\2\2\2\u00ce"+
+
"\u00c5\3\2\2\2\u00ce\u00cc\3\2\2\2\u00ce\u00cd\3\2\2\2\u00cf%\3\2\2\2"+
+
"\u00d0\u00d6\5$\23\2\u00d1\u00d2\7\25\2\2\u00d2\u00d3\5(\25\2\u00d3\u00d4"+
+
"\7\26\2\2\u00d4\u00d6\3\2\2\2\u00d5\u00d0\3\2\2\2\u00d5\u00d1\3\2\2\2"+
+
"\u00d6\'\3\2\2\2\u00d7\u00d8\b\25\1\2\u00d8\u00d9\5$\23\2\u00d9\u00df"+
+
"\3\2\2\2\u00da\u00db\f\3\2\2\u00db\u00dc\7\36\2\2\u00dc\u00de\5$\23\2"+
+
"\u00dd\u00da\3\2\2\2\u00de\u00e1\3\2\2\2\u00df\u00dd\3\2\2\2\u00df\u00e0"+
+
"\3\2\2\2\u00e0)\3\2\2\2\u00e1\u00df\3\2\2\2\u00e2\u00e3\7\32\2\2\u00e3"+
+
"\u00f0\7*\2\2\u00e4\u00e5\7\32\2\2\u00e5\u00e6\7*\2\2\u00e6\u00e7\7\34"+
+
"\2\2\u00e7\u00e8\7(\2\2\u00e8\u00f0\7\35\2\2\u00e9\u00ea\7\32\2\2\u00ea"+
+
"\u00eb\7*\2\2\u00eb\u00ec\7\34\2\2\u00ec\u00ed\5,\27\2\u00ed\u00ee\7\35"+
+
"\2\2\u00ee\u00f0\3\2\2\2\u00ef\u00e2\3\2\2\2\u00ef\u00e4\3\2\2\2\u00ef"+
+
"\u00e9\3\2\2\2\u00f0+\3\2\2\2\u00f1\u00f5\7\31\2\2\u00f2\u00f4\n\4\2\2"+
+
"\u00f3\u00f2\3\2\2\2\u00f4\u00f7\3\2\2\2\u00f5\u00f3\3\2\2\2\u00f5\u00f6"+
+
"\3\2\2\2\u00f6\u00f8\3\2\2\2\u00f7\u00f5\3\2\2\2\u00f8\u00f9\7\31\2\2"+
+
"\u00f9-\3\2\2\2\u00fa\u00fd\5\60\31\2\u00fb\u00fd\5\62\32\2\u00fc\u00fa"+
+
"\3\2\2\2\u00fc\u00fb\3\2\2\2\u00fd/\3\2\2\2\u00fe\u00ff\t\5\2\2\u00ff"+
+
"\61\3\2\2\2\u0100\u0101\7\34\2\2\u0101\u0102\7(\2\2\u0102\u0103\7\36\2"+
+
"\2\u0103\u0104\7(\2\2\u0104\u0105\7\35\2\2\u0105\63\3\2\2\2\32\669NUZ"+
+
"aku|\u0083\u0091\u0098\u00a6\u00a9\u00b4\u00bd\u00c5\u00ca\u00ce\u00d5"+
+ "\u00df\u00ef\u00f5\u00fc";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslVisitor.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslVisitor.java
deleted file mode 100644
index b9b45c6..0000000
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslVisitor.java
+++ /dev/null
@@ -1,163 +0,0 @@
-// Generated from
/Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
by ANTLR 4.8
-package org.apache.nlpcraft.model.intent.impl.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#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#convDecl}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitConvDecl(NCIntentDslParser.ConvDeclContext 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#flowDecl}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitFlowDecl(NCIntentDslParser.FlowDeclContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#flow}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitFlow(NCIntentDslParser.FlowContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#flowItem}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitFlowItem(NCIntentDslParser.FlowItemContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#flowItemIds}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitFlowItemIds(NCIntentDslParser.FlowItemIdsContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#idList}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitIdList(NCIntentDslParser.IdListContext 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#term}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitTerm(NCIntentDslParser.TermContext 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 {@link NCIntentDslParser#item}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitItem(NCIntentDslParser.ItemContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#predicate}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitPredicate(NCIntentDslParser.PredicateContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#lval}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitLval(NCIntentDslParser.LvalContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#lvalQual}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitLvalQual(NCIntentDslParser.LvalQualContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#lvalPart}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitLvalPart(NCIntentDslParser.LvalPartContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#rvalSingle}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitRvalSingle(NCIntentDslParser.RvalSingleContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#rval}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitRval(NCIntentDslParser.RvalContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#rvalList}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitRvalList(NCIntentDslParser.RvalListContext ctx);
- /**
- * Visit a parse tree produced by {@link NCIntentDslParser#meta}.
- * @param ctx the parse tree
- * @return the visitor result
- */
- T visitMeta(NCIntentDslParser.MetaContext 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);
-}
\ No newline at end of file
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
index 945439f..3274edf 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
@@ -20,7 +20,7 @@ package org.apache.nlpcraft.model.intent.utils
/**
* Intent from intent DSL.
*/
-case class NCDslIntent(id: String, conv: Boolean, ordered: Boolean, flow:
Array[NCDslFlowItem], terms: Array[NCDslTerm]) {
+case class NCDslIntent(id: String, ordered: Boolean, flow:
Array[NCDslFlowItem], terms: Array[NCDslTerm]) {
if (id == null)
throw new IllegalArgumentException("Intent ID must be provided.")
if (terms.length == 0)
@@ -35,13 +35,12 @@ case class NCDslIntent(id: String, conv: Boolean, ordered:
Boolean, flow: Array[
* @return Full intent string representation in text DSL format.
*/
def toDslString: String = {
- val convStr = if (conv) "" else " conv=false"
val orderedStr = if (!ordered) "" else " ordered=true"
val flowStr = flow.mkString(" >> ") match {
case s: String if s.nonEmpty ⇒ s" flow=$s"
case _ ⇒ ""
}
- s"intent=$id$convStr$orderedStr$flowStr ${terms.mkString(" ")}"
+ s"intent=$id$orderedStr$flowStr ${terms.mkString(" ")}"
}
}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.java
index 6ed04a6..a15e400 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.java
@@ -28,6 +28,9 @@ public class NCDslTerm implements Serializable {
// Term's predicate.
final private Function<NCToken, Boolean> pred;
+ // Conversational or not.
+ final private boolean conv;
+
// Terms quantifiers.
final private int min, max;
@@ -41,8 +44,9 @@ public class NCDslTerm implements Serializable {
* @param pred Token predicate.
* @param min Minimum quantifier for the predicate (inclusive).
* @param max Maximum quantifier for the predicate (inclusive).
+ * @param conv Whether or not this term is conversational.
*/
- public NCDslTerm(String id, Function<NCToken, Boolean> pred, int min, int
max) {
+ public NCDslTerm(String id, Function<NCToken, Boolean> pred, int min, int
max, boolean conv) {
if (pred == null)
throw new IllegalArgumentException("Intent DSL term predicate
cannot be null.");
if (min < 0 || min > max)
@@ -56,6 +60,7 @@ public class NCDslTerm implements Serializable {
this.pred = pred;
this.min = min;
this.max = max;
+ this.conv = conv;
}
/**
@@ -94,6 +99,13 @@ public class NCDslTerm implements Serializable {
return max;
}
+ /**
+ * Whether or not this term support conversational context.
+ *
+ * @return {@code true} if this term supports conversational context,
{@code false} otherwise.
+ */
+ public boolean isConversational() { return conv; }
+
@Override
public String toString() {
String minMax;
@@ -109,9 +121,11 @@ public class NCDslTerm implements Serializable {
else
minMax = String.format("[%d,%d]", min, max);
+ String eq = conv ? "~" : "=";
+
if (id == null)
- return String.format("term={%s}%s", pred, minMax);
+ return String.format("term%s{%s}%s", eq, pred, minMax);
else
- return String.format("term(%s)={%s}%s", id, pred, minMax);
+ return String.format("term(%s)%s{%s}%s", eq, id, pred, minMax);
}
}
diff --git
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentSampleSpec.scala
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentSampleSpec.scala
index 5b3804a..e98558c 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentSampleSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentSampleSpec.scala
@@ -23,7 +23,7 @@ class NCIntentSampleSpecModel extends NCModelAdapter(
override def getId: String = id
}
- @NCIntent("intent=intent1 term={id=='x1'}")
+ @NCIntent("intent=intent1 term~{id=='x1'}")
@NCIntentSample(Array("x1", "x1"))
@NCIntentSample(Array("unknown", "unknown"))
private def onX1(ctx: NCIntentMatch): NCResult = "OK"
@@ -31,7 +31,7 @@ class NCIntentSampleSpecModel extends NCModelAdapter(
@NCIntentSample(Array("x1", "x2", "x3"))
@NCIntentSample(Array("x1", "x2"))
@NCIntentSample(Array("x1"))
- @NCIntent("intent=intent2 term={id=='x2'}")
+ @NCIntent("intent=intent2 term~{id=='x2'}")
private def onX2(ctx: NCIntentMatch): NCResult = "OK"
}
diff --git
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/conversation/NCConversationTimeoutSpec.scala
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/conversation/NCConversationTimeoutSpec.scala
index fb042c5..6c6869e 100644
---
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/conversation/NCConversationTimeoutSpec.scala
+++
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/conversation/NCConversationTimeoutSpec.scala
@@ -54,7 +54,7 @@ class NCTimeoutSpecModel extends NCModel {
}
)
- @NCIntent("intent=req conv=true term={id == 'test'}")
+ @NCIntent("intent=req term~{id == 'test'}")
def onMatch(ctx: NCIntentMatch): NCResult = {
val conv = ctx.getContext.getConversation
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 d0a0eaa..ae76150 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
@@ -52,4 +52,4 @@ elements:
- "{fourth|4th} ^^[alias4](id == 'a3')^^"
intents:
- - "intent=i1 conv=false term(t1)={id == 'a' && ~txt == 'x'}"
+ - "intent=i1 term(t1)={id == 'a' && ~txt == 'x'}"
diff --git
a/nlpcraft/src/test/scala/org/apache/nlpcraft/models/stm/NCStmTestModel.scala
b/nlpcraft/src/test/scala/org/apache/nlpcraft/models/stm/NCStmTestModel.scala
index 5325077..a9ebe86 100644
---
a/nlpcraft/src/test/scala/org/apache/nlpcraft/models/stm/NCStmTestModel.scala
+++
b/nlpcraft/src/test/scala/org/apache/nlpcraft/models/stm/NCStmTestModel.scala
@@ -44,15 +44,15 @@ class NCStmTestModel extends
NCModelAdapter("nlpcraft.stm.test", "STM Test Model
override def getGroups: util.List[String] = groups.asJava
}
- @NCIntent("intent=sale term={id=='sale'}")
+ @NCIntent("intent=sale term~{id=='sale'}")
private def onSale(ctx: NCIntentMatch): NCResult = "sale"
- @NCIntent("intent=buy term={id=='buy'}")
+ @NCIntent("intent=buy term~{id=='buy'}")
private def onBuy(ctx: NCIntentMatch): NCResult = "buy"
- @NCIntent("intent=sale_best_employee term={id=='sale'}
term={id=='best_employee'}")
+ @NCIntent("intent=sale_best_employee term~{id=='sale'}
term~{id=='best_employee'}")
private def onBestEmployeeSale(ctx: NCIntentMatch): NCResult =
"sale_best_employee"
- @NCIntent("intent=buy_best_employee term={id=='buy'}
term={id=='best_employee'}")
+ @NCIntent("intent=buy_best_employee term~{id=='buy'}
term~{id=='best_employee'}")
private def onBestEmployeeBuy(ctx: NCIntentMatch): NCResult =
"buy_best_employee"
}