Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi
Plan wykładu 1 Języki i gramatyki Analiza syntaktyczna Semantyka 2 Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki 3
Czym jest język Plan wykładu Języki i gramatyki Analiza syntaktyczna Semantyka Język to środek umożliwiający porozumiewanie się. Cechy języka naturalnego: duża swoboda konstruowania zdań, duża ilość wyjątków. Wniosek: W programowaniu maszyn cyfrowych potrzebny jest język formalny - ścisły i jednoznaczny opis konstrukcji.
Czym jest język Plan wykładu Języki i gramatyki Analiza syntaktyczna Semantyka Język to środek umożliwiający porozumiewanie się. Cechy języka naturalnego: duża swoboda konstruowania zdań, duża ilość wyjątków. Wniosek: W programowaniu maszyn cyfrowych potrzebny jest język formalny - ścisły i jednoznaczny opis konstrukcji.
Czym jest gramatyka Języki i gramatyki Analiza syntaktyczna Semantyka Gramatyki naturalne pozwalają określić zbiory reguł budowy zdań. zajmują się pojęciami abstrakcyjnymi, uogólnieniami, opisują reguły tworzenia języka formalnego.
Analiza syntaktyczna Języki i gramatyki Analiza syntaktyczna Semantyka Celem analizy syntaktycznej jest badanie poprawności składni pojedynczych zdań programu i całego programu. Wyróżnia się tu poziom: lokalny, np. sprawdzenie czy napis jest instrukcją, globalny, np. sprawdzenie czy obiekty w instrukcjach są odpowiednio zadeklarowane. Dla sprawdzenia poprawności używa się gramatyk formalnych.
Semantyka - teoria znaczenia Języki i gramatyki Analiza syntaktyczna Semantyka Język jest nieskończonym zbiorem zdań generowanych za pomocą skończonej liczby słów i reguł [Noam Chomsky - twórca linwistyki formalnej] Przykład bezsensownego, ale poprawnego gramatycznie zdania: Colorless green ideas sleep furiously Bezbarwne zielone idee wściekle śpią Wniosek: Składnia nie tworzy podstawowej struktury języka, słowa funkcjonują w odpowiednim kontekście semantycznym.
Semantyka - teoria znaczenia Języki i gramatyki Analiza syntaktyczna Semantyka Język jest nieskończonym zbiorem zdań generowanych za pomocą skończonej liczby słów i reguł [Noam Chomsky - twórca linwistyki formalnej] Przykład bezsensownego, ale poprawnego gramatycznie zdania: Colorless green ideas sleep furiously Bezbarwne zielone idee wściekle śpią Wniosek: Składnia nie tworzy podstawowej struktury języka, słowa funkcjonują w odpowiednim kontekście semantycznym.
Semantyka - teoria znaczenia Języki i gramatyki Analiza syntaktyczna Semantyka Język jest nieskończonym zbiorem zdań generowanych za pomocą skończonej liczby słów i reguł [Noam Chomsky - twórca linwistyki formalnej] Przykład bezsensownego, ale poprawnego gramatycznie zdania: Colorless green ideas sleep furiously Bezbarwne zielone idee wściekle śpią Wniosek: Składnia nie tworzy podstawowej struktury języka, słowa funkcjonują w odpowiednim kontekście semantycznym.
Podstawowe pojęcia Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Alfabet dowolny skończony zbiór symboli Słowo skończony ciąg symboli alfabetu Język zbiór wszystkich możliwych słów Gramatyka zbiór reguł pozwalających odróżnić słowa poprawne (należące do języka) od niepoprawnych Przykład: Alfabet - {a, b, c} Gramatyka Reguła 1: słowo b jest poprawne Reguła 2: jeżeli β jest poprawne to aβc jest też poprawne Słowo np. b, abc, aabcc (poprawne) lub a, ab, bacc (niepoprawne)
Podstawowe pojęcia Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Alfabet dowolny skończony zbiór symboli Słowo skończony ciąg symboli alfabetu Język zbiór wszystkich możliwych słów Gramatyka zbiór reguł pozwalających odróżnić słowa poprawne (należące do języka) od niepoprawnych Przykład: Alfabet - {a, b, c} Gramatyka Reguła 1: słowo b jest poprawne Reguła 2: jeżeli β jest poprawne to aβc jest też poprawne Słowo np. b, abc, aabcc (poprawne) lub a, ab, bacc (niepoprawne)
Gramatyki wg Chomsky ego Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki G = V, Σ, P, σ V - zbiór symboli terminalnych, podstawowych Σ - zbiór symboli pomocniczych (nieterminalnych, metasymboli) P - lista produkcji, zbiór reguł zbudowanych z symboli V oraz Σ σ - głowa języka (symbol startowy, aksjomat) Język generowany przez gramatykę G, czyli L(G) to zbiór wszystkich możliwych słów, które można utworzyć z alfabetu terminalnego, powstałych na bazie listy produkcji i wyprowadzonych z głowy języka. L(G) = {x : x Z σ P = x}
Gramatyki wg Chomsky ego Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki G = V, Σ, P, σ V - zbiór symboli terminalnych, podstawowych Σ - zbiór symboli pomocniczych (nieterminalnych, metasymboli) P - lista produkcji, zbiór reguł zbudowanych z symboli V oraz Σ σ - głowa języka (symbol startowy, aksjomat) Język generowany przez gramatykę G, czyli L(G) to zbiór wszystkich możliwych słów, które można utworzyć z alfabetu terminalnego, powstałych na bazie listy produkcji i wyprowadzonych z głowy języka. L(G) = {x : x Z σ P = x}
Notacja Backusa-Naura BNF Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki BNF (ang. Backus-Naur Form ) używana jest powszechnie do zapisu gramatyk języków programowania oraz fragmentów gramatyk języków naturalnych. Symbole pomocnicze zapisywane są jako <element Σ> Symbol ::= oznacza jest zdefiniowane jako Symbol reprezentuje alternatywne wersje produkcji dla tego samego symbolu Przykład reguły w notacji BNF: < s > ::= b a < s > c
Notacja Backusa-Naura BNF Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki BNF (ang. Backus-Naur Form ) używana jest powszechnie do zapisu gramatyk języków programowania oraz fragmentów gramatyk języków naturalnych. Symbole pomocnicze zapisywane są jako <element Σ> Symbol ::= oznacza jest zdefiniowane jako Symbol reprezentuje alternatywne wersje produkcji dla tego samego symbolu Przykład reguły w notacji BNF: < s > ::= b a < s > c
Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Gramatyka generująca naturalne liczby parzyste G = V, Σ, P, σ V = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Gramatyka generująca naturalne liczby parzyste G = V, Σ, P, σ V = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Σ = {< cbz > P = { < cbz >::= 1 2 3 4 5 6 7 8 9
Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Gramatyka generująca naturalne liczby parzyste G = V, Σ, P, σ V = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Σ = {< cbz >,< c > P = { < cbz >::= 1 2 3 4 5 6 7 8 9 < c >::= 0 < cbz >
Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Gramatyka generująca naturalne liczby parzyste G = V, Σ, P, σ V = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Σ = {< cbz >,< c >, < nld > P = { < cbz >::= 1 2 3 4 5 6 7 8 9 < c >::= 0 < cbz > < nld >::=< cbz > < nld >< c >
Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Gramatyka generująca naturalne liczby parzyste G = V, Σ, P, σ V = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Σ = {< cbz >,< c >, < nld >, < cp > P = { < cbz >::= 1 2 3 4 5 6 7 8 9 < c >::= 0 < cbz > < nld >::=< cbz > < nld >< c > < cp >::= 0 2 4 6 8
Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Gramatyka generująca naturalne liczby parzyste G = V, Σ, P, σ V = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Σ = {< cbz >,< c >, < nld >, < cp >, < nlp >} P = { < cbz >::= 1 2 3 4 5 6 7 8 9 < c >::= 0 < cbz > < nld >::=< cbz > < nld >< c > < cp >::= 0 2 4 6 8 < nlp >::=< cp > < nld >< cp >}
Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Gramatyka generująca naturalne liczby parzyste G = V, Σ, P, σ V = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Σ = {< cbz >,< c >, < nld >, < cp >, < nlp >} P = { < cbz >::= 1 2 3 4 5 6 7 8 9 < c >::= 0 < cbz > < nld >::=< cbz > < nld >< c > < cp >::= 0 2 4 6 8 < nlp >::=< cp > < nld >< cp >} σ =< nlp >
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą?
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp >
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp > < nld > 0
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp > < nld > 0 < nld >< c > 0
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp > < nld > 0 < nld >< c > 0 < nld >< cbz > 0
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp > < nld > 0 < nld >< c > 0 < nld >< cbz > 0 < nld > 40
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp > < nld > 0 < nld >< c > 0 < nld >< cbz > 0 < nld > 40 < nld >< c > 40
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp > < nld > 0 < nld >< c > 0 < nld >< cbz > 0 < nld > 40 < nld >< c > 40 < nld >< cbz > 40
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp > < nld > 0 < nld >< c > 0 < nld >< cbz > 0 < nld > 40 < nld >< c > 40 < nld >< cbz > 40 < nld > 240
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp > < nld > 0 < nld >< c > 0 < nld >< cbz > 0 < nld > 40 < nld >< c > 40 < nld >< cbz > 40 < nld > 240 < cbz > 240
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp > < nld > 0 < nld >< c > 0 < nld >< cbz > 0 < nld > 40 < nld >< c > 40 < nld >< cbz > 40 < nld > 240 < cbz > 240 1240
Stwierdzenie poprawności słowa Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki Jak stwierdzić czy liczba 1240 jest poprawną naturalną liczbą parzystą? Wywód poprawności: < nlp > < nld >< cp > < nld > 0 < nld >< c > 0 < nld >< cbz > 0 < nld > 40 < nld >< c > 40 < nld >< cbz > 40 < nld > 240 < cbz > 240 1240 Zatem 1240 L(G)
Drzewo wywodu Plan wykładu Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura BNF Przykład gramatyki
Plan wykładu ONP Odwrotna Notacja Polska, czyli beznawiasowa algebra Łukasiewicza, to sposób zapisu wyrażeń algebraicznych. Nie wymaga nawiasów Nie wymaga pojęcia priorytetów operatorów Symbole argumentów poprzedzają symbol operacji Przykłady: ab + c (a + b) c abc + a (b + c)
Plan wykładu ONP Odwrotna Notacja Polska, czyli beznawiasowa algebra Łukasiewicza, to sposób zapisu wyrażeń algebraicznych. Nie wymaga nawiasów Nie wymaga pojęcia priorytetów operatorów Symbole argumentów poprzedzają symbol operacji Przykłady: ab + c (a + b) c abc + a (b + c)
G = V, Σ, P, σ V = {a, b, c, +, }
G = V, Σ, P, σ V = {a, b, c, +, } Σ = {< op > P = { < op >::= +
G = V, Σ, P, σ V = {a, b, c, +, } Σ = {< op >,< zm > P = { < op >::= + < zm >::= a b c
G = V, Σ, P, σ V = {a, b, c, +, } Σ = {< op >,< zm >, < wyr >} P = { < op >::= + < zm >::= a b c < wyr >::=< zm > < wyr >< wyr >< op >}
G = V, Σ, P, σ V = {a, b, c, +, } Σ = {< op >,< zm >, < wyr >} P = { < op >::= + < zm >::= a b c < wyr >::=< zm > < wyr >< wyr >< op >} σ =< wyr >
Przykład 1: 3 4 + 5 2 * Stos:
Przykład 1: 3 4 + 5 2 * Stos: 3
Przykład 1: 3 4 + 5 2 * 4 Stos: 3
Przykład 1: 3 4 + 5 2 * 4 Stos: 3 +
Przykład 1: 3 4 + 5 2 * Stos: 7
Przykład 1: 3 4 + 5 2 * 5 Stos: 7
Przykład 1: 3 4 + 5 2 * 5 Stos: 7
Przykład 1: 3 4 + 5 2 * Stos: 2
Przykład 1: 3 4 + 5 2 * 2 Stos: 2
Przykład 1: 3 4 + 5 2 * 2 Stos: 2 *
Przykład 1: 3 4 + 5 2 * Stos: 4 ((3 + 4) 5) 2
Przykład 2: 3 4 5 2 + * Stos:
Przykład 2: 3 4 5 2 + * Stos: 3
Przykład 2: 3 4 5 2 + * 4 Stos: 3
Przykład 2: 3 4 5 2 + * 5 4 Stos: 3
Przykład 2: 3 4 5 2 + * 2 5 4 Stos: 3
Przykład 2: 3 4 5 2 + * 2 5 4 Stos: 3 +
Przykład 2: 3 4 5 2 + * 7 4 Stos: 3
Przykład 2: 3 4 5 2 + * 7 4 Stos: 3
Przykład 2: 3 4 5 2 + * -3 Stos: 3
Przykład 2: 3 4 5 2 + * * -3 Stos: 3
Przykład 2: 3 4 5 2 + * Stos: -9 3 (4 (5 + 2))
Translacja Proces przechodzenia z tekstu w jednym języku (źródłowym) na semantycznie mu równoważny tekst w innym języku (wynikowym), przy czym oba języki muszą opisywać tę samą dziedzinę lub dziedzina języka wynikowego musi w sobie zawierać dziedzinę języka źródłowego. W notacji nawiasowej potrzebna jest informacja o priorytetach wykonywania działań. operator priorytet ˆ 1 / 2 + 3
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Wyjście: Stos:
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Wyjście: Stos: (
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Wyjście: ( Stos: (
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Wyjście: a ( Stos: (
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Wyjście: a + ( Stos: (
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Wyjście: ab + ( Stos: (
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: ( Wyjście: ab +
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: ( Wyjście: ab +
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: ( Wyjście: ab + c
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: ( Wyjście: ab + c
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: ( Wyjście: ab + cd
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: Wyjście: ab + cd
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: ˆ Wyjście: ab + cd
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: ˆ Wyjście: ab + cd e
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: / Wyjście: ab + cd eˆ
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) ( Stos: / Wyjście: ab + cd eˆ
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) ( Stos: / Wyjście: ab + cd eˆx
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) + ( Stos: / Wyjście: ab + cd eˆx
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) + ( Stos: / Wyjście: ab + cd eˆx y
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: / Wyjście: ab + cd eˆx y +
Algorytm translacji wyrażeń z notacji nawiasowej na ONP Przykład: ((a+b) c d)ˆe/(x+y) Stos: Wyjście: ab + cd eˆx y + /