Analysera

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 25 december 2021; kontroller kräver 2 redigeringar .

Syntaktisk analys (eller parsing , slang  parsing ← Engelsk  parsing ) inom lingvistik och datavetenskap  är processen att jämföra en linjär sekvens av lexem (ord, tokens) av ett naturligt eller formellt språk med dess formella grammatik . Resultatet är vanligtvis ett parseträd (syntaxträd). Används vanligtvis i samband med lexikal analys .

En parser ( slang  parser ← engelsk  parser ) är ett program eller del av ett program som utför analys.

Under analysen omvandlas källtexten till en datastruktur , vanligtvis ett träd, som återspeglar den syntaktiska strukturen för inmatningssekvensen och som är väl lämpad för vidare bearbetning.

Som regel är resultatet av syntaktisk analys den syntaktiska strukturen av meningen, presenterad antingen i form av ett beroendeträd , eller i form av ett komponentträd , eller i form av någon kombination av den första och andra representationsmetoderna .

Omfattning

Allt som har en " syntax " lämpar sig för automatisk analys.

Typer av algoritmer

Återställning från fel

Det enklaste sättet att svara på en ogiltig inmatningssträng av tokens är att avsluta analysen och visa ett felmeddelande. Det är dock ofta användbart att hitta så många fel som möjligt i ett försök att analysera. Det är så översättare av de vanligaste programmeringsspråken beter sig.

Sålunda har parserfelhanteraren följande uppgifter:

De mest välkända felåterställningsstrategierna beskrivs nedan.

Återhämtning i panikläge

När ett fel påträffas, hoppar parsern över inmatningstoken en i taget tills en av en speciellt definierad uppsättning synkroniseringstoken hittas . Vanligtvis är sådana symboler avgränsare, till exempel: ; , ) eller } . Uppsättningen av synkroniseringstokens måste bestämmas av utvecklaren av det analyserade språket. Med denna återställningsstrategi kan det hända att ett betydande antal tecken kommer att hoppas över utan att det finns ytterligare fel. Denna återställningsstrategi är den enklaste att implementera.

Återställning på frasnivå

Ibland, när ett fel påträffas, kan parsern utföra en lokal korrigering på ingångsströmmen för att tillåta den att fortsätta. Till exempel, före ett semikolon som separerar olika satser i ett programmeringsspråk, kan parsern stänga parenteser som ännu inte har stängts. Detta är mer komplicerat att designa och implementera, men i vissa situationer kan det fungera betydligt bättre än panikåterhämtning. Naturligtvis är denna strategi maktlös om det faktiska felet inträffade innan parsern upptäckte felet.

Buggproduktioner

Kunskap om de vanligaste felen gör att du kan utöka språkets grammatik med produktioner som genererar felaktiga konstruktioner. När sådana produktioner startar loggas ett fel, men parsern fortsätter att köras normalt.

Analysatorutvecklingsverktyg

Separata stadier av utveckling och konstruktion av översättare kan automatiseras och utföras av en dator.

Här är några av de mest kända analysverktygen för utveckling [2] :

Se även jämförelse av parsergeneratorer .

Se även

Anteckningar

  1. Tim Jones M. Extrahera information från Internet med Ruby-språket. (22 maj 2014). Hämtad 13 december 2019. Arkiverad från originalet 13 december 2019.
  2. Ela Kumar. naturlig språkbehandling. - IK International Pvt Ltd, 2011. - S. 100. - ISBN 978-93-80578-77-4 .

Litteratur

Länkar