/// <summary> /// Will construct a definitive grammar from an input string, throw exception with compiler error otherwise. /// Assumes first rule is the start symbol. /// </summary> /// <param name="input"></param> public void setDefinitiveGrammar(String input) { bool noError = bnfParser.Parse(input); if (noError) { // no start symbol specified, assume first entry definitiveGrammar = new DefinitiveGrammar(bnfParser.Rules, bnfParser.Rules[0]); visualisedGrammar = null; } else { throw new Exception(bnfParser.ErrorText); } }
private void buildVisualisedGrammar() { if (definitiveGrammar == null) throw new Exception("You must set the definitive grammar first"); visualisedGrammar = new VisualisedGrammar(definitiveGrammar); }
public void setDefinitiveGrammar(DefinitiveGrammar dg) { definitiveGrammar = dg; visualisedGrammar = null; }
public void setStartSymbol(string name) { NonterminalHeadD nont = definitiveGrammar.getNonterminal(name); if (nont != null) { definitiveGrammar.setStartSymbol(nont); } else throw new Exception("Could not find the Nonterminal from the name [" + name + "] given."); visualisedGrammar = null; }