/// <summary> /// Parses the keyword «\field». /// </summary> private void ParseField(ParagraphElements elements, int nestingLevel) { AssertSymbol(Symbol.Field); ReadCode(); // read '(' AssertSymbol(Symbol.ParenLeft); ReadCode(); // read identifier AssertSymbol(Symbol.Identifier); string fieldType = Token.ToLower(); ReadCode(); // read ')' AssertSymbol(Symbol.ParenRight); DocumentObject field = null; switch (fieldType) { case "date": field = elements.AddDateField(); break; case "page": field = elements.AddPageField(); break; case "numpages": field = elements.AddNumPagesField(); break; case "info": field = elements.AddInfoField(0); break; case "sectionpages": field = elements.AddSectionPagesField(); break; case "section": field = elements.AddSectionField(); break; case "bookmark": field = elements.AddBookmark(""); break; case "pageref": field = elements.AddPageRefField(""); break; } AssertCondition(field != null, DomMsgID.InvalidFieldType, Token); if (_scanner.PeekSymbol() == Symbol.BracketLeft) { ReadCode(); // read '[' ParseAttributes(field, false); } }