/ / Чи може RegEx з негативним поглядом бути представлений як кінцевий автомат? - регулярний вираз, контекстно-вільна граматика, кінцевий автомат, симетрична різниця

Чи може RegEx з негативним виглядом виглядати як кінцевий автомат? - регулярний вираз, контекстно-вільна граматика, кінцеві автомати, симетрична різниця

Я працюю над інструментом для маніпулюванняконтекстно-вільні мови, а внутрішнє представлення граматики зберігається як кінцевий автомат. Дивлячись далі в EBNF і RegEx, я дізнався, що EBNF має «винятки», а RegEx має негативний погляд. Я можу побачити, як вони можуть бути змодельовані симетричною різницею NFA, але підозрювали, що вони виходять за рамки можливостей звичайної DFA або NFA.

Але потім я натрапив це що досить ясно говорить про те, що я помилявся. Чи може хто-небудь вказати на вільний ресурс, який може показати, як перетворити EBNF з винятками, або RegEx з негативним поглядом в DFA?

Відповіді:

0 для відповіді № 1

Можна замінити негативний вигляд на aпозитивний погляд на повний набір можливих поєдинків мінус від'ємне поєднання. Напр. якщо ми працювали з окремими символами a-z як простір збігу, /what(?!n) такий же, як і /what(?=[a-mo-z])/. Теоретично це нормально, але не настільки велика на практиці, коли ми маємо справу з більшими матчами /afraid of (?!chinese)/.

https://cs.stackexchange.com/questions/2557/how-to-simulate-backreferences-lookaheads-and-lookbehinds-in-finite-state-auto дає гарне ставлення до перетворення lookaheads у щось подібне до DFA, з важливим застереженням наприкінці.