Що означає "контекст" у "без контекстній граматиці"?


30

В Інтернеті є багато визначень щодо того, що таке граматика без контексту, але нічого, що я знаходжу, не задовольняє мою основну проблему:

Який контекст це вільний?

Щоб досліджувати, я гугла "граматику, залежну від контексту", але все ще не змогла знайти, що таке "контекст".

Може хтось, будь ласка, пояснить, на що contextв цих назвах позначається термін?


5
Я вважаю пояснення вікіпедії досить непоганим - "Формальна граматика вважається" вільною від контексту ", коли правила її виготовлення можуть застосовуватися незалежно від контексту нетерміналу. Незалежно від того, які символи оточують її, одиничний нетермінал зліва може завжди замінити правою стороною. " - це можна перефразовувати і спростити, щоб стати "Звичайною англійською", але суть цього мені здається досить зрозумілою.
jkff

1
@jkff Чудово, що ти вважаєш пояснення хорошим, але я все ще не розумію, що тут означає "контекст". Мені потрібно побачити приклад, де є контекст, а де немає контексту. Мені здається, кожна граматика, яку я бачив, має контекст
CodyBugstein

Чи не зрозуміло з визначення?
Рафаель

2
Як не дивно, у цьому визначенні бракувало вирішального фрагмента контексту , тому я просто додав речення, щоб пояснити це.
reinierpost

2
Приклад. У C ++ 11 overrideможе бути ім'я змінної або ключове слово, залежно від місця його використання (тобто його контексту). Якщо використовується після оголошення способу, це ключове слово. Інакше це не так. Це приклад контекстно-залежної граматики.
Томас Едінг

Відповіді:


37

Ви маєте рацію, у певному сенсі завжди є контекст. Я не думаю, що ти можеш зрозуміти, що означає "контекст" у "без контексту", не розуміючи виробництва.

Виробництво - це правило заміщення. Це говорить про те, що для створення рядків у мові ви можете замінити те, що знаходиться зліва, на те, що знаходиться праворуч:

A -> xy

Це означає, що абстрактну послідовність A можна замінити символом "x", а потім символом "y". Ви також можете мати більш складні постановки:

zA -> xy

Це означає, що символ "z", за яким слідує абстрактна послідовність A, може бути замінений символами "x" і "y".

Безконтекстне виробництво просто означає, що в лівій частині є лише одне. Перший приклад є без контексту, оскільки A може бути замінено на "x" та "y" незалежно від того, що відбувається до або після нього. Однак у другому прикладі символ "z" повинен з'явитися перед A, і тоді комбінація може бути замінена на "x" і "y", тому є якийсь контекст.

Безконтекстна граматика - це лише граматика з лише безконтекстною продукцією.

Другий приклад насправді є прикладом необмеженого виробництва. Існує ще одна категорія, яка між контекстом і необмеженою називається "контекстно-залежна". Прикладом контекстно-залежного виробництва є:

zA -> zxy

Різниця полягає в тому, що те, що відбувається перед A (і після) з лівої сторони, має зберігатися праворуч. Це фактично означає, що лише А заміщений, але може бути заміщений лише у відповідному контексті.


2
Дякую, що це величезна допомога! Я ніколи ще не бачив прикладу граматики з більш ніж однією змінною з лівого боку, як ви показали. Я думаю, тому я не міг зрозуміти, що таке "контекст". Дякую
CodyBugstein

4
Можливо, більш простим контекстуальним прикладом був би zA -> zxy: A все-таки замінюється xy, але лише після z.
MSalters

Більш детально, у цій відповіді йдеться про необмежену граматику , тоді як @MSalters вказує, що граматика , залежна від контексту, стане кращим прикладом значення контексту.

@MSalters: Ви маєте гарний момент. Я змінив свою відповідь. Мені важко було придумати спосіб додати ці деталі до мого опису, не звучаючи складніше, тому я закінчив це лише додати більше деталей у кінці.
Вон Катон

9

Aβ
αAδ

Що таке бета-версія? Це термінал чи змінна? А ви можете пояснити "сентенційну форму"? Чи означає це, що його не можна отримати далі?
CodyBugstein

Бета-версія може бути будь-чим, лише те, що A-> бета - це правило. Форма сентенцій означає, що, задавши свій початковий символ, використовуючи правила граматики, ми перетворюємо його на результат. Цей результат називається сентенційною формою. Після використання кожного правила ми отримуємо нову сентенційну форму.
iLoveCamelCase

3
@Imray Вам потрібно ознайомитися з формальними визначеннями граматики та без контексту. Немає ярлика для розуміння формальних об'єктів.
Рафаель

1
@Imray Означувальна форма - це рядок кінцевих та нетермінальних символів, що походить від аксіоми (також її називають початковим символом ) шляхом застосування граматичних правил (також званих виробництвами ). Сентенційна форма може бути виведена в іншу, застосувавши правило до одного з його нетермінальних символів. Коли немає незакінчених термінів , сентенційна форма - це речення , тобто рядок або слово мовою, визначеною або породженою граматикою. Термінологія походить від лінгвістів, які свого часу були основними учасниками цієї частини формальної теорії мови.
бабу

Я думав, що сентенційна форма не може містити в ній змінних - це повинні бути лише термінали.
CodyBugstein
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.