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); } }
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); } } } }
/** * 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; } }
/** * 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; } }
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); } } }
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); } } }