Generator LLgen. Wojciech Complak Generator LLgen - charakterystyka. Generator LLgen -składnia specyfikacji
|
|
- Eleonora Kowal
- 6 lat temu
- Przeglądów:
Transkrypt
1 Plan wykładu Wojciech Complak charakterystyka generatora LLgen składnia specyfikacji analizatora składniowego dołączanie analizatora leksykalnego rozszerzenia składni gramatyk bezkontekstowych środowisko generatora przykładowa gramatyka i jej implementacja w generatorze LLgen mechanizmy statycznego i dynamicznego rozstrzygania konfliktów 2.02 Generator LLGen (2/34) - charakterystyka -składnia specyfikacji LLgen jest generatorem parserów, dystrybuowanym w ramach pakietu ACK (The Amsterdam Compiler Kit) jak i jako samodzielny produkt (obecnie rozwijany i dystrybuowany w oparciu o licencję BSD przez SourceForge.net z jego pomocą zaimplementowano translatory dla wielu języków programowania (m. in. Basic, C, Pascal, Modula-2, occam) LLgen generuje parsery działające metodą zejść rekurencyjnych bez nawrotów w specyfikacji analizatora można korzystać z rozszerzonych gramatyk LL(1) oraz gramatyk niejednoznacznych (dostępne są mechanizmy statycznego i dynamicznego rozstrzygania konfliktów) na podstawie specyfikacji generowana jest implementacja analizatora składniowego w języku C specyfikację parsera należy przygotować w pliku tekstowym specyfikacja zawiera produkcje, dyrektywy LLgena oraz kod i deklaracje w języku C każda produkcja składa się z nieterminala, znaku :, prawej strony produkcji i jest zakończona znakiem po prawej stronie produkcji mogą znajdować się symbole terminalne, nieterminalne i akcje semantyczne alternatywne prawe strony produkcji rozdziela się znakiem białe spacje są ignorowane, ale nie mogą występować w obrębie nazw komentarze można umieszczać wszędzie tam, gdzie dozwolona jest nazwa komentarze mają postać taką jak w języku ANSI C (/* */) i nie mogą być zagnieżdżane Generator LLGen (3/34) Generator LLGen (4/34) -składnia specyfikacji -składnia specyfikacji nazwy symboli terminalnych i nieterminalnych mogą być dowolnej długości nazwy symboli mają składnię taką jak identyfikatory języka C: mogą składać się z liter, znaku podkreślenia ('_') i cyfr dziesiętnych (nie mogą rozpoczynać się od cyfry) wielkość liter jest rozróżniana nazwy symboli nie mogą kolidować ze słowami kluczowymi języka C nazwy symboli mogą być dowolnej długości, ale: w samym LLgenie znaczących jest 50 pierwszych znaków nazwy należy uwzględnić ograniczenia liczby znaczących znaków nakładane przez docelowy kompilator języka C i konsolidator nazwy wszystkich symboli wykorzystywanych i generowanych przez LLgena zaczynają się od liter LL Generator LLGen (5/34) terminale, które nie są literałami (są nazwane) muszą być wcześniej zadeklarowane za pomocą słowa kluczowego %token, np.: %token num każda deklaracja %token musi być zakończona średnikiem w deklaracji można wymienić wiele nazw rozdzielonych przecinkami, np.: %token NUM, LITERAL terminale, które są literałami muszą być ujęte w apostrofy rozpoznawane są następujące literały specjalne: '\n' nowa linia '\r' powrót karetki '\'' apostrof '\\' odwrotny ukośnik '\t' tabulator '\b' wycofanie znaku '\xxx' liczba oktalna Generator LLGen (6/34)
2 -składnia specyfikacji - analizator leksykalny każda napotkana nazwa, która nie została wcześniej zadeklarowana jako token jest uważana za nieterminal LLgen pozwala generować analizatory z alternatywnymi nieterminalami startowymi aksjomat musi być wskazany za pomocą słowa kluczowego %start, np.: %start parse, S określa, że aksjomatem gramatyki jest nieterminal S, a jego implementacja ma znaleźć się w funkcji o nazwie parse akcje semantyczne można wstawiać w dowolnym miejscu prawej strony produkcji akcje to pojedyncza instrukcja albo instrukcje języka C ujęte w nawiasy klamrowe każdy nieterminal jest implementowany jako funkcja języka C, zmienne lokalne funkcji można zadeklarować po lewej stronie produkcji za symbolem nieterminalnym w nawiasach klamrowych, np.: S int zm : '(' num suma = 0 R Generator LLGen (7/34) domyślnie LLgen korzysta z zewnętrznego analizatora leksykalnego generowanego przez LEXa (wywoływana jest funkcja yylex()) w celu skorzystania z innego analizatora niż generowany przez LEXa należy: umieścić implementację w jednym z dwu miejsc: o bezpośrednio w specyfikacji gramatyki (w bloku ) o w zewnętrznym pliku wskazać (po słowie kluczowym %lexical) nazwę funkcji, która ma być wywoływana przez LLgena do skanowania wejścia, np.: %lexical my_yylex Generator LLGen (8/34) - analizator leksykalny - analizator leksykalny w trakcie generacji parsera LLgen tworzy plik interfejsu Lpars.h, który zawiera definicje (#define) przypisujące stałe liczbowe nazwom zadeklarowanych tokenów jeżeli zostały zadeklarowane jakieś tokeny plik Lpars.h należy włączyć dyrektywą #include "Lpars.h" do analizatora leksykalnego szkielet skanera: schemat współpracy analizatora leksykalnego i składniowego a 1 a i a n $ % int yywrap(void) int yylex(void) #include "Lpars.h" % /* reguły */ int yywrap(void) return 1 skaner parser token zwracany przez yylex() atrybut ustawiany przez skaner w zmiennej LLlval Generator LLGen (9/34) Generator LLGen (10/34) : generacja parsera : opcja v, funkcja main() na wejście generatora LLgen podajemy specyfikację parsera (plik gram.g) na wyjściu generatora LLgen otrzymujemy: implementację parsera w języku C w plikach: gram.c (implementacja nieterminali, funkcje main() i LLmessage()) Lpars.c (tablica sterująca i szkielet parsera, funkcja parse()) definicję interfejsu parser/skaner: plik Lpars.h specyfikacja analizatora składniowego (gram.g) LLgen gram.g gram.c Lpars.c Lpars.h analizator leksykalny (domyślnie funkcję yylex()) można: napisać bezpośrednio w języku C utworzyć za pomocą generatora analizatorów leksykalnych (LEX) Generator LLGen (11/34) na etapie uruchamiania i testowania parsera może być użyteczna opcja -v, powodująca wygenerowanie pliku LL.output zawierającego informacje o nierozwiązanych konfliktach w gramatyce opcji -v można używać do trzech razy w jednym wywołaniu, każde kolejne użycie podnosi poziom szczegółowości komunikatów, trzykrotne daje kompletny opis gramatyki użytkownik musi także dostarczyć implementację funkcji main() jeśli symbol startowy został zadeklarowany jako: %start parse, S to w najprostszym przypadku ciało funkcji main wywołuje funkcję parse: int main() parse() return 0 Generator LLGen (12/34)
3 Kompilacja kompletnego analizatora: LEX + LLgen Rozszerzenia składni gramatyk bezkontekstowych scan.l lex lex.yy.c gram.g lex.yy.c gram.c Lpars.c Lpars.h LLgen cc gram.c Lpars.c Lpars.h a.out Generator LLGen (13/34) w specyfikacji analizatora można korzystać z rozszerzeń składni gramatyk bezkontekstowych, do których należą: domknięcie zwrotne * z opcjonalnym ograniczeniem liczby powtórzeń *n język a*b S : 'a'* 'b' domknięcie dodatnie + z opcjonalnym ograniczeniem liczby powtórzeń +n S : 'a'+ 'b' język a+b operator opcjonalności? (równoważne *1) możliwość grupowania symboli [ ] (i kodu wewnątrz grupy) S : 'a' R 'b' R S : [ 'a' 'b' ] R Generator LLGen (14/34) przykład: napisać akceptor dla języka bezkontekstowego a n b n dla n>0 1. z wykorzystaniem gramatyki LL(1) 2. z wykorzystaniem rozszerzeń LLgena w akceptorze zostaną wykorzystane dwie globalne ( ) zmienne typu całkowitego int l_a i l_b do zliczania liczby wystąpień poszczególnych liter w aksjomacie gramatyki (S) po przetworzeniu ciągu liter a (nieterminal A) i ciągu liter b (nieterminal B) porównane zostaną wartości zmiennych i wydrukowany odpowiedni komunikat int l_a, l_b %start parse, S S : l_a = l_b = 0 A B if(l_a == l_b)puts("ok") else puts("error") powtarzanie liter a w ciągu możemy opisać za pomocą lewostronnej rekurencji: A : 'a' l_a = 1 A 'a' l_a++ B : 'b' l_b = 1 B 'b' l_b++ taka gramatyka nie jest jednak LL(1)! Generator LLGen (15/34) Generator LLGen (16/34) jeśli opiszemy powtarzanie liter a za pomocą prawostronnej rekurencji: A : 'a' l_a = 1 'a' A l_a++ B : 'b' l_b = 1 'b' B l_b++ mamy z kolei problem z konfliktem alternatyw trzeba przeprowadzić lewostronną faktoryzację przeprowadzenie lewostronnej faktoryzacji wymaga wprowadzenia dodatkowych nieterminali i odpowiedniej modyfikacji akcji A : 'a' RA l_a=1 RA : 'a' RA l_a++ B : 'b' RB l_b=1 RB : 'b' RB l_b++ Generator LLGen (17/34) Generator LLGen (18/34)
4 : obsługa błędów dzięki wykorzystaniu rozszerzeń LLgena (grupowanie i operator domknięcia dodatniego) możemy uniknąć modyfikowania gramatyki (ewentualnie usunąć nieterminale A i B): S : l_a = l_b = 0 A B if(l_a==l_b)puts("ok") else puts("error") A : [ 'a' l_a++ ] + B : [ 'b' l_b++ ] + S : l_a = l_b = 0 [ 'a' l_a++ ] + [ 'b' l_b++ ] + if(l_a==l_b)puts("ok") else puts("error") do obsługi błędów składniowych w LLgenie przewidziana jest funkcja LLmessage, której implementację dostarcza użytkownik funkcja LLmessage jest automatycznie wywoływana przez parser wygenerowany przez LLgena w przypadku wystąpienia błędu składniowego implementacja funkcji LLmessage może podjąć różne działania: wyświetlić komunikat o błędzie (analizator pracujący w trybie wsadowym) albo zachętę do ponownego wprowadzenia danych (tryb interaktywny) kontynuować albo przerwać analizę danych wejściowych w przypadku kontynuacji podjąć próbę podniesienia z błędu (naprawienia stanu) Generator LLGen (19/34) Generator LLGen (20/34) : obsługa błędów przy implementacji funkcji LLmessage może być przydatna zmienna LLsymb (typu int) przechowująca ostatnio wczytany (podglądany) token funkcja LLmessage ma jeden parametr typu całkowitego tk zawierający informację o typie błędu i nie zwraca żadnej wartości: void LLmessage(int tk) tk > 0 : oczekiwany był token tk a napotkano token LLsymb (aby podnieść się z błędu należy wstawić token tk przed bieżącym symbolem znajdującym się w LLsymb analizator leksykalny musi pozwalać na wycofanie jednej jednostki leksykalnej!) 0 : nieoczekiwany token (LLsymb) został napotkany i usunięty, -1 : parser nie napotkał oczekiwanego końca pliku (napotkany token jest w LLsymb), reszta wejścia zostanie pominięta Generator LLGen (21/34) przykład: na wejściu znajduje się ciąg nieujemnych liczb całkowitych ujęty w nawiasy okrągłe, np. (1,2,3) ciąg zawiera co najmniej jedną liczbę, jeśli jest ich więcej są rozdzielone przecinkami. Napisać analizator składniowy, który sprawdzi poprawność wprowadzonych danych. ( 1 ( (, (1 ) 3 LLmessage: unexpected token '(' deleted in line 3 LLmessage: expected token <num> not found, unexpected token ',' encountered in line 2 LLmessage: expected EOF not encountered, unexpected token <num> found in line 3, skipping extra input Generator LLGen (22/34) analizator leksykalny implementujemy w LEXie % #include <stdlib.h> int yywrap(void) int yylex(void) #include "Lpars.h" % \( return '(' \) return ')' \, return ',' [0-9]+ return num [ \t\n]. printf("unexpected character %c in line %d\n", yytext[0], yylineno) exit(exit_failure) int yywrap(void) return 1 Generator LLGen (23/34) analizator składniowy definicje, gramatyka #include <stdlib.h> extern int yylineno %token num %start parse, S S : '(' num R R : ')' ',' num R Generator LLGen (24/34)
5 analizator składniowy definicje, gramatyka z wykorzystaniem rozszerzeń LLgena #include <stdlib.h> extern int yylineno %token num %start parse, S S : '(' num [ ',' num ]* ')' analizator składniowy funkcja print_token() void print_token(int t) switch(t) case num : printf("<num>") break case EOFILE : printf("<eof>") break default : if(isprint(t)) printf("'%c'",t) else printf("[%d]",t) Generator LLGen (25/34) Generator LLGen (26/34) Rozwiązywanie konfliktów analizator składniowy funkcja LLmessage() void LLmessage(int tk) printf("llmessage: ") switch(tk) case -1 : printf("expected EOF not encountered, unexpected token ") print_token(llsymb) printf(" found in line %d, skipping extra input\n", yylineno) exit(exit_failure) case 0 : printf("unexpected token ") print_token(llsymb) printf(" deleted in line %d\n", yylineno) exit(exit_failure) default : printf("expected token ") print_token(tk) printf(" not found, unexpected token ") print_token(llsymb) printf(" encountered in line %d\n", yylineno) exit(exit_failure) Generator LLGen (27/34) generując parser działający metodą rekurencyjnych zejść bez nawrotów możemy mieć do czynienia z dwoma typami konfliktów: konfliktem alternatyw nie wiadomo, którą z prawych stron produkcji wybrać konfliktem powtórzeń aktualnie rozwijany nieterminal zawiera domknięcie i nie wiadomo czy wejście jest jego dalszym ciągiem czy też rozpoczyna inną produkcję do rozwiązywania konfliktu alternatyw służą odpowiednie słowa kluczowe: do dynamicznego rozstrzygania: %if(warunek) do statycznego rozstrzygania: %prefer (równoważne %if(1)) %avoid (równoważne %if(0)) Generator LLGen (28/34) Rozwiązywanie konfliktów przykład użycia %if Rozwiązywanie konfliktów przykład użycia %prefer przykład: badanie parzystości liczby binarnej zapisanej począwszy od najstarszej cyfry (odpowiedź będzie znana po wczytaniu ostatniej cyfry) analizator leksykalny ma następującą postać: [01] return yytext[0] int parity %start parse, S S : '0' parity = 0 R '1' parity = 1 R R : %if(parity == 0) puts("even") puts("odd") S Generator LLGen (29/34) przykładem użycia mechanizmu statycznego rozwiązywania konfliktu alternatyw za pomocą słowa kluczowego %prefer jest instrukcja warunkowa z opcjonalną częścią else problem tzw. wiszącego else występuje w tych językach (np.: C, C++, Pascal), w których: instrukcja warunkowa ma opcjonalną część else a jednocześnie nie ma słowa (słów) kluczowego kończącego instrukcję warunkową w produkcji opisującej składnię instrukcji warunkowej wskazujemy, że część else ma być powiązana z bezpośrednio poprzedzającą ją częścią ifthen: stmnt : IF exp THEN stmnt [ %prefer ELSE stmnt ] gdzie stmnt to instrukcja, a IF, THEN i ELSE to słowa kluczowe języka źródłowego Generator LLGen (30/34)
6 Rozwiązywanie konfliktów powtórzeń Rozwiązywanie konfliktów powtórzeń do rozwiązywania konfliktu powtórzeń służy słowo kluczowe %while: %while(warunek) wejście będzie traktowane jako należące do rozwinięcia bieżącego symbolu dopóki warunek będzie prawdziwy. zapis warunku często wymagania obliczenia zbioru First LLgen pozwala zmniejszyć pracochłonność obliczania warunku dzięki użyciu makra języka C generowanego na podstawie słowa kluczowego %first, np. zapis: %first fmac, nonterm generuje jednoargumentowe makro fmac(nonterm) testujące czy token podany jako argument należy do zbioru First(nonterm) Generator LLGen (31/34) jako przykład użycia słowa kluczowego %while do rozstrzygnięcia konfliktu powtórzeń rozważmy następujący język: %start parse, S S : N * 'x' "gram.g", line 8: Repetition conflict N : 'x' 'y' 'z' problem: analizator widząc znak x nie wie czy rozpoczyna on produkcję N x y czy kończy S N* x xyx$?? Generator LLGen (32/34) Rozwiązywanie konfliktów Dalsza lektura rozwiązanie konfliktu powtórzeń wymaga: 1. modyfikacji gramatyki (pojawia się jednak konflikt alternatyw obie alternatywy mogą być napisami pustymi) 2. rozbudowania skanera o podgląd: jednego symbolu z wejścia pozwoli rozwiązać konflikt alternatyw dwóch symboli z wejścia pozwoli rozwiązać konflikt powtórzeń 3. wykorzystania podglądów w celu rozwiązania konfliktów w gramatyce %start parse, S S : XY 'x' XY : %if(lookahead1() == 'z') 'z' * [ %while(lookahead2() == 'y') 'x' 'y' ] * Generator LLGen (33/34) gramatyki LL: Aho A. V., Sethi R., Ullman J. D., Compilers: Principles, Techniques, and Tools, Addison-Wesley, 1986 Bauer F. L., Eickel J., Compiler Construction: An Advanced Course, Springer-Verlag, 1976 generator LLgen: Grune D., Jacobs C. J. H., A Programmer-friendly LL(1) Parser Generator, Software - Practice and Experience, vol. 18, no. 1, pp , 1/1988 Jacobs C. J. H., LLgen, an extended LL(1) parser generator, tack.sourceforge.net/olddocs/llgen.pdf Grune D., Bal H., Jacobs C., Langendoen K., Modern Compiler Design, John Wiley & Sons, 2000 Generator LLGen (34/34)
Podstawy kompilatorów. Generator LLgen. Wojciech Complak.
Generator LLgen Wojciech Complak Wojciech.Complak@cs.put.poznan.pl 1 Plan wykładu charakterystyka generatora LLgen składnia specyfikacji analizatora składniowego dołączanie analizatora leksykalnego rozszerzenia
Bardziej szczegółowoTranslacja sterowana składnią w metodzie zstępującej
Translacja sterowana składnią w metodzie zstępującej Wojciech Complak Wojciech.Complak@cs.put.poznan.pl 1 Plan wykładu translacja sterowana składnią definicje sterowane składnią i schematy translacji atrybuty
Bardziej szczegółowoPodstawy Kompilatorów
Podstawy Kompilatorów Laboratorium 6 Generator LLgen. Zadanie 1: Proszę napisać akceptor dla języka a n b m (n, m > 0). Przykłady: aaabb powinniśmy otrzymać wynik: OK aaabba powinniśmy otrzymać komunikat
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ół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ółowoPodstawy Kompilatorów
Podstawy Kompilatorów Laboratorium 10 Translacja sterowana składnią w generatorze YACC. Zadanie 1: Proszę napisać program, który dla danej liczby całkowitej j oraz niepustego ciągu liczb naturalnych c
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ółowoPodstawy Kompilatorów
Podstawy Kompilatorów Laboratorium 1 Celem laboratorium jest zapoznanie się ze środowiskiem i sprawdzenie poprawności działania narzędzi. Nazwy programów i rezultaty będą takie same w systemie operacyjnym
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ół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ółowoPodstawy generatora YACC. Bartosz Bogacki.
Podstawy generatora YACC Bartosz Bogacki Bartosz.Bogacki@cs.put.poznan.pl Witam Państwa. Wykład, który za chwilę Państwo wysłuchają dotyczy generatora analizatorów składniowych YACC. Zapraszam serdecznie
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ół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ół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ół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ół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ół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ół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ół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ół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ół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ół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ół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ół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ółowoSemantyka i Weryfikacja Programów - Laboratorium 6
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
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ół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ółowoTranslacja sterowana składnią w generatorze YACC
Translacja sterowana składnią w generatorze YACC Wojciech Complak Wojciech.Complak@cs.put.poznan.pl 1 Plan wykładu zasady implementacji translacji sterowanej składnią w generatorze YACC korzystanie z atrybutów
Bardziej szczegółowoAnaliza metodą zstępującą. Bartosz Bogacki.
Analiza metodą zstępującą Bartosz Bogacki Bartosz.Bogacki@cs.put.poznan.pl Witam Państwa. Wykład, który za chwilę Państwo wysłuchają dotyczy analizy metodą zstępującą. Zapraszam serdecznie do wysłuchania.
Bardziej szczegółowo1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
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ół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ółowoGenerator YACC: gramatyki niejednoznaczne
Generator YACC: gramatyki niejednoznaczne Wojciech Complak Wojciech.Complak@cs.put.poznan.pl 1 Plan wykładu gramatyki jednoznaczne i niejednoznaczne zalety gramatyk niejednoznacznych opisywanie łączności
Bardziej szczegółowoPodstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Pętle Pętla jest konstrukcją sterującą stosowaną w celu wielokrotnego wykonania tego samego zestawu instrukcji jednokrotne
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ółowo/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
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ółowoBison - generator analizatorów składniowych
Bison - generator analizatorów składniowych Spis treści: 1. Wprowadzenie 2. Specyfikacja Deklaracje Reguły Procedury pomocnicze 3. Prosty przykład 4. Uruchamianie 5. Rozstrzyganie niejednoznaczności Konflikty
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ół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ółowoProgramowanie strukturalne i obiektowe
Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie
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ółowo0.1 Lewostronna rekurencja
0.1 Lewostronna rekurencja Sprawdź czy poniższa gramatyka E jest zgodna z LL(1), tzn. czy umożliwia przeprowadzenie analizy bez powrotu z wyprzedzeniem o jeden symbol. Wyjaśnienie pojęcia LL(1): Pierwsze
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ółowoPODSTAWY INFORMATYKI 1 PRACOWNIA NR 6
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą
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ółowoWykład 10. Translacja sterowana składnią
Wykład 10 Translacja sterowana składnią Translacja sterowana składnią Z konstrukcjami języków programowania wiąże się pewną informację przez dołączenie atrybutów do symboli gramatyki reprezentujących te
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ółowoPodstawy Kompilatorów
Podstawy Kompilatorów Laboratorium 9 Uwaga: Do wykonania poniższych zadań związanych z implementacją niezbędny jest program LEX, program YACC oraz kompilator języka C. Dla środowiska Linux mogą to być:
Bardziej szczegółowoSkrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać
MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty
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ółowoSystem operacyjny Linux
Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 6 Język bash Pierwszy skrypt Rozwinięcia parametryczne Bloki instrukcji Dwa przydatne polecenia Tablice Sprawdzanie warunków Instrukcje
Bardziej szczegółowoWprowadzenie do programowania w języku C
Wprowadzenie do programowania w języku C Część druga Instrukcje sterujące przebiegiem programu Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót
Bardziej szczegółowoWprowadzenie. Wojciech Complak
Wprowadzenie Wojciech Complak Wojciech.Complak@cs.put.poznan.pl Przedmiot Podstawy kompilatorów, wykład 1, Wprowadzenie, prezentuje Wojciech Complak. Witam Państwa na pierwszym wykładzie z przedmiotu Podstawy
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ółowoPodstawy programowania - 1
Podstawy programowania - 1 doc. dr inż. Tadeusz Jeleniewski Wykład: sobota B, godz. 10.30 12.55 sala 12 Laboratorium: sobota B, godz. 13.00 15.25 sala 2 sobota B, godz. 15.30-17.55 sala 2 e-mail: tadeusz.jeleniewski@pwr.wroc.pl
Bardziej szczegółowoWstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy
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ół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ółowoWstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
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ółowoWstęp do informatyki- wykład 11 Funkcje
1 Wstęp do informatyki- wykład 11 Funkcje 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 Grębosz, Opus magnum
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ół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ółowoWstęp do informatyki- wykład 9 Funkcje
1 Wstęp do informatyki- wykład 9 Funkcje 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 Grębosz, Opus magnum
Bardziej szczegółowoElementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.
Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia
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ółowoPodstawy programowania (1)
Podstawy programowania (1) doc. dr inż. Tadeusz Jeleniewski Konsultacje pokój 19 Poniedziałki, godz. 9:45 11:20 e-mail: tadeusz.jeleniewski@neostrada.pl Podstawy programowania (1) - wykład 1. Wprowadzenie
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ółowoPodstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
programowania Wykład: 5 Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania w C++ Instrukcje sterujące 2 dr Artur Bartoszewski
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
Bardziej szczegółowoJęzyk C - podstawowe informacje
Język C - podstawowe informacje Michał Rad AGH Laboratorium Maszyn Elektrycznych 2014-12-05 Outline Program w języku C Funkcje Składnia Instrukcje sterujace Na koniec... Po kolei napisać program (zwykły
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ółowoKURS C/C++ WYKŁAD 1. Pierwszy program
KURS C/C++ WYKŁAD 1 Pierwszy program Tworzenie programu odbywa sie w dwóch etapach: 1. opracowanie kodu źródłowego 2. generowanie kodu wynikowego Pierwszy etap polega na zapisaniu algorytmu za pomocą instrukcji
Bardziej szczegółowoznajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Bardziej szczegółowoPodstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
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ółowo1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
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ółowoProgramowanie Proceduralne
Programowanie Proceduralne Makefile Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 14 Co to jest Makefile Makefile jest plikiem reguł dla programu make. Wykorzystywany jest
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoJęzyki skryptowe w programie Plans
Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów
Bardziej szczegółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Bardziej szczegółowoMetody kompilacji Wykłady 4-5
Metody kompilacji Wykłady 4-5 Analiza Leksykalna Wstęp Analizator leksykalny odczytuje znaki z wejścia, rozpoznaje leksemy i produkuje tokeny. Wraz z symbolem terminalnym, który jest używany przez parser,
Bardziej szczegółowoSpis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
Bardziej szczegółowoPodstawy programowania w C++
Podstawy programowania w C++ Liczby w jaki sposób komputery je widzą? Opracował: Andrzej Nowak Bibliografia: CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com Czy wiesz, jak komputery wykonują
Bardziej szczegółowowykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis
i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje
Bardziej szczegółowoCw.12 JAVAScript w dokumentach HTML
Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane
Bardziej szczegółowoWykład. Materiały bazują częściowo na slajdach Marata Dukhana
Wykład Materiały bazują częściowo na slajdach Marata Dukhana Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C# Znane kompilatory
Bardziej szczegółowoLaboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych
1. Wstawianie skryptu na stroną: Laboratorium 1 Do umieszczenia skryptów na stronie służy znacznik: //dla HTML5 ...instrukcje skryptu //dla HTML4 ...instrukcje
Bardziej szczegółowoPython wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA
Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający
Bardziej szczegółowoZajęcia P2AM. Analizator składniowy (Flex + Bison, Linux)
Zajęcia P2AM. Analizator składniowy (Flex + Bon, Lux) 1. Cel ćwiczeń Celem ćwiczeń jest stworzenie analizatora składniowego dla języka będącego podzbiorem języka wysokiego poziomu (Ada lub Modula2). Przy
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ół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ółowoWykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
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ół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ółowo