Визначення типу механізму

Глава 4. Механіка обробки регулярних виразів

Оскільки тип механізму, використовуваного програмою, в значитель ної мірою визначає підтримувані можливості, а також особ ності їх роботи, в багатьох випадках ми відносимо механізм до якого то типу, прогнавши його на декількох тестових виразах (а якщо ви не зможете знайти жодного відмінності, тоді так чи важливі ці разли чия?). На даному етапі я не очікую, що ви розберетеся в тому, чому результати наведених тестів показують саме те, що я їм при підписується. Я пропоную покластися на мій вибір, і, якщо ваша люби травня Програми відсутня в табл. 4.1, рекомендую вам провести са мостоятельное тестування і визначити тип механізму перед тим, як продовжувати читання наступних глав.

Традиційний механізм НКА чи ні?

З усіх типів механізмів регулярних виразів найчастіше викорис зуется традиційний механізм НКА, який легко відрізнити від ін ших. Чи підтримуються в механізмі мінімальні квантіфікатори (184)? Якщо підтримуються, перед вами майже напевно традиційними ційний механізм НКА. Як ви незабаром побачите, мінімальні кванти фікатори в ДКА неможливі, а в POSIX НКА вони не мають сенсу. Проте для вірності застосуєте регулярний вираз nfa | nfa • not до рядка 'nfa • not'; якщо співпаде тільки 'nfa', значить, це традиці ційний механізм НКА. Якщо збігається вся рядок 'nfa • not', це або POSIX НКА, або ДКА.

ДКА або POSIX НКА?

Відрізнити POSIX НКА від ДКА в загальному випадку буває нескладно - в ДКА не підтримуються зберігають круглі дужки і зворотні посилання. Однак в деяких гібридних системах використовується комбінація двох типів механізмів, і при відсутності зберігають круглих ско-пліч в вираженні використовується механізм ДКА.

Наступний простий тест допоможе отримати додаткову інфор-мацію. Застосуйте вираз X (. +) + X до рядка виду '= XX =============

========= ', як в наступній команді:

Якщо виконання команди займає дуже багато часу, перед вами механізм НКА (а якщо він не може бути традиційним механізмом НКА за результатами попереднього тесту, значить, це POSIX НКА). Як що команда виконується швидко, це або ДКА, або НКА з якою то хитромудрої оптимізацією. Якщо на екрані з'явилося предупрежде ня про переповнення стека або переривання тривалої операції, працює НКА.

Схожі статті