wiki:SyntaxTree

Version 5 (modified by dozzie, 8 years ago) (diff)

--

Struktura drzewa wyprowadzenia

Table of Contents

  1. typy węzłów

Drzewo wyprowadzenia produkowane przez parser (#26) dla treści o składni MarkupSyntax.

typy węzłów

  • document -- korzeń całego drzewa (odpowiednik <body>...</body>)
    • heading_paragraph -- nagłówek (<h1>...</h1>)
      • pierwszym dzieckiem jest HEADER_S, ostatnim HEADER_E, a wszystko co pomiędzy -- to formatowany tekst
      • długość HEADER_S wskazuje poziom nagłówka (np. <h3>)
    • text_paragraph -- zwykły paragraf (<p>...</p>)
      • jedno lub więcej dzieci, każde to text_paragraph_line
      • dzieci należy połączyć w paragraf wstawiając między nie znacznik <br/>
    • text_paragraph_line -- część paragrafu
      • jedno lub więcej dzieci, każde to formatowany tekst
      • dzieci należy połączyć w jedno za pomocą pustego stringa
    • list_paragraph -- paragraf składający się z listy (numerowanej liczbami, literami lub wypunktowanej)
      • jedno dziecko typu bullet_list, alpha_list albo numbered_list
    • bullet_list -- lista wypunktowana (unordered list, <ul>...</ul>)
      • jedno lub więcej dzieci, każde typu list_item
    • alpha_list -- lista numerowana literami alfabetu (<ol>...</ol> + CSS)
      • jedno lub więcej dzieci, każde typu list_item
    • numbered_list -- lista wypunktowana (<ol>...</ol>)
      • jedno lub więcej dzieci, każde typu list_item
    • list_item -- element listy (<li>...</li>)
      • jedno lub więcej dzieci, tekst formatowany albo lista (podrzędna) (bullet_list, alpha_list, numbered_list)
  • tekst formatowany
    • jedno lub więcej dzieci, które same też są tekstem formatowanym
    • bold_text -- <b>...</b>
    • italics_text -- <i>...</i>
    • strike_text -- <strike>...</strike>
    • tt_text -- <tt>...</tt>
    • error -- <span class="error">...</span>
    • link -- <a href="...">...</a>
      • jedno lub dwoje dzieci
        • link_target -- obowiązkowe, URL docelowy
          • jedno dziecko: tekst prosty (nieformatowany)
        • link_description -- opcjonalne, opis linka (jeśli brak, opisem powinien być link_target)
          • jedno lub więcej dzieci, każde to tekst formatowany
    • image -- <img src="..." />
      • jedno dziecko (może więcej, np. atrybut alt)
        • image_target -- obowiązkowe, URL obrazka
          • jedno dziecko: tekst prosty (nieformatowany)
    • MACRO_VALUE -- odwołanie do wywołanego już makra w bieżącym bloku
      • na etapie konwersji drzewa wyprowadzenia na HTML nie powinno w ogóle występować
  • macro_call -- wywołanie makra
    • na etapie konwersji drzewa wyprowadzenia na HTML nie powinno w ogóle występować
    • pierwsze dziecko to zawsze nazwa makra
    • zero lub więcej dalszych dzieci
      • pythonowy skalar: liczba (int, float) albo string
      • węzeł (dict) MACRO_VALUE -- odwołanie do wywołanego już makra w bieżącym bloku