Lexisk grammatik

Inom datavetenskap är en lexikal grammatik en formell grammatik som definierar syntaxen för tokens . Programmet är skrivet med tecken som definieras av den lexikaliska strukturen för det använda språket. Teckenuppsättningen motsvarar alfabetet som används av vilket skriftspråk som helst. Den lexikaliska grammatiken fastställer reglerna för hur en teckensekvens delas upp i undersekvenser av tecken, där varje del representerar en individuell token. Detta definieras ofta i termer av reguljära uttryck .

Till exempel anger den lexikala grammatiken för många programmeringsspråk att en bokstavlig sträng börjar med ett " tecken och fortsätter tills en matchning " hittas ( escape gör detta mer komplicerat), att en identifierare är en alfanumerisk sekvens (bokstäver och siffror, vanligtvis också tillåta understreck och inte tillåta initiala siffror), och att en heltalsliteral är en sekvens av siffror. Så i följande teckensekvens "abc" xyz1 23 tokens är sträng , identifierare och nummer (plus blankstegssymboler) eftersom mellanslagstecknet avslutar sekvensen av tecken som utgör identifieraren. Vidare kategoriseras vissa sekvenser som nyckelord – dessa har vanligtvis samma form som identifierare (vanligtvis alfabetiska ord), men kategoriseras separat; formellt har de en annan tokentyp.

Exempel

Reguljära uttryck för vanliga lexikaliska regler följer (till exempel C).

Oescaped sträng literal (citat, följt av icke-citattecken, slutar med ett citattecken):

"[^"]*"

Escaped sträng literal (citattecken, följt av escaped tecken eller icke-citattecken, slutar med ett citattecken):

"(\.|[^\"])*"

Heltals bokstavlig:

[0-9]+

Decimal heltal bokstavlig (ingen inledande nolla):

[1-9][0-9]*|0

Hexadecimalt heltal literal:

0[Xx][0-9A-Fa-f]+

Oktal heltal bokstavlig:

0[0-7]+

Identifierare:

[A-Za-z_$][A-Za-z0-9_$]*

Se även

externa länkar