Formel grammatik

Formel grammatik eller bare grammatik i teorien om formelle sprog  er en måde at beskrive et formelt sprog på, det vil sige at vælge en bestemt delmængde fra sættet af alle ord i et eller andet endeligt alfabet . Der er generative og genkendende (eller analytiske ) grammatikker - den første sætter reglerne for, at du kan bygge et hvilket som helst ord i sproget, og den anden giver dig mulighed for at bestemme ud fra et givet ord, om det er inkluderet i sproget eller ej.

Vilkår

Generative grammatikker

Ordene i sproget givet af grammatikken er alle sekvenser af terminaler, der er output (genereret) fra den oprindelige ikke-terminal i henhold til reglerne for output.

For at indstille grammatikken skal du indstille alfabeterne for terminaler og ikke-terminaler, et sæt slutningsregler og også vælge den indledende i sættet af ikke-terminaler.

Så grammatik er defineret af følgende egenskaber:

Konklusion

Et output er en sekvens af linjer, der består af terminaler og ikke-terminaler, hvor den første linje er en linje bestående af én startende ikke-terminal, og hver efterfølgende linje opnås fra den foregående ved at erstatte en delstreng i henhold til en (en hvilken som helst) af reglerne. Den sidste streng er en streng, der udelukkende består af terminaler, og er derfor et ord i sproget.

Eksistensen af ​​en afledning for et bestemt ord er et kriterium for dets tilhørsforhold til det sprog, der er defineret af den givne grammatik.

Typer af grammatik

Ifølge Chomsky-hierarkiet er grammatikker opdelt i 4 typer, hver efterfølgende er en mere begrænset delmængde af den forrige (men også lettere at analysere):

Derudover er der:

Ansøgning

Et eksempel er aritmetiske udtryk

Overvej et simpelt sprog, der definerer en begrænset delmængde af aritmetiske formler bestående af naturlige tal , parenteser og aritmetiske tegn. Det er værd at bemærke, at her i hver regel på venstre side af pilen er der kun ét ikke-terminalt symbol. Sådanne grammatikker kaldes kontekstfri .

Terminal alfabet:

= {'0','1','2','3','4','5','6','7','8','9','+','-', '*','/','(',')'}

Ikke-terminalt alfabet:

{ FORMEL, SIGN, NUMMER, NUMMER }

Regler:

1. FORMEL FORMEL TEGN FORMEL (en formel har to formler forbundet med et tegn) 2. FORMELNUMMER ( formlen er et tal) 3. FORMEL ( FORMEL ) (en formel er en formel i parentes) 4. SIGN + | - | * | / (tegnet er plus eller minus, eller gange eller dividere) 5. TALCIFTER ( et tal er et tal) 6. TAL NUMMER CIFFER (et tal er et tal og et tal) 7. NUMMER 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (ciffer er 0 eller 1, eller ... 9)

Indledende ikke-terminal:

FORMEL

Konklusion :

Lad os udlede formlen (12+5) ved hjælp af de anførte inferensregler. For klarhedens skyld er siderne af hver udskiftning vist i par, i hvert par er den udskiftede del understreget.

FORMEL (FORMEL) ( FORMEL ) ( FORMELTEGNFORMEL ) (FORMELTEGNFORMEL ) ( FORMEL + FORMEL) ( FORMEL + FORMEL ) ( FORMEL + TAL ) ( FORMEL + TAL ) ( FORMEL + TAL ) ( FORMEL + TAL ) ( FORMEL + 5 ) ( FORMEL + 5) ( TAL + 5) ( TAL + 5) ( TAL CIFFER + 5) ( TAL CIFFER + 5) ( CIFFER + 5) ( CIFFER + 5) ( 1 CIFFER + 5) (1 CIFFER + 5) (1 2 + 5)


Analytiske grammatikker

Generative grammatikker er ikke den eneste form for grammatik, men de er de mest almindelige i programmeringsapplikationer. I modsætning til generative grammatikker definerer analytisk (genkendende) grammatik en algoritme, der giver dig mulighed for at bestemme, om et givet ord hører til sproget. For eksempel kan ethvert almindeligt sprog genkendes ved hjælp af en grammatik defineret af en tilstandsmaskine , og enhver kontekstfri grammatik kan genkendes ved hjælp af en stack-baseret automat . Hvis et ord tilhører et sprog, så konstruerer en sådan automat dets output i en eksplicit form, som gør det muligt at analysere semantikken i dette ord.

Se også

Noter

  1. Diskret matematik, 2006 , s. 486.
  2. Diskret matematik, 2006 , s. 487.

Litteratur