/// <summary> /// Parses the inner text of a paragraph, i.e. stops on BraceRight and treats empty /// line as paragraph separator. /// </summary> private void ParseParagraphContent(DocumentElements elements, Paragraph paragraph) { Paragraph para = paragraph ?? elements.AddParagraph(); while (para != null) { ParseFormattedText(para.Elements, 0); if (Symbol != Symbol.BraceRight && Symbol != Symbol.Eof) { para = elements.AddParagraph(); } else para = null; } }
/// <summary> /// Parses the keyword «\paragraph». /// </summary> private void ParseParagraph(DocumentElements elements) { MoveToCode(); AssertSymbol(Symbol.Paragraph); Paragraph paragraph = elements.AddParagraph(); try { ReadCode(); // read '[' or '{' if (Symbol == Symbol.BracketLeft) ParseAttributes(paragraph); // Empty paragraphs without braces are valid. if (Symbol == Symbol.BraceLeft) { ParseParagraphContent(elements, paragraph); AssertSymbol(Symbol.BraceRight); ReadCode(); // read beyond '}' } } catch (DdlParserException ex) { ReportParserException(ex); AdjustToNextBlock(); } }