• Nie Znaleziono Wyników

cwiczenia 1. Wprowadzenie JPS

N/A
N/A
Protected

Academic year: 2021

Share "cwiczenia 1. Wprowadzenie JPS"

Copied!
12
0
0

Pełen tekst

(1)

JPS

Wprowadzenie cwiczenia 1.

© Michał Lentner

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

(2)

Terminologia

SBA

Teoretyczna baza dla języków zapytań. Język zapytań jest formą języka programowania.

SBQL

Język zapytań do sieciowych, hierarchicznych, relacyjnych,

obiektowych, XML-owych, etc. baz danych. Po rozszerzeniu

o konstrukcje proceduralne powstał pełny język programowania

a’la PL/SQL, w którym wyrażenia są zapytaniami.

(3)

nazwiska i wiek pracowników zarabiających więcej niż 10000:

(employee where salary > 10000).(name, age)

pracownicy którzy pracują w departamencie Sales:

employee where “Sales” in works_in.department.name

szef Smitha:

(employee where name = “Smith”).managed_by.employee

departamenty zatrudniające więcej niż 3 pracowników:

department where count(employs) > 3

SBQL jako język zapytań

person name : string age : integer

employee salary : integer

department name : string works_in [0..*] employs [0..*]

managed_by [0..1]

manages [0..*]

(4)

SBQL vs SQL

Podaj nazwiska i stanowiska pracowników pracujących w firmach zlokalizowanych w Radomiu:

SQL:

select s.Nazwisko, w.Stan

from Firma as f, Lokal as k, Zatrudnienie as z, Pracownik as p, Wyszkolenie as w, Osoba as s where k.Miejsce = “Radom” and k.NrF = f.NrF

and f.NrF = z.ZF and z.ZP = p.NrP and w.NrP = p.NrP and p.NrOs = s.NrOs

SBQL

(Firma where ”Radom” in Miejsce). FZ.Zatrudnienie.ZP.Pracownik.(Nazwisko, Stan)

firma [0..*]

nazwa : string miejsce [1..*] : string

zatrudnienie [0..*]

wyplata [0..*] : integer ocena [1..*] : integer

pracownik [0..*]

stan [1..*] : string osoba [0..*]

nazwisko : string imie [1..*] : string adres [1..*] : string

FZ [0..*] ZF ZP PZ [0..*]

(5)

Stosy

!

itd.

! " #$

%

Employee where Name =

“J. Smith” and Salary > 10000

(6)

Projekt

(7)

Składniki projektu do zrobienia

• Skład danych

• Lekser i parser

• Drzewo składniowe (AST) i stosy

• Interpreter

(8)

Skład danych

baza

pracownik pracownik pracownik

entry

imie (Jan)

nazwisko (Kowalski)

wiek (53)

imie (Stefan)

nazwisko (Nowak)

wiek (33)

adres

ulica (Szybka)

numer (5)

imie (Grzegorz)

nazwisko (Zdebel)

wiek (41)

adres

ulica (Krotka)

numer (2)

(9)

Lekser

• Identyfikator (”baza”)

Operator .

• Identyfikator (”pracownik”)

• Operator where

• Identyfikator (”nazwisko”)

• Operator algebraiczny (=)

• Literał łańcucha znaków (”Zdebel”)

baza.pracownik where nazwisko = “Zdebel”

(10)

Parser

program ::=

wyrazenie | instrukcja ;

wyrazenie ::= wyrazenie where wyrazenie | wyrazenie . wyrazenie

| wyrazenie where wyrazenie | wyrazenie = wyrazenie | wyrazenie + wyrazenie

| identyfikator | literal

| ( wyrazenie ) ...

WhereExpression

DotExpression BinaryOperatorExpression (=)

IdentifierExpression IdentifierExpression IdentifierExpression StringExpression

Identifier ("baza")

Identifier ("pracownik")

Identifier ("nazwisko")

StringLiteral ("Zdebel")

baza.pracownik where nazwisko = “Zdebel”

(11)

Interpreter

WhereExpression

DotExpression BinaryOperatorExpression (=)

IdentifierExpression IdentifierExpression IdentifierExpression StringExpression

Identifier ("baza")

Identifier ("pracownik")

Identifier ("nazwisko")

StringLiteral ("Zdebel")

(12)

Podział na grupy

• grupy max 4 osób

• wybór modułu interpretera

• wybór języka programowania

Cytaty

Powiązane dokumenty

Jeśli ciąg znaków 2 nie jest podany to przyjmowana jest spacja.. Jeśli n jest mniejsze od długości string1, to zwracane jest n pierwszych znaków z

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

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

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

• Zamiast umieszczać metodę eval w każdym węźle drzewa, wszystkie je umieszczamy w osobnej klasie zapewniającej określoną funkcjonalność (interpreter, type

+ IntegerResult StringResult BooleanResult RealResult StructResult BinderResult ReferenceResult BagResult SequenceResult?. IntegerResult

Polsko-Japońska Wyższa Szkoła Technik Komputerowych.. pracownik where nazwisko =