Analizare

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 25 decembrie 2021; verificările necesită 2 modificări .

Analiza sintactică (sau parsing , slang  parsing ← English  parsing ) în lingvistică și informatică  este procesul de comparare a unei secvențe liniare de lexeme (cuvinte, simboluri) a unei limbi naturale sau formale cu gramatica sa formală . Rezultatul este de obicei un arbore de analiză (arborele de sintaxă). Folosit de obicei împreună cu analiza lexicală .

Un parser ( slang  parser ← engleză  parser ) este un program sau o parte a unui program care efectuează parsarea.

În timpul parsării, textul sursă este convertit într- o structură de date , de obicei un arbore, care reflectă structura sintactică a secvenței de intrare și este potrivită pentru procesarea ulterioară.

De regulă, rezultatul analizei sintactice este structura sintactică a propoziției, prezentată fie sub forma unui arbore de dependență , fie sub forma unui arbore component , fie sub forma unei combinații a primei și a doua metode de reprezentare. .

Domeniul de aplicare

Orice lucru care are o „ sintaxă ” se pretează la analiza automată.

Tipuri de algoritmi

Recuperare din erori

Cel mai simplu mod de a răspunde la un șir de jetoane de intrare nevalid este să închei analizarea și să afișezi un mesaj de eroare. Cu toate acestea, este adesea util să găsiți cât mai multe erori posibil într-o singură încercare de analiză. Așa se comportă traducătorii celor mai comune limbaje de programare.

Astfel, gestionarea erorilor de analiză are următoarele sarcini:

Cele mai cunoscute strategii de recuperare a erorilor sunt descrise mai jos.

Recuperare în modul de panică

Când se întâlnește o eroare, analizatorul omite jetoanele de intrare pe rând până când este găsit unul dintr-un set special definit de jetoane de sincronizare . De obicei, astfel de jetoane sunt delimitatori, de exemplu: ; , ) sau } . Setul de jetoane de sincronizare trebuie să fie determinat de dezvoltatorul limbajului analizat. Cu această strategie de recuperare, este posibil ca un număr semnificativ de caractere să fie omis fără a verifica erori suplimentare. Această strategie de recuperare este cea mai ușor de implementat.

Recuperare la nivel de frază

Uneori, când se întâlnește o eroare, analizatorul poate efectua o corecție locală asupra fluxului de intrare pentru a-i permite să continue. De exemplu, înaintea unui punct și virgulă care separă diverse instrucțiuni într-un limbaj de programare, analizatorul poate închide parantezele care nu au fost încă închise. Acest lucru este mai complex de proiectat și implementat, dar în unele situații, poate funcționa semnificativ mai bine decât recuperarea în panică. Desigur, această strategie este neputincioasă dacă eroarea reală a apărut înainte ca analizatorul să detecteze eroarea.

Producția de bug -uri

Cunoașterea celor mai frecvente erori vă permite să extindeți gramatica limbajului cu producții care generează construcții eronate. Când se declanșează astfel de producții, se înregistrează o eroare, dar analizatorul continuă să ruleze normal.

Instrumente de dezvoltare a analizorului

Etape separate de dezvoltare și construcție a traducătorilor pot fi automatizate și efectuate de un computer.

Iată câteva dintre cele mai cunoscute instrumente de dezvoltare a analizorului [2] :

Vezi și comparația generatoarelor de analiză .

Vezi și

Note

  1. Tim Jones M. Extragerea de informații de pe Internet folosind limbajul Ruby. (22 mai 2014). Preluat la 13 decembrie 2019. Arhivat din original la 13 decembrie 2019.
  2. Ela Kumar. procesarea limbajului natural. - IK International Pvt Ltd, 2011. - P. 100. - ISBN 978-93-80578-77-4 .

Literatură

Link -uri