Я новичок в OCaml и пытаюсь создать парсер, я хочу иметь список, в котором хранятся все методы моего класса. Это одна часть, которая есть у меня в моем файле .mly.
init_method_list:
{ [] }
| method_list method_decl { List.rev($1) }
;
method_list:
method_decl { [ $1 ] }
| method_list method_decl { $2 :: $1 }
;
Кто-нибудь может точно объяснить, что здесь происходит? Особенно операция ::. Погуглил, но не смог найти оператора в документах.
Я понимаю, что список может быть пустым, или мы делаем правильные рекурсивные вызовы, чтобы заполнить его всеми методами в классе. method_decl
просто ищет совпадение определенных комбинаций токенов, представляющих метод.
$2
и$1
? - person cchantep   schedule 11.09.2015::
используется для объединения элемента типа'a
со списком типа'a list
. - person alifirat   schedule 11.09.2015