Parsing

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 25. december 2021; checks kræver 2 redigeringer .

Syntaktisk analyse (eller parsing , slang  parsing ← Engelsk  parsing ) i lingvistik og datalogi  er processen med at sammenligne en lineær sekvens af leksemer (ord, tokens) af et naturligt eller formelt sprog med dets formelle grammatik . Resultatet er normalt et parsetræ (syntakstræ). Bruges normalt i forbindelse med leksikalsk analyse .

En parser ( slang  parser ← engelsk  parser ) er et program eller en del af et program, der udfører parsing.

Under parsing konverteres kildeteksten til en datastruktur , normalt et træ, der afspejler den syntaktiske struktur af inputsekvensen og er velegnet til yderligere behandling.

Som regel er resultatet af syntaktisk analyse den syntaktiske struktur af sætningen, præsenteret enten i form af et afhængighedstræ eller i form af et komponenttræ eller i form af en kombination af den første og anden repræsentationsmetode .

Omfang

Alt, der har en " syntaks " egner sig til automatisk parsing.

Typer af algoritmer

Gendannelse fra fejl

Den enkleste måde at reagere på en ugyldig inputstreng af tokens er at afslutte parsing og vise en fejlmeddelelse. Det er dog ofte nyttigt at finde så mange fejl som muligt i et forsøg på at parse. Sådan opfører oversættere af de mest almindelige programmeringssprog sig.

Således har parser fejlbehandleren følgende opgaver:

De mest kendte fejlgendannelsesstrategier er beskrevet nedenfor.

Gendannelse i paniktilstand

Når der opstår en fejl, springer parseren input-tokens over et ad gangen, indtil et af et specielt defineret sæt synkroniseringstokens er fundet . Normalt er sådanne tokens afgrænsninger, for eksempel: ; , ) eller } . Sættet af synkroniseringstokens skal bestemmes af udvikleren af ​​det analyserede sprog. Med denne gendannelsesstrategi kan det være, at et betydeligt antal tegn vil blive sprunget over uden at tjekke for yderligere fejl. Denne genopretningsstrategi er den nemmeste at implementere.

Gendannelse på sætningsniveau

Nogle gange, når der opstår en fejl, kan parseren udføre en lokal korrektion på inputstrømmen for at tillade den at fortsætte. For eksempel, før et semikolon, der adskiller forskellige udsagn i et programmeringssprog, kan parseren lukke parenteser, der endnu ikke er blevet lukket. Dette er mere komplekst at designe og implementere, men i nogle situationer kan det fungere væsentligt bedre end panikopsving. Naturligvis er denne strategi magtesløs, hvis den faktiske fejl opstod, før parseren opdagede fejlen.

Fejlproduktioner

Kendskab til de mest almindelige fejl giver dig mulighed for at udvide sprogets grammatik med produktioner, der genererer fejlagtige konstruktioner. Når sådanne produktioner udløses, logges en fejl, men parseren fortsætter med at køre normalt.

Analyser udviklingsværktøjer

Separate stadier af udvikling og konstruktion af oversættere kan automatiseres og udføres af en computer.

Her er nogle af de mest kendte analysatorudviklingsværktøjer [2] :

Se også sammenligning af parsergeneratorer .

Se også

Noter

  1. Tim Jones M. Udtrække information fra internettet ved hjælp af Ruby-sproget. (22. maj 2014). Hentet 13. december 2019. Arkiveret fra originalen 13. december 2019.
  2. Ela Kumar. naturlig sprogbehandling. - IK International Pvt Ltd, 2011. - S. 100. - ISBN 978-93-80578-77-4 .

Litteratur

Links