[OCaml] Парсинг строк

 
0
 
Functional languages
ava
Straight | 18.04.2009, 21:21
Долго медетировал над примерами из http://ocaml.spb.ru/chapter01.html , но так и не воскурил лексический разбор.
Задача-то тривиальная - записать строку, разделенную табуляциями, в record типа {string ; string ; ...} (количество значений фиксировано)
Не подскажете? smile
Comments (4)
ava
Void | 18.04.2009, 20:41 #
Genlex тут даже избыточен будет. В модуле Str есть функция split — это всё, что нам нужно:

open Str

type record = {
    a : string; b : string; c : string
    }

match split (regexp "\t") "aaa\tbbb\tccc" with
| [a; b; c] -> { a = a; b = b; c = c }
| _ -> failwith "Invalid format"

Как-то так.
ava
Straight | 18.04.2009, 21:16 #
Error: Reference to undefined global `Str'

Странно, str.cma/.cmi лежат в lib. Нужно что-то еще?
ava
Void | 18.04.2009, 21:28 #
Да, библиотеки надо явно указать компилятору, причём в начале, т.е.:
ocamlc str.cma program.ml
ava
Straight | 18.04.2009, 21:35 #
Спасибо огромное, уже разобрался smile
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Void   Straight
advanced
Submit