public void LoadFolder(string folderPath)
        {
            Interpreter interpreter = new Interpreter();

            interpreter.AddFilesFromDirectory(folderPath);
            interpreter.Compile();
            foreach (VCGrammar grammar in interpreter.CompiledGrammar)
            {
                speechRecognitionEngine.LoadGrammar(grammar);
            }
            speechRecognitionEngine.RequestRecognizerUpdate();
            speechRecognitionEngine.EmulateRecognize("hello");
        }
Пример #2
0
        public void TestInterpreterOnFolder()
        {
            Interpreter interpreter = new Interpreter();

            interpreter.AddFilesFromDirectory(RESOURCE_TEST_FOLDER);
            interpreter.Compile();

            // Test modules.
            Assert.AreEqual(3, interpreter.ModuleMap.Count);
            Assert.IsTrue(interpreter.ModuleMap.ContainsKey("outer"));
            Assert.IsTrue(interpreter.ModuleMap.ContainsKey("package.test"));
            Assert.IsTrue(interpreter.ModuleMap.ContainsKey("package.inner.inner"));

            // Test imports.
            Module module;
            ReadOnlyDictionary <string, Tuple <string, bool> > moduleImportDict;

            module           = interpreter.ModuleMap["outer"];
            moduleImportDict = module.LoadedImports;
            Assert.AreEqual(1, moduleImportDict.Count);
            Assert.IsTrue(moduleImportDict.ContainsKey("package"));
            Assert.AreEqual("", moduleImportDict["package"].Item1);
            Assert.IsTrue(moduleImportDict["package"].Item2);

            module           = interpreter.ModuleMap["package.test"];
            moduleImportDict = module.LoadedImports;
            Assert.AreEqual(1, moduleImportDict.Count);
            Assert.IsTrue(moduleImportDict.ContainsKey("package.inner"));
            Assert.AreEqual("yes", moduleImportDict["package.inner"].Item1);
            Assert.IsFalse(moduleImportDict["package.inner"].Item2);

            // Test compilation.
            module = interpreter.ModuleMap["package.test"]; // Redundant, but futureproofing.
            Assert.AreEqual("a* (b{3} c+ | (d | e{2,9}) [f]) ((g)) h{3,}", module.LoadedGrammarNodes["test"].ToString());
            GrammarBuilder gb = GrammarCompiler.CompileToGrammarBuilder(module.LoadedGrammarNodes["test"]);

            Assert.AreEqual("‘a’ [‘b’ ‘c’,[‘d’,‘e’] [‘f’]] [[‘g’]] ‘h’", gb.DebugShowPhrases);
        }