Ocaml - Файлы и разбор - PullRequest
       27

Ocaml - Файлы и разбор

5 голосов
/ 15 декабря 2011

Как читать содержимое из файла в ocaml? Конкретно как их разобрать?

Пример:

Предположим, файл содержит (a,b,c);(b,c,d)| (a,b,c,d);(b,c,d,e)|

тогда после прочтения я хочу два списка, содержащих l1 = [(a,b,c);(b,c,d)] и l2 = [(a,b,c,d);(b,c,d,e)]

Есть ли хороший учебник для разбора?

Ответы [ 3 ]

5 голосов
/ 15 декабря 2011

Это хороший пример использования генератора парсеров менгир (преемник ocamlyacc).Возможно, вы захотите использовать ocamllex для lexing.У всех есть хорошая документация.

Вы также можете использовать camlp4 или camlp5 возможности анализа потока.

Читайте также страницы википедии на lexing & разбор .

3 голосов
/ 16 декабря 2011

Я был бы склонен использовать Aurochs , PEG-парсер для чего-то подобного. Там есть пример кода в репо.

2 голосов
/ 16 декабря 2011

Если вы хотите задать грамматику и хотите, чтобы ocaml генерировал для вас лексеры и парсеры, ознакомьтесь с этими ocamllex и ocamlyacc учебниками.Я рекомендую делать это так.Если у вас действительно есть только один тип токенов в формате файла, то ocamlyacc может оказаться излишним, если вы можете просто использовать лексер, чтобы разбить файл на токены, которые грамматика считается действительными.

...