Reguliere grammaticaEen reguliere grammatica is een formele grammatica (N, Σ, P, S) waarbij de productieregels aan een bepaalde vorm voldoen. Een rechts-reguliere grammatica bevat productieregels die aan de rechterkant ten hoogste 1 niet-terminaal symbool bevatten dat alleen aan het einde mag voorkomen. Analoog hieraan bevat een links-reguliere grammatica alleen productieregels met aan de rechterkant ten hoogste 1 niet-terminaal symbool dat alleen aan het begin mag voorkomen. DefinitieFormeel hebben de productieregels in een rechts-reguliere grammatica de volgende vorm:
In een links-reguliere grammatica hebben alle productieregels de volgende vorm:
KenmerkenReguliere grammatica's genereren de reguliere talen en zijn hierdoor equivalent aan eindigetoestandsautomaten en reguliere expressies. Zowel rechts-reguliere grammatica's als links-reguliere grammatica's zijn in staat alle reguliere talen te beschrijven. Elke reguliere grammatica is ook een context-vrije grammatica. Niet elke context-vrije grammatica is echter een reguliere grammatica. Daarnaast zijn er niet-reguliere talen (maar nog steeds context-vrije talen) die gebruikmaken van links- en rechts-reguliere productieregels; de context-vrije taal met de zinnen wordt gegenereerd door de grammatica G met N = {S, A}, Σ = {a, b} en P:
en S het startsymbool. Deze grammatica bevat zowel links- als rechts-reguliere productieregels en is hierdoor niet meer regulier. VoorbeeldDe volgende formele grammatica G met N = {S, A} en Σ = {a, b, c} is een rechts-reguliere grammatica. P bevat de volgende productieregels:
Het startsymbool is S. Deze grammatica beschrijft dezelfde taal als de reguliere expressie a*bc*. Zie ookInformation related to Reguliere grammatica |