ЦФГ је скраћеница за граматику без контекста. То је формална граматика која се користи за генерисање свих могућих образаца низова на датом формалном језику. Граматика Г без контекста се може дефинисати са четири торке као:
G = (V, T, P, S)
Где,
Г је граматика, која се састоји од скупа правила производње. Користи се за генерисање низа језика.
Т је коначни скуп симбола терминала. Означава се малим словима.
ИН је коначни скуп нетерминалног симбола. Означава се великим словима.
П је скуп производних правила, који се користи за замену симбола који нису терминали (на левој страни продукције) у низу са другим терминалним или нетерминалним симболима (на десној страни продукције).
јава дуг за низ
С је почетни симбол који се користи за извођење стринга. Стринг можемо извести тако што ћемо више пута заменити не-терминал десном страном продукције све док сви не-терминални не буду замењени терминалним симболима.
Пример 1:
Конструисати ЦФГ за језик који има било који број а преко скупа ∑= {а}.
Решење:
Као што знамо, регуларни израз за горњи језик је
r.e. = a*
Правило производње за Регуларни израз је следеће:
S → aS rule 1 S → ε rule 2
Сада, ако желимо да изведемо стринг 'аааааа', можемо почети са почетним симболима.
S aS aaS rule 1 aaaS rule 1 aaaaS rule 1 aaaaaS rule 1 aaaaaaS rule 1 aaaaaaε rule 2 aaaaaa
Тхе р.е. = а* може да генерише скуп низова {ε, а, аа, ааа,.....}. Можемо имати нулти низ јер је С почетни симбол и правило 2 даје С → ε.
Пример 2:
Конструишите ЦФГ за регуларни израз (0+1)*
Решење:
јава додаје стринг
ЦФГ се може дати од,
Production rule (P): S → 0S | 1S S → ε
Правила су у комбинацији 0 и 1 са почетним симболом. Пошто (0+1)* означава {ε, 0, 1, 01, 10, 00, 11, ....}. У овом скупу, ε је низ, тако да у правилу можемо поставити правило С → ε.
Пример 3:
Конструисати ЦФГ за језик Л = где је в € (а, б)*.
Решење:
Стринг који се може генерисати за дати језик је {аацаа, бцб, абцба, бацаб, аббцбба, ....}
Граматика би могла бити:
S → aSa rule 1 S → bSb rule 2 S → c rule 3
Сада, ако желимо да изведемо стринг 'аббцбба', можемо почети са почетним симболима.
S → aSa S → abSba from rule 2 S → abbSbba from rule 2 S → abbcbba from rule 3
Тако било који од ове врсте низа може бити изведен из датих правила производње.
скл цоунт различит
Пример 4:
Конструисати ЦФГ за језик Л = анб2нгде је н>=1.
Решење:
Низ који се може генерисати за дати језик је {абб, аабббб, ааабббббб....}.
Граматика би могла бити:
S → aSbb | abb
Сада, ако желимо да изведемо низ 'аабббб', можемо почети са почетним симболима.
S → aSbb S → aabbbb