Pok-12-wyk-Slajd3
Czym są zależności kontekstowe ?
Kontrola zależności kontekstowych polega na sprawdzeniu zgodności programu z regułami składniowymi i semantycznymi języka źródłowego.
Narzuca się jednak dość oczywiste pytanie - dlaczego niektóre reguły składniowe są sprawdzane dopiero teraz, a nie w trakcie wykonywania analizy składniowej ?
Odpowiedź jest ukryta w samej nazwie zależności kontekstowych. Rzeczywiście - zależności kontekstowe można sprawdzić stosując odpowiednią gramatykę kontekstową zamiast bezkontekstowej. Takie rozwiązanie jest jednak bardzo nieefektywne.
Gramatyka kontekstowa będzie stosunkowo skomplikowana, a analizator przetwarzający wejście zgodnie z jej regułami - bardzo powolny. Dlatego zazwyczaj stosuje się takie podejście, w którym definiujemy język za pomocą gramatyki bezkontekstowej (tak naprawdę opisującej szerszy język niż zadany), a następnie za pomocą akcji semantycznych dokonujemy sprawdzenia czy program jest zgodny z regułami składniowymi i semantycznymi języka źródłowego (czyli analizy zależności kontekstowych).
Analiza zależności kontekstowych jest wykonywana:
- statycznie - w trakcie kompilacji programu źródłowego
- dynamicznie - w trakcie wykonywania programu wynikowego
Proporcje liczby czynności wykonywanych w poszczególnych etapach są zależne od języka źródłowego, kompilatora i użytych opcji kompilacji.