Podstawy Kompilatorów



Podobne dokumenty
Podstawy Kompilatorów

Podstawy Kompilatorów

Podstawy Kompilatorów

Podstawy Kompilatorów

Generator LLgen. Wojciech Complak Generator LLgen - charakterystyka. Generator LLgen -składnia specyfikacji

Podstawy Kompilatorów

Programy pomocnicze: diff, make, systemy rcs i cvs, debugger. Zarządzanie wersjami.

Podstawy generatora YACC. Bartosz Bogacki.

Analiza leksykalna i generator LEX

KONSTRUKCJA KOMPILATORÓW

Języki formalne i gramatyki

Ćwiczenia nr 11. Translatory. Wprowadzenie teoretyczne

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

PARADYGMATY I JĘZYKI PROGRAMOWANIA. lex/flex i yacc/bison w- 4 (2014)

automatem skończonym niedeterministycznym (ang. nondeterministic finite automaton) M N nazywamy system:

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

L E X. Generator analizatorów leksykalnych

Generatory analizatorów

Podstawy kompilatorów. Generator LLgen. Wojciech Complak.

Generator skanerów Flex

Zajęcia P2AM. Analizator składniowy (Flex + Bison, Linux)

Programowanie 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!

Bison - generator analizatorów składniowych

Generator YACC: gramatyki niejednoznaczne

Systemy Operacyjne - Operacje na plikach

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

1.Wstęp. 2.Generowanie systemu w EDK

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje

Wstęp do programowania

Programowanie niskopoziomowe

10. Translacja sterowana składnią i YACC

Tworzenie oprogramowania

PROGRAMOWANIE w C prolog

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Piotr Dwieczkowski. Code coverage. Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++

Wstęp do Programowania, laboratorium 02

Procedura wygenerowania paczki instalacyjnej oprogramowania F-Secure

Programowanie Proceduralne

Języki formalne i kompilatory (15 wyk., 15 ćw. audyt., 15 ćw. lab.)

Java jako język programowania

Podstawy Programowania.

Laboratorium 0: System Linux, edytor vim i kompilator gcc. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

/*W tym miejscu funkcja system wywołuje systemową komendę PAUSE tj.czeka tak długo, aż zostanie wciśnięty dowolny znak z

3 Przygotował: mgr inż. Maciej Lasota

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Wstęp do programowania. Wykład 1

Acronis Backup & Recovery 10 Server for Linux. Instrukcja szybkiego rozpoczęcia pracy

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Świat parserów. Krzysztof Leszczyński Polska Grupa Użytkowników Linuxa

Procedura aktualizacji systemu TelkomBud. dla serwera DBfC w wersji 4.x

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat

Laboratorium z użyciem analizatora leksykalnego FLEX

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Podstawy Programowania

Java EE produkcja oprogramowania

Ćwiczenie 1. Przygotowanie środowiska JAVA

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

C++ - [1-3] Debugowanie w Qt Creator

Generator analizatorów leksykalnych - Lex. Bartosz Bogacki.

Co nie powinno być umieszczane w plikach nagłówkowych:

Wybrane narzędzia do tworzenia analizatorów leksykalnych i składniowych w C/C++ by Kapitol Team

Programowanie obiektowe

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Programowanie Równoległe Wykład, CUDA praktycznie 1. Maciej Matyka Instytut Fizyki Teoretycznej

Metody Kompilacji Wykład 1 Wstęp

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Wprowadzenie do środowiska Qt Creator

Wprowadzenie do kompilatorów

Zakład Systemów Rozproszonych

weblsp Wybór przeglądarki i jej ustawienia Instrukcja ADH-Soft sp. z o.o., ul. 17 Stycznia 74, Warszawa

Instalacja i obsługa generatora świadectw i arkuszy ocen

Materiały dodatkowe. Raspberry Pi

Zadanie programistyczne nr 3 z Sieci komputerowych

Aktyn - W Płace-Kadry Pro SQL E-DEKLARACJE

Poziomy wymagań Konieczny K Podstawowy- P Rozszerzający- R Dopełniający- D Uczeń: z zakresu systemów

Argumenty wywołania programu, operacje na plikach

1 Zapoznanie się ze środowiskiem Xenomai.

Microsoft Visual C Express Edition

Podstawy informatyki

WPROWADZENIE DO INFORMATYKI

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Instrukcja instalacji aplikacji Comarch Smart Card ToolBox

Git, Bitbucket, IntelliJ IDEA

Instalacja serwera baz danych PostgreSQL ze źródeł i pierwsze uruchomienie

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Programowanie w języku C++ Grażyna Koba

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Instrukcja instalacji czytnika kart mikroprocesorowych i konfiguracji przeglądarki internetowej do współpracy z systemem bankowości elektronicznej CIB

Język ludzki kod maszynowy

Instalowanie VHOPE i plików biblioteki VHOPE

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Transkrypt:

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 Linux i systemie Cygwin (o ile nie zaznaczono, że jest inaczej). Zadanie 1: Testowanie działania kompilatora języka C. Proszę do dowolnego edytora tekstowego wprowadzić poniższy program: int main(void) printf("\ntest\n"); return 0; i zapisać go w pliku test.c Program kompilujemy wydając polecenie: gcc test.c jeżeli kompilacja przebiegnie poprawnie powinniśmy otrzymać program wykonywalny o nazwie: a.out (Cygwin: a.exe)./a.out (Cygwin:./a.exe) Test

Zadanie 2: Testowanie działania generatora Lex. % int yywrap(void); % a printf("b"); int yywrap(void) return 1; int main(void) return yylex(); i zapisać ją w pliku scan.l Analizator leksykalny generujemy wydając polecenie: flex -l scan.l opcja l przełącza flexa w tryb maksymalnej zgodności z oryginalnym generatorem LEX. W większości dystrybucji Linuxa istnieje symboliczne łącze wywołujące od razu flexa z parametrem l, wtedy wystarczy wydać polecenie: lex scan.l Jeżeli generacja przebiegnie poprawnie powinniśmy otrzymać plik lex.yy.c Program kompilujemy wydając polecenie: gcc lex.yy.c jeżeli kompilacja przebiegnie poprawnie powinniśmy otrzymać program wykonywalny o nazwie: a.out (Cygwin: a.exe) Proszę utworzyć za pomocą dowolnego edytora tekstowego plik o poniższej zawartości: Ala ma kota i zapisać go w pliku test.in./a.out < test.in (Cygwin:./a.exe < test.in) Alb mb kotb Uwaga: Na etapie nauki niewskazane jest uruchamianie programów w trybie interaktywnym. Zachowanie bardziej złożonych analizatorów, ze względu na buforowanie tekstu i działanie podglądu, może się różnić w zależności od tego, czy są uruchomione w trybie interaktywnym czy wsadowym.

Zadanie 3: Testowanie działania generatora LLgen (Linux). % int yywrap(void); #include "Lpars.h" % a return 'a'; b return 'b'; int yywrap(void) return 1; i zapisać ją w pliku scan.l %start parse, spec ; spec : 'a' spec printf("1"); 'b' spec printf("2"); printf("3"); ; int main(void) printf("\n"); parse(); printf("\n"); return 0; LLmessage(int tk) printf("blad (%d)",tk); i zapisać ją w pliku gram.g Analizator leksykalny generujemy, tak jak w poprzednim zadaniu, wydając polecenie: flex -l scan.l Jeżeli generacja przebiegnie poprawnie powinniśmy otrzymać plik lex.yy.c Analizator składniowy generujemy poleceniem: LLgen gram.g

Jeżeli generacja przebiegnie poprawnie powinniśmy otrzymać pliki: Lpars.c i Lpars.h Kompletny analizator kompilujemy poleceniem: gcc lex.yy.c Lpars.c gram.c Jeżeli kompilacja przebiegnie poprawnie otrzymamy plik o nazwie: a.out Proszę utworzyć za pomocą dowolnego edytora tekstowego plik o poniższej zawartości: aabb i zapisać go w pliku test.in./a.out < test.in 32211 Uwaga: Na etapie nauki niewskazane jest uruchamianie programów w trybie interaktywnym. Zachowanie bardziej złożonych analizatorów, ze względu na buforowanie tekstu i działanie podglądu, może się różnić w zależności od tego, czy są uruchomione w trybie interaktywnym czy wsadowym.

Zadanie 4: Testowanie działania generatora YACC. % int yywrap(void); #include "y.tab.h" % a return 'a'; b return 'b'; int yywrap(void) return 1; i zapisać ją w pliku scan.l % void yyerror(const char*,...); int yyparse(void); extern int yylineno; % S : printf("\n"); L printf("\n"); ; L : 'a' L printf("1"); 'b' L printf("2"); printf("3"); ; void yyerror(const char *fmt,...) printf("%s in line %d\n", fmt, yylineno); int main(void) return yyparse(); i zapisać ją w pliku gram.y Analizator leksykalny generujemy tak, jak w poprzednich zadaniach, wydając polecenie: flex -l scan.l Jeżeli generacja przebiegnie poprawnie powinniśmy otrzymać plik lex.yy.c Analizator składniowy generujemy, w zależności od tego, który generator jest zainstalowany w systemie, poleceniem: bison -y -d gram.y albo byacc -d gram.y

w obu przypadkach, jeżeli kompilacja przebiegnie poprawnie, powinniśmy otrzymać pliki y.tab.c i y.tab.h Zazwyczaj w dystrybucjach Linuxa istnieje symboliczne łącze wywołujące od razu YACCa z ewentualnymi odpowiednimi parametrami, wtedy wystarczy wydać polecenie: yacc -d gram.y Kompletny analizator kompilujemy poleceniem: gcc y.tab.c lex.yy.c Jeżeli kompilacja przebiegnie poprawnie otrzymamy plik o nazwie: a.out (Cygwin: a.exe) Proszę utworzyć za pomocą dowolnego edytora tekstowego plik o poniższej zawartości: aabb i zapisać go w pliku test.in./a.out < test.in (Cygwin:./a.exe < test.in) 32211 Uwaga: Na etapie nauki niewskazane jest uruchamianie programów w trybie interaktywnym. Zachowanie bardziej złożonych analizatorów, ze względu na buforowanie tekstu i działanie podglądu, może się różnić w zależności od tego, czy są uruchomione w trybie interaktywnym czy wsadowym.