Сообщение Re[2]: контекстно-свободная самоописывающаяся грамматика от 09.03.2017 21:53
Изменено 10.03.2017 4:48 Arsen.Shnurkov
Re[2]: контекстно-свободная самоописывающаяся грамматика
К> нарушение приоритета.
исправил (в исходном сообщении).
К>Нет красивого способа задавать "не менее N повторений"
кажется, поправил.
К> означает от нуля до бесконечности
у меня большое желание сделать от 1 до бесконечности, чтобы можно было писать
[{ . }] вместо 1… { . }
К>
К>Плохая семантика, negative lookahead в общем случае.
Чем она плохая? регэкспы же:
http://www.regular-expressions.info/lookaround.html
К> На ровном месте получаем из контекстно-свободной грамматики контекстно-зависимую.
Это специально. я хочу примерно как тут — http://stackoverflow.com/questions/406230/regular-expression-to-match-a-line-that-doesnt-contain-a-word
Мне нужна возможность записывать штуки типа
яббы даже ссказал:
К>Хотя подразумевалась чисто регулярная фишка — классы символов.
в этой грамматике действительно окончание комментария вида "*)" может быть записано классами символов, да.
А вообще, чем длинее маркер, тем тяжелее писать формулу.
К>Пример:
К>
запятая пропущена перед фигурной скобкой.
К>
И ? АА-А-А-А-а-а-а-а! Делать-то что, что делать?
Ещё есть засада в том, что буква с ударением — это не один символ, а двусимвольная строка из основного символа и модификатора.
исправил (в исходном сообщении).
К>Нет красивого способа задавать "не менее N повторений"
кажется, поправил.
К> означает от нуля до бесконечности
у меня большое желание сделать от 1 до бесконечности, чтобы можно было писать
[{ . }] вместо 1… { . }
К>
К>(*4*) исключение = выражение , гм , "-" , гм , выражение ;
К>
К>Плохая семантика, negative lookahead в общем случае.
Чем она плохая? регэкспы же:
http://www.regular-expressions.info/lookaround.html
К> На ровном месте получаем из контекстно-свободной грамматики контекстно-зависимую.
Это специально. я хочу примерно как тут — http://stackoverflow.com/questions/406230/regular-expression-to-match-a-line-that-doesnt-contain-a-word
Мне нужна возможность записывать штуки типа
некий фрагмент = произвольный текст - многосимвольный маркер окончания фрагмента ;
яббы даже ссказал:
строковая константа = начало строковой константы, тело строковой константы , конец строковой константы ;
начало строковой константы = двойная кавычка ;
тело строковой константы = 1… { символ в строке } - конец строковой константы ;
(* тело строковой константы не должно содержать "конец строковой константы" *)
символ в строке = . ;
конец строковой константы = двойная кавычка ;
комментарий = [ тп ] , начало комментария, тело комментария , конец комментария ;
начало комментария = "#" ;
тело комментария = 1… { . } - новая строка ;
(* бекслеши в комментариях не обрабатываются *)
конец комментария = ; (* пустые правила элиминируются при анализе грамматики *)
(* далее определения пробелов определены таким образом,
чтобы перенос строки (бекслеш перед концом строки) превращался в пробел *)
ябм = 1… { тп | новая строка | бэкслеш , новая строка } ;
бэкслеш = "\" ;
К>Хотя подразумевалась чисто регулярная фишка — классы символов.
в этой грамматике действительно окончание комментария вида "*)" может быть записано классами символов, да.
А вообще, чем длинее маркер, тем тяжелее писать формулу.
К>Пример:
К>
К>привет = "п" , "р" , "и" , "в" , "е" , "т" ;
К>мир = "м" , "и" , "р" ;
К>любое слово = буква { буква } ;
К>
запятая пропущена перед фигурной скобкой.
К>
К>любые слова = любое слово , { обм , любое слово } ;
К>привет но не мир = ( привет , обм , любые слова ) - ( любые слова , обм , мир ) ;
К>
И ? АА-А-А-А-а-а-а-а! Делать-то что, что делать?
Ещё есть засада в том, что буква с ударением — это не один символ, а двусимвольная строка из основного символа и модификатора.
Re[2]: контекстно-свободная самоописывающаяся грамматика
К> нарушение приоритета.
исправил (в исходном сообщении).
К>Нет красивого способа задавать "не менее N повторений"
кажется, поправил.
К> означает от нуля до бесконечности
у меня большое желание сделать от 1 до бесконечности, чтобы можно было писать
[{ . }] вместо 1… { . }
К>
К>Плохая семантика, negative lookahead в общем случае.
Чем она плохая? регэкспы же:
http://www.regular-expressions.info/lookaround.html
К> На ровном месте получаем из контекстно-свободной грамматики контекстно-зависимую.
Это специально. я хочу примерно как тут — http://stackoverflow.com/questions/406230/regular-expression-to-match-a-line-that-doesnt-contain-a-word
Мне нужна возможность записывать штуки типа
яббы даже ссказал:
К>Хотя подразумевалась чисто регулярная фишка — классы символов.
в этой грамматике действительно окончание комментария вида "*)" может быть записано классами символов, да.
А вообще, чем длинее маркер, тем тяжелее писать формулу.
К>Пример:
К>
запятая пропущена перед фигурной скобкой.
К>
И ? АА-А-А-А-а-а-а-а! Делать-то что, что делать?
Ещё есть засада в том, что буква с ударением — это не один символ, а двусимвольная строка из основного символа и модификатора.
исправил (в исходном сообщении).
К>Нет красивого способа задавать "не менее N повторений"
кажется, поправил.
К> означает от нуля до бесконечности
у меня большое желание сделать от 1 до бесконечности, чтобы можно было писать
[{ . }] вместо 1… { . }
К>
К>(*4*) исключение = выражение , гм , "-" , гм , выражение ;
К>
К>Плохая семантика, negative lookahead в общем случае.
Чем она плохая? регэкспы же:
http://www.regular-expressions.info/lookaround.html
К> На ровном месте получаем из контекстно-свободной грамматики контекстно-зависимую.
Это специально. я хочу примерно как тут — http://stackoverflow.com/questions/406230/regular-expression-to-match-a-line-that-doesnt-contain-a-word
Мне нужна возможность записывать штуки типа
некий фрагмент = произвольный текст - многосимвольный маркер окончания фрагмента ;
яббы даже ссказал:
строковая константа = начало строковой константы, тело строковой константы , конец строковой константы ;
начало строковой константы = двойная кавычка ;
тело строковой константы = [ { символ в строке } ] - конец строковой константы ;
(* тело строковой константы не должно содержать "конец строковой константы" *)
символ в строке = . ;
конец строковой константы = двойная кавычка ;
комментарий = [ тп ] , начало комментария, тело комментария , конец комментария ;
начало комментария = "#" ;
тело комментария = [ { . } ] - новая строка ;
(* бекслеши в комментариях не обрабатываются *)
конец комментария = ; (* пустые правила элиминируются при анализе грамматики *)
(* далее определения пробелов определены таким образом,
чтобы перенос строки (бекслеш перед концом строки) превращался в пробел *)
ябм = 1… { тп | новая строка | бэкслеш , новая строка } ;
бэкслеш = "\" ;
К>Хотя подразумевалась чисто регулярная фишка — классы символов.
в этой грамматике действительно окончание комментария вида "*)" может быть записано классами символов, да.
А вообще, чем длинее маркер, тем тяжелее писать формулу.
К>Пример:
К>
К>привет = "п" , "р" , "и" , "в" , "е" , "т" ;
К>мир = "м" , "и" , "р" ;
К>любое слово = буква { буква } ;
К>
запятая пропущена перед фигурной скобкой.
К>
К>любые слова = любое слово , { обм , любое слово } ;
К>привет но не мир = ( привет , обм , любые слова ) - ( любые слова , обм , мир ) ;
К>
И ? АА-А-А-А-а-а-а-а! Делать-то что, что делать?
Ещё есть засада в том, что буква с ударением — это не один символ, а двусимвольная строка из основного символа и модификатора.