Potresti spiegare come i parser cercano modelli di token come in markdown?
Probabilmente potrei trovare qualcosa che corrisponda solo al modello di parentesi graffe []()
non appena i pattern annidati sono coinvolti, mi viene in mente.
Ad esempio in qualcosa di simile
foo [**baz**](baz) qux
il tokenizzatore probabilmente esplode la stringa in questi token
"foo ", "[", "**", "baz", "**", "]", "(", "baz", ")", " qux"
e lo passa al parser per riconoscere i pattern, che è un link e che le parentesi corrispondono e persino a capire lo stile grassetto all'interno dell'etichetta.
Suppongo che sia una sorta di macchina a stati, ma in realtà pensa che non appena un [
si presenta potrebbe significare qualcosa memorizzare il token e se i token successivi non corrispondono quindi scartare questo stato e trasformare i token separatori in un valore letterale normale. Ciò significherebbe che doveva tornare a cambiare il significato di tutto il resto se non c'era (
dopo la chiusura di ]
. Trovo troppo complesso?
Sembra che sia facile da implementare quando lo guardo, ma se dovessi inventare un algoritmo per questo, non potrei.