LR Parser II Parte Giuseppe Morelli.

Slides:



Advertisements
Presentazioni simili
Metodo di Calcolo Numerico per Equazioni differenziali Ordinarie
Advertisements

Memoria Virtuale in Linux
I tipi Strutturati.
Procedure e funzioni A. Ferrari.
Sintassi (prima parte)
Analizzatori Sintattici con Cup Giuseppe Morelli.
Traduttore diretto dalla sintassi (seconda parte)
LR Parser Giuseppe Morelli. La maggior parte dei parser Bottom-Up è costituita dai cosiddetti parser LR(k) dove: L indica il verso dellanalisi della stringa.
Parser Bottom UP Giuseppe Morelli. Parser Bottom UP Un parser Bottom Up lavora costruendo il corrispondente albero di parsing per una data stringa di.
Linguaggi Regolari e Linguaggi Liberi
Viable Prefixes, conflitti e formato delle tabelle per il parsing LR
Tabelle LALR Costruzione delle tabelle LALR Metodo LALR Introduciamo lultimo metodo di costruzione di tabelle per il parsing LR Nome: lookahead-LR abbreviato.
Costruzione delle tabelle di parsing LR canoniche
Costruzione di tabelle di Parsing SLR
Traduzione guidata dalla sintassi
Provincia di Mantova LA VALUTAZIONE DEI PIANI DI ZONA
ODE PROBLEMA DI CAUCHY IN 1-D Sia f : I x RR, I  R.
Lez. 131 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Rappresentazione.
Hash Tables Indirizzamento diretto Tabelle Hash Risoluzioni di collisioni Indirizzamento aperto.
Il ragionamento classico
Università degli Studi di Roma Tor Vergata
Intelligenza Artificiale 1 Gestione della conoscenza lezione 7 Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Macchine non completamente specificate
INFERENZA NEL MODELLO DI REGRESSIONE LINEARE MULTIPLA (parte 1)
Algoritmi e Strutture Dati
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
GLI INSIEMI.
Capitolo 9: Moneta, interesse e reddito
INGEGNERIA CLINICA E BIOMEDICA
Teoria degli INSIEMI A cura Prof. Salvatore MENNITI.
Analisi e Sintesi di circuiti sequenziali. Definizione Una macchina sequenziale é un sistema nel quale, detto I(t) l'insieme degli ingressi in t, O(t)
1 Implementazione di Linguaggi 2 PARTE 4 Implementazione di Linguaggi 2 PARTE 4 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
1 Implementazione di Linguaggi 2 PARTE 4 Implementazione di Linguaggi 2 PARTE 4 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
Analisi bivariata Passiamo allo studio delle relazioni tra variabili
Semantica di Tarski.
Corso di Matematica Discreta cont. 2
Espressioni condizionali
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
Algoritmi di String Matching
Strutture dati per insiemi disgiunti
Le distribuzioni campionarie
DERIVATA DI UNA FUNZIONE
Le rilevazioni sugli apprendimenti da parte dell’INVALSI Italiano
Un approccio soft per i primi tre anni della primaria
Corso di Macroeconomia Lezione 7 : Modello IS-LM
DERIVATA DI UNA FUNZIONE
Prof Riccardi Agostino - ITC "Da Vinci"
Tassonomia dei Sistemi Distribuiti Antonio D'Angelo.
Controllo di qualità dei processi e collaudo
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Automi a pila (1) Un automa a pila (PDA) è M = (Q, S, G, d, q0, Z0, F) dove: Q insieme finito di stati S alfabeto finito di input 3. G alfabeto di pila.
Semantica dinamica Vogliamo definire una funzione che associ ad ogni termine corretto del mio linguaggio di programmazione un valore. Questa associazione.
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Capitolo 9 Union-find Algoritmi e Strutture Dati.
Codici prefissi Un codice prefisso è un codice in cui nessuna parola codice è prefisso (parte iniziale) di un’altra Ogni codice a lunghezza fissa è ovviamente.
Reti Logiche A Lezione 2.1 Sintesi di reti combinatorie a due livelli
Le funzioni.
6. LIMITI Definizione - Funzioni continue - Calcolo dei limiti
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 4 - Le maschere.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Elementi di teoria delle probabilità
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
DIPENDENZA STATISTICA TRA DUE CARATTERI Per una stessa collettività può essere interessante studiare più caratteri presenti contemporaneamente in ogni.
Elementi di Topologia in R
Linguaggi, stringhe e alfabeti. Linguaggi e grammatiche Un linguaggio è un sistema di comunicazione tra persone che permette di trasmettere informazioni.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Corso PAS Misure, strumenti ed Errori di misura Didattica del Laboratorio di Fisica F. Garufi 2014.
1 VARIABILI CASUALI. 2 definizione Una variabile casuale è una variabile che assume determinati valori in modo casuale (non deterministico). Esempi l’esito.
INSIEMI E LOGICA PARTE QUARTA.
Transcript della presentazione:

LR Parser II Parte Giuseppe Morelli

Parser LR(1) Con il metodo SLR la tabella indica di effettuare una riduzione attraverso una produzione A-> α, se accade che per un certo item Ii : [A->α. Є Ii] Per ogni a Є FOLLOW(A) In certi casi può succedere che se βα è il contenuto dello stack, βAα non può essere prefisso di una forma sentenziale destra e pur essendo a Є FOLLOW(A) la riduzione A-> α non si può applicare

In I2 esiste un conflitto Shift- Reduce Ovvero non esiste una forma sentenziale destra che inizia per R

E’ possibile mantenere informazioni riguardanti i caratteri che possono essere presenti dopo una variabile in un dato contesto. Data una produzione A->α, l’idea è di includere negli items di uno stato i simboli terminali che possono seguire un handle α per cui è possibile una riduzione ad A. La forma generale di un item, LR(1) diventa [A->α.β,a ] Il significato di “a” in [A->α.,a ] è: viene applicata la riduzione A-> α solo se il simbolo di lookahead è a.

Insieme di item LR(1) Il metodo è essenzialmente lo stesso usato per la costruzione della collezione canonica LR(0) Ovvero: Si costruisce la grammatica aumentata G’ Si definiscono e applicano le operazioni di CHIUSURA GOTO La discriminante è proprio la definizione delle due procedure.

Es.

Costruzione della tabella LR(1) Data G si costruisce la grammatica aumentata G’ quindi: Si costruisce la collezione di insiemi di Items LR(1) C’ = {I0, I1, …. ,In} per G’ Lo stato i è costruito da Ii. L’azione per lo stato i è determinata come segue: Se [A-> α.aβ,b] è in Ii e GOTO(Ii,a) = Ij allora ACTION[i,a] = “shift j” . a deve essere un terminale Se [A-> α., a] è in Ii (A<>S’ ) allora ACTION[i,a] = “reduce A-> α.” Se [S’ -> S.,$] è in Ii allora ACTION[i, $] = “accept” GOTO deve essere costruita per tutti i non terminali Secondo la regola se GOTO(Ii,A)=Ij allora GOTO(i,A) = j Errore se vi sono entry non definite da 2 e 3 Lo stato iniziale è quello ottenuto dall’insieme di Item contenente [S’->.S, $]

Parser LALR È caratterizzato dal fatto che la tabella di parsing ottenuta per una data grammatica è considerabilmente più piccola della corrispondente LR. L’idea di base di questo metodo è quella di costruire la tabella di parsing a partire dagli insieme di items LR(1) ed apportando delle semplificazioni. L’algoritmo si costruzione si rifà ad alcune definizioni e strategie già viste (kernel items, closure etc..)

In generale la tecnica prevede di fare il merge in un unico insieme gli insiemi di item LR(1) che hanno lo stesso core(primo item dell’insieme). L’unione si ripercuote anche sugli insiemi GOTO(I,X) degli item I coinvolti nella “fusione”; poiché GOTO(I,X) dipende dal core di I si può fare il merge anche delle funzioni GOTO degli stati merged. Poiché in una grammatica LR(1) non sono presenti errori di parsing si può dimostrare che anche nell’insieme di stati ottenuti attraverso fusione non sono presenti errori

Tabella di parsing LALR Data G si costruisce la grammatica aumentata G’ quindi: Si costruisce la collezione di insiemi di Items LR(1) C = {I0, I1, …. ,In} per G’ Trovare per ogni core di item in C, gli item con lo stesso core e rimpiazzarli con la loro unione. Sia C’ = = {J0, J1, …. ,Jn} l’insieme di items risultante. La funzione ACTIONE delle tabelle di parsing dello stato i è costruita attraverso Ji come fatto per la tabella LR(1). La funzione GOTO deve essere costruita considerando che se J = I1 U I2 U … U Im allora i cores di di GOTO(Ii,X) sono gli stessi dei corrispondenti Ii (i=1...m); sia K l’unione di GOTO(Ii,X) aventi lo stesso core allora GOTO(J,X)=K

La tabella derivante dall’algoritmo prima visto è chiamata LALR parsing table e se non esistono confilitti nella fase di parsing la grammatica restitutia è detta LALR L’insieme di Item derivanti dalla fusione e dalla nuova definzione della funzione GOTO è detto LALR. La costruzione della tabella di parsing LALR implica la costruzione dell’intera collezione LR(1) che può richiedere troppo spazio e tempo per essere utilizzata nella pratica. Servono degli espedienti per migliorare allora il processo di costruzione

Costruzione efficiente Anziché considerare tutti gli insieme di Item si considerano quelli kernel ([S’->.S,$] e con il . non all’inizio del corpo della produzione); si potrebbero considerare anche gli item LR(0) senza cioè il carattere di lookahead. Si costruiscono gli item LALR(1) kernel attraverso un processo di propagazione e generazione spontanea di caratteri di lookahead (see later) Da LALR(1) kernel si genera la tabella di parsing applicando l’operazione di chiusura (CLOUSURE) e applicando l’algoritmo adottato per la costruzione della tabella LR(1) (def. ACTION e GOTO)

Determinazione dei caratteri lookahead