sabato 25 marzo 2017

Il Parsing

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:

  1. Creare un nuovo oggetto TextFieldParser. Nel codice riportato di seguito viene creato l'oggetto TextFieldParser denominato MyReader e viene aperto il file test.txt.
    Using MyReader As New Microsoft.VisualBasic.
                          FileIO.TextFieldParser(
                            "C:\TestFolder\test.txt")
    
  2. Definire il tipo TextField e il delimitatore. Nel codice riportato di seguito viene definita la proprietà TextFieldType come Delimited e il delimitatore come ",".
    MyReader.TextFieldType = FileIO.FieldType.Delimited
    MyReader.SetDelimiters(",")
    
  3. 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
    
  4. Chiudere i blocchi While e Using con End While e End Using.
       End While
    End Using





Nessun commento:

Posta un commento