Semantyka i Weryfikacja Programów - Laboratorium 6
|
|
- Zdzisław Chmiel
- 6 lat temu
- Przeglądów:
Transkrypt
1 Semantyka i Weryfikacja Programów - Laboratorium 6 Analizator leksykalny i składniowy - kalkulator programowalny Cel. Przedstawienie zasad budowy i działania narzędzi do tworzenia kompilatorów języków wysokiego poziomu na przykładzie analizatora wyrażeń arytmetycznych kalkulatora programowalnego.. Wprowadzenie Na definicję języka programowania składają się następujące elementy: struktura leksykalna syntaktyka (stałe arytmetyczne, słowa kluczowe, identyfikatory, operatory), opisywana przez wyrażenia regularne (regular expression), gramatyka struktura wyrażeń, deklaracji, definicji, programu..., opisywana przez gramatykę bezkontekstową (context-free grammar), sposób obliczania wyrażeń i wykonywania instrukcji.. Program najpierw jest sprawdzany pod względem leksykalnym i składniowym, a następnie tworzy się kod wykonywalny lub pośredni zależny od typu procesora i środowiska operacyjnego. Tym ostatnim zagadnieniem zajmuje się semantyka operacyjna. Przykład - kalkulator. Jako przykład posłuży dalej program kalkulatora arytmetycznego wykonującego dodawanie, odejmowanie, mnożenie i dzielenie w dziedzinie liczb całkowitych. Dopuszcza się też stosowanie nawiasów. Wyrażenie arytmetyczne podaje się w postaci łańcucha, np.: 2+3*4 Podobne zagadnienie było prezentowane na dwóch poprzednich laboratoriach. Narzędziem realizacyjnym był język ML. Wyrażenie podawane było w postaci symbolicznej, co stanowiło pewną niedogodność. Teraz zostanie opracowany w pełni funkcjonalny program translatora. Przekształcenia wyrażenia podanego w postaci tekstowej przebiegają w dwóch etapach: lekser (zwany skanerem) wyodrębnia jednostki leksykalne zwane tokenami: tu są to stałe całkowite, nawiasy i operatory, parser (analizator składniowy) buduje z pobieranych tokenów drzewo syntaktyczne pokazane na rys * Rys. 1. Drzewo syntaktyczne wyrażenia 2+3*4
2 Na podstawie drzewa syntaktycznego kompilator generuje kod wykonywalny np. w pliku *.exe. Możliwa jest także praca w trybie interpretera, jak to pokazano na rys. 2. Odbywa się to podobnie jak przy pracy z interpreterem MosML. Przykład c.d. W podanym wyżej przykładzie na podstawie drzewa syntaktycznego pokazanego na rys. 1 tworzona jest reprezentacja wyrażenia zapisana w odwrotnej notacji polskiej 3,4,*,2,+ wykonywana za pomocą prostego programu interpretera. wejście program analizator leksykalny LEXER jednostki leksykalne analizator składniowy PARSER drzewo syntaktyczne interpreter Rys. 2. Zasada tłumaczenia i wykonywania programu wyjście Analizatory leksykalne i składniowe (Lexer i Parser) są budowane dla wielu języków programowania. Powstały programy narzędziowe do ich tworzenia dostępne w językach C, JAVA, ML i innych. Rysunek 3 przedstawia zasadę przetwarzania plików za pomocą narzędzi dostarczanych w pakiecie MosML. definicje jednostek leksykalnych *.lex mosmllex analizator leksykalny *.sml treść programu, dane interpreter definicja składni *.grm mosmlyac analizator składniowy *.sml wyniki Rys. 3. Zasada tworzenia interpretera języka programowania w pakiecie MosML pracującego w trybie interaktywnym Użytkownik przygotowuje pliki źródłowe z definicjami jednostek leksykalnych i składni (zwykle są identyczne dla różnych implementacji języka i zgodne z odpowiednią normą ANSI). Po ich przetworzeniu przez programy mosmllex.exe i mosmyac.exe otrzymuje się analizatory w plikach z rozszerzeniem *.sml. Pliki te są można dołączyć w trybie interaktywnym (interpretera) pakietu MosML wywołując zawarte w nich funkcje i wykonując zależne od implementacji akcje semantyczne.. Szczegóły takiego postępowania podano niżej. Wyrażenia regularne (regular expressions) Jednostki leksykalne wygodnie jest definiować jako wyrażenia regularne. Typowe elementy w językach wysokiego poziomu można nieformalnie zdefiniować jako: liczba całkowita ciąg cyfr o dowolnej długości, może być poprzedzona znakiem - identyfikator ciąg liter i cyfr rozpoczynający się od litery
3 słowo kluczowe podobnie jak identyfikator, podawane w postaci zbioru skończonego Do budowania wyrażeń regularnych stosuje się specjalnej notacji z symbolami i operatorami podanymi w tablicy 1. Tabl. 1. Symbole stosowane w definiowaniu jednostek leksykalnych symbol opis przykład 'a' znak a, (, : łańcuch konkretny łańcuch while, let, ::, >= [ a b c ] [ a - z 0 9 ] jedna z wymienionych liter litera lub cyfra z zakresu + symbol występuje co najmniej raz [0-9]+ liczba całkowita bez znaku? opcjonalne wystąpienie [-+]?[0-9]+ liczba ze znakiem (opcja) * występuje wielokrotnie lub wcale eof, eol koniec pliku, linii Dla każdego wyrażenia regularnego istnieje automat skończenie stanowy, co pozwala zautomatyzować proces tworzenia skanera na podstawie definicji. Przykład kalkulator c.d. Definicje dla generatora jednostek leksykalnych są następujące (symbole reprezentujące jednostki leksykalne PLUS, MINUS, TIMES, itd. zostały zdefiniowane w przedstawionym dalej analizatorze składniowym): { val intofstring = valof o Int.fromString } rule Token = parse [` ` `\t`] { Token lexbuf } (* pomin odstępy *) [`\n` ] { EOL } (* koniec linii *) eof { EOF } (* koniec pliku *) [`0`-`9`]+ { INT(intOfString (getlexeme lexbuf)) } `+` { PLUS } (* zwroc symbolicznie PLUS `-` { MINUS } `*` { TIMES } `(` { LPAREN } (* lewostronny nawias *) `)` { RPAREN } `~` { UMINUS } _ { raise Fail "illegal symbol" } Z lewej strony podano zbiór definicji wyrażeń regularnych: odstępy, znak nowej linii i końca pliku, liczbę całkowitą i operatory. W nawiasach klamrowych podano wartość symboliczną zwracaną przez skaner po rozpoznaniu wyrażenia. Należy tu wyjaśnić ważniejsze elementy związane z językiem ML. Token: fn: lexbuf -> token - nazwa funkcji głównej utworzonej na podstawie podanych definicji, to ona zwraca kolejne rozpoznane w tekście jednostki leksykalne, czyli tokeny. Specjalne typy lexbuf i token zdefiniowano w pliku Lexing.sig w katologu lib pakietu MosML.
4 W pierwszym wariancie funkcja Token napotykając znak odstępu przechodzi do dalszej analizy nic nie zwracając. W drugim i trzecim rozpoznawane są znaki końca linii i pliku. W czwartym (liczba całkowita) dana typu lexbuf przekształcana jest najpierw do typu string przez funkcję biblioteczną getlexeme, a następnie do typu int przez intofstring zdefiniowaną następująco: val intofstring = valof o Int.fromString Składnia wyrażeń Składają się na nią: symbole terminalne: identyfikatory, stałe, czyli tokeny generowane przez lexer, symbole nieterminalne, służące do denotacji klas, symbol startowy, który jest nieterminalny reguły lub inaczej produkcje do definicji symboli. Zilustruje to przykład definicji gramatyki kalkulatora: Main ::= Expr EOL Expr::= INT LPAREN Expr RPAREN Expr PLUS Expr Expr MINUS Expr Expr TIMES Expr UMINUS Expr Symbolem startowym i zarazem terminalnym jest tu Main, elementy terminalne to wcześniej zdefiniowane jednostki leksykalne (liczby, operatory nawiasy). Symbolem nieterminalnym opisującym budowę wyrażenia jest Expr. Przyjęto, że program zawarty jest w łańcuchu lub wprowadzany z klawiatury. Składa się on z wyrażenia Expr i znaku końca linii. Definicja wyrażenia Expr jest rekurencyjna. Może to być liczba całkowita, wyrażenie w nawiasach, operacja dodawania, odejmowania, mnożenia lub dzielenia albo zmiany znaku. Przy definiowaniu gramatyki istotne jest podanie łączności i priorytetu operatorów. Realizacja w pakiecie MosML. Na podstawie powyższych definicji zapisanych odpowiednio w pliku źródłowym zwykle z rozszerzeniem *.grm analizator składniowy generowany jest automatycznie przez program mosmlyac.exe. Format pliku źródłowego podzielonego na sekcje znakami %{, }% i %% jest następujący: %{ (* nagłówek funkcje w języku ML*) }% deklaracje tokenów i symboli %% reguły produkcji dla symboli %% Deklaracje podawane są po jednej w linii. Zaczynają się od znaku %. Mogą one mieć postać: %token symbol...symbol deklaracja tokenów (symboli terminalnych) bezargumentowych. %token <type> symbol...symbol deklaracja symboli jw., ale o podanym typie, przykładem jest deklaracja: %token <int> INT, w której symbol INT, użyty w deklaracji jednostek leksykalnych zwraca liczbę typu int, %start symbol symbol (może ich być kilka) startowy gramatyki,
5 %left symbol symbol (zwykle operator) lewostronnie łączny, %right symbol prawostronnie łączny, %nonassoc niełączny (zwykle jednoargumentowy), Kolejność definicji symboli decyduje o ich priorytecie. Reguły mają postać podobną do notacji BNF: albo: terminal_symbol: symbol...symbol { (* akcja semantyczna *)} symbol...symbol { (* akcja semantyczna *)}... nonterminal_symbol: symbol...symbol { (* akcja semantyczna *) symbol...symbol { (* akcja semantyczna *)}... Akcja semantyczna to wyrażenie w języku ML. Stosuje się w nim umowne oznaczenie symboli występujących w deklaracji reguły, co zostanie wyjaśnione na przykładzie poniżej. Definicja składni kalkulatora jest zatem następująca: %token <int> INT /* symbol z podanym typem */ %token PLUS MINUS TIMES UMINUS /* operatory */ %token LPAREN RPAREN /* nawiasy */ %token EOL EOF /* koniec linii, pliku */ %left PLUS MINUS /* najnizszy priorytet */ %left TIMES /* średni priorytet */ %nonassoc UMINUS /* najwyzszy priorytet */ %type <int> Expr /* symbol Expr jest typu int */ %start Main /* punkt startowy */ %type <int> Main /* typ symbolu */ %% Main: Expr EOL { $1 } Expr: INT { $1 } LPAREN Expr RPAREN { $2 } Expr PLUS Expr { $1 + $3 } Expr MINUS Expr { $1 - $3 } Expr TIMES Expr { $1 * $3 } UMINUS Expr { ~ $2 } W pierwszej części pliku podano deklaracje tokenów, które są zwracane przez analizator leksykalny. Prawie wszystkie są bez podanego typu. Dla tokenu INT podano typ int. Analizator leksykalny wyodrębniwszy liczbę całkowitą zwróci symbolicznie INT oraz
6 wartość arytmetyczną liczby. W języku ML tokeny są to konstruktory bezargumentowe lub z argumentem (tutaj int). W drugiej części podano typy symboli oraz symbol terminalny (startowy) gramatyki. Po znakach %% znajduje się definicja gramatyki z podanymi akcjami semantycznymi jako wyrażenia w języku ML. Użyto tu specjalnego symbolu $ z podanym numerem. Np $1 reprezentuje wartość pierwszego symbolu w danej produkcji (linii definicji). W definicji INT { $1 } wartością wyrażenia jest liczba typu int (dla symbolu INT zdefiniowano wcześniej typ). W kolejnej definicji Expr PLUS Expr { $1 + $3 } sumy wyrażeń symbole Expr (oznaczone dalej $1 i $3, bo są pierwszym i trzecim elementem definicji) są typu int i w akcji semantycznej kalkulatora należy je dodać. Praca w trybie interaktywnym. Programy pakietu MosML powstały do pracy w trybie tekstowym. Dla wygody pracy w systemie Windows przygotowano katalog o nazwie calc z następującą zawartością: mosmllex.exe, mosmlyac.exe programy narzędziowe przekopiowane z katalogu /bin pakietu MosML Lexer.lex, Parser.grm definicje jednostek leksykalnych i składniowych calc.sml plik interpretera (opisany dalej) yacc.bat, lex.bat pliki wsadowe systemu DOS do kompilacji źródeł. Kompilacja. Celem uruchomienia interpretera należy: Utworzyć plik Parser.sml za pomocą programu mosmlyac.exe uruchamiając plik wsadowy yacc.bat. Utworzyć plik Lexer.sml kompilując plik Lexer.lex za pomocą lex.bat (wywołującej program mosmllex.exe). Uruchomić VisualML. Otworzyć plik calc.sml. Do wykorzystania powstałych analizatorów napisano następujący plik główny interpretera calc.sml. load "BasicIO" (* dołączenie bibliotek *) load "Nonstdio" load "Lexing" load "Parsing" load "Int" use "Parser.sml" (* plik analizatora składniowego *) use "Lexer.sml" (* plik analizatora leksykalnego *) (*definicja wyrażenia ze znakiem końca linii *) val wyraz = " (2*3+4)-(7*2)\n" (* utworzenie danej typu lexbuf z łańcucha *) val lexbuf = Lexing.createLexerString wyraz (* string -> lexbuf *) (* wywołując wielokrotnie funkcję Token otrzymujemy kolejne rozpoznane jednostki leksykalne *)
7 Token lexbuf Token lexbuf Token lexbuf (* itd. *) (* ponowne utworzenie danej lexbuf *) val lexbuf = Lexing.createLexerString wyraz (* string -> lexbuf *) (* automatyczne obliczenie wyrażenia *) val result:int = Main Token lexbuf Wyżej podano komentarze. Na uwagę zasługuje szczególnie ostatnia linia. Pojawia się tu funkcja Main zawarta w pliku Parser.sml utworzona na podstawie definicji symbolu startowego w pliku Parser.sml. Funkcja Token z pliku Lexer.sml powstała na podstawie definicji rule Token =... z pliku Lexer.lex. Przebieg ćwiczenia 1. Pobierz ze strony przedmiotu katalog calc z zawartymi w nim plikami. 2. Wykonaj kompilację plików źródłowych za pomocą plików wsadowych yacc.bat i lex.bat. 3. Uruchom środowisko VisualML. 4. Wczytaj plik calc.sml. 5. Wywołując wielokrotnie funkcję Token sprawdź, czy jednostki leksykalne pobierane są prawidłowo. 6. Policz inne wyrażenie arytmetyczne. Zadania do samodzielnego wykonania 1. Wprowadź do programu kalkulatora operator dzielenia. Wskazówka: najpierw zdefiniuj token DIV w pliku parser.grm, następnie zapisz dla niego akcję semantyczną oraz zdefiniuj w pliku lexer.lex operator dzielenia. 2. Zmodyfikuj zabezpiecz funkcję dzielenia przed możliwością wystąpienia błędu stosując konstrukcję handle. 3. Zmodyfikuj program kalkulatora tak, by wykonywał obliczenia na liczbach rzeczywistych. Tworzenie pliku wykonywalnego Wyrażenia można przetwarzać nie tylko w trybie interaktywnym, ale także za pomocą programu wykonywalnego otrzymanego za pomocą kompilatora języka ML mosmlc. W tym przypadku należy przygotować pliki źródłowe zastępując instrukcje load i use przez open, czyli dołączając moduły wstępnie skompilowane. Plik z definicjami jednostek leksykalnych lexer.lex jest następujący: { open Parser open Nonstdio val intofstring = valof o Int.fromString } rule Token = parse [` ` `\t`] { Token lexbuf } (* skip blanks *)
8 ... dotychczasowe deklaracje W pliku definicji składni parser.grm żadne zmiany nie są konieczne. Główny plik calc.sml po modyfikacji ma postać: open BasicIO open Lexing open Int open Lexer open Nonstdio open Parsing open Parser val wyraz = " (2*3+4)-(7*2)\n" val lexbuf = Lexing.createLexerString wyraz (* string -> lexbuf *) val result:int = Main Lexer.Token lexbuf val _ = print (Int.toString result) Wywołując funkcje, należy podawać podobnie jak dla modułów bibliotecznych w którym module występują. Program wyprowadza wynik obliczeń na monitor. Przebieg kompilacji. Polecenia wykonywane w trybie MSDOS, np. w środowisku programu Norton Commander w sposób podany w tabeli. polecenie mosmlyac parser.grm mosmllex lexer.lex mosmlc c parser.sig mosmlc c parser.sml mosmlc c lexer.sml mosmlc calc.sml rezultat parser.sig parser.sml lexer.sml parser.ui parser.uo lexer.ui lexer.uo mosmlout.exe Plik mosmlout.exe (nazwę można zmienić) jest plikiem wykonywalnym programem nie wymagającym interpretera MosML. Polecenia do samodzielnego wykonania 1. Zdefiniować jednostki leksykalne: adresy stron www, adresy kont , rejestracje samochodowe Przekształć plik calc.sml tak, by wyrażenia były pobierane z pliku wykorzystanie funkcji bibliotecznych 4. Utwórz kalkulator logiczny ze stałymi t i f i operatorami jak w języku C. 5. Wprowadź instrukcje umożliwiające diagnostykę błędów syntaktycznych w podawanym wyrażeniu.
Analiza 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ół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ół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ół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ół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ół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ół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ół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ół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ółowoSemantyka i Weryfikacja Programów - Laboratorium 3
Semantyka i Weryfikacja Programów - Laboratorium 3 Modelowanie układów mikroprocesorowych - część II Wykonywanie całego programu Cały program wykonywany jest przez funkcję intpprog. Jedynym argumentem
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ółowoProgramowanie w języku C++ Grażyna Koba
Programowanie w języku C++ 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 zasad
Bardziej szczegółowoProgramowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Bardziej szczegółowoTemat 1: Podstawowe pojęcia: program, kompilacja, kod
Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,
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ół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ółowoProgramowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!
Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)
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ół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ółowoMetody Kompilacji Wykład 8 Analiza Syntaktyczna cd. Włodzimierz Bielecki WI ZUT
Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd Analiza Syntaktyczna Wstęp Parser dostaje na wejściu ciąg tokenów od analizatora leksykalnego i sprawdza: czy ciąg ten może być generowany przez gramatykę.
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ół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ół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ół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ółowoPodstawy i języki programowania
Podstawy i języki programowania Laboratorium 1 - wprowadzenie do przedmiotu mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 16 października 2017 1 / 25 mgr inż. Krzysztof Szwarc Podstawy i
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ółowoZadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
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ółowoElementy języków programowania
Elementy języków programowania Olsztyn 2007-2012 Wojciech Sobieski Języki programowania wymyślono po to, by można było dzięki nim tworzyć różnorodne programy komputerowe. Oczekuje się również, że tworzone
Bardziej szczegółowoSYLABUS DOTYCZY CYKLU KSZTAŁCENIA Bieżący sylabus w semestrze zimowym roku 2016/17
Załącznik nr 4 do Uchwały Senatu nr 430/01/2015 SYLABUS DOTYCZY CYKLU KSZTAŁCENIA 2016-2018 Bieżący sylabus w semestrze zimowym roku 2016/17 1.1. PODSTAWOWE INFORMACJE O PRZEDMIOCIE/MODULE Nazwa przedmiotu/
Bardziej szczegółowoProgramowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++
Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu
Bardziej szczegółowoJava EE produkcja oprogramowania
Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez
Bardziej szczegółowoPodstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
Bardziej szczegółowoMetody Kompilacji Wykład 7 Analiza Syntaktyczna
Metody Kompilacji Wykład 7 Analiza Syntaktyczna Parsowanie Parsowanie jest to proces określenia jak ciąg terminali może być generowany przez gramatykę. Włodzimierz Bielecki WI ZUT 2/57 Parsowanie Dla każdej
Bardziej szczegółowoINFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE
Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby
Bardziej szczegółowoZadanie nr 3: Sprawdzanie testu z arytmetyki
Zadanie nr 3: Sprawdzanie testu z arytmetyki 1 Cel zadania Zadanie wymusza praktyczne przećwiczenia dostosowania formatu i formy wyświetlania informacji dla własnych typów danych. Ma ono pokazać potencjalne
Bardziej szczegółowoWłączenie analizy leksykalnej do analizy składniowej jest nietrudne; po co więc jest wydzielona?
Po co wydziela się analizę leksykalną? Wykład7,str1 Włączenie analizy leksykalnej do analizy składniowej jest nietrudne; po co więc jest wydzielona? 1 Analiza leksykalna jest prostsza niż składniowa leksyka
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ółowoWybrane narzędzia do tworzenia analizatorów leksykalnych i składniowych w C/C++ by Kapitol Team
Wybrane narzędzia do tworzenia analizatorów leksykalnych i składniowych w C/C++ by Kapitol Team Flex a generatory skanerów C++ 2 sposoby wymuszenia stworzenia skanera w C++ flex -+ flexfile.l użycie %option
Bardziej szczegółowoLaboratorium nr 4: Arytmetyka liczb zespolonych
Laboratorium nr 4: Arytmetyka liczb zespolonych 1 Cel ćwiczenia Wykształcenie umiejętności definiowania przeciążeń operatorów arytmetycznych dwuargumentowych i jednoargumentowych dla własnych struktur
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ółowoPracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji
Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki Podstawy Informatyki i algorytmizacji wykład 1 dr inż. Maria Lachowicz Wprowadzenie Dlaczego arkusz
Bardziej szczegółowoWykład 5. Jan Pustelnik
Wykład 5 Jan Pustelnik Konstruowanie parsera Istnieje kilka podstawowych metod konstrukcji parsera bez nawracania Ze względów wydajnościowych parser bez nawracania jest jedynym sensownym rozwiązaniem (prawo
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ółowoAnalizator syntaktyczny
Analizator syntaktyczny program źródłowy analizator leksykalny token daj nast. token analizator syntaktyczny drzewo rozbioru syntaktycznego analizator semantyczny kod pośredni tablica symboli Analizator
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ółowoutworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,
Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz
Bardziej szczegółowoWskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Bardziej szczegółowoCzęść XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.
Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja
Bardziej szczegółowoInterpreter - EasyCompile
Akademia Podlaska w Siedlcach Siedlce, dn. 20.V.2006r. Wydział Nauk Ścisłych Instytut Informatyki Interpreter - EasyCompile Projekt z SISW Wykonali: Paweł Sawczuk Edwin Tomczuk Krzysztof Pietraszek I Inf.
Bardziej szczegółowoWstęp do programowania. Wykład 1
Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.
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ółowoZmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
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ół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ółowoPodstawy Informatyki Języki programowania c.d.
Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy 2 Makroasembler - założenia Przykład
Bardziej szczegółowoMetody Kompilacji Wykład 13
Metody Kompilacji Wykład 13 Prosty Translator Translator dla prostych wyrażeń Schemat translacji sterowanej składnią często służy za specyfikację translatora. Schemat na następnym slajdzie zostanie użyty
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ół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ół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ółowoJęzyk programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.
PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoGenerator LLgen. Wojciech Complak Generator LLgen - charakterystyka. Generator LLgen -składnia specyfikacji
Plan wykładu Wojciech Complak Wojciech.Complak@cs.put.poznan.pl charakterystyka generatora LLgen składnia specyfikacji analizatora składniowego dołączanie analizatora leksykalnego rozszerzenia składni
Bardziej szczegółowoTypy, klasy typów, składnie w funkcji
Typy, klasy typów, składnie w funkcji Typy w Haskell Każde wyrażenie w Haskell posiada zdefiniowany typ. Dzięki temu już na etapie kompilacji kodu następuje sprawdzenie poprawności kodu i zabezpiecza nas
Bardziej szczegółowoWprowadzenie do kompilatorów
Wprowadzenie do kompilatorów Czy ja kiedykolwiek napisz jaki kompilator? Jakie zadania ma do wykonania kompilator? Czy jzyk formalny to rodzaj jzyka programowania? Co to jest UML?, Czy ja kiedykolwiek
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ół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ółowoPodstawy Kompilatorów
Podstawy Kompilatorów Laboratorium 12 Analiza zależności kontekstowych. Zadanie 1: Proszę napisać analizator zgodności typów dla podzbioru standardowych wyrażeń języka Pascal. Dla uproszczenia należy założyć,
Bardziej szczegółowoĆwiczenie 1. Przygotowanie środowiska JAVA
Ćwiczenie 1 Przygotowanie środowiska JAVA 1. Wprowadzenie teoretyczne Instalacja JDK (Java Development Kit) NaleŜy pobrać z java.sun.com środowisko i zainstalować je. Następnie naleŝy skonfigurować środowisko.
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
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ółowoJęzyk programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści
Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia
Bardziej szczegółowoUkłady VLSI Bramki 1.0
Spis treści: 1. Wstęp... 2 2. Opis edytora schematów... 2 2.1 Dodawanie bramek do schematu:... 3 2.2 Łączenie bramek... 3 2.3 Usuwanie bramek... 3 2.4 Usuwanie pojedynczych połączeń... 4 2.5 Dodawanie
Bardziej szczegółowoObiektowa implementacja parsera klasy LL(1)
Obiektowa implementacja parsera klasy LL(1) Piotr Jeruszka 1 1 Wydział Inżynierii Mechanicznej i Informatyki Kierunek Informatyka, II stopień Specjalność: Aplikacje biznesowe i bazy danych, Rok II Streszczenie
Bardziej szczegółowoWprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek
Wprowadzenie Organizacja pracy i środowisko programistyczne Mirosław Ochodek Miroslaw.Ochodek@pwsz.pila.pl Miroslaw.Ochodek@cs.put.poznan.pl Dane kontaktowe Mirosław Ochodek E-mail: Miroslaw.Ochodek@pwsz.pila.pl
Bardziej szczegółowoJava Podstawy. Michał Bereta www.michalbereta.pl mbereta@pk.edu.pl
Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach projektu Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych i propagowaniu
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ółowoLABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
Bardziej szczegółowoWstęp do informatyki- wykład 2
MATEMATYKA 1 Wstęp do informatyki- wykład 2 Systemy liczbowe Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy
Bardziej szczegółowoInstrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe
Bardziej szczegółowoInformatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
Bardziej szczegółowoLaboratorium nr 5: Mnożenie wektorów i macierzy
Laboratorium nr 5: Mnożenie wektorów i macierzy 1 Cel ćwiczenia Wykształcenie umiejętności definiowania przeciążeń operatorów indeksujących i funkcyjnych. Utrwalenie umiejętności definiowania przeciążeń
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ółowoTechnologie informacyjne - wykład 12 -
Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski
Bardziej szczegółowoTablice (jedno i wielowymiarowe), łańcuchy znaków
Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie
Bardziej szczegółowoNazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++
Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Chemia, poziom pierwszy Sylabus modułu: Laboratorium programowania (0310-CH-S1-019) Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania
Bardziej szczegółowoJeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Bardziej szczegółowoMikrokontroler ATmega32. Język symboliczny
Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami
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ółowoWybrane narzędzia do tworzenia analizatorów leksykalnych i składniowych w C/C++ Narzędzia, zastosowanie oraz próby rankingu.
Wybrane narzędzia do tworzenia analizatorów leksykalnych i składniowych w C/C++ Narzędzia, zastosowanie oraz próby rankingu. Flex Flex wywodzi się jak cała rodzina tego typu narzędzi od jednego przodka:
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ółowoWybrane narzędzia do tworzenia analizatorów leksykalnych i składniowych w Javie
Zwięzły opis narzędzi wraz konkretnymi przykładami, próba porównania i rankingu Do stworzenia parsera nie jest konieczne używanie zewnętrznych narzędzi można posłużyć się algorytmem tworzenia funkcji rekurencyjnych
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ółowoProgramowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki
Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:
Bardziej szczegółowoMyśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści
Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy
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ółowoDelphi Laboratorium 3
Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,
Bardziej szczegółowoĆwiczenie 1. Wprowadzenie do programu Octave
Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do
Bardziej szczegółowo