Języki formalne i kompilatory (15 wyk., 15 ćw. audyt., 15 ćw. lab.)
|
|
- Fabian Piekarski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Języki formalne i kompilatory (15 wyk., 15 ćw. audyt., 15 ćw. lab.) dr inŝ. Jolanta Cybulka Instytut Automatyki i InŜynierii Informatycznej, pok. 312a Wilda Jolanta.Cybulka@put.poznan.pl www:
2 Literatura 1. Aho A V., Sethi R., Ullman J.: Kompilatory. Reguły Metody i Narzędzia. WNT, Warszawa Cybulka J., Jankowska B., Nawrocki J. R.: Automatyczne przetwarzanie tekstów. AWK, Lex i YACC, Wyd. NAKOM, Poznań, Dembiński P., Małuszyński J.: Matematyczne metody definiowania języków programowania, WNT, Warszawa Hopcroft J.E., Ullman J.D.: Wprowadzenie do teorii automatów, języków i obliczeń, PWN, Warszawa, Révész G.E.: Introduction to Formal languages, McGraw-Hill, New York,
3 LITERATURA JĘZYKI FORMALNE PODSTAWOWE POJĘCIA TRANSLACJA I KOMPILACJA PODSTAWOWE POJĘCIA ELEMENTY TEORII JĘZYKÓW FORMALNYCH METODY DEFINIOWANIA SKŁADNI JĘZYKA <Σ, SYN> HIERARCHIA JĘZYKÓW WG N. CHOMSKY'EGO: FORMALNY SYSTEM GENERACJI SKŁADNI (PODEJŚCIE GENERACYJNE) FORMALNA DEFINICJA AUTOMATU (PODEJŚCIE AKCEPTOROWE) JĘZYKI REGULARNE (KLASA "3") WYRAśENIA REGULARNE JĘZYK AWK Schemat programu (ciąg reguł przetwarzania) i sposób przetwarzania Rodzaje wzorców Wzorzec z wyraŝeniem regularnym Wzorzec z operatorami relacyjnymi Wzorzec ze spójnikami logicznymi (przykłady programów) Wzorzec warunkowy Wzorzec zakresu Akcje w programach Przykłady programów
4 1. Języki formalne podstawowe pojęcia Język (symboliczny) Język naturalny (narodowy) Język sztuczny (formalny) rozwaŝamy języki symboliczne, skonstruowane z symboli naleŝących do zbioru (niepustego, skończonego), zwanego alfabetem, np.: D = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} B = {0,1} H = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} Lat = {a, b, c,, z, A, B, C,, Z} Pol = {a, ą, b, c, ć,, Ŝ, dz, dź, dŝ, A, Ą, B, C, Ć,, Z, Dz, Dź, DŜ} S = {,,,,, p, f, (, )} i wiele innych (alfabet Morse a, Braille a, symbole nutowe, symbole chemiczne, znaki migowe, ); 4
5 z symboli alfabetu, zgodnie z zadanymi regułami składania symboli powstają napisy języka zbiór wszystkich napisów naleŝących do języka (i tylko takich) nazywamy jego składnią (syntaktyką, syntaksą); nad alfabetem D nad alfabetem B 0 123F 09A FFAA nad alfabetem H Fundamenta Informaticae Formal Language nad alfabetem Lat Ala mieć ma As Asa nad alfabetem Pol p f p (f p) p p nad alfabetem S 5
6 składnia moŝe mieć strukturę warstwową, tzn. z ciągu symboli powstają napisy elementarne, których zbiór staje się nowym alfabetem, z którego powstają nowe napisy: nad alfabetem L = {Ala, mieć, ma, As, Asa,\, \n, \t } moŝna zbudować napis Ala ma Asa nad alfabetem C = {if, else, (, ), {, },=, ;, ++, >, num, id, \, \n, \t } moŝna zbudować napis if (xsr >12) {y++;} else {y=xsr;} 6
7 w wypadku języków formalnych, na składni moŝna wykonywać operacje mnogościowe, jak: suma, róŝnica, przecięcie, dopełnienie do uniwersum, złoŝenie, potęgowanie, domknięcie; A = {a, b, c} alfabet potęgowanie: A 0, A 1, A 2, A 3, A 0 = {ε} słowo długości 0, słowo puste A 1 = { a, b, c } słowa długości 1 A 2 = { aa, ab, ac, ba, bb, bc, ca, cb, cc } słowa długości 2 A 3 = { aaa, aab, aac, aba, abb, abc, aca, acb, acc, baa, bab, bac, bba,bbb, bbc, bca, bcb, bcc, caa, cab, cac, cba, cbb, cbc, cca, ccb, ccc} słowa długości 3 domknięcie zwrotne i przechodnie operacji potęgowania: A * A * = A 0 A 1 A 2 A 3 = (i = 0, ) A i domknięcie przechodnie operacji potęgowania: A + A + = A 1 A 2 A 3 = (i = 1, ) A i 7
8 napisy (składnia) słuŝą do notowania znaczeń, zadaniem funkcji semantyki języka formalnego jest przypisanie kaŝdemu elementowi składniowemu (napisowi) znaczenia z pewnej dziedziny znaczeń: znaczeniem napisu (2+3)*4 nad alfabetem A n = {0,1,,9} A o ={+, * } { (,)} jest 20 o ile D = {1, 2, 3, } jest zbiorem wartości (liczb) naturalnych, F = {plus, times} jest zbiorem funkcji (dodawania i mnoŝenia), val n : A n D val o : A o F, val o (+)= plus, val o (*)= times value : (A n A o { (,)})* D (dla napisów poprawnych składniowo) 8
9 język formalny L definiujemy matematycznie jako: L = <Σ, Syn, DSem, Sem> Σ alfabet, skończony niepusty zbiór symboli (znaków), Syn syntaktyka (składnia, syntaksa), zbiór napisów języka, zbudowanych z symboli alfabetu, DSem dziedzina znaczeń, zbiór bytów semantycznych, przypisywanych napisom języka, Sem relacja semantyczna (Sem Syn DSem), definiująca związki między napisami języka a elementami dziedziny znaczeń (relacja ta w zastosowaniach praktycznych jest funkcją semantyki); dodatkowo, język zastosowany w pewnej dziedzinie moŝe wytwarzać odmiany pragmatyczne: L 1 = <Σ, Syn, DSem 1, Sem 1 > L 2 = <Σ, Syn, DSem 2, Sem 2 > 9
10 2. Translacja i kompilacja podstawowe pojęcia zagadnienie translacji: tekst wejściowy >TRANSLACJA >wynik translacji zajmiemy się tylko wybranymi aspektami translacji: dotyczącymi tekstów napisanych w językach formalnych (sztucznych, np. językach programowania, dostępu do baz danych, publikacji informacji w Internecie HTML, SGML, XML itd.) w modelu translacji sterowanej składnią (L = <Σ, Syn >) translacja sterowana składnią proces, w którym po przeanalizowaniu struktury składniowej tekstu wejściowego jest on interpretowany lub na jego podstawie generowany jest tekst wyjściowy narzędzia programistyczne realizujące translacje sterowane składnią to np.: AWK, Lex, YACC, sed, PERL i wiele innych, w tym języki programowania 10
11 wyróŝniamy dwie techniki translacji: interpretację i kompilację proces kompilacji realizuje program zwany kompilatorem: tekst wejściowy --> kompilator --> tekst wyjściowy kompilacja przebiega w dwóch etapach: a) analizy tekstu wejściowego i b) syntezy tekstu wyjściowego, które rozpadają się na fazy (kaŝda faza przetwarza tekst wejściowy lub jego reprezentację): 11
12 tekst wejściowy tabela symboli, reprezentacje pośrednie tekstu analizator leksykalny analizator składniowy analizator zaleŝności kontekstowych generator kodu pośredniego etap analizy tekstu wejściowego optymalizator kodu generator kodu wynikowego etap syntezy (tekstu) kodu wynikowego 12 tekst wyjściowy
13 kompilacja moŝe być jedno- lub wieloprzebiegowa przykład kompilacji: program p1; var x: real; i: integer; begin x:=i+1; end. Analizator leksykalny wyodrębni następujący zbiór jednostek leksykalnych: program p1 var x : real ; i : integer begin := + 1 end. Analizator składniowy utworzy drzewo rozbioru składniowego, a informacje o identyfikatorach zmiennych umieści w tabeli symboli: := id1 + id2 1 13
14 Nazwa Leksem Typ... id1 x real... id2 i integer... Analizator zaleŝności kontekstowych stwierdzi, Ŝe zmienne wykorzystane w instrukcji przypisania zostały zadeklarowane (informacje o tym zawarto w tabeli symboli) oraz zaznaczy w kodzie pośrednim, Ŝe naleŝy przeprowadzić konwersję typu stałej 1 i zmiennej i z typu integer do typu real (operator itor): := id1 + itor itor id2 1 14
15 Generator kodu trójadresowego, wygeneruje dwie zmienne okresowe temp1 i temp2 i na podstawie powyŝszego drzewa utworzy zapis: temp1 := itor(1) temp2 := itor(id2) id1 := temp1 + temp2 Optymalizator kodu dokona redukcji: temp1 := itor(id2) id1 := temp Na podstawie kodu pośredniego, generator kodu wynikowego utworzy zapis w kodzie asemblera, który następnie poddany zostanie asemblacji w celu uzyskania wersji wykonywalnej: MOV id2, R1 ADD R1, #1.0 MOV R1, id1 15
16 Na czym moŝe polegać definiowanie i przetwarzanie języka formalnego? a) określenie języka (wszystkich jego elementów) w sposób ścisły, za pomocą odpowiednich metod i narzędzi b) badanie przynaleŝności napisu do języka (sprawdzenie poprawności napisu) c) translacja napisu z jednego języka na drugi 16
17 3. Elementy teorii języków formalnych 3.1. Metody definiowania składni języka <Σ, Syn> metody definiowania składni dzielimy na: generacyjne i akceptorowe, w metodach generacyjnych podaje się zbiór reguł generacji (formalny system generacji składni) poprawnych napisów nad podanym alfabetem (np. gramatyki kombinatoryczne N. Chomsky ego), w metodach akceptorowych definiuje się nad alfabetem automat/akceptor (formalna definicja automatu), który potrafi zbadać przynaleŝność napisu do języka (wszystkie napisy zaakceptowane przez automat definiują język), kaŝdemu typowi gramatyki odpowiada typ automatu (podejścia są zatem komplementarne), translator jest przetwornikiem napisów, od akceptora róŝni się tym, Ŝe ma zdefiniowany alfabet wyjściowy i potrafi generować napisy w języku nad tym alfabetem (formalnie, jest automatem z wyjściem ). 17
18 3.2. Hierarchia języków wg N. Chomsky'ego: klasy języków uporządkowane relacją zawierania się zbiorów; języki klasy "0" nazywamy obliczalnymi, są klasą najszerszą, matematycznie są przykładem zbiorów rekurencyjnie przeliczalnych (częściowo rozstrzygalnych); języki klasy "1" nazywamy monotonicznymi, matematycznie są przykładem zbiorów rekurencyjnych (rozstrzygalnych); języki klasy "2" nazywamy bezkontekstowymi; wyróŝnia się istotne z praktycznego punktu widzenia podklasy LL i LR (generator YACC); języki klasy "3" nazywamy regularnymi; biorą swą nazwę od jednego z formalizmów ich definiowania zwanego wyraŝeniami regularnymi; 18
19 3.3. Formalny system generacji składni (podejście generacyjne) F = < Σ, Syn, P, s> Σ alfabet Syn syntaktyka P zbiór reguł generacji napisów ze zbioru Syn s wyróŝniony zbiór napisów początkowych; przykładem systemu generacji jest formalny system kombinatoryczny: F = < Σ, Syn, P, s >, gdzie P Σ * Σ *, s Σ * ; przykładem systemu kombinatorycznego jest gramatyka kombinatoryczna (klasa 0), zdefiniowana przez Noama Chomsky ego: G = < N, Σ, P, S > N Σ = N skończony niepusty alfabet symboli pomocniczych (nieterminalnych), Σ skończony, niepusty alfabet definiowanego języka (symbole terminalne), P (N Σ) + (N Σ) *, zbiór produkcji gramatyki (reguł generacji napisów), S N, wyróŝniony symbol pomocniczy, zwany aksjomatem gramatyki; 19
20 produkcję gramatyki, opisującą związek pomiędzy dwoma napisami (np. napisem α i napisem β), zapisujemy zwyczajowo α β, gdzie strzałka oznacza znak zastąpienia, a cały napis poleca zastąpić napis α napisem β; relacja wywodu bezpośredniego (oraz jej domknięcie *): xabcy xdvy o ile w zbiorze P istnieje produkcja abc dv; język J(G) generowany gramatyką G: J(G) = {x S * x x Σ*} zdanie (lub słowo) to napis zbudowany wyłącznie z symboli terminalnych, uzyskany za pomocą relacji wywodu *; napis zawierający symbole terminalne i nieterminalne, równieŝ uzyskany za pomocą relacji wywodu *, nazywamy formą zdaniową, 20
21 operacje na językach (zbiorach słów J, J 1, J 2 ): suma: J 1 J 2 = {x x J 1 x J 2 }, przekrój: J 1 J 2 = {x x J 1 x J 2 }, róŝnica: J 1 - J 2 = {x x J 1 x J 2 }, dopełnienie: J = Σ*- J, złoŝenie: J 1 J 2 = {xy x J 1 y J 2 }, potęgowanie: J n, J 0 = {ε}, J k = JJ k-1, domknięcie: J * = J i, i = 0 domknięcie dodatnie: J + = J i, J + = JJ * =J * J, J * =J + {ε} i = 1 21
22 3.4. Formalna definicja automatu (podejście akceptorowe) w podejściu akceptorowym: automat M akceptuje słowo (zdanie) s wtw. startując od konfiguracji początkowej ze słowem s na wejściu moŝe wykonać skończony ciąg kroków kończących się konfiguracją końcową automat M definiuje język L(M), który jest zbiorem wszystkich słów s akceptowanych przez M 22
23 4. Języki regularne (klasa "3") 4.1. WyraŜenia regularne wyraŝeniem regularnym (ang. regular expression) nad alfabetem Σ nazywamy napis zbudowany za pomocą następującej rekurencyjnej definicji: 1) jest w. r. oznaczającym język pusty (pusty zbiór napisów), 2) ε jest w. r. oznaczającym język {ε}, 3) jeśli a Σ, to napis a jest w. r. oznaczającym język {a}, 4) jeśli r 1 i r 2 są w. r., to napis r 1 r 2 jest w. r. oznaczającym język L(r 1 )L(r 2 ), 5) jeśli r 1 i r 2 są w. r., to napis r 1 r 2 jest w. r. oznaczającym język L(r 1 ) L(r 2 ), 6) jeśli r jest w. r., to napis r * jest w. r. oznaczającym język (i=0, ) L(r) i, 7) jeśli r jest w. r., to (r) jest w. r. oznaczającym L(r). właściwości wyraŝeń regularnych; niech p, q i r oznaczają dowolne wyraŝenia regularne, wtedy: p (q r) = (p r) q p(qr) = (pq)r p q = q p p* = ε pp* (p q)r = pr qr r(p q) = rp rq 23
24 εp = pε = p p = p = przykłady Niech Σ = {0, 1, 2} 1) 11 reprezentuje język {11}, p* = (ε p)* if p = r pq q ε then p = rq* 2) (0 1)* reprezentuje język wszystkich napisów zbudowanych z zer i jedynek, 3) (0 1)*11(0 1)* reprezentuje język wszystkich napisów zbudowanych z zer i jedynek, w których co najmniej raz występują dwie kolejne jedynki, 4) 0*1*2* reprezentuje język składający się z napisów zbudowanych z dowolnej liczby zer, po której następuje dowolna liczba jedynek, a następnie dowolna liczba dwójek; Niech Σ = {0, 1, 2, 9, a, b, z, A, B Z, _,, +} 5) (a b z A B Z _)(a b z A B Z _)* reprezentuje język identyfikatorów będących niepustymi ciągami liter, cyfr i znaków podkreślenia, rozpoczynającymi się od litery lub znaku podkreślenia, (- + ε)(0 1 9)(0 1 9)* reprezentuje język stałych całkowitych dziesiętnych; 24
25 4.2. Język AWK Tekst wejściowy Program w AWK Tekst wyjściowy Schemat programu (ciąg reguł przetwarzania) i sposób przetwarzania wzorzec 1 akcja 1 reguła przetwarzania wzorzec 2 akcja 2... wzorzec n akcja n opcjonalna lista definicji funkcji niestandardowych tekst wejściowy i wyjściowy: ciąg wierszy podzielonych na pola ($0, NF, NR, FS, OFS, RS, ORS) program wczytuje wiersz, przegląda po kolei reguły przetwarzania i jeśli wzorzec pasuje do wiersza, to wykonywana jest akcja z nim związana (sytuacje specjalne: wzorce BEGIN i END oraz kilka plików wejściowych) 25
26 przykładowy tekst wejściowy (we.txt): Augustyn Kowalski I Emilia Oltaren I Hanna Zawadiacka I Zefiryn Marchewka I Joanna Prawdziwa I Karol Nielepszy I przykładowy tekst wyjściowy (wy.txt): LP NR INDEKSU NAZWISKO IMIE SUMA PUNKTOW Kowalski Augustyn Oltaren Emilia Zawadiacka Hanna Marchewka Zefiryn Prawdziwa Joanna Nielepszy Karol
27 Liczba osob: 5 # Program drukuje zestawienie informacji o studentach # BEGIN {licz=0;print "LP NR INDEKSU NAZWISKO IMIE SUMA PUNKTOW\n"; } {suma_punktow=$5+$6+$7;printf("%-5i%-14i%-14s%-12s%-12g\n", NR,$1,$3,$2,suma_punktow); if((float)suma_punktow>=1.8)licz++; } END {print "\nliczba osob: ",licz ;} gawk -f program.awk <we.txt >wy.txt Rodzaje wzorców wzorzec BEGIN i wzorzec END wzorzec w postaci wyraŝenia regularnego wzorzec z operatorami relacyjnymi wzorzec zawierający spójniki logiczne 27
28 wzorzec warunkowy wzorzec zakresu Wzorzec z wyraŝeniem regularnym / wyraŝenie_regularne/ $0 ~ / wyraŝenie_regularne/ alfabet w języku AWK (kod ASCII), znaki specjalne alfabetu: \ / - ^ $. [ ] ( ) * +? przykłady programów zawierających wzorce w postaci wyraŝenia regularnego: /Z/ akcja pusta (przepisanie dopasowanego wejścia na wyjście) /\./ /^n$/ {print NR, $0;} /^.$/ /[0-9]/ 28
29 /[^0-9]/ /^[0-9]/ /Augustyn Zefiryn/ /[A-Za-z][A-Za-z0-9]*/ /[0-9][0-9]*(D d)?/ Wzorzec z operatorami relacyjnymi wyraŝenie operator_relacyjny wyraŝenie przykłady programów: $1 > $2 $4 ~ /n/ BEGIN {regexpr="n";} $4 ~ regexpr wzorzec dynamiczny 29
30 $0!~ /[A-Za-z][A-Za-z0-9]*/ Wzorzec ze spójnikami logicznymi (przykłady programów) ($3 == "Ola" $5 >= 2.0) && NR>1!/[Zz]/ Wzorzec warunkowy wyraŝenie? wzorzec1 : wzorzec2 ($5 > 2.0)?(/Z/):(!/z/) Wzorzec zakresu /wzorzec_pierwszego_wiersza/, /wzorzec_ostatniego_wiersza/ /Emilia/, /Oltaren/ 30
31 Akcje w programach (ciągi instrukcji: przypisania, wyjścia, warunkowych, iteracyjnych, break, continue, delete, exit) w akcjach moŝna wykorzystywać stałe numeryczne i stałe łańcuchowe (mogą zawierać sekwencje znaków specjalnych) takŝe zmienne proste i tablice (jednowymiarowe): 1) zmienne przechowujące wartości pól bieŝącego wiersza ($1, $2,, $i, $NF-3) 2) zmienne standardowe, predefiniowane w kaŝdym programie ($0, NF, ) 3) zmienne uŝyte przez programistę; funkcje standardowe i niestandardowe (arytmetyczne i łańcuchowe) Funkcja Opis Funkcje arytmetyczne atan2(x,y) Oznacza funkcję arcus tangens z x/y w zakresie od -π do π. cos(x) Oznacza funkcję cosinus x. exp(x) Oznacza funkcję e x. int(x) Oznacza funkcję entier(x) (część całkowita x). 31
32 log(x) Oznacza funkcję logarytm naturalny z x. rand(x) Oznacza funkcję generującą liczbę pseudolosową z przedziału [0-1]. sin(x) Oznacza funkcję sinus x. sqrt(x) Oznacza funkcję pierwiastek kwadratowy z x. srand(x) Oznacza funkcje inicjującą działanie generatora liczb pseudolosowych wartością x. Funkcje łańcuchowe gsub(r, s, t) Jeśli w t występuje ciąg pasujący do r, to zastąp go przez s; wartością funkcji jest liczba wykonanych zastąpień; wyraŝeniem t moŝe być $0, wtedy wywołanie funkcji zapisujemy jako gsub(r, s). index(s, t) Jeśli ciąg t występuje w ciągu s, to wartością funkcji jest numer pierwszej pozycji t w s lub 0, jeśli t nie występuje w s. length(s) Wartością funkcji jest długość ciągu s. match(s, r) Jeśli w s występuje ciąg pasujący do r, to wartością funkcji jest numer pierwszego znaku tego ciągu w s lub 0, gdy ciąg ten nie występuje. Funkcja ta zmienia takŝe wartości standardowych zmiennych RSTART i RLENGTH. split(s, a, r) Funkcja traktuje s jak ciąg pól oddzielonych od siebie separatorem r, generuje tablicę a i umieszcza w niej wspomniane pola; wartością funkcji jest liczba pól. Jeśli wywołanie funkcji przyjmie postać split(s, a), to domyślną wartością separatora jest wartość zmiennej standardowej FS. sprintf(fmt, e1,,en) sub(r, s, t) Funkcja drukuje wartość wyraŝeń e1,, en zgodnie z formatem fmt; wartością funkcji jest wydrukowany ciąg znaków. Funkcja działa podobnie, jak gsub(r, s, t), jednakŝe dokonuje zastąpienia ciągiem s tylko 32
33 jednego, skrajnie lewego ciągu pasującego do r. Wartością funkcji jest więc 0 lub 1. substr(s, p, n) Wartością funkcji jest podciąg ciągu s, zaczynający się na pozycji p i mający długość n. substr(s, p) Wartością funkcji jest podciąg ciągu s zaczynający się na pozycji p i kończący na ostatniej pozycji ciągu s. tolower(s) Wartością funkcji jest kopia ciągu s, w której zamieniono wszystkie wielkie litery na małe (pozostałe znaki bez zmian). toupper(s) Wartością funkcji jest kopia ciągu s, w której zamieniono wszystkie małe litery na wielkie (pozostałe znaki bez zmian). zestawienie zmiennych standardowych języka AWK: Zmienna ARGC Liczba argumentów polecenia gawk (z wyjątkiem opcji i nazw plików z programem). ARGIND Indeks elementu tablicy ARGV (patrz niŝej) wskazującego bieŝący plik wejściowy. ARGV Tablica argumentów polecenia gawk, indeksowana od 0 do ARGC-1; zmieniając zawartość tej tablicy, mamy moŝliwość zarządzania przetwarzaniem plików z tekstami wejściowymi. CONVFMT Format konwersji wartości dla liczb; formatem domyślnym jest "%.6g". ERRNO Opis Napis sygnalizujący wystąpienie błędu podczas wykonywania instrukcji getline lub close() 33
34 34 FILENAME Nazwa bieŝącego pliku wejściowego; jeśli nie uŝyto Ŝadnej nazwy pliku, to nazwą zastępczą jest znak minus -; wartość zmiennej FILENAME nie jest dostępna w akcjach związanych z wzorcem BEGIN. FNR Liczba dotychczas przetworzonych wierszy bieŝącego pliku danych wejściowych (całkowita liczba wierszy jest dostępna w akcji związanej z wzorcem END). FS Separator pól w tekście wejściowym domyślnie niepusty ciąg znaków spacji, tabulacji. IGNORECASE Wartość zmiennej wskazuje, czy wielkie i małe litery mają być rozróŝniane (wartość 0), czy teŝ nie (wartość niezerowa). NF Liczba pól w bieŝącym wierszu pliku danych wejściowych. NR Liczba wierszy tekstu wejściowego przeczytanych do tej pory. OFMT Format liczb w pliku wyjściowym domyślnie "%.6g". OFS Separator pól w tekście wyjściowym domyślnie spacja. ORS Separator wierszy w tekście wyjściowym domyślnie \n. RLENGTH Długość ciągu znaków dopasowanego za pomocą funkcji match() RS Separator wierszy w tekście wejściowym domyślnie \n. RSTART Indeks pierwszego znaku w ciągu dopasowanym za pomocą funkcji match() SUBSEP Znak uŝywany do oddzielania indeksów w tablicach (jeśli symulujemy działanie tablic wielowymiarowych) domyślnie jest to znak o kodzie \034. zestawienie operatorów arytmetycznych, logicznych i łańcuchowych Operator Opis
35 = += Binarne operatory 1 przypisania (wzorowane na podobnych z C). -= *= /= %= ^=?: Ternarny operator wyraŝenia warunkowego postaci: expr1?expr2:expr3; jeśli expr1 jest prawdziwe, to wartością całego wyraŝenia jest wartość expr2, w przeciwnym wypadku, wartością wyraŝenia jest wartość expr3. Binarny spójnik logiczny oznaczający alternatywę. && Binarny spójnik logiczny oznaczający koniunkcję. in Binarny operator wykorzystywany w instrukcjach iteracyjnych realizujących dostęp do elementów tablic. ~!~ Binarny operator ~ słuŝący do sprawdzania, czy pierwszy argument zawiera ciąg znaków pasujący do wzorca będącego drugim argumentem i negacja!~ tego operatora. < > Binarne operatory oznaczające relacje mniejszości i większości. <= >= Binarne operatory oznaczające relacje mniejsze lub równe i większe lub równe.!= == Binarne operatory oznaczające relacje róŝne i równe. blank Binarny operator sklejania łańcuchów znakowych; zamiast słowa blank moŝna uŝyć spacji lub pustego ciągu znaków. + - Binarne operatory oznaczające dodawanie i odejmowanie. *? % Binarne operatory oznaczające mnoŝenie, dzielenie i operację modulo (reszta z dzielenia). + -! Unarny, prefiksowy plus, unarny prefiksowy minus i unarny prefiksowy spójnik negacji 1 Wszystkie operatory zapisuje się infiksowo, o ile nie wskazano jawnie innej notacji. 35
36 logicznej. ^ Binarny operator oznaczający potęgowanie Unarne operatory inkrementacji i dekrementacji, zapisywane prefiksowo i postfiksowo. zestawienie postaci wywołań funkcji getline i next Postać wywołania Opis działania getline Wczytaj kolejny wiersz z bieŝącego źródła tekstu wejściowego, przypisz go zmiennej $0 oraz podziel na pola i ustal nowe wartości zmiennych: NF, NR, FNR. getline < "file" Wczytaj kolejny wiersz z pliku file, przypisz go zmiennej $0, podziel na pola i ustal nową wartość zmiennej NF. getline x Wczytaj kolejny wiersz z bieŝącego wejścia, przypisz go zmiennej x i ustal nowe wartości zmiennych NF i FNR. getline x < "file" Wczytaj kolejny wiersz z pliku file, przypisz go zmiennej x. "command" getline "command" getline x next Przypisz zmiennej $0 wartość kolejnego wiersza wygenerowanego poleceniem command, podziel ten wiersz na pola i ustal nową wartość zmiennej NF. Przypisz zmiennej x wartość kolejnego wiersza tekstu wygenerowanego poleceniem command. Zakończ przetwarzanie bieŝącego wiersza tekstu, wczytaj kolejny wiersz i rozpocznij wykonywanie programu od pierwszej reguły przetwarzania. Jeśli osiągnięto koniec tekstu wejściowego, to wykonuje się reguły związane ze wzorcem END 2 (gdy są w programie). 2 Instrukcja next nie moŝe występować w akcjach związanych z wzorcami BEGIN i END. 36
37 nextfile Zakończ przetwarzanie bieŝącego pliku źródłowego, wczytaj wiersz z następnego pliku (tablica ARGV), zmień wartość zmiennych FILENAME i ARGIND, przypisz zmiennej FNR wartość 1 i rozpocznij wykonywanie programu od pierwszej reguły przetwarzania. Jeśli osiągnięto koniec tekstu wejściowego, to wykonaj reguły związane ze wzorcem END (gdy są w programie) Przykłady programów {gsub(/\ \ */," "); print;} {split($0,t,"-");print "dzien: "t[1]" miesiac: "t[2]" rok: "t[3];} BEGIN {puste=1;} puste && /[0-9]/ {wynik=$1;puste=0;}!puste && /[0-9]/ {wynik=nwp(wynik,$1);} END {print wynik;} function nwp(a,b) { while (a!=b) {if (a>b) a-=b; else b-=a;} return a; } 37
38 {Lpol+=NF;} END{print " Liczba pol: "Lpol" Liczba linii: "NR;} (NR>2)&&(NR<9) {$2=$2+1000;$NF="";print;} plik wejściowy zarzad.txt : prezes: Jan Czermen zastepca: Magda Wicewicz sekretarz: vacat skarbnik: Krzysztof Pieniazek czlonek: vacat czlonek: Roman Memberski plik wejściowy vacat.txt : sekretarz: Jerzy Papierek czlonek: Anna Wakacka 38
39 program: BEGIN {"echo. date" getline;printf("%35s,%s\n", $4,$5);} /vacat/ {getline < "vacat.txt"; }!/vacat/ {print;} /prezes/ {sub(/prezes/,"opiekun");}!/prezes/ {print;} (NR>1)&&(NR<9) {print $3, $4 "sort";} {if($0 ~ /prezes/) { sub(/prezes/,"dyrektor"); print;next; }else print;} /prezes/{sub(/prezes/,"opiekun");print; next} {print} 39
40 (NR>1)&&(NR<9) {for(i=nf;i>0;i--){printf("%-12s",$i);} printf("\n"); } {x[nr]=$0;} END {for (i=nr;i>0;i--) print x[i];} 40
System operacyjny Linux
Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 7 Język awk Wprowadzenie Schemat programu Konstrukcja wzorców Konstrukcja wyrażeń regularnych Struktury kontrolne Predefiniowane
Bardziej szczegółowoMaszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu
Problem Hilberta: 9 Czy istnieje ogólna mechaniczna procedura, która w zasadzie pozwoliłaby nam po kolei rozwiązać wszystkie matematyczne problemy (należące do odpowiednio zdefiniowanej klasy)? 2 Przykłady
Bardziej szczegółowoAWK. Plan wykładu. Wprowadzenie. Najprostszy program
Wojciech Complak Wojciech.Complak@cs.put.poznan.pl AWK Plan wykładu wprowadzenie składnia programów wzorce, operatory, zmienne instrukcje tablice funkcje standardowe funkcje użytkownika wejście/wyjście,
Bardziej szczegółowoJęzyki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Bardziej szczegółowoGramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka
Gramatyki, wyprowadzenia, hierarchia Chomsky ego Teoria automatów i języków formalnych Dr inŝ. Janusz Majewski Katedra Informatyki Gramatyka Gramatyką G nazywamy czwórkę uporządkowaną gdzie: G =
Bardziej szczegółowoGramatyki atrybutywne
Gramatyki atrybutywne, część 1 (gramatyki S-atrybutywne Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Gramatyki atrybutywne Do przeprowadzenia poprawnego tłumaczenia, oprócz informacji
Bardziej szczegółowoAnaliza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki
Analiza leksykalna 1 Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych (tokenów)
Bardziej szczegółowoZadanie analizy leksykalnej
Analiza leksykalna 1 Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Przykład: We: COST := ( PRICE + TAX ) * 0.98 Wy: id 1 := ( id 2 + id 3 ) * num 4 Tablica symboli:
Bardziej szczegółowo2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego
2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego Gramatyka Gramatyką G nazywamy czwórkę uporządkowaną G = gdzie: N zbiór symboli nieterminalnych, T zbiór symboli terminalnych, P zbiór
Bardziej szczegółowoJ ezyk AWK Kurs systemu UNIX
Język AWK Kurs systemu UNIX 1 AWK Opracowany w laboratoriach Bella w 1978 przez Aho, Weinbergera i Kernighana Język do przetwarzania plików tekstowych Kurs systemu UNIX 2 AWK: pierwsza odsłona! AWK jest
Bardziej szczegółowoWprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura
Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty Dr inŝ. Janusz Majewski Katedra Informatyki Literatura Aho A. V., Sethi R., Ullman J. D.: Compilers. Principles, Techniques
Bardziej szczegółowoHierarchia Chomsky ego Maszyna Turinga
Hierarchia Chomsky ego Maszyna Turinga Języki formalne i automaty Dr inż. Janusz Majewski Katedra Informatyki Gramatyka Gramatyką G nazywamy czwórkę uporządkowaną gdzie: G = V skończony zbiór
Bardziej szczegółowoJęzyki formalne i automaty Ćwiczenia 1
Języki formalne i automaty Ćwiczenia Autor: Marcin Orchel Spis treści Spis treści... Wstęp teoretyczny... 2 Wprowadzenie do teorii języków formalnych... 2 Gramatyki... 5 Rodzaje gramatyk... 7 Zadania...
Bardziej szczegółowoMetody Kompilacji Wykład 1 Wstęp
Metody Kompilacji Wykład 1 Wstęp Literatura: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: Compilers: Princiles, Techniques, and Tools. Addison-Wesley 1986, ISBN 0-201-10088-6 Literatura: Alfred V. Aho,
Bardziej szczegółowoJęzyki formalne i kompilatory (15 wyk., 15 ćw. audyt., 15 ćw. lab.)
Języki formalne i kompilatory (15 wyk., 15 ćw. audyt., 15 ćw. lab.) dr inż. Jolanta Cybulka Instytut Automatyki, Robotyki i Inżynierii Informatycznej, pok. 313A Piotrowo bud. A1 e-mail: Jolanta.Cybulka@put.poznan.pl
Bardziej szczegółowoJerzy Nawrocki, Wprowadzenie do informatyki
Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Przetwarzanie tekstów i AWK Problem konwersji plików FName:Jurek SName:Busz Salary 585 FName:Alek
Bardziej szczegółowoJ.NAWROCKI, M. ANTCZAK, W. FROHMBERG, K. KOLANOWSKI, J. POCHMARA, S. WĄSIK, T. ŻOK AWK - WPROWADZENIE
J.NAWROCKI, M. ANTCZAK, W. FROHMBERG, K. KOLANOWSKI, J. POCHMARA, S. WĄSIK, T. ŻOK SKŁADNIA WYWOŁANIA AWK: AWK - WPROWADZENIE awk [-Fs] "program" [plik1 plik2...] # komendy zapisywane są w linii poleceń
Bardziej szczegółowoMaszyna Turinga języki
Maszyna Turinga języki Teoria automatów i języków formalnych Dr inż. Janusz Majewski Katedra Informatyki Maszyna Turinga (1) b b b A B C B D A B C b b Q Zależnie od symbolu obserwowanego przez głowicę
Bardziej szczegółowoWstęp do systemów wielozadaniowych laboratorium 19 awk
Wstęp do systemów wielozadaniowych laboratorium 19 awk Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-01-08 Język programowania do pracy z bazami danych (w formie
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoPlan wykładu. Kompilatory. Literatura. Translatory. Literatura Translatory. Paweł J. Matuszyk
Plan wykładu (1) Paweł J. Matuszyk AGH Kraków 1 2 tor leksykalny tor syntaktyczny Generator pośredniego Generator wynikowego Hopcroft J. E., Ullman J. D., Wprowadzenie do teorii automatów, języków i obliczeń,
Bardziej szczegółowoAnaliza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki
Analiza leksykalna 1 Języki formalne i automaty Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych
Bardziej szczegółowoL E X. Generator analizatorów leksykalnych
L E X Generator analizatorów leksykalnych GENERATOR L E X Zadaniem generatora LEX jest wygenerowanie kodu źródłowego analizatora leksykalnego (domyślnie) w języku C; Kod źródłowy generowany jest przez
Bardziej szczegółowoProgramowanie strukturalne. Opis ogólny programu w Turbo Pascalu
Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji
Bardziej szczegółowoKONSTRUKCJA KOMPILATORÓW
KONSTRUKCJA KOMPILATORÓW WYKŁAD Robert Plebaniak PLATFORMA PROGRAMOWA LINUX (może nie zawierać LLgen, wówczas instalacja ze strony http://tack.sourceforge.net); WINDOWS (używa się wtedy programu Cygwin,
Bardziej szczegółowoUwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Bardziej szczegółowo10. Translacja sterowana składnią i YACC
10. Translacja sterowana składnią i YACC 10.1 Charakterystyka problemu translacja sterowana składnią jest metodą generacji przetworników tekstu języków, których składnię opisano za pomocą gramatyki (bezkontekstowej)
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoJęzyki i gramatyki formalne
Języki i gramatyki formalne Języki naturalne i formalne Cechy języka naturalnego - duża swoboda konstruowania zdań (brak ścisłych reguł gramatycznych), duża ilość wyjątków. Języki formalne - ścisły i jednoznaczny
Bardziej szczegółowoMatematyczne Podstawy Informatyki
Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Stany równoważne Stany p i q są równoważne,
Bardziej szczegółowoMatematyczne Podstawy Informatyki
Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Gramatyki bezkontekstowe I Gramatyką bezkontekstową
Bardziej szczegółowoWyrażenia regularne. Wyrażenia regularne 1/41
Wyrażenia regularne Wyrażenia regularne 1/41 Wyrażenia regularne 2/41 Po co wyrażenia regularne? Polecenie: $ grep est tekst.txt Zawartość tekst.txt To jest plik tekstowy. Testujemy narzędzie grep. Trzecia
Bardziej szczegółowoWprowadzenie do programowania języki i gramatyki formalne. dr hab. inż. Mikołaj Morzy
Wprowadzenie do programowania języki i gramatyki formalne dr hab. inż. Mikołaj Morzy plan wykładu wprowadzenie gramatyki podstawowe definicje produkcje i drzewa wywodu niejednoznaczność gramatyk hierarchia
Bardziej szczegółowoEfektywna analiza składniowa GBK
TEORETYCZNE PODSTAWY INFORMATYKI Efektywna analiza składniowa GBK Rozbiór zdań i struktur zdaniowych jest w wielu przypadkach procesem bardzo skomplikowanym. Jego złożoność zależy od rodzaju reguł produkcji
Bardziej szczegółowoWIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}
1 WIADOMOŚCI WSTĘPNE Programowanie komputerów najogólniej mówiąc polega na zapisaniu pewniej listy poleceń do wykonania przez komputer w pewnym umownym języku Taką listę poleceń nazywamy programem Program
Bardziej szczegółowoProgramowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Bardziej szczegółowoGeneratory analizatorów
Generatory analizatorów Generator analizatora leksykalnego flex ( http://www.gnu.org/software/flex/ ) Generator analizatora składniowego bison ( http://www.gnu.org/software/bison/ ) Idea ogólna Opis atomów
Bardziej szczegółowoPodstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.
Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane
Bardziej szczegółowoJaki język zrozumie automat?
Jaki język zrozumie automat? Wojciech Dzik Instytut Matematyki Uniwersytet Śląski Katowice wojciech.dzik@us.edu.pl 7. Forum Matematyków Polskich, 12-17 września 2016, Olsztyn Prosty Automat do kawy Przemawiamy
Bardziej szczegółowoWprowadzenie do analizy składniowej. Bartosz Bogacki.
Wprowadzenie do analizy składniowej Bartosz Bogacki Bartosz.Bogacki@cs.put.poznan.pl Witam Państwa. Wykład, który za chwilę Państwo wysłuchają dotyczy wprowadzenia do analizy składniowej. Zapraszam serdecznie
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoDefiniowanie języka przez wyrażenie regularne(wr)
Wykład3,str1 Definiowanie języka przez wyrażenie regularne(wr) DEFINICJA: (wyrażenia regularne) M(specjalneznakinienależącedoalfabetu:{,},, ) literyalfabetusąwr złożeniawrsąwr: jeśliw 1 iw 2 sąwr,to{w
Bardziej szczegółowoGramatyki (1-2) Definiowanie języków programowania. Piotr Chrząstowski-Wachjtel
Gramatyki (1-2) Definiowanie języków programowania Piotr Chrząstowski-Wachjtel Zagadnienia Jak zdefiniować język programowania? Gramatyki formalne Definiowanie składni Definiowanie semantyki l 2 Pożądane
Bardziej szczegółowoMetody numeryczne Laboratorium 2
Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania
Bardziej szczegółowoKiedy i czy konieczne?
Bazy Danych Kiedy i czy konieczne? Zastanów się: czy często wykonujesz te same czynności? czy wielokrotnie musisz tworzyć i wypełniać dokumenty do siebie podobne (faktury, oferty, raporty itp.) czy ciągle
Bardziej szczegółowoAnaliza semantyczna. Gramatyka atrybutywna
Analiza semantyczna Do przeprowadzenia poprawnego tłumaczenia, oprócz informacji na temat składni języka podlegającego tłumaczeniu, translator musi posiadać możliwość korzystania z wielu innych informacji
Bardziej szczegółowoAlgorytmika i Programowanie VBA 1 - podstawy
Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy
Bardziej szczegółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowoJęzyki formalne i gramatyki
J.Nawrocki, M. Antczak, A. Hoffa, S. Wąsik Plik źródłowy: 08cw10-jfig.doc; Data: 2008-10-22 13:29:00 Ćwiczenie nr 10 Języki formalne i gramatyki Wprowadzenie 1. Napisz analizator leksykalny (LEX) i analizator
Bardziej szczegółowoWprowadzenie. Teoria automatów i języków formalnych. Literatura (1)
Wprowadzenie Teoria automatów i języków formalnych Dr inŝ. Janusz Majewski Katedra Informatyki Literatura (1) 1. Aho A. V., Sethi R., Ullman J. D.: Compilers. Principles, Techniques and Tools, Addison-Wesley,
Bardziej szczegółowoWprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka
Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu
Bardziej szczegółowoWprowadzenie do programowania w VBA
Wprowadzenie do programowania w VBA Spis treści Struktura programu... 1 Typy danych... 2 Deklaracja zmiennych i stałych... 2 Deklaracja tablic... 3 Instrukcja przypisania... 3 Wprowadzanie danych... 3
Bardziej szczegółowoElżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,
Bardziej szczegółowoJęzyki i operacje na językach. Teoria automatów i języków formalnych. Definicja języka
Języki i operacje na językach Teoria automatów i języków formalnych Dr inŝ. Janusz Majewski Katedra Informatyki Definicja języka Definicja języka Niech Σ będzie alfabetem, Σ* - zbiorem wszystkich łańcuchów
Bardziej szczegółowoPodstawy Kompilatorów
Podstawy Kompilatorów Laboratorium 3 Uwaga: Do wykonania poniższych zadań związanych z implementacją niezbędny jest program LEX oraz kompilator. Dla środowiska Linux mogą to być: Darmowa wersja generatora
Bardziej szczegółowoĆwiczenia nr 11. Translatory. Wprowadzenie teoretyczne
J.Nawrocki, M. Antczak, A. Hoffa, S. Wąsik Plik źródłowy: 08cw11-tr.doc; Data: 2009-01-15 09:47:00 Ćwiczenia nr 11 Translatory Wprowadzenie teoretyczne Wiele dokumentów wprowadzających do języków Lex oraz
Bardziej szczegółowoObliczanie. dr hab. inż. Joanna Józefowska, prof. PP 1
Obliczanie 1 Obliczanie Co to jest obliczanie? Czy wszystko można obliczyć? Czy to, co intuicyjnie uznajemy za obliczalne można obliczyć za pomocą mechanicznej procedury? 2 Czym jest obliczanie? Dawid
Bardziej szczegółowoMatematyczne Podstawy Informatyki
Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Automat ze stosem Automat ze stosem to szóstka
Bardziej szczegółowoGenerator YACC: gramatyki niejednoznaczne
Plan wykładu Generator YACC: gramatyki niejednoznaczne Wojciech Complak Wojciech.Complak@cs.put.poznan.pl gramatyki jednoznaczne i niejednoznaczne zalety gramatyk niejednoznacznych opisywanie łączności
Bardziej szczegółowoZmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.
Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez
Bardziej szczegółowotyp zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word
Pascal - powtórka Alfabet, Nazwy W odróŝnieniu do C w Pascal nie odróŝnia małych i duŝych liter. Zapisy ALA i ala oznaczają tę samą nazwę. Podobnie np. słowo kluczowe for moŝe być zapisane: FOR. W Pascalu
Bardziej szczegółowoJĘZYKI FORMALNE I METODY KOMPILACJI
Stefan Sokołowski JĘZYKI FORMALNE I METODY KOMPILACJI Inst Informatyki Stosowanej, PWSZ Elbląg, 2015/2016 JĘZYKI FORMALNE reguły gry Wykład1,str1 Zasadnicze informacje: http://iispwszelblagpl/ stefan/dydaktyka/jezform
Bardziej szczegółowoJIP. Analiza składni, gramatyki
JIP Analiza składni, gramatyki Książka o różnych językach i paradygmatach 2 Polecam jako obowiązkową lekturę do przeczytania dla wszystkich prawdziwych programistów! Podsumowanie wykładu 2 3 Analiza leksykalna
Bardziej szczegółowoJAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.
IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript
Bardziej szczegółowoJęzyki formalne i techniki translacji
Języki formalne i techniki translacji Laboratorium - Projekt Termin oddania: ostatnie zajęcia przed 17 stycznia 2016 Wysłanie do wykładowcy: przed 23:59 28 stycznia 2016 Używając BISON-a i FLEX-a napisz
Bardziej szczegółowoParsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki
Parsery LL() Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy generacyjnej (zstępującej, top-down) symbol początkowy już terminale wyprowadzenie lewostronne pierwszy od lewej
Bardziej szczegółowoProgram We Kompilator Wy Źródłowy
1. Aho A.V., Ullman J.D. - The Theory of Parsing, Translation and Compiling.1972. 2. Foster J.M. - Automatyczna analiza składniowa. 1976 3. Gries D. - Konstrukcja translatorów dla maszyn cyfrowych, 1984
Bardziej szczegółowoProgramowanie komputerów
Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych
Bardziej szczegółowoPoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.
PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj
Bardziej szczegółowoLingwistyka Matematyczna Języki formalne i gramatyki Analiza zdań
Katedra Informatyki Stosowanej Politechnika Łódzka Lingwistyka Matematyczna Języki formalne i gramatyki Analiza zdań dr hab. inŝ. Lidia Jackowska-Strumiłło Historia rozwoju języków programowania 1955 1955
Bardziej szczegółowoSymbol, alfabet, łańcuch
Łańcuchy i zbiory łańcuchów Teoria automatów i języków formalnych Dr inŝ. Janusz Majewski Katedra Informatyki Symbol, alfabet, łańcuch Symbol Symbol jest to pojęcie niedefiniowane (synonimy: znak, litera)
Bardziej szczegółowoJęzyki formalne i automaty Ćwiczenia 6
Języki formalne i automaty Ćwiczenia 6 Autor: Marcin Orchel Spis treści Spis treści... 1 Wstęp teoretyczny... 2 Wyrażenia regularne... 2 Standardy IEEE POSIX Basic Regular Expressions (BRE) oraz Extended
Bardziej szczegółowoAnaliza leksykalna i generator LEX
Analiza leksykalna i generator LEX Wojciech Complak Wojciech.Complak@cs.put.poznan.pl wprowadzenie generator LEX wyrażenia regularne i niejednoznaczności retrakcja definicje regularne atrybuty lewy kontekst
Bardziej szczegółowoJAO - Wprowadzenie do Gramatyk bezkontekstowych
JAO - Wprowadzenie do Gramatyk bezkontekstowych Definicja gramatyki bezkontekstowej Podstawowymi narzędziami abstrakcyjnymi do opisu języków formalnych są gramatyki i automaty. Gramatyka bezkontekstowa
Bardziej szczegółowoMetody Kompilacji Wykład 3
Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy
Bardziej szczegółowoProgramowanie deklaratywne
Programowanie deklaratywne Artur Michalski Informatyka II rok Plan wykładu Wprowadzenie do języka Prolog Budowa składniowa i interpretacja programów prologowych Listy, operatory i operacje arytmetyczne
Bardziej szczegółowoGRAMATYKI BEZKONTEKSTOWE
GRAMATYKI BEZKONTEKSTOWE PODSTAWOWE POJĘCIE GRAMATYK Przez gramatykę rozumie się pewien układ reguł zadający zbiór słów utworzonych z symboli języka. Słowa te mogą być i interpretowane jako obiekty językowe
Bardziej szczegółowo3 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 3 1/8 Język C Instrukcja laboratoryjna Temat: Instrukcje warunkowe, pętle. 3 Przygotował: mgr inż. Maciej Lasota 1) Instrukcje warunkowe. Instrukcje warunkowe pozwalają zdefiniować warianty
Bardziej szczegółowoCyfrowy zapis informacji
F1-1 Cyfrowy zapis informacji Alfabet: uporządkowany zbiór znaków, np. A = {a,b,..., z} Słowa (ciągi) informacyjne: łańcuchy znakowe, np. A i = gdtr Długość słowa n : liczba znaków słowa, np. n(sbdy) =
Bardziej szczegółowoJęzyki, automaty i obliczenia
Języki, automaty i obliczenia Wykład 12: Gramatyki i inne modele równoważne maszynom Turinga. Wstęp do złożoności obliczeniowej Sławomir Lasota Uniwersytet Warszawski 20 maja 2015 Plan 1 Gramatyki 2 Języki
Bardziej szczegółowoJerzy Nawrocki, Wprowadzenie do informatyki
Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Programowanie imperatywne i język C Zaprezentować paradygmat programowania imperatywnego
Bardziej szczegółowoLekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;
Do wyświetlania tekstu służy instrukcja echo echo Hello world ; PHP język ze słabą kontrolą typów. W języku php w przeciwieństwie do c++ nie musimy podawać typu zmiennej podczas jej deklaracji. Tworzenie
Bardziej szczegółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoPrzetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux
Przetwarzanie tekstu 2 Operacje na plikach tekstowych w systemie Linux filtry programy przetwarzajace pliki (w szczególności tekstowe) w taki sposób, że odczytuja dane (plik wejściowy) ze standardowego
Bardziej szczegółowoForPascal Interpreter języka Pascal
Akademia Podlaska w Siedlcach Wydział Nauk Ścisłych Instytut Informatyki ForPascal Interpreter języka Pascal Przedmiot: Sieci i Systemy Wirtualne Informatyka IV Prowadzący: dr Krzysztof Trojanowski Grupa:
Bardziej szczegółowoPodstawy i języki programowania
Podstawy i języki programowania Laboratorium 3 - operatory oraz instrukcje warunkowe i wyboru mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 19 października 2018 1 / 35 mgr inż. Krzysztof
Bardziej szczegółowoKatedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak
Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.
Bardziej szczegółowoProgramowanie Delphi obliczenia, schematy blokowe
Informatyka II MPZI2 ćw.2 Programowanie Delphi obliczenia, schematy blokowe Zastosowania obliczeń numerycznych Wyrażenia arytmetyczne służą do zapisu wykonywania operacji obliczeniowych w trakcie przebiegu
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 1 / 38 Przypomnienie Programowanie imperatywne Program
Bardziej szczegółowoAproksymacja funkcji a regresja symboliczna
Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą
Bardziej szczegółowoDr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI
Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku
Bardziej szczegółowoSkładnia rachunku predykatów pierwszego rzędu
Początek Gramatyka Kwantyfikatory Poprawność Logika obliczeniowa Instytut Informatyki Początek Gramatyka Kwantyfikatory Poprawność Plan wykładu 1 Na (dobry) początek Zrozumieć słowa Oswoić znaki 2 Gramatyka
Bardziej szczegółowoAlgorytmy od problemu do wyniku
Algorytmy Etapy tworzenia programu: 1) Sformułowanie zadania analiza problemu. 2) Opracowanie algorytmu sposób rozwiązania. 3) Zapisanie algorytmu w języku programowania kodowanie programu. 4) Kompilowanie
Bardziej szczegółowoLiteratura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.
Literatura 1. D. Gajski, Principles of Digital Design, Prentice- Hall, 1997 2. C. Zieliński, Podstawy projektowania układów cyfrowych, PWN, Warszawa 2003 3. G. de Micheli, Synteza i optymalizacja układów
Bardziej szczegółowoOperacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.
Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach
Bardziej szczegółowoPRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: Algorytmy i programowanie Algorithms and Programming Kierunek: Zarządzanie i Inżynieria Produkcji Rodzaj przedmiotu: kierunkowy Poziom studiów: studia I stopnia forma studiów: studia
Bardziej szczegółowoJęzyki formalne i automaty Ćwiczenia 9
Języki formalne i automaty Ćwiczenia 9 Autor: Marcin Orchel Spis treści Spis treści... 1 Wstęp teoretyczny... 2 Maszyna Mealy'ego... 2 Maszyna Moore'a... 2 Automat ze stosem... 3 Konwersja gramatyki bezkontekstowej
Bardziej szczegółowoPodstawy programowania w języku C
Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu
Bardziej szczegółowoAlgorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Bardziej szczegółowoskrypt powłoki to plik tekstowy, rozpoczynający się sekwencją: pierwsza linia określa powłokę, w której wykonywany jest skrypt; druga to komentarz
Ćwiczenie 6 Skrypty powłoki - programowanie w powłoce bash 1. Cel ćwiczenia Celem ćwiczenia jest poznanie możliwości powłoki bash od strony programistycznej. System UNIX (Linux) pozwala tworzyć skrypty,
Bardziej szczegółowo