ForPascal Interpreter języka Pascal



Podobne dokumenty
Interpreter - EasyCompile

Algorytmika i Programowanie VBA 1 - podstawy

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}

Języki programowania zasady ich tworzenia

Pascal - wprowadzenie

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Właściwości i metody obiektu Comment Właściwości

1 Podstawy c++ w pigułce.

Podstawy programowania

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Instrukcja standardowa Writeln

LibreOffice Calc VBA

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Bloki anonimowe w PL/SQL

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Wprowadzenie do Scilab: podstawy języka Scilab

Wprowadzenie do programowania w VBA

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Wstęp do programowania. Różne różności

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Wstęp do programowania

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

1 Podstawy c++ w pigułce.

Struktura pliku projektu Console Application

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Języki skryptowe w programie Plans

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Elementy języków programowania

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Wprowadzenie do języka Pascal

Programowanie - instrukcje sterujące

Programowanie RAD Delphi

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Odczyt danych z klawiatury Operatory w Javie

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Podstawy i języki programowania

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Algorytmy i struktury danych

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Zapis algorytmów: schematy blokowe i pseudokod 1

Wprowadzenie do języka Java

Języki Programowania. Elementy języków programowania. Wojciech Sobieski

Informatyka 1. Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Cw.12 JAVAScript w dokumentach HTML

Programowanie w języku Python. Grażyna Koba

Programowanie Delphi obliczenia, schematy blokowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Warunki logiczne instrukcja if

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Języki formalne i techniki translacji

Zadanie analizy leksykalnej

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Definicje. Algorytm to:

Wykład 2 Składnia języka C# (cz. 1)

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Visual Basic for Application (VBA)

Podstawy Programowania Podstawowa składnia języka C++

Liczby losowe i pętla while w języku Python

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Zasady Programowania Strukturalnego

ECDL Podstawy programowania Sylabus - wersja 1.0

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Instrukcje sterujące. Programowanie komputerowe

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Instrukcje iteracyjne (pętle)

Podstawy Programowania. Wykład 1

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Podstawy programowania

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Podstawy programowania

KOTLIN. Język programowania dla Androida

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Środowisko programisty Zestaw 7

Transkrypt:

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: Marcin Kamiński Przemysław Serowiec Aneta Zbiejczyk Siedlce 2007

Spis treści 1. Cel i załoŝenia projektu... 3 2. Notacja Backusa Naura BNF... 3 3. Specyfikacja składni w notacji BNF... 3 4. Uwarunkowania i ograniczenia... 6 2

1. Cel i załoŝenia projektu Projekt obejmuje stworzenie prostego interpretera języka Pascal w środowisku Borland Delphi w języku Object Pascal pod nazwą roboczą ForPascal. Jako, Ŝe będzie to kompilator Pascala okrojonego w wielu jego funkcji, moŝliwe będzie uruchomienie programów zwierających tylko: deklarację i uŝycie zmiennych typu naturalnego z zerem (Byte), zmiennoprzecinkowego ze znakiem (Single) oraz logicznego (Boolean), operacje arytmetyczne takie jak dodawanie, odejmowanie, mnoŝenie, dzielenie oraz dzielenie bez reszty, strukturę zapytania logicznego If-Then oraz If-Then-Else, pętle For-To, operacje wejścia/wyjścia typu Read, Write. Proces działania aplikacji ForPascal jest przedstawiony na schemacie poniŝej. Kod programu Analizator leksykalny Analizator składniowy Interpreter Wynik Komunikat o błędzie 2. Notacja Backusa Naura BNF Notacja Backhusa-Naura dopuszcza stosowanie następujących symboli: <> w nawiasach ostrych podaje się definiowanej składni, ::= oznacza przypisanie do definiowanej nazwy jej składni, lub [ ] nawiasy kwadratowe oznaczają opcjonalne wystąpienie, {} nawiasy klamrowe oznaczają wystąpienie fragmentu składni 0,1 lub nieskończenie wiele razy. 3. Specyfikacja składni w notacji BNF Znaki <Litera> ::= 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'W' 'X' 'Y' 'Z' 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm ' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'w' 'x' 'y' 'z' <Cyfra> ::= '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' <LN> ::= <Cyfra>{<Cyfra>} <LZ> ::= 3

['-']<LN>['.'<LN>] <SL> ::= 'True' 'False' LN Liczba naturalna z zerem LZ Liczba zmiennoprzecinkowa ze znakiem SL Słowo logiczne (True, False) Operatory <OA> ::= '+' '-' '*' '/' 'div' <OP> ::= '<' '>' '=' '<>' OA Operator arytmetyczny OP Operator porównania Typy zmiennych <TN> ::= 'Byte' <TZ> ::= 'Single' <TL> ::= 'Boolean' TN Typ naturalny z zerem (Byte) TZ Typ zmiennoprzecinkowy ze znakiem (Single) TL Typ logiczny (Boolean) Zmienne <ZM> ::= <Litera>{<Litera> <Cyfra>} <Deklaracja> ::= <ZM>{','<ZM>}':'<TN> <TZ> <TL>';' ZM - Zmienna Operacje <OPA> ::= [{'('}]<ZM> <LN> <LZ>[{')'}]<OA>[{'('}]<ZM> <LN> <LZ>[{')'}][<OA>{[{'('}]<Z 4

M> <LN> <LZ>[{')'}]<OA>[{'('}]<ZM> <LN> <LZ>[{')'}]}] <OPL> ::= <OPA> <ZM> <LN> <LZ> <SL><OP><OPA> <ZM> <LN> <LZ> <SL> <PR> ::= <ZM>':='<ZM> <LN> <LZ> <SL> <OPA>';' <IFTHEN> ::= 'If'<OPL>'Then'<PR> <IFTHEN> <BLOK> <FOR> <IFTHENELSE> <READ> <WRITE>';' <IFTHENELSE> ::= 'If'<OPL>'Then'<PR> <IFTHEN> <BLOK> <FOR>'Else'<PR> <IFTHEN> <BLOK> <FOR> < IFTHENELSE> <READ> <WRITE>';' <FOR> ::= 'For'<zmienna>':='<ZM> <LN>'To'<ZM><LN>'Do'<PR> <IFTHEN> <BLOK> <FOR> <IFTH ENELSE> <READ> <WRITE>';' <BLOK> ::= 'Begin'{[<PR>] [<IFTHEN>] [<IFTHENELSE>] [<FOR>] [<READ>] [<WRITE>]}'End' <READ> ::= 'Read''('<ZM>')'';' <WRITE> ::= 'Write''('<ZM> '''{<Dowolne znak>}''' '''{<Dowolny znak>'''','<zm>}')'';' OPA Operacja arytmetyczna OPL Operacja logiczna PR Przypisanie wartości do zmiennej IFTHEN Warunek If-Then IFTHENELSE Warunek If-Then-Else FOR Pętla For-To BLOK Blok Begin-End READ Operacja wejścia WRITE Operacja wyjścia Program <PROGRAM> ::= 'Program'<Litera>{<Litera> <Cyfra>}';''Var'<Deklaracja>{<Deklaracja>} 'Begin'[{<PR> <FOR> <IFTHEN> <IFTHENELSE> <READ> WRITE}]'End''.' Słowa kluczowe 'Program' 'Var' 'Begin' 'End' 'If' 'Then' 'Else' 'For' 'To' 'Do' Nazwy zmiennych nie mogą przyjmować nazw słów kluczowych. Aby słowa kluczowe zostały za takie uznane nie mogą łączyć się z innymi znakami 5

drukowalnymi (pomiędzy słowem kluczowym, a kolejnym drukowalnym znakiem musi wystąpić przynajmniej jeden znak spacji oprócz Read i Write). 4. Uwarunkowania i ograniczenia Program ForPascal będzie realizował tylko część funkcjonalności języka Pascal, która została opisana w notacji BNF. Po słowach kluczowych musi wystąpić odstęp przynajmniej jednej spacji. Wyjątkiem od tej reguły są nawiasy zwykłe w operacjach arytmentycznych. Znak taki moŝe wystąpić od razu po słowie kluczowym, jeśli formuła uŝycia słowa kluczowego i nawiasu na to pozwala. Nawiasów nie stosuje się przy operacji logicznej warunku If-Then-Else. Nie jest to konieczne zwaŝywszy, Ŝe nie stosuje się słów And, Or. Operatory arytmetyczne (oprócz div) i logiczne mogą łączyć się z wartościami liczbowymi. Dozwolony jest więc zapis If i = 0 Then oraz If i=0 Then Operator div nie moŝe łączyć się z innymi znakami, musi być od nich oddzielony przynajmniej jednym znakiem spacji. 3 div 2 dozwolone 3div 2 dozwolone 3div2 niedozwolone Dzielna i dzielnik w operacji dzielenia całkowitego muszą być typu naturalnego (Byte). W pętli Fot-To zmienna sterująca moŝe przyjmować tylko wartości naturalne (w tym przypadku Byte) i do jej inicjalizacji oraz maksymalnej wartości musi być zastosowana liczba. Nie moŝe to być operacja arytmetyczna dająca wynik naturalny. Jeśli zmiennym nie zostaną przypisane wartości początkowe to przyjmą wartości domyślne. Byte 0 Single 0,0 Boolean false Zezwala się na porównywanie oraz działania arytmetyczne na zmiennych i wartościach tego samego typu. Nie moŝna stosować dodawanie, odejmowania, dzielenia, mnoŝenia zmiennych i wartości typu Boolean. 6