WIP
diff --git a/README.md b/README.md
index 5f16bef..b85a766 100644
--- a/README.md
+++ b/README.md
@@ -171,7 +171,7 @@
- "no <LIGHT>"
intents:
- - "intent=ls term(act)={has(tok_groups(), 'act')} term(loc)={tok_id() == 'ls:loc'}*"
+ - "intent=ls term(act)={has(tok_groups, 'act')} term(loc)={# == 'ls:loc'}*"
```
### Model Implementation
diff --git a/nlpcraft-examples/alarm/src/main/resources/intents.idl b/nlpcraft-examples/alarm/src/main/resources/intents.idl
index 3c1810b..3c3934d 100644
--- a/nlpcraft-examples/alarm/src/main/resources/intents.idl
+++ b/nlpcraft-examples/alarm/src/main/resources/intents.idl
@@ -16,14 +16,14 @@
*/
// Fragments (mostly for demo purposes here).
-fragment=buzz term~{tok_id() == 'x:alarm'}
+fragment=buzz term~{# == 'x:alarm'}
fragment=when
term(nums)~{
// Demonstrating term variables.
@type = meta_tok('nlpcraft:num:unittype')
@iseq = meta_tok('nlpcraft:num:isequalcondition') // Excludes conditional statements.
- tok_id() == 'nlpcraft:num' && @type == 'datetime' && @iseq == true
+ # == 'nlpcraft:num' && @type == 'datetime' && @iseq == true
}[1,7]
// Intents (using fragments).
diff --git a/nlpcraft-examples/lightswitch/src/main/resources/lightswitch_model.yaml b/nlpcraft-examples/lightswitch/src/main/resources/lightswitch_model.yaml
index c79329a..a976f64 100644
--- a/nlpcraft-examples/lightswitch/src/main/resources/lightswitch_model.yaml
+++ b/nlpcraft-examples/lightswitch/src/main/resources/lightswitch_model.yaml
@@ -72,4 +72,4 @@
- "<LIGHT> {out|off|down}"
intents:
- - "intent=ls term(act)={has(tok_groups(), 'act')} term(loc)={tok_id() == 'ls:loc'}*"
\ No newline at end of file
+ - "intent=ls term(act)={has(tok_groups, 'act')} term(loc)={# == 'ls:loc'}*"
\ No newline at end of file
diff --git a/nlpcraft-examples/minecraft/src/main/resources/minecraft.yaml b/nlpcraft-examples/minecraft/src/main/resources/minecraft.yaml
index b1229a1..9cffd47 100644
--- a/nlpcraft-examples/minecraft/src/main/resources/minecraft.yaml
+++ b/nlpcraft-examples/minecraft/src/main/resources/minecraft.yaml
@@ -100,7 +100,7 @@
# Give intent
- id: give:action
synonyms:
- - "{give ^^[target]{tok_id() == 'mc:player'}^^}"
+ - "{give ^^[target]{# == 'mc:player'}^^}"
- id: give:block-word
synonyms:
- "{block|blocks}"
@@ -124,18 +124,18 @@
- "wall"
- id: fill:length
synonyms:
- - "{{size|length|diameter} {of|_} ^^[length]{tok_id() == 'nlpcraft:num'}^^}"
+ - "{{size|length|diameter} {of|_} ^^[length]{# == 'nlpcraft:num'}^^}"
- id: position:player
groups:
- fill:position
synonyms:
- - "{{at|near} ^^[player]{tok_id() == 'mc:player'}^^ {position|_}|where ^^[player]{tok_id() == 'mc:player'}^^}"
+ - "{{at|near} ^^[player]{# == 'mc:player'}^^ {position|_}|where ^^[player]{# == 'mc:player'}^^}"
- id: position:front
groups:
- fill:position
synonyms:
- - "{{^^[distance]{tok_id() == 'nlpcraft:num'}^^|_} {in|_} front {of|_} ^^[player]{tok_id() == 'mc:player'}^^}"
+ - "{{^^[distance]{# == 'nlpcraft:num'}^^|_} {in|_} front {of|_} ^^[player]{# == 'mc:player'}^^}"
abstractTokens:
- mc:player
@@ -152,22 +152,22 @@
# List of model intents.
intents:
- "intent=weatherIntent
- term={tok_id() == 'weather:action'}?
- term(arg)={has(tok_groups(), 'weather')}"
+ term={# == 'weather:action'}?
+ term(arg)={has(tok_groups, 'weather')}"
- "intent=timeIntent
- term={tok_id() == 'time:action'}?
- term(arg)={has(tok_groups(), 'time')}"
+ term={# == 'time:action'}?
+ term(arg)={has(tok_groups, 'time')}"
- "intent=giveIntent
- term(action)={tok_id() == 'give:action'}
- term(quantity)={tok_id() == 'nlpcraft:num'}?
- term(item)={tok_id() == 'mc:item'}
- term={tok_id() == 'give:block-word'}?"
+ term(action)={# == 'give:action'}
+ term(quantity)={# == 'nlpcraft:num'}?
+ term(item)={# == 'mc:item'}
+ term={# == 'give:block-word'}?"
- "intent=fillIntent
- term={tok_id() == 'fill:action'}
- term(shape)={has(tok_groups(), 'fill:shape')}
- term(block)={tok_id() == 'mc:block'}
- term(len)={tok_id() == 'fill:length'}?
- term(position)={has(tok_groups(), 'fill:position')}"
\ No newline at end of file
+ term={# == 'fill:action'}
+ term(shape)={has(tok_groups, 'fill:shape')}
+ term(block)={# == 'mc:block'}
+ term(len)={# == 'fill:length'}?
+ term(position)={has(tok_groups, 'fill:position')}"
\ No newline at end of file
diff --git a/nlpcraft-examples/phone/src/main/java/org/apache/nlpcraft/examples/phone/PhoneModel.java b/nlpcraft-examples/phone/src/main/java/org/apache/nlpcraft/examples/phone/PhoneModel.java
index 20ce259..5ad2503 100644
--- a/nlpcraft-examples/phone/src/main/java/org/apache/nlpcraft/examples/phone/PhoneModel.java
+++ b/nlpcraft-examples/phone/src/main/java/org/apache/nlpcraft/examples/phone/PhoneModel.java
@@ -55,9 +55,9 @@
*/
@NCIntent("" +
"intent=action " +
- "term={tok_id() == 'phone:act'} " +
+ "term={# == 'phone:act'} " +
// Either organization, person or a phone number (or a combination of).
- "term(rcpt)={has(list('google:organization', 'google:person', 'google:phone_number'), tok_id())}[1,3]"
+ "term(rcpt)={has(list('google:organization', 'google:person', 'google:phone_number'), #)}[1,3]"
)
@NCIntentSample({
"Call to Apple office",
diff --git a/nlpcraft-examples/sql/src/main/resources/sql_model.yaml b/nlpcraft-examples/sql/src/main/resources/sql_model.yaml
index 1cd55e1..037a800 100644
--- a/nlpcraft-examples/sql/src/main/resources/sql_model.yaml
+++ b/nlpcraft-examples/sql/src/main/resources/sql_model.yaml
@@ -1445,43 +1445,43 @@
groups:
- "element"
synonyms:
- - "^^[colName]{has(tok_groups(), 'column') && tok_value() == null}^^"
+ - "^^[colName]{has(tok_groups, 'column') && tok_value == null}^^"
- id: "col:val"
groups:
- "element"
synonyms:
- - "^^[colVal]{has(tok_groups(), 'column') && tok_value() != null}^^"
+ - "^^[colVal]{has(tok_groups, 'column') && tok_value != null}^^"
- id: "col:num"
groups:
- "element"
synonyms:
- - "^^{tok_id() == 'col' && has(list(4, 8), meta_part('colName', 'sql:datatype'))}^^"
+ - "^^{# == 'col' && has(list(4, 8), meta_part('colName', 'sql:datatype'))}^^"
- id: "col:date"
groups:
- "element"
synonyms:
- - "^^{tok_id() == 'col' && meta_part('colName', 'sql:datatype') == 91}^^"
+ - "^^{# == 'col' && meta_part('colName', 'sql:datatype') == 91}^^"
- id: "col:varchar"
groups:
- "element"
synonyms:
- - "^^{tok_id() == 'col' && meta_part('colName', 'sql:datatype') == 12}^^"
+ - "^^{# == 'col' && meta_part('colName', 'sql:datatype') == 12}^^"
- id: "condition:num"
groups:
- "condition"
synonyms:
- - "^^{tok_id() == 'col:num'}^^ ^^{tok_id() == 'nlpcraft:num'}^^ "
+ - "^^{# == 'col:num'}^^ ^^{# == 'nlpcraft:num'}^^ "
- id: "condition:value"
groups:
- "condition"
synonyms:
- - "^^{tok_id() == 'col:varchar'}^^ {is|equal|_} ^^{tok_id() == 'col:val'}^^"
- - "^^{tok_id() == 'col:val'}^^"
+ - "^^{# == 'col:varchar'}^^ {is|equal|_} ^^{# == 'col:val'}^^"
+ - "^^{# == 'col:val'}^^"
- id: "condition:date"
groups:
- "condition"
synonyms:
- - "^^{tok_id() == 'col:date'}^^ ^^{tok_id() == 'nlpcraft:date'}^^"
+ - "^^{# == 'col:date'}^^ ^^{# == 'nlpcraft:date'}^^"
- id: "sort:best"
groups:
- "Sort criteria"
diff --git a/nlpcraft-examples/time/src/main/java/org/apache/nlpcraft/examples/time/TimeModel.java b/nlpcraft-examples/time/src/main/java/org/apache/nlpcraft/examples/time/TimeModel.java
index bff4d9c..9023465 100644
--- a/nlpcraft-examples/time/src/main/java/org/apache/nlpcraft/examples/time/TimeModel.java
+++ b/nlpcraft-examples/time/src/main/java/org/apache/nlpcraft/examples/time/TimeModel.java
@@ -41,9 +41,9 @@
* See 'README.md' file in the same folder for running and testing instructions.
*/
// Declaring intents on the class level + fragment usage for demo purposes.
-@NCIntent("fragment=city term(city)~{tok_id() == 'nlpcraft:city'}")
-@NCIntent("intent=intent2 term~{tok_id() == 'x:time'} fragment(city)")
-@NCIntent("intent=intent1 term={tok_id() == 'x:time'}")
+@NCIntent("fragment=city term(city)~{# == 'nlpcraft:city'}")
+@NCIntent("intent=intent2 term~{# == 'x:time'} fragment(city)")
+@NCIntent("intent=intent1 term={# == 'x:time'}")
public class TimeModel extends NCModelFileAdapter {
// Medium data formatter.
static private final DateTimeFormatter FMT = DateTimeFormatter.ofLocalizedDateTime(MEDIUM);
diff --git a/nlpcraft-examples/weather/src/main/java/org/apache/nlpcraft/examples/weather/WeatherModel.java b/nlpcraft-examples/weather/src/main/java/org/apache/nlpcraft/examples/weather/WeatherModel.java
index f6cf737..325d428 100644
--- a/nlpcraft-examples/weather/src/main/java/org/apache/nlpcraft/examples/weather/WeatherModel.java
+++ b/nlpcraft-examples/weather/src/main/java/org/apache/nlpcraft/examples/weather/WeatherModel.java
@@ -142,13 +142,13 @@
*/
@NCIntent(
"intent=req " +
- "term~{tok_id() == 'wt:phen'}* " + // Zero or more weather phenomenon.
+ "term~{# == 'wt:phen'}* " + // Zero or more weather phenomenon.
"term(ind)~{" +
- "@isIndicator = has(tok_groups(), 'indicator') " + // Just to demo term variable usage.
+ "@isIndicator = has(tok_groups, 'indicator') " + // Just to demo term variable usage.
"@isIndicator" +
"}* " + // Optional indicator words (zero or more).
- "term(city)~{tok_id() == 'nlpcraft:city'}? " + // Optional city.
- "term(date)~{tok_id() == 'nlpcraft:date'}?" // Optional date (overrides indicator words).
+ "term(city)~{# == 'nlpcraft:city'}? " + // Optional city.
+ "term(date)~{# == 'nlpcraft:date'}?" // Optional date (overrides indicator words).
)
// NOTE: each samples group will reset conversation STM during auto-testing.
@NCIntentSample({
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntent.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntent.java
index 484a1d3..0639ae9 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntent.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntent.java
@@ -32,7 +32,7 @@
* Here's an example of using this annotation (from <a target=_new href="https://nlpcraft.apache.org/examples/light_switch.html">LightSwitch</a> example):
* <pre class="brush: java, highlight: [1,2]">
* {@literal @}NCIntent("import('intents.idl')")
- * {@literal @}NCIntent("intent=act term(act)={has(tok_groups(), 'act')} term(loc)={trim(tok_id()) == 'ls:loc'}*")
+ * {@literal @}NCIntent("intent=act term(act)={has(tok_groups, 'act')} term(loc)={# == 'ls:loc'}*")
* {@literal @}NCIntentSample(Array(
* "Turn the lights off in the entire house.",
* "Switch on the illumination in the master bedroom closet.",
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSample.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSample.java
index 6d57d0d..0a56ba9 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSample.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSample.java
@@ -54,7 +54,7 @@
* <p>
* Here's an example of using this annotation (from <a target=_new href="https://nlpcraft.apache.org/examples/light_switch.html">LightSwitch</a> example):
* <pre class="brush: java, highlight: [2]">
- * {@literal @}NCIntent("intent=act term(act)={has(tok_groups(), 'act')} term(loc)={trim(tok_id()) == 'ls:loc'}*")
+ * {@literal @}NCIntent("intent=act term(act)={has(tok_groups, 'act')} term(loc)={# == 'ls:loc'}*")
* {@literal @}NCIntentSample(Array(
* "Turn the lights off in the entire house.",
* "Switch on the illumination in the master bedroom closet.",
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentTerm.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentTerm.java
index 13832a0..d8302ac 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentTerm.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentTerm.java
@@ -36,7 +36,7 @@
* Here's an example of using this annotation (from <a target=_new href="https://nlpcraft.apache.org/examples/light_switch.html">LightSwitch</a> example):
* <pre class="brush: java, highlight: [10,11]">
* {@literal @}NCIntent("import('intents.idl')")
- * {@literal @}NCIntent("intent=act term(act)={has(tok_groups(), 'act')} term(loc)={trim(tok_id()) == 'ls:loc'}*")
+ * {@literal @}NCIntent("intent=act term(act)={has(tok_groups, 'act')} term(loc)={# == 'ls:loc'}*")
* {@literal @}NCIntentSample(Array(
* "Turn the lights off in the entire house.",
* "Switch on the illumination in the master bedroom closet.",
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/test_ok.idl b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/test_ok.idl
index d380eed..fdb2e83 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/test_ok.idl
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/test_ok.idl
@@ -37,7 +37,7 @@
intent=i2
flow="a[^0-9]b"
meta={'a': 42, 'b': {'Москва': [1, 2, 3]}}
- term(t1)={2 == 2 && !(tok_id()) != -25 && meta_model('a') == 42}
+ term(t1)={2 == 2 && !# != -25 && meta_model('a') == 42}
term(t2)={
@a = meta_model('a')
@list = list(1, 2, 3, 4)
@@ -62,7 +62,7 @@
intent=i5
flow="a[^0-9]b"
meta={'a': 42, 'b': {'Москва': [1, 2, 3]}}
- term(t1)={month() >= 6 && !(tok_id()) != -25 && meta_model('a') == 42}
+ term(t1)={month >= 6 && !(#) != -25 && meta_model('a') == 42}
term(t2)={
@a = meta_model('a')
@list = list(1, 2, 3, 4)
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/idl_test_model.yaml b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/idl_test_model.yaml
index a9b70f1..2837692 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/idl_test_model.yaml
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/idl_test_model.yaml
@@ -38,7 +38,7 @@
floatVal: 1.5
textVal: "a2"
synonyms:
- - "{second|2nd} ^^[alias1]{trim(tok_id()) == 'a'}^^"
+ - "{second|2nd} ^^[alias1]{# == 'a'}^^"
- id: "a3"
metadata:
intVal: 2
@@ -49,7 +49,7 @@
- "{a33|a3}"
- id: "a4"
synonyms:
- - "{fourth|4th} ^^[alias4]{tok_id() == 'a3'}^^"
+ - "{fourth|4th} ^^[alias4]{# == 'a3'}^^"
intents:
- - "intent=i1 term(t1)={tok_id() == 'a' && meta_tok('txt') == 'x'}"
+ - "intent=i1 term(t1)={# == 'a' && meta_tok('txt') == 'x'}"
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy/javatest/NCNestedClass.java b/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy/javatest/NCNestedClass.java
index 131f02e..335d2f8 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy/javatest/NCNestedClass.java
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy/javatest/NCNestedClass.java
@@ -24,7 +24,7 @@
*
*/
public class NCNestedClass {
- @NCIntent("intent=javaClass term={tok_id() == 'javaClass'}")
+ @NCIntent("intent=javaClass term={# == 'javaClass'}")
public NCResult m() {
return NCResult.text("OK");
}
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy/javatest/NCNestedStatic.java b/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy/javatest/NCNestedStatic.java
index a91faa9..478452b 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy/javatest/NCNestedStatic.java
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/deploy/javatest/NCNestedStatic.java
@@ -24,7 +24,7 @@
*
*/
public class NCNestedStatic {
- @NCIntent("intent=javaStatic term={tok_id() == 'javaStatic'}")
+ @NCIntent("intent=javaStatic term={# == 'javaStatic'}")
public static NCResult m() {
return NCResult.text("OK");
}