Fondamenti linguaggi e traduttori
Alfabeto
- Σ = {a,b,1}
- |Σ| = numero di simboli
- |Σ| = cardinatità
Linguaggio: l'insieme di stringhe costruite su un alfabeto
Un linguaggio formale non deve essere ambiguo
Stringa vuota
ε: |ε| = 0
Linguaggio vuoto
L = {ε} |L| = 1
Caso particolare (linguaggi formati da solo ε)
Concatenamento
X Y = aaabbb Y = bbb X Y = aaabbb
Concatenamento di linguaggi
- L1 L2 = {x y | x ∈ L1, y ∈ L2}
- Σ L = L L Σ = L
- ∅L = L∅ = ∅
Potenze
- an = {an} se n ≠ 0
- {ε} se n = 0
Operatore di Kleene
L* = ⋃i=0∞Li
Operatore +
Concatenamento
a+ = an con n ≠ 0
Complemento
- L &supl; Σ* L = Σ* - L
Espressioni regolari
Dato un alfabeto sono espressioni regolari:
- ∅
- ε
- ∀ a ∈ Σ (a è uno dei simboli dell'alfabeto)
Def: Date e1, e2 espressioni regolari:
- se e1 e e2 allora e1
- se e1, e2 sono e1 allora e1 e2
- se e1, e2 sono e1 allora e1 ∪ e2
Σ = {+, - ,0,1,2,3,4,5,6,7,8,9,0}
L = Σ ∅ + -
Ex
Scrivere l'espressione regolare che permette di scrivere un numero intero con segno o senza (cù la zero).
- = Σ{+, - ,0,1,2,3,4,5,6,7,8,9,0}
- (+ - ∪ ∅)(0 ∪ 1 ∪ 2 ∪ 3 ∪...9)*
- Ho un problema potendo generare le seconde parenzeω anche o vare, potrei ottenere un segno seguitodallo nulla — errore — scambio `* con +`
- Ho un problema posso generare numeri come 0+000 • (bloccato) => (+ -
- ∃ {(∪, 0, 1, ∪, 2, 3, ∪, 9)}(0 ∪ 1 & u;
- Mo un problema — non riesca generare lo letto πla sola
- (+ ∪ - ∪ ∅)(2,3;(0,0 0,1,2,9)(0 ∪ Σ,9)* ∪ 0
Derivazione
- e1 → e2 se e2 è sottinsieme di e1
- Regole : e1, e2, ∪ V ∃
- e2 → n, 0 ≤ n
Derivazione immediata
e1 → e2 se dato e1, a β ed e2 α n β allora δ → γ
1. (a∪b)(a∪b)* ⊨
- (a∪b) (a∪bb) L
- (a∪b) (a∪bb) a*
- (a∪b) (a∪bb) a
- (a∪b) (a∪bb) aa
- ba (a∪bb)a
- ba (a∪bb)a
Regole concatenamento linguaggi ed e.c.
- L(e₁e₂) = L(e₁, e₂)
- L(e)∪L(e₂)
- L(e₁, e₂) = L(e, e₂)
Idem per intersezione, differenza, complemento.
Errori:
- aⁿbⁿ n≥0 (il numero di a è uguale al numero b) (non è descrivibile tramite e.c.)
- aⁿ bʳ (prende anche case in più)
Palindromi
∑:={a,b} ⟹ a₂a₂
abba
a b ba NO (Fa la ricerca di un tag = simbolo che non esistente)
∫∫ deve avere un numero pari di simboli
Regole grammaticali
- Se ho un dato simbolo, lo posso sostituire con altri simboli
- PAL ⟹ a PAL a
- PAL ⟹ b PAL b
- PAL ⟹ a
- PAL ⟹ b
- Non genera la stringa vuota
Grammatica
= quadrupla ⟨V, Σ, P, S⟩ dove:
- V = simboli non terminali (maiuscoli, indica ciò che parola non è ancora terminato)
- Σ = Alfabeto, simbolo terminali
- P = insieme di tutte le regole grammaticali (coppie di produzione)
- S = assieme, ovvero da dove parte
es:
- P: F ⟹ A | a A | a
- B ⟹ h A
- V: {a, B}
- Σ: {a, b}
(A ⟹ a A | a = a A = a)
- S = a b A
- Se Σ = B, allora B ⟹ b F ⟹ ba
- Se Σ = B, allora non genera nulla se non a
Qualunque linguaggio composto da un numero finito di parole è regolare
L(G)={x∈Σ* : S⟹* x}
er di grammatica
- V :={S, A, B} ∑ :={a, b}
- S ⟹ A a | S (da S arrivo a S)
- A ⟹ S (da A vado a S) S⟹* S
- A ⟹ b S (ovvero : non avere B nella grammatica e denomina specifici simboli di spazio)
Grammatica ridotta
- ∀ A Є V ∃ α β ≠ A
- ∀ A Є V ∀ α Σ* ∃ β
- ∀ A Є V S* ⟹ α β ⟹ dove α, β ∈ (V U Σ)*
Es grammatica che descrive le operazioni aritmetiche * e + (grammatici ridotte)
E ➝ E + T | T
T ➝ T * F | F
F ➝ (E) | n (n numero generale: a)
Macchina di Turing
Modello matematico (astratto) proposto da Alan Turing che costituisce l'anticipatore formale di un computer moderno.
- Controller
- Nastro infinito
- 0, 1, blank (nello stato vuoto)
Funzione del nastro:
CPU dove sta il programma
- Descritta tramite funzioni matematiche
- Tipo: [N] ma devo fare in memoria del passato
funzione di transizione stato
dato da inserire
Linguaggi: Context Sensitive + regole
L = {anbncn, n ≥ 1}, L = {x y cy | x ∈ Σ \ {c}|}
S → X c
fine stringa per 'ci'
X a X → A I b X B
X B → X B
- X B → X A'
- A → aa
- B' → b
- A → ab
- A' → a A'
- C c
- B' B → B B C B' B → B C B
- B → b
- B' → B' B B B B' → B B' B' B B B B B B' B' B
- S → a S B c
Linguaggi Context Free
L = {anbn+1 cd m} n ≥ 1, m ≥ 2
Bilanciamento
- S → T c d
- D → d|d b
- T → a T b|abb
S → a S c|a|c
A →
S → AB d
A → a A b|a (X n: minimu d = ae b = 0)
- C → c C|
- B → b C|
- B → b B|
Bilanciamenti in sequenza (sempre context free)
annm+2 = (c u d)k ac m bd k n k z
N K
b b d a a
- S → t d
- N → B H e
- N (N senza |a e k, N|a e k|a|dc la|Ia)
* = contiene stati finali
ecc...
Automa a stati finito
Espressioni Regolari
Grammatiche Linear dx
Q = V
q0 = S
A → bB
A → aB
A → a
A → ε
V = {S, A, B}
F = ∠ A, B '
A → ε
B → ε
S → 0A
A → 1S
A → 0A A → 1B
Esercizi
E1: anbn n > 0
aabb
- PUSH X
- a PUSH X
- b POP
- b POP
- (q0, a, z0) → (q2, Xz0)
- (q2, a, Z) → (q2, XX)
- (q2, b, X) → (q2, ε)
- (q2, ε, z0) → (q3, z0)
E2: aaab
- S
- a
- S
- a
- S
- A
- a
- A
- a
- b
- A
- b
Esercizi
E1: (a U b)nca cb n > 0
- S → X S aa | caa
- X → a | b
E2: L = a2bmdmanan-1 m > 0, n > 1
- S → a S a | a B a
- B → b b b | D
- D → d d | ε
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Riassunto esame e Appunti di Fondamenti di Informatica per la Progettazione Multimediale. Dai linguaggi formali all…
-
Africa, appunti
-
Appunti linguaggi settoriali tedesco
-
Appunti Automi e Linguaggi