コード例 #1
0
ファイル: JSGFParser.cs プロジェクト: pgrudzien12/syn-speech
        public void RuleDeclaration(JSGFRuleGrammar grammar)
        {
            bool     pub = false;
            String   s;
            JSGFRule r;
            Token    t  = null;
            Token    t1 = null;

            switch ((_jj_ntk == -1) ? jj_ntk() : _jj_ntk)
            {
            case Public:
                t   = jj_consume_token(Public);
                pub = true;
                break;

            default:
                jj_la1[7] = jj_gen;
                break;
            }
            t1 = jj_consume_token(28);
            s  = RuleDef();
            jj_consume_token(31);
            jj_consume_token(32);
            r = Alternatives();
            jj_consume_token(26);
            try
            {
                if (grammar != null)
                {
                    grammar.SetRule(s, r, pub);
                    String docComment = null;
                    if ((t != null) && (t.SpecialToken != null) && (t.SpecialToken.Image != null))
                    {
                        docComment = t.SpecialToken.Image;
                    }
                    else if ((t1 != null) && (t1.SpecialToken != null) && (t1.SpecialToken.Image != null))
                    {
                        docComment = t1.SpecialToken.Image;
                    }
                    if (docComment != null && docComment.StartsWith("/**"))
                    {
                        ExtractKeywords(grammar, s, docComment);
                        grammar.AddRuleDocComment(s, docComment);
                    }
                }
            }
            catch (ArgumentException e)
            {
                Console.WriteLine("ERROR SETTING JSGFRule " + s);
            }
        }
コード例 #2
0
ファイル: JSGFParser.cs プロジェクト: pgrudzien12/syn-speech
        public void ImportDeclaration(JSGFRuleGrammar grammar)
        {
            bool   all = false;
            String name;
            Token  t = null;

            t = jj_consume_token(Import);
            jj_consume_token(28);
            name = Name();
            switch ((_jj_ntk == -1) ? jj_ntk() : _jj_ntk)
            {
            case 29:
                jj_consume_token(29);
                jj_consume_token(30);
                all = true;
                break;

            default:
                jj_la1[5] = jj_gen;
                break;
            }
            jj_consume_token(31);
            jj_consume_token(26);
            // import all rules if .*
            if (all)
            {
                name = name + ".*";
            }
            JSGFRuleName r = new JSGFRuleName(name);

            if (grammar != null)
            {
                grammar.AddImport(r);
                if (grammar is JSGFRuleGrammar && t != null && t.SpecialToken != null)
                {
                    if (t.SpecialToken.Image != null && t.SpecialToken.Image.StartsWith("/**"))
                    {
                        JSGFRuleGrammar JG = grammar;
                        JG.AddImportDocComment(r, t.SpecialToken.Image);
                    }
                }
            }
        }
コード例 #3
0
ファイル: JSGFParser.cs プロジェクト: pgrudzien12/syn-speech
        /**
         * extract @keywords from documentation comments
         */
        static void ExtractKeywords(JSGFRuleGrammar grammar, String rname, String comment)
        {
            int i = 0;

            while ((i = comment.IndexOf("@example ", i) + 9) > 9)
            {
                int j = Math.Max(comment.IndexOf('\r', i), comment.IndexOf('\n', i));
                if (j < 0)
                {
                    j = comment.Length;
                    if (comment.EndsWith(("*/")))
                    {
                        j -= 2;
                    }
                }
                grammar.AddSampleSentence(rname, comment.Substring(i, j).Trim());
                i = j + 1;
            }
        }
コード例 #4
0
ファイル: JSGFParser.cs プロジェクト: pgrudzien12/syn-speech
        /**
         * newGrammarFromJSGF - Once JavaCC supports Readers we will change this
         */
        public static JSGFRuleGrammar NewGrammarFromJSGF(Stream i, JSGFRuleGrammarFactory factory)
        {
            JSGFRuleGrammar grammar = null;

            if (_parser == null)
            {
                _parser = new JSGFParser(i);
            }
            else
            {
                _parser.ReInit(i);
            }
            try
            {
                grammar = _parser.GrammarUnit(factory);
                return(grammar);
            }
            catch (ParseException e)
            {
                Token etoken = e.CurrentToken;
                JSGFGrammarParseException ge = new JSGFGrammarParseException(etoken.BeginLine, etoken.BeginColumn, "Grammar Error", e.Message);
                throw ge;
            }
        }
コード例 #5
0
ファイル: JSGFParser.cs プロジェクト: pgrudzien12/syn-speech
        public JSGFRuleGrammar GrammarDeclaration(JSGFRuleGrammarFactory factory)
        {
            String          s;
            JSGFRuleGrammar grammar = null;
            Token           t       = null;

            t = jj_consume_token(Grammar);
            s = Name();
            jj_consume_token(26);
            grammar = factory.NewGrammar(s);
            if (grammar != null && t != null && t.SpecialToken != null)
            {
                if (t.SpecialToken.Image != null && t.SpecialToken.Image.StartsWith("/**"))
                {
                    JSGFRuleGrammar JG = grammar;
                    JG.AddGrammarDocComment(t.SpecialToken.Image);
                }
            }
            { if (true)
              {
                  return(grammar);
              }
            }
        }
コード例 #6
0
ファイル: JSGFParser.cs プロジェクト: pgrudzien12/syn-speech
        public JSGFRuleGrammar GrammarUnit(JSGFRuleGrammarFactory factory)
        {
            JSGFRuleGrammar grammar = null;

            switch ((_jj_ntk == -1) ? jj_ntk() : _jj_ntk)
            {
            case Identifier:
                IdentHeader();
                break;

            default:
                jj_la1[0] = jj_gen;
                break;
            }
            grammar = GrammarDeclaration(factory);
            //label_1:
            var label_1 = false;

            while (true)
            {
                switch ((_jj_ntk == -1) ? jj_ntk() : _jj_ntk)
                {
                case Import:
                    break;

                default:
                    jj_la1[1] = jj_gen;
                    label_1   = true; break;
                }
                if (label_1)
                {
                    break;
                }
                ImportDeclaration(grammar);
            }
            //label_2:
            var label_2 = false;

            while (true)
            {
                switch ((_jj_ntk == -1) ? jj_ntk() : _jj_ntk)
                {
                case Public:
                case 28:
                    ;
                    break;

                default:
                    jj_la1[2] = jj_gen;
                    label_2   = true; break;
                }
                if (label_2)
                {
                    break;
                }
                RuleDeclaration(grammar);
            }
            jj_consume_token(0);
            { if (true)
              {
                  return(grammar);
              }
            }
        }