Języki i Środowiska Programowania Baz Danych | |||||||||||||
|
2. Składnia abstrakcyjna i semantyka kierowana składnią Do anegdot przeszły dawne spory twórców języków komputerowych, kłócących się np., czy zdania języka programowania lepiej kończyć kropką czy może raczej średnikiem. Od tego czasu składnia wzbudza odruch lekceważenia u specjalistów, którzy ukuli termin "lukier syntaktyczny" (syntactic sugar) na oznaczenie semantycznie nieistotnych elementów zdań lub wyrażeń. Nie jest tak, że lukier syntaktyczny jest całkowicie nieważny i że całość gramatyki języka to "lukier syntaktyczny". Lukier jest często istotny z punktu widzenia pragmatyki języka. Np. jeżeli mamy zdanie
to słowa kluczowe select, from i where są bez wątpienia lukrem syntaktycznym, i nie ma większego sensu dyskusja, czy ten zapis jest lepszy czy gorszy od zapisu np.:
gdzie search, with i then retrieve są analogicznym (jakkolwiek innym) lukrem syntaktycznym. Oba powyższe zdania niosą ładunek pragmatyki ustalający, do czego takie zdania mogą być użyte, co je zasadniczo różni od semantycznie równoważnego zdania z innym lukrem syntaktycznym, np.
może mieć postać select(A; B; C), gdzie select jest operatorem, zaś A, B i C są jego argumentami.
jest niepoprawna, gdyż uniemożliwia prawidłowe przyporządkowanie reguł semantycznych. Tę zależność pomiędzy składnią a semantyką nazywa się często semantyką kierowaną składnią (syntax-driven semantics). W semantyce kierowanej składnią reguły semantyczne są bezpośrednio przypisane do reguł składniowych. Oznacza to, że reguły składniowe nie mogą być dowolne, ale muszą być budowane w taki sposób, aby odwzorować reguły semantyczne. Dla wszystkich znanych języków programowania i języków zapytań semantyka (o ile jest prawidłowo zdefiniowana) jest kierowana składnią, przy czym definicja staje się prostsza, o ile składnia ma postać składni abstrakcyjnej. Tę metodę będziemy stosować w niniejszym wykładzie. |
||||||||||||
Copyrights © 2006 PJWSTK Materiały zostały opracowane w PJWSTK w projekcie współfinansowanym ze środków EFS. |