This is an automated email from the ASF dual-hosted git repository. aradzinski pushed a commit to branch NLPCRAFT-369 in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
commit ff7dcd32b6bde70568923bc2abfd6c16eaa56fec Author: Aaron Radzinski <[email protected]> AuthorDate: Thu Jul 22 14:07:05 2021 -0700 WIP on NLPCRAFT-369. --- .../model/intent/compiler/NCIdlCompiler.scala | 8 ++-- .../intent/idl/compiler/NCIdlCompilerSpec.scala | 48 +++++++++++++++++++++- 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala index 7ba490c..e5d2653 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCIdlCompiler.scala @@ -122,17 +122,17 @@ object NCIdlCompiler extends LazyLogging { def boolVal(k: String, v: Object): Boolean = v match { case b: java.lang.Boolean if b != null => b - case _ => throw newSyntaxError(s"Invalid intent option: $k")(ctx) + case _ => throw newSyntaxError(s"Invalid intent option value: $k")(ctx) } for ((k, v) <- json) { if (k == "ordered") opts.ordered = boolVal(k, v) - if (k == "unused_free_words") + else if (k == "unused_free_words") opts.ignoreUnusedFreeWords = boolVal(k, v) - if (k == "unused_sys_toks") + else if (k == "unused_sys_toks") opts.ignoreUnusedSystemTokens = boolVal(k, v) - if (k == "unused_user_toks") + else if (k == "unused_user_toks") opts.ignoreUnusedUserTokens = boolVal(k, v) else throw newSyntaxError(s"Unknown intent option: $k")(ctx) diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/NCIdlCompilerSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/NCIdlCompilerSpec.scala index 6fbc15a..adb717c 100644 --- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/NCIdlCompilerSpec.scala +++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/NCIdlCompilerSpec.scala @@ -101,6 +101,10 @@ class NCIdlCompilerSpec { | * +=====================+ | */ |intent=i1 + | options={ + | 'ordered': true, + | 'unused_free_words': false + | } | flow="a[^0-9]b" // Flow comment. | term(t1)={has(json("{'a': true, 'b\'2': {'arr': [1, 2, 3]}}"), list("موسكو\"", 'v1\'v1', "k2", "v2"))} | fragment(f1, {'a': true, 'b': ["s1", "s2"]}) /* Another fragment. */ @@ -118,6 +122,7 @@ class NCIdlCompilerSpec { | term~/class#method/ | |intent=i1 + | options={} | flow="a[^0-9]b" | term(t1)={has(json("{'a': true, 'b\'2': {'arr': [1, 2, 3]}}"), list("موسكو\"", 'v1\'v1', "k2", "v2"))} | fragment(f21, {'a': true, 'b': ["s1", "s2"]}) @@ -129,7 +134,47 @@ class NCIdlCompilerSpec { @throws[NCException] def testInlineCompileFail(): Unit = { NCIdlCompilerGlobal.clearCache(MODEL_ID) - + + checkCompileError( + """ + |intent=i1 + | options={'ordered': 1} + | flow="a[^0-9]b" + | meta={'a': true, 'b': {'Москва': [1, 2, 3]}} + | term(t1)={2 == 2 && size(tok_id()) != -25} + |""".stripMargin + ) + + checkCompileError( + """ + |intent=i1 + | options={'ordered1': false} + | flow="a[^0-9]b" + | meta={'a': true, 'b': {'Москва': [1, 2, 3]}} + | term(t1)={2 == 2 && size(tok_id()) != -25} + |""".stripMargin + ) + + checkCompileError( + """ + |intent=i1 + | options={'ordered': false, 'unknown': 1} + | flow="a[^0-9]b" + | meta={'a': true, 'b': {'Москва': [1, 2, 3]}} + | term(t1)={2 == 2 && size(tok_id()) != -25} + |""".stripMargin + ) + + checkCompileError( + """ + |intent=i1 + | options={'ordered': false_1} # Broken JSON. + | flow="a[^0-9]b" + | meta={'a': true, 'b': {'Москва': [1, 2, 3]}} + | term(t1)={2 == 2 && size(tok_id()) != -25} + |""".stripMargin + ) + checkCompileError( """ |intent=i1 @@ -228,6 +273,7 @@ class NCIdlCompilerSpec { checkCompileError( """ |fragment=f111 + | options={'ordered': 1} | term(t1)={2==2} | term~/class#method/ |
