1k likes | 1.24k Views
A tvasinā šanas kārtība. A tvasinājums , sākot no kreisās puses :. A tvasinājums , sākot no labās puses :. A tvasinājums , sākot no kreisās puses:. A tvasinājums , sākot no labās puses:. A tvasinājum a koki. A tvasinājum a koks. A tvasinājum a koks. dod.
E N D
Atvasināšanas kārtība Atvasinājums, sākot no kreisās puses : Atvasinājums, sākot no labās puses :
Atvasinājums, sākot no kreisās puses: Atvasinājums, sākot no labās puses:
Daļēja atvasinājuma koki Daļējs atvasinājuma koks
sentenciāla forma Daļējs atvasinājuma koks dod
Dažreiz atvasināšanas kārtība nav būtiska Sākot no kreisās puses: Sākot no labās puses: Tāds pats atvasinājuma koks
Gramatika ir neviennozīmīga: ir divi atvasinājuma koki virknei
Gramatika ir neviennozīmīga: virknei ir divi atvasinājumi, sākot atvasināt no kreisās puses.
Definīcija: Bezkonteksta gramatika G ir neviennozīmīga, ja kādai virknei ir divi vai vairāk dažādi atvasinājuma koki.
Citiem vārdiem: Bezkonteksta gramatika G ir neviennozīmīga, ja kādai virknei ir divi vai vairāk atvasinājumi, sākot atvasināšanu no kreisās puses(vai sākot nolabās puses).
Pareizais rezultāts: Pārbaudīsim Windows kalkulatoru (standard / scientific režīmos) !
Neviennozīmība ir slikta programmēšanas valodās. • Mēs vēlamies izslēgt neviennozīmību.
Vai var “izlabot”neviennozīmīgu gramatiku? Atbilstošāviennozīmīga gramatika:
GramatikaG : ir viennozīmīga: katrai virkneiir viens vienīgs atvasinājuma koks
“Iedzimtā” neviennozīmība • Dažāmbezkonteksta valodām • ir tikai neviennozīmīgas gramatikas Piemērs:
virknei ir divi atvasinājuma koki
Kompilators Sintakses analizētājs Leksikas analizētājs ievads izvads programma mašīnkods
Sintakses analizētājs“zin” programmēšanas valodas gramatiku.
Sintakses analizētājs programma STMT_LIST STMT_LIST STMT; STMT_LIST | STMT; STMT EXPR | if_STMT | WHILE_STMT | { STMT_LIST } EXPR EXPR + EXPR | EXPR - EXPR | ID if_STMT if (EXPR) then STMT | if (EXPR) then STMT else STMT WHILE_STMT while (EXPR) do STMT
Sintakses analizētājs atrod katra konkrēta ievada atvasinājumu ievads atvasinājums 10 + 2 * 5 E E + E E + E * E 10 + E*E 10 + 2 * E 10 + 2 * 5 E E + E | E * E | INT sintakses analizētājs
atvasinājuma koks atvasinājums E E E + E E + E * E 10 + E*E 10 + 2 * E 10 + 2 * 5 + E E 10 E E * 2 5
sintakses analizētājs ievada virkne gramatika atvasinājums
Piemērs: sintakses analizētājs atvasinājums ievads ?
Izsmeļošā meklēšana 1.fāze: Atrodatvasinājumu visi iespējamie atvasinājumi garumā 1
2.fāze 1.fāze
2.fāze 3.fāze
Izsmeļošās analīzes beigu rezultāts (lejupejoša analīze) sintakses analizētājs ievads atvasinājums
Cits piemērs ar to pašu gramatiku: sintakses analizētājs atvasinājums ievads ?
Gramatikai ark likumiem Laiks 1.fāzei:k k iespējamie atvasinājumi
Laiks 2.fāzei:k2 k2 iespējamie atvasinājumi
Kopējaisvirknei w nepieciešamaislaiks: 1.fāze 2.fāze Gauži slikti!!!
Specializētām gramatikām eksistē ātrāki algoritmi S-gramatika: simbols netermināļuvirkne parādās vienreiz Pāris