|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--javapas.Prekompilator
Title: Javapas
Description: Pascal Interpreter
Copyright: Copyright (c) 2003
Company: AP
Klasa odpowiedzialna jest za stworzenie pseudokodu wykonywalnego przez maszynę wirtualną VM z kodu źródłowego w języku Pascal.
Field Summary | |
private java.util.Vector |
operacje
Wektor zawierający listę operacji (pseudokod) |
private java.util.Vector |
zmienne
Wektor zawierający nazwy zmiennych |
private java.lang.String |
zrodlo
Kod źródłowy programu w języku Pascal |
Constructor Summary | |
Prekompilator(java.lang.String Zrodlo)
Konstrukor klasy wymaga podania w parametrze łańcucha znaków zawierającego pełen kod żródłowy programu. |
Method Summary | |
private boolean |
czyWStringu(java.lang.String kod,
int poz)
Metoda sprawdza czy znak o indeksie poz znajduje się wewnątrz apostrofów ''. |
private java.lang.String |
dajBlokGlowny()
Metoda wczytuje z kodu źródłowego programu blok główny Begin ... |
private Blok |
dajBlokOperacji(java.lang.String kod)
Funkcja zwraca wnętrze bloku Begin ... |
private java.lang.String |
dajNawiasy(java.lang.String kod)
Metoda odpowiedzialna za pobranie wnętrza nawiasów () |
private void |
dajStale()
Metoda wczytuje blok const oraz następnie dodaje je do wektora zmiennych z zaznaczeniem bitu stałości. |
private java.lang.String |
dajString(java.lang.String kod)
Metoda odpowiedzialna za pobranie wnętrza apostrofów '' |
private void |
dajZmienne()
Metoda wczytuje blok var oraz następnie dodaje je do wektora zmiennych. |
private java.lang.String |
FOR(java.lang.String warunek,
java.lang.String kod)
Metoda tworzy pseudokod pętli FOR ... |
private java.lang.String |
IF(java.lang.String warunek,
java.lang.String kod)
Metoda tworzy pseudokod instrukcji warunkowej IF ... |
private int |
indexZmiennej(java.lang.String nazwa)
Metoda sprawdza istnienie zmiennej o nazwie nazwa w tablicy
zadeklarowanych zmienney i w przypadku jej istnienia zwraca jej indeks w wektorze
lub -1 w przypadku jej braku |
private void |
instrukcja(java.lang.String kod)
Metoda rozpoznaje i zamienia na pseudokod instrukcję podstawienia bądź znane funkcje. |
private int |
liczbaPlusow(java.lang.String gdzie)
Metoda zlicza liczę symboli + w łańcuchu znaków. |
private int |
liczbaWystapien(java.lang.String gdzie,
java.lang.String co)
Metoda zlicza liczbę wystąpień łańcucha znaków co w łańcuchu gdzie . |
private int |
max(int A,
int B)
Metoda zwraca większą z dwóch liczb będących parametrami |
private int |
min(int A,
int B,
int C)
Metoda zwraca mniejszą z liczb A i B pod warunkiem że są większe od C |
private void |
normalizujElse()
Do poprawnego działania modułu wymagane jest aby przed słowem kluczowym else występował średnik, co jest niezgodne ze składnią języka Pascal. |
private java.lang.String |
normalizujTyp(java.lang.String typ)
Funkcja zwracająca poprawnie sformatowany typ zmiennej. |
java.util.Vector |
Operacje()
Metoda zwraca wektor operacji (pseudokod) |
private int |
pierwszyRaz(java.lang.String kod,
java.lang.String co)
Metoda wyszukuje pierwszego wystąpienia łańcucha znaków co w łańcuchu kod
pod warunkiem, że nie występuje ono w tekście ograniczonym apostrofami. |
private void |
read(java.lang.String co)
Metoda interpretująca procedurę read(...) |
private void |
readln(java.lang.String co)
Metoda interpretująca procedurę readln(...) |
private java.lang.String |
replaceAll(char co,
java.lang.String gdzie,
java.lang.String naCo)
Metoda zamienia w łańcuchu gdzie wszystkie wystąpienia znaku co
na łańcuch znaków naCo |
void |
run()
Metoda wykonuje sekwencję kroków mających na celu stworzenie pseudokodu dla całego kodu źródłowego znajdującego się wewnątrz klasy |
private void |
usunKomentarze()
Metoda usuwa z kodu źródłowego wszystkie komentarze tj., znaki zamieszczone wewnątrz klamer {}. |
private void |
usunWskazniki()
Metoda usuwa z kodu źródłowego wszystkie znaki ^, będące z punktu widzenia tego modułu interpretera całkowicie zbyteczne. |
private java.lang.String |
wiersz(java.lang.String kod)
Metoda wykonuje interpretację pierwszego wiersza z kodu źródłowego a następnie odcina wykonaną część z kodu źródłowego. |
private void |
write(java.lang.String co)
Metoda interpretująca procedurę write(...) |
private void |
writeln(java.lang.String co)
Metoda interpretująca procedurę writeln(...) |
private void |
wykonajBlok(java.lang.String kod)
Metoda odpowiedzialna za kompilacje kodu źródłowego znajdującego się wewnątrz bloku instrukcji. |
private void |
wyrazenie(java.lang.String kod)
Metoda zamienia na pseudokod wyrażenie logiczne. |
java.util.Vector |
Zmienne()
Metoda zwraca wektor zmiennych |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
private java.util.Vector zmienne
private java.util.Vector operacje
private java.lang.String zrodlo
Constructor Detail |
public Prekompilator(java.lang.String Zrodlo)
Zrodlo
- kod źródłowy programu.Method Detail |
private java.lang.String normalizujTyp(java.lang.String typ)
typ
- nazwa typu
private void usunKomentarze()
private void usunWskazniki()
private void normalizujElse()
else
występował średnik, co jest niezgodne ze składnią języka Pascal.else
.
private void dajZmienne()
var
oraz następnie dodaje je do wektora zmiennych.
private void dajStale()
const
oraz następnie dodaje je do wektora zmiennych z zaznaczeniem bitu stałości.
private java.lang.String dajBlokGlowny()
Begin ... End.
a następnie wycina z tego bloku
wiodące Begin
i kończące End.
private Blok dajBlokOperacji(java.lang.String kod)
Begin
... End;
dowolnej operacji czy instrukcji.
kod
- kod źródłowy programu.
Begin
... End;
private java.lang.String replaceAll(char co, java.lang.String gdzie, java.lang.String naCo)
gdzie
wszystkie wystąpienia znaku co
na łańcuch znaków naCo
co
- znak jaki chcemy zamienićgdzie
- łańcuch znaków, w którym dokonujemy zmiannaCo
- łańcuch znaków na jaki zamieniamy znak co
private void wykonajBlok(java.lang.String kod)
kod
- kod źródłowy bloku programu.private java.lang.String wiersz(java.lang.String kod)
kod
- kod źródłowy programu.
private void instrukcja(java.lang.String kod)
kod
- źródłowy programu.private void wyrazenie(java.lang.String kod)
kod
- źródłowy programu.private java.lang.String dajNawiasy(java.lang.String kod)
kod
- źródłowy programu
private java.lang.String dajString(java.lang.String kod)
kod
- źródłowy programu
private boolean czyWStringu(java.lang.String kod, int poz)
kod
- źródłowy programu.poz
- numer indeksu znaku.
true
jeśli indeks znajduje się wewnątrz apostrofów, false
w przeciwnym przypadkuprivate int pierwszyRaz(java.lang.String kod, java.lang.String co)
co
w łańcuchu kod
pod warunkiem, że nie występuje ono w tekście ograniczonym apostrofami.
kod
- kod żródłowy w Pascaluco
- szukany tekst
private int liczbaPlusow(java.lang.String gdzie)
+
w łańcuchu znaków.
gdzie
- łańcuch znaków do przeszukania.
+
private int liczbaWystapien(java.lang.String gdzie, java.lang.String co)
co
w łańcuchu gdzie
.
gdzie
- łańcuch znaków do przeszukaniaco
- zliczany łańcuch znaków
private java.lang.String IF(java.lang.String warunek, java.lang.String kod)
IF ... THEN ... ELSE
warunek
- warunek wejścia do instrukcji IF
kod
- kod źródłowy programu począwszy od końca instrukcji THEN
private java.lang.String FOR(java.lang.String warunek, java.lang.String kod)
FOR ... TO ... DO
warunek
- warunek początku pętli oraz jej kończenia ... TO ...
(bez słów FOR
i DO
kod
- kod źródłowy programu począwszy od końca instrukcji DO
private void write(java.lang.String co)
write(...)
co
- łańcuch znaków będący parametrem instrukcji write
private void writeln(java.lang.String co)
writeln(...)
co
- łańcuch znaków będący parametrem instrukcji writeln
private void read(java.lang.String co)
read(...)
co
- łańcuch znaków będący parametrem instrukcji read
private void readln(java.lang.String co)
readln(...)
co
- łańcuch znaków będący parametrem instrukcji readln
private int indexZmiennej(java.lang.String nazwa)
nazwa
w tablicy
zadeklarowanych zmienney i w przypadku jej istnienia zwraca jej indeks w wektorze
lub -1 w przypadku jej braku
nazwa
- nazwa zmiennej
private int min(int A, int B, int C)
A
- pierwsza liczba do porównaniaB
- druga liczba do porównaniaC
- minimalna liczba
private int max(int A, int B)
A
- pierwsza liczbaB
- druga liczba
public void run()
public java.util.Vector Zmienne()
public java.util.Vector Operacje()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |