hirthwork 13.11.2012 22:22 mcabber

пстач, допустим есть код на рагеле, который парсит упрощённые хосты с userinfo и портами:

port = (":" . digit*) $add_port_char %print_port %lerr(clear_port);
userinfo = (alnum | ":")+;
name = alnum+;
host = ((userinfo "@")? . name) $add_host_char %print_host;
main := host . port?;

очевидно, что при разборе строки myhost:80 будет неясно к чему относится двоеточие. к началу порта или же к середине userinfo
как результат — символ будет положен в буфер и для того и для другого, что печально.
внимание, вопрос: по каким ключевым словам курить документацию по рагелю, чтобы зделоть красиво и чотко?
З.Ы. Зачем нужно %lerr(clear_port)? Затем, чтобы очистить то что накопится в буфере для порта при разборе первой половины строки «my:12info@host:42»

1. Like-all 13.11.2012 22:28

Прошу прощения за тупой вопрос, но не получится ли отслеживать количество этих двоеточий? Если одно, то, скорее всего, мы хотим указать порт. Или бывает иначе?

2. hirthworkLike-all /1 14.11.2012 09:17 mcabber

1. нет, потому что слева от собаки может быть любое количество двоеточий; 2. нет, потому что нужна поточная обработка

Do you really want to delete ?