• Nie Znaleziono Wyników

cwiczenia 10. Interpreter JPS

N/A
N/A
Protected

Academic year: 2021

Share "cwiczenia 10. Interpreter JPS"

Copied!
11
0
0

Pełen tekst

(1)
(2)

JPS

Interpreter

cwiczenia 10.

© Michał Lentner

Polsko-Japońska Wyższa Szkoła Technik Komputerowych

(3)

Rezultaty wyrażeń

Result

SingleResult CollectionResult

IntegerResult val : integer

BooleanResult val : bool

StringResult val : String

RealResult val : double

BinderResult name : String val : Result

StructResult val : SingleResult[]

ReferenceResult val : OID

BagResult val : SingleResult[]

SequenceResult val : SingleResult[]

(4)

Przykład implementacji

(5)

Stos (rezultatów)

(6)

Metody visit dla prostych wyrażeń

(7)

+

IntegerResult StringResult BooleanResult RealResult StructResult BinderResult ReferenceResult BagResult SequenceResult

IntegerResult ok koercja

int->string błąd koercja

int->real błąd? wziąć wartość

bindera dereferencja błąd? błąd?

StringResult koercja

int->string ok koercja

bool->string koercja

real->string błąd? wziąć wartość

bindera dereferencja błąd? błąd?

BooleanResult błąd koercja

bool->string ok błąd błąd? wziąć wartość

bindera dereferencja błąd? błąd?

RealResult koercja

int->real koercja

real->string błąd ok błąd? wziąć wartość

bindera dereferencja błąd? błąd?

StructResult błąd? błąd? błąd? błąd? błąd? błąd błąd błąd błąd

BinderResult wziąć wartość

bindera

wziąć wartość

bindera

wziąć wartość

bindera

wziąć wartość

bindera błąd wziąć 2 wartości binderów

dereferencja,

wartość bindera błąd błąd ReferenceResult dereferencja dereferencja dereferencja dereferencja błąd dereferencja,

wartość bindera 2 dereferencje błąd błąd

BagResult błąd? błąd? błąd? błąd? błąd błąd błąd błąd błąd

SequenceResult błąd? błąd? błąd? błąd? błąd błąd błąd błąd błąd

Problem z visitBinaryExpression

(8)

Stos (rezultatów i środowisk)

Frame data : java.util.Vector enter(binder : BinderResult) bind(name : String) : Result[]

SBQLStack ENVS : java.util.Vector QRES : java.util.Stack push(res : Result) pop() : Result openSection() closeSection()

enter(binder : BinderResult) bind(name : String) : Result[]

*

(9)

Operator .

(10)

Metoda nested

(11)

Ć w i c z e n i a

Cytaty

Powiązane dokumenty

• Składnia znaczników nie jest czuła na rozmiar liter (case sensitive), czyli <p> znaczy to samo co <P>, zalecane jest jednak pisanie małymi literami (w przyszło´sci

[r]

(c) Nieprawda, ˙ze albo Platon nie zało ˙zył Akademii i Arystoteles nie był jego uczniem, albo Arystoteles nie ucz ˛eszczał do Akademii. (d) Je ˙zeli Platon zało ˙zył Akademi

• Służy do zamieniania nazw występujących w tekscie programu na konkretne byty programistyczne (wiązanie nazw).. Stos

U»ywaj¡c symboli algebry zbiorów, zapisa¢ zdarzenia odpowiadaj¡ce nast¦puj¡cym pogodom: pogodzie bezwi- etrznej, pogodzie sªonecznej i wietrznej, pogodzie bezdeszczowej

Po rozszerzeniu o konstrukcje proceduralne powstał pełny język programowania a’la PL/SQL, w którym wyrażenia są zapytaniami... • nazwiska i wiek pracowników

Aktualizacja obiektu nadrzędnego, usunięcie podobiektów, usunięcie referencji wskazujących na dany obiekt, zwolnienie

Aktualizacja obiektu nadrzędnego, usunięcie podobiektów, usunięcie referencji wskazujących na dany obiekt, zwolnienie