Этот вопрос не спрашивает, являются ли шаблоны Lua PCRE. Это было задано несколько раз, и ответ определенно нет.Могут ли шаблоны Lua представлять любой обычный язык?
Вместо этого, я спрашиваю, имеют ли образцы Lua аналогию с обычными языками посредством формального определения языка. не мой инстинкт не потому, что я не был в состоянии создать шаблон для этого регулярного языка:
L = {'foo'}* = {'', 'foo', 'foofoo', 'foofoofoo', ...}
Все мои попытки не удалось, потому что Lua по-видимому, не имеют возможности использовать Клини Звезда на захватах:
> print(('foofoo'):find('(foo)*'))
nil
Можете ли вы показать, что в Lua нет шаблона, который может обозначать L
, и, в общем, можно ли создать шаблон Lua для любого обычного языка?
Параметр '% bxy' пункт шаблон * не * регулярное:«'% bxy', где' x' и 'y' два различных символа; такие item соответствует строкам, которые начинаются с 'x', заканчиваются' y' и где 'x' и' y' сбалансированы. " См. Https://www.lua.org/manual/5.3/manual.html#6.4.1 – rici
@rici: Хорошая точка. Исправленный. –