packages/docutils/rstast
Source EditЭтот модуль реализует AST для парсера reStructuredText.
Импорты
- strutils, json
Типы
RstNode {.acyclic, final.} = object case kind*: RstNodeKind ## the node's kind of rnLeaf, rnSmiley: text*: string ## string that is expected to be displayed of rnEnumList: labelFmt*: string ## label format like "(1)" of rnLineBlockItem: lineIndent*: string ## a few spaces or newline at the line beginning of rnAdmonition: adType*: string ## admonition type: "note", "caution", etc. This ## text will set the style and also be displayed of rnOverline, rnHeadline, rnMarkdownHeadline: level*: int ## level of headings starting from 1 (main ## chapter) to larger ones (minor sub-sections) ## level=0 means it's document title or subtitle of rnFootnote, rnCitation, rnOptionListItem: order*: int ## footnote order (for auto-symbol footnotes and ## auto-numbered ones without a label) of rnMarkdownBlockQuoteItem: quotationDepth*: int ## number of characters in line prefix of rnRstRef, rnPandocRef, rnSubstitutionReferences, rnInterpretedText, rnField, rnInlineCode, rnCodeBlock, rnFootnoteRef: info*: TLineInfo ## To have line/column info for warnings at ## nodes that are post-processed after parsing of rnNimdocRef: tooltip*: string of rnTable, rnGridTable, rnMarkdownTable: colCount*: int ## Number of (not-united) cells in the table of rnTableRow: endsHeader*: bool ## Is last row in the header of table? of rnTableHeaderCell, rnTableDataCell: span*: int ## Number of table columns that the cell occupies else: nil anchor*: string ## anchor, internal link target ## (aka HTML id tag, aka Latex label/hypertarget) sons*: RstNodeSeq ## the node's sons- узел AST (результат парсинга RST) Source Edit
RstNodeKind = enum rnInner, rnHeadline, rnOverline, rnMarkdownHeadline, rnTransition, rnParagraph, rnBulletList, rnBulletItem, rnEnumList, rnEnumItem, rnDefList, rnMdDefList, rnDefItem, rnDefName, rnDefBody, rnFieldList, rnField, rnFieldName, rnFieldBody, rnOptionList, rnOptionListItem, rnOptionGroup, rnOption, rnOptionString, rnOptionArgument, rnDescription, rnLiteralBlock, rnMarkdownBlockQuote, rnMarkdownBlockQuoteItem, rnLineBlock, rnLineBlockItem, rnBlockQuote, rnTable, rnGridTable, rnMarkdownTable, rnTableRow, rnTableHeaderCell, rnTableDataCell, rnFootnote, rnCitation, rnFootnoteGroup, rnStandaloneHyperlink, rnHyperlink, rnRstRef, rnPandocRef, rnInternalRef, rnFootnoteRef, rnNimdocRef, rnDirective, rnDirArg, rnRaw, rnTitle, rnContents, rnImage, rnFigure, rnCodeBlock, rnAdmonition, rnRawHtml, rnRawLatex, rnContainer, rnIndex, rnSubstitutionDef, rnInlineCode, rnCodeFragment, rnUnknownRole, rnSub, rnSup, rnIdx, rnEmphasis, rnStrongEmphasis, rnTripleEmphasis, rnInterpretedText, rnInlineLiteral, rnInlineTarget, rnSubstitutionReferences, rnSmiley, rnDefaultRole, rnLeaf
- возможные типы узлов PRstNode Source Edit
Процедуры
proc newRstNode(kind: RstNodeKind; info: TLineInfo; sons: seq[PRstNode] = @[]): PRstNode {. ...raises: [], tags: [], forbids: [].}- Source Edit
proc treeRepr(node: PRstNode; indent = 0): string {....raises: [], tags: [], forbids: [].}- Записывает проанализированный RST
nodeв дерево AST с компактным строковым представлением в формате (одна строка на каждый под-узел):indent - kind - [text|level|order|adType] - anchor (if non-zero)(подходит для отладки парсинга RST). Source Edit
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/rstast.html