Информация об изменениях

Сообщение Re[6]: контекстно-свободная самоописывающаяся грамматика от 05.04.2017 0:23

Изменено 05.04.2017 7:10 Arsen.Shnurkov

Re[6]: контекстно-свободная самоописывающаяся грамматика
К>Ну, можно просто задекларировать, что все операции повторения ленивые.
К>С жадностью придётся реализовывать ленивость вручную. По сути, ленивость — это такой неявный негативный лукохед: "если можешь сматчить следующий за квантификатором кусок, то всё, стоп!"

Ленивость, negative/positive lookahead и то что мне нужно — это три разные вещи.

Почему не подойдёт ленивость, расписано тут —
https://learn.javascript.ru/regexp-greedy-and-lazy

вот это то что мне надо (только мне надо без расписывания):

К> если нет произвольного негативного лукохеда, а только строгое неравенство (классы символов — это частный случай), то ещё и его придётся руками расписать:

К>
К>/.*?abc/

К>{ . - "a"
К>| "a" , . - "b"
К>| "ab" , . - "c"
К>}
К>"abc"

К>{ . - "a"
К>| "a" , ( . - "b"
К>        | "b" , ( . - "c" )
К>        )
К>}
К>"abc"
К>


Т.е. прийдётся определить дополнительный синтаксис специально под мою операцию, а потом думать, как её разворачивать "как руками".
Это проблема, потому что неразрешима задача определения того, является ли КС-грамматика регулярной.
Re[6]: контекстно-свободная самоописывающаяся грамматика
К>Ну, можно просто задекларировать, что все операции повторения ленивые.
К>С жадностью придётся реализовывать ленивость вручную. По сути, ленивость — это такой неявный негативный лукохед: "если можешь сматчить следующий за квантификатором кусок, то всё, стоп!"

Ленивость, negative/positive lookahead, и то что мне нужно — это три разные вещи.

Почему не подойдёт ленивость, расписано тут —
https://learn.javascript.ru/regexp-greedy-and-lazy

вот это то что мне надо (только мне надо без расписывания):

К> если нет произвольного негативного лукохеда, а только строгое неравенство (классы символов — это частный случай), то ещё и его придётся руками расписать:

К>
К>/.*?abc/

К>{ . - "a"
К>| "a" , . - "b"
К>| "ab" , . - "c"
К>}
К>"abc"

К>{ . - "a"
К>| "a" , ( . - "b"
К>        | "b" , ( . - "c" )
К>        )
К>}
К>"abc"
К>


Т.е. прийдётся определить дополнительный синтаксис специально под мою операцию, а потом думать, как её разворачивать "как руками".
Это проблема, потому что неразрешима задача определения того, является ли КС-грамматика регулярной.