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

[incubator-nlpcraft] branch NLPCRAFT-206 updated: Update NCBaseDslCompiler.scala

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

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


The following commit(s) were added to refs/heads/NLPCRAFT-206 by this push:
     new 3893707  Update NCBaseDslCompiler.scala
3893707 is described below

commit 38937076112f0ea20d835685198b67c2dc4a75f4
Author: Aaron Radzinski <ar...@apache.org>
AuthorDate: Sat Feb 20 22:12:51 2021 -0800

    Update NCBaseDslCompiler.scala
---
 .../model/intent/impl/ver2/NCBaseDslCompiler.scala | 52 +++++++++++++++++-----
 1 file changed, 42 insertions(+), 10 deletions(-)

diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/ver2/NCBaseDslCompiler.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/ver2/NCBaseDslCompiler.scala
index fa25550..13d598e 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/ver2/NCBaseDslCompiler.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/ver2/NCBaseDslCompiler.scala
@@ -334,6 +334,35 @@ trait NCBaseDslCompiler {
 
         (_, stack, _) ⇒ pushAny(atom, false)(stack)
     }
+    
+    private final val FUNCTIONS = Set(
+        "meta_token",       "meta_model",       "meta_intent",      "meta_req",         "meta_user",
+        "meta_company",     "meta_sys",         "meta_conv",        "json",             "if",
+        "id",               "ancestors",        "parent",           "groups",           "value",
+        "aliases",          "start_idx",        "end_idx",          "req_id",           "req_normtext",
+        "req_tstamp",       "req_addr",         "req_agent",        "user_id",          "user_fname",
+        "user_lname",       "user_email",       "user_admin",       "user_signup_tstamp",   "comp_id",
+        "comp_name",        "comp_website",     "comp_country",     "comp_region",      "comp_city",
+        "comp_addr",        "comp_postcode",    "trim",             "strip",            "uppercase",
+        "lowercase",        "is_alpha",         "is_alphanum",      "is_whitespace",    "is_num",
+        "is_numspace",      "is_alphaspace",    "is_alphanumspace", "substring",        "index",
+        "regex",            "soundex",          "split",            "split_trim",       "replace",
+        "abs",              "ceil",             "floor",            "rint",             "round",
+        "signum",           "sqrt",             "cbrt",             "pi",               "euler",
+        "acos",             "asin",             "atan",             "cos",              "sin",
+        "tan",              "cosh",             "sinh",             "tanh",             "atn2",
+        "degrees",          "radians",          "exp",              "expm1",            "hypot",
+        "log",              "log10",            "log1p",            "pow",              "rand",
+        "square",           "list",             "map",              "get",              "index",
+        "has",              "tail",             "add",              "remove",           "first",
+        "last",             "keys",             "values",           "length",           "count",
+        "take",             "drop",             "size",             "length",           "reverse",
+        "is_empty",         "non_empty",        "to_string",        "avg",              "max",
+        "min",              "stdev",            "sum",              "year",             "month",
+        "day_of_month",     "day_of_week",      "day_of_year",      "hour",             "min",
+        "sec",              "week_of_month",    "week_of_year",     "quarter",          "msec",
+        "now"
+    )
 
     /**
      *
@@ -343,6 +372,9 @@ trait NCBaseDslCompiler {
     def parseCallExpr(id: TN): Instr = {
         val fun = id.getText
 
+        if (!FUNCTIONS.contains(fun))
+            throw errUnknownFun(fun)
+
         (tok, stack: StackType, termCtx) ⇒ {
             implicit val evidence = stack
 
@@ -564,14 +596,14 @@ trait NCBaseDslCompiler {
 
             fun match {
                 // Metadata access.
-                case "token_meta" ⇒ doTokenMeta()
-                case "model_meta" ⇒ doModelMeta()
-                case "intent_meta" ⇒ doIntentMeta()
-                case "req_meta" ⇒ doReqMeta()
-                case "user_meta" ⇒ doUserMeta()
-                case "company_meta" ⇒ doCompMeta()
-                case "sys_meta" ⇒ doSysMeta()
-                case "conv_meta" ⇒ doConvMeta()
+                case "meta_token" ⇒ doTokenMeta()
+                case "meta_model" ⇒ doModelMeta()
+                case "meta_intent" ⇒ doIntentMeta()
+                case "meta_req" ⇒ doReqMeta()
+                case "meta_user" ⇒ doUserMeta()
+                case "meta_company" ⇒ doCompMeta()
+                case "meta_sys" ⇒ doSysMeta()
+                case "meta_conv" ⇒ doConvMeta()
 
                 // Converts JSON to map.
                 case "json" ⇒ doJson()
@@ -672,7 +704,7 @@ trait NCBaseDslCompiler {
                 case "map" ⇒ doMap()
                 case "get" ⇒
                 case "index" ⇒
-                case "contains" ⇒
+                case "has" ⇒
                 case "tail" ⇒
                 case "add" ⇒
                 case "remove" ⇒
@@ -713,7 +745,7 @@ trait NCBaseDslCompiler {
                 case "msec" ⇒
                 case "now" ⇒ // Epoc time.
 
-                case _ ⇒ errUnknownFun(fun)
+                case _ ⇒ throw errUnknownFun(fun)
             }
         }
     }