private void CHAR_LIST(GrammarSet conj) { if (eof) { return; } SkipNewLine(); //Console.WriteLine("CHAR_LIST"); switch (lookAhead) { case Sym.COMA: match(Sym.COMA); CHAR(conj); CHAR_LIST(conj); break; case Sym.SEMI_COLON: //Do nothing EPSILON CASE break; default: conj.ConjInError = true; ERROR(); Sync(); break; } }
private void CONJ() { if (eof) { return; } SkipNewLine(); //Console.WriteLine("CONJ"); switch (lookAhead) { case Sym.CONJ: GrammarSet conj = new GrammarSet(); sTable.addSet(conj); match(Sym.CONJ); match(Sym.COLON); Token id = match(Sym.ID); if (id != null) { conj.ConjName = id.lexeme; } else { conj.ConjInError = true; } match(Sym.ARROW); CHAR(conj); CONJ_BODY(conj); match(Sym.SEMI_COLON); conj.createCharacters(); break; default: ERROR(); Sync(); break; } }
private void CONJ_BODY(GrammarSet conj) { if (eof) { return; } SkipNewLine(); switch (lookAhead) { case Sym.TILDE: conj.SimpleSet = true; match(Sym.TILDE); CHAR(conj); break; case Sym.COMA: case Sym.SEMI_COLON: CHAR_LIST(conj); break; default: conj.ConjInError = true; ERROR(); Sync(); break; } }
private void CHAR(GrammarSet conj) { if (eof) { return; } SkipNewLine(); switch (lookAhead) { case Sym.TILDE: conj.addChar(token); match(Sym.TILDE); break; case Sym.SEMI_COLON: conj.addChar(token); match(Sym.SEMI_COLON); break; case Sym.CHARACTER: conj.addChar(token); match(Sym.CHARACTER); break; case Sym.SPECIAL_CARACTER: conj.addChar(token); match(Sym.SPECIAL_CARACTER); break; case Sym.COMA: conj.addChar(token); match(Sym.COMA); break; case Sym.DIGIT: conj.addChar(token); match(Sym.DIGIT); break; default: conj.ConjInError = true; ERROR(); Sync(); break; } }
public void addSet(GrammarSet newSet) { //TOOD validate name of set; SetsList.Add(newSet); }