Я вивчав компілятори деякий час, і шукав, що означає «контекст» у граматиці і що означає для граматики бути «без контексту», але безрезультатно.
То чи може хтось у цьому допомогти?
Я вивчав компілятори деякий час, і шукав, що означає «контекст» у граматиці і що означає для граматики бути «без контексту», але безрезультатно.
То чи може хтось у цьому допомогти?
Відповіді:
Контекст можна пояснити стосовно правил виробництва, дозволених для різних граматик в ієрархії Хомського.
Якщо розглядати безконтекстні граматики, то правила їх виготовлення мають таку форму:
Отже, ви можете помітити, що ліва частина цього виду правил складається лише з одного нетермінального символу; таким чином, підміна нетермінального символу відбувається без урахування його "контексту", тобто інших символів, якими він оточений.
З іншого боку, якщо врахувати правила виробництва контекстно-залежних граматик, вони мають таку форму:
Більш детальну інформацію ви можете знайти в цій відповіді з математики та в цій відповіді з інженерії програмного забезпечення.
розширюється до того ж виду вираження, чи ви пишете завдання (наприклад, x:=y+z
), передаючи аргументи функції (наприклад, f(y+z)
) або повертаючи значення з функція (наприклад, return y+z
).
Взагалі кажучи, навіть звичайні мови можуть мати контекстну залежність, це означає, що ви можете певною мірою визначити, яким чином символи можуть з’являтися поблизу інших символів у рядку, що належить цій мові.
Що стосується безконтекстних граматик, це те, що коли існує кілька способів заміни нетермінального символу, застосовуючи різні правила з одним і тим же нетермінальним правою стороною, вибір того, яке правило застосовувати, ніколи не залежить від того, що відбувається навколо цього символу в процесі деривації.
Ви можете думати про них як про безвідмовну мову походження , коротко - без контексту.