Il parsing è una tecnica utilizzata nel campo informatico per convertire dei dati, ad esempio un file, una pagina web o un input da tastiera, in una struttura definita. La struttura maggiormente adottata per lo scopo sono gli alberi di ricerca, tuttavia questa caratteristica non rappresenta un vincolo.
Tipicamente, il termine italiano viene utilizzato per riferirsi al riconoscimento di una grammatica e alla conseguente costruzione di un albero sintattico, che mostra le regole utilizzate durante lo svolgimento dall'input; l'albero sintattico viene poi visitato (anche più volte) durante l'esecuzione di un interprete o di un compilatore.
Nella maggior parte dei linguaggi, tuttavia, l'analisi sintattica opera su una sequenza di token (in informatica, un token è un blocco di testo categorizzato, normalmente costituito da caratteri indivisibili chiamati lessemi) in cui l'analizzatore lessicale spezzetta l'input. Pertanto, il termine inglese spesso viene usato per indicare l'insieme della analisi lessicale e della analisi sintattica vera e propria.
Un parser è un programma che esegue questo compito ed è realizzato con lo scopo di trasformare un flusso di dati in una struttura differente, secondo precise regole.
Il lavoro del parser è essenzialmente quello di determinare se e come l'input può essere derivato dal simbolo iniziale con le regole della grammatica formale. Questo può essere fatto essenzialmente in due modi:
- Analisi top-down - un parser può partire con il simbolo iniziale e cercare di trasformarlo nell'input. Intuitivamente, il parser parte dal più grande elemento e lo divide in parti sempre più piccole. I parser LL sono esempi di parser top-down.
- Analisi bottom-up - un parser può partire con l'input e cercare di riscriverlo sino al simbolo iniziale. Intuitivamente, il parser cerca di trovare il più elementare simbolo, quindi elabora gli elementi che lo contengono, e così via. I parser LR sono esempi di parser bottom-up.
Lo scenario più semplice è quello in cui si possiede un file di testo con dati relativi a più variabili separati tra loro da una virgola (CSV comma separeted values). Il parcing prende i dati riga per riga dal file di testo; ogni riga rappresenta un'unità che sarà trasformata in un oggetto all'interno del programma. In questo modo è possibile convertire un file di testo CSV in un lista di oggetti manipolabile dal programma.
Esempio di analisi di un file di testo delimitato da virgole:
- Creare un nuovo oggetto
TextFieldParser
. Nel codice riportato di seguito viene creato l'oggettoTextFieldParser
denominatoMyReader
e viene aperto il filetest.txt
.Using MyReader As New Microsoft.VisualBasic. FileIO.TextFieldParser( "C:\TestFolder\test.txt")
- Definire il tipo
TextField
e il delimitatore. Nel codice riportato di seguito viene definita la proprietàTextFieldType
comeDelimited
e il delimitatore come ",".MyReader.TextFieldType = FileIO.FieldType.Delimited MyReader.SetDelimiters(",")
- Scorrere i campi nel file. Se sono presenti righe danneggiate, segnalare l'errore e continuare l'analisi. Nel codice riportato di seguito viene eseguito un ciclo nel file, visualizzando ciascun campo e segnalando qualsiasi campo formattato in modo errato.
Dim currentRow As String() While Not MyReader.EndOfData Try currentRow = MyReader.ReadFields() Dim currentField As String For Each currentField In currentRow MsgBox(currentField) Next Catch ex As Microsoft.VisualBasic. FileIO.MalformedLineException MsgBox("Line " & ex.Message & "is not valid and will be skipped.") End Try
- Chiudere i blocchi
While
eUsing
conEnd While
eEnd Using
.End While End Using
Nessun commento:
Posta un commento