Szerkesztő:Gyimbot/Sablonparszer
Ez a szócikk a gyimbot által használt parszer működését, a parszer által értett nyelvet írja le. A sablonhívásokat és azok paramétereit gyűjti ki egy wikilapról. A wikinyelvnek csak azokat az elemeit ismeri fel, amelyek ehhez szükségesek. Ez a wikinyelvnek csak töredéke, de annak legbonyolultabb része.
A szintaxist egyszerűsített Backus–Naur alakban, a szemantikát szöveges leírással adjuk meg.
Wikinyelv
[szerkesztés]- wikiszöveg := szöveg | komment | sablonhívás
szöveg a szócikk szövege, ami nem tartalmaz a szabályban utána megadott szintaktikus egységet (ez esetben kommentet és sablonhívást). A parszer átugorja: számára nem tartalmaz információt. A szöveg megjelölést a későbbiekben is ebben az értelemben használjuk.
- komment := <!-- szöveg -->
A narancsszínű szöveg konstans: a leírt módon kell szerepeljen a wikiszövegben.
A szögletes zárójel közötti szintaktikus egység elmaradhat. A … előtti többször ismétlődhet. A [ ]… 0-szor vagy többször előfordulható szöveget jelent.
- paraméter := [ név = ] parérték
Ha a név elmarad, a wiki automatikus nevet ad. Az első név nélküli paraméter neve 1, a másodiké 2, stb. A név nélküli és neves paraméterek felváltva használhatók (ahogy a fenti szintaxis mutatja). Nem lehet két azonos nevű (más szóval: kétszer megadott) paraméter. A parszert használó egyik alkalmazás kifejezetten azért íródott, hogy ezeket a dupla paramétereket kilistázza.
A sablonparszerben a sablonparaméterek feldolgozása az egyetlen rész, mely nem környezetfüggetlen.
- parérték := érték…
- érték := szöveg | komment | nowiki | belsőlink | sablonhívás
A belső linket azért kell megkülönböztetni, mert lehet benne | jel, amit nem szabad összetéveszteni a paraméter lezárásával. Nowikit azért kell megkülönböztetni, hogy a benne levő, [[-vel vagy {{-val kezdődő szöveget a parszer ne tekintse belső linknek ill. sablonhívásnak, azaz ne keresse a végét. Az értékbeli sablonhívást a parszer rekurzióval dolgozza fel.
- nowiki := <nowiki> nowikiszöveg… </nowiki>
- nowikiszöveg := szöveg | komment
- belsőlink := [[ név [ | linkszöveg… ] ]]
- linkszöveg := szöveg | komment | sablonhívás
A sablonhívás itt is rekurziót okoz.
Huwikinyelv
[szerkesztés]A magyar Wikipédián szóban megadott szemantikával az addig egymástól független szemantikai elemek között összefüggést írtak elő. Ahhoz, hogy a parszer értse, a szemantikát formalizálni kell.
A nyelv két szóban forgó eleme a {{wd}}
(?) és {{linkiw}}
(?) sablon. Mindkettő interwiki linket csinál: az előbbi más nyelvű Wikipédiába, az utóbbi Wikidatába. A két sablonhívást egy-egy belső link előzi meg. A belső link és a sablonhívás összetartozik, szemantikailag a sablonhívás részei.
Mindkét sablon létezik más nyelvű Wikipédiákon, de ott a link a sablon paramétereként van megadva, nem független szintaktikai egységként.
- huwikiszöveg := szöveg | komment | wdhívás | linkiwhívás | sablonhívás
sablonhívás-ban a sablon neve nem lehet wd vagy linkiw.
szöveg nem tartalmaz belső linket és sablonhívást. Pontos meghatározása nincs.
szöveg nem tartalmaz belső linket és sablonhívást. Pontos meghatározása nincs.
Miután a nyelv egyes részei definiálatlanok, nem lehet rá parszert írni.