// XmlReader is on a start tag. Parses it and returns the result. protected virtual NameClass ReadNameClass() { if (SkipForeignElements()) { Trace.WriteLine("dispatching NC: " + reader.LocalName); NCReader ncreader = (NCReader)NCReaders[reader.LocalName]; if (ncreader == null) { // error: unknown element name ReportError(ERR_NAMECLASS_EXPECTED, reader.Name); reader.Skip(); return(new SimpleNameClass("foo", "bar")); // recover } Trace.Indent(); NameClass nc = ncreader(); // dispatch the reader. Trace.Unindent(); return(nc); } else { // there is no child element ReportError(ERR_MISSING_ATTRIBUTE, reader.Name, "name"); return(AnyNameClass.theInstance); } }
public GrammarReader(GrammarReaderController controller, ExpBuilder builder) { this.Controller = controller; this.Builder = builder; // this.ResManager = new ResourceManager(this.GetType()); this.ResManager = new ResourceManager("Tenuto.Reader.GrammarReader", this.GetType().Assembly); { // derived classes can set additional ExpReader directly to // the ExpReaders field. IDictionary dic = new Hashtable(); dic["notAllowed"] = new ExpReader(NotAllowed); dic["empty"] = new ExpReader(Empty); dic["group"] = new ExpReader(Group); dic["choice"] = new ExpReader(Choice); dic["interleave"] = new ExpReader(Interleave); dic["optional"] = new ExpReader(Optional); dic["zeroOrMore"] = new ExpReader(ZeroOrMore); dic["oneOrMore"] = new ExpReader(OneOrMore); dic["mixed"] = new ExpReader(Mixed); dic["list"] = new ExpReader(List); dic["element"] = new ExpReader(Element); dic["attribute"] = new ExpReader(Attribute); dic["externalRef"] = new ExpReader(ExternalRef); dic["ref"] = new ExpReader(Ref); dic["parentRef"] = new ExpReader(ParentRef); dic["grammar"] = new ExpReader(GrammarElm); dic["data"] = new ExpReader(Data); dic["value"] = new ExpReader(Value); dic["text"] = new ExpReader(Text); ExpReaders = dic; } { IDictionary dic = new Hashtable(); dic["choice"] = new NCReader(ChoiceName); dic["name"] = new NCReader(SimpleName); dic["nsName"] = new NCReader(NsName); dic["anyName"] = new NCReader(AnyName); NCReaders = dic; } }
public GrammarReader( GrammarReaderController controller, ExpBuilder builder ) { this.Controller = controller; this.Builder = builder; // this.ResManager = new ResourceManager(this.GetType()); this.ResManager = new ResourceManager("GrammarReader",this.GetType().Assembly); { // derived classes can set additional ExpReader directly to // the ExpReaders field. IDictionary dic = new Hashtable(); dic["notAllowed"] = new ExpReader(NotAllowed); dic["empty"] = new ExpReader(Empty); dic["group"] = new ExpReader(Group); dic["choice"] = new ExpReader(Choice); dic["interleave"] = new ExpReader(Interleave); dic["optional"] = new ExpReader(Optional); dic["zeroOrMore"] = new ExpReader(ZeroOrMore); dic["oneOrMore"] = new ExpReader(OneOrMore); dic["mixed"] = new ExpReader(Mixed); dic["list"] = new ExpReader(List); dic["element"] = new ExpReader(Element); dic["attribute"] = new ExpReader(Attribute); dic["externalRef"] = new ExpReader(ExternalRef); dic["ref"] = new ExpReader(Ref); dic["parentRef"] = new ExpReader(ParentRef); dic["grammar"] = new ExpReader(GrammarElm); dic["data"] = new ExpReader(Data); dic["value"] = new ExpReader(Value); dic["text"] = new ExpReader(Text); ExpReaders = dic; } { IDictionary dic = new Hashtable(); dic["choice"] = new NCReader(ChoiceName); dic["name"] = new NCReader(SimpleName); dic["nsName"] = new NCReader(NsName); dic["anyName"] = new NCReader(AnyName); NCReaders = dic; } }