A szintaktikai elemzés ( vagy parsing , szlengelemzés ← angol elemzés ) a nyelvészetben és az informatikában egy természetes vagy formális nyelv lexémáinak (szavainak, jelzőinek) lineáris sorozatának összehasonlítása a formális nyelvtannal . Az eredmény általában egy elemző fa (szintaktikai fa). Általában a lexikális elemzéssel együtt használják .
Az elemző ( szleng parser ← angol parser ) egy olyan program vagy programrész, amely elemzést végez.
Az elemzés során a forrásszöveg adatstruktúrává , általában fává alakul, amely tükrözi a bemeneti szekvencia szintaktikai struktúráját, és alkalmas a további feldolgozásra.
Általános szabály, hogy a szintaktikai elemzés eredménye a mondat szintaktikai szerkezete, vagy függőségi fa formájában, vagy komponensfa formájában , vagy az első és a második reprezentációs módszer valamilyen kombinációja formájában. .
Minden, aminek " szintaxisa " van, alkalmas az automatikus elemzésre.
Érvénytelen bemeneti tokenekre a legegyszerűbb módja az elemzés befejezése és egy hibaüzenet megjelenítése. Azonban gyakran hasznos, ha egy elemzési kísérlet során a lehető legtöbb hibát találja meg. A leggyakoribb programozási nyelvek fordítói így viselkednek.
Így az elemző hibakezelőjének a következő feladatai vannak:
Az alábbiakban a legismertebb hibahelyreállítási stratégiákat ismertetjük.
Ha hibát észlel, az elemző egyenként kihagyja a beviteli tokeneket, amíg meg nem találja a speciálisan meghatározott szinkronizálási tokenek egyikét . Általában az ilyen tokenek határolók, például: ; , ) vagy } . A szinkronizáló tokenek készletét az elemzett nyelv fejlesztőjének kell meghatároznia. Ezzel a helyreállítási stratégiával előfordulhat, hogy jelentős számú karakter kihagyásra kerül anélkül, hogy további hibákat keresne. Ez a helyreállítási stratégia a legkönnyebben megvalósítható.
Néha, amikor hiba történik, az elemző helyi korrekciót hajt végre a bemeneti adatfolyamon, hogy lehetővé tegye a folytatást. Például a programnyelv különböző utasításait elválasztó pontosvessző előtt az elemző bezárhatja a még be nem zárt zárójeleket. Ezt bonyolultabb megtervezni és megvalósítani, de bizonyos helyzetekben lényegesen jobban teljesít, mint a pánik felépülése. Természetesen ez a stratégia tehetetlen, ha a tényleges hiba azelőtt történt, hogy az elemző észlelte a hibát.
A leggyakoribb hibák ismerete lehetővé teszi a nyelv nyelvtanának bővítését olyan produkciókkal, amelyek hibás konstrukciókat generálnak. Amikor az ilyen produkciók elindulnak, hiba kerül naplózásra, de az elemző továbbra is normálisan fut.
A fordítók fejlesztésének és felépítésének külön szakaszai automatizálhatók és számítógéppel is végrehajthatók.
Íme néhány a legismertebb elemzőfejlesztő eszközök közül [2] :
Lásd még az elemző generátorok összehasonlítását .