Rolf B: Greedyness von Kombinatoren

Beitrag lesen

Hallo Tabellenkalk,

ich hatte eine vergleichbare Frage bei Github im Spec-Repository gestellt. Dort habe ich zwei Antworten bekommen, die mir zeigen, dass CSS an der Stelle mit Regexen nicht vergleichbar ist.

Eine davon kam vom *Trommelwirbel* Tab Atkins 😲. Ui. Das Issue muss ich mir ausdrucken und einrahmen 😂.

Hauptargument von Tab war: Ich muss mengenorientiert denken. Regexe sind da komplett irreführend. Seine Mengenerklärung, in der zusammengesetzte Selektoren Filter sind und Kombinatoren eine Mengentransformation durchführen, war plausibel, aber ich meine, dass sie so nicht in der Spec steht.

Dort finde ich etwas anderes, in der Rubrik "API Hooks", und demnach muss ich einen Selektor, der Kombinatoren enthält, von rechts nach links lesen.

Sei S ein komplexer Selektor (also keine Selektorliste), in der Form A $ B, wobei A wieder ein komplexer Selektor ist, $ ein beliebiger Kombinator und B ein zusammengesetzter Selektor (also kombinatorfrei), dann wird S so ausgewertet, dass zunächst alle Elemente bestimmt werden, auf die B zutrifft. Für jedes gefundene Element F wird der Kombinator „rückwärts“ angewendet, es werden also die Elemente E gesucht, für die E * F zutrifft.

Für jedes dieser E Elemente wird nun geprüft, ob der Selektor A zutrifft. Falls A wiederum Kombinatoren enthält, ist dieser Prozess rekursiv.

Und das ist etwas, was ich im Wiki aufschreiben und als klare Erklärung bringen kann. Vielleicht mit etwas weniger Mengenlehre 😉. Aber die ist der Schlüssel zur Erklärung des Verhaltens.

Rolf

--
sumpsi - posui - obstruxi