Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 8 января 2013< ^ >
f[x] установил(а) тему: OCaml / ОКамл / Камль -- http://caml.inria.fr | Камло - http://camlunity.ru/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire | Мойте руки перед чатом | 4.00.0 уже таки да, см. kamlo_wiki/OCamlChanges
Конфигурация комнаты
Участники комнаты

GMT+4
[00:22:47] evilbloodydemon вышел(а) из комнаты
[00:55:36] komar вошёл(а) в комнату
[01:30:39] ftrvxmtrx вышел(а) из комнаты
[02:21:53] komar вышел(а) из комнаты: Logged out
[02:21:54] komar вошёл(а) в комнату
[03:12:37] Typhon вышел(а) из комнаты
[03:28:37] Sun][ вышел(а) из комнаты
[07:47:31] evilbloodydemon вошёл(а) в комнату
[07:53:25] evilbloodydemon вышел(а) из комнаты
[07:53:49] evilbloodydemon вошёл(а) в комнату
[07:58:23] evilbloodydemon вышел(а) из комнаты
[07:58:57] evilbloodydemon вошёл(а) в комнату
[07:59:00] zinid вошёл(а) в комнату
[08:02:34] ermine вошёл(а) в комнату
[10:34:30] vladimir.chujkov вошёл(а) в комнату
[11:23:51] vladimir.chujkov вошёл(а) в комнату
[11:24:14] ygrek вошёл(а) в комнату
[11:27:38] vladimir.chujkov вошёл(а) в комнату
[11:38:57] vladimir.chujkov вышел(а) из комнаты
[11:42:59] vladimir.chujkov вышел(а) из комнаты
[12:24:29] Typhon вошёл(а) в комнату
[12:39:23] avkarpich вошёл(а) в комнату
[12:45:48] avkarpich вышел(а) из комнаты
[13:50:02] vladimir.chujkov вошёл(а) в комнату
[13:50:43] <zinid> а чем камло строит свой AST?
[13:50:51] <zinid> запарился в исходниках искать
[13:51:52] vladimir.chujkov вышел(а) из комнаты
[13:59:56] <ygrek> в смысле чем?
[14:00:11] <ygrek> ocamlyacc'ом парсит если ты про это
[14:00:30] <ygrek> а camlp4 своим парсером - рекурсивным спуском с откатами
[14:03:36] <zinid> ладно, фиг с ним, буду строить ast с помощью camlp4
[14:27:59] Typhon вышел(а) из комнаты
[14:44:44] Typhon вошёл(а) в комнату
[15:02:08] vladimir.chujkov вошёл(а) в комнату
[15:06:08] vladimir.chujkov вышел(а) из комнаты
[15:08:29] Typhon вышел(а) из комнаты
[15:14:36] vladimir.chujkov вошёл(а) в комнату
[15:17:38] evilbloodydemon вышел(а) из комнаты
[15:17:49] evilbloodydemon вошёл(а) в комнату
[15:27:17] vladimir.chujkov вышел(а) из комнаты
[16:08:01] Andrey Popp вошёл(а) в комнату
[16:48:48] <zinid> не в курсе, что может быть?
$ ocamlfind ocamlc -syntax camlp4o -package camlp4.quotations.o -c test.ml
File "test.ml", line 4, characters 5-34:
Error: Unbound module Camlp4OCamlRevisedParser
[16:49:13] <zinid> $ camlp4o -loaded-modules
Camlp4.Printers.OCaml
Camlp4OCamlParser
Camlp4OCamlParserParser
Camlp4OCamlRevisedParser
Camlp4OCamlRevisedParserParser
[16:59:55] <gds> zinid: а что такое "camlp4.quotations.o"?  Есть таковой пакет, известен ли он ocamlfind'у?
[17:00:05] <ygrek> -package загружает cmo напрямую
[17:00:16] <ygrek> -syntax camlp4o не дёргает camlp4o
[17:00:19] <ygrek> см. -verbose
[17:00:43] <ygrek> если хочешь - можно просто -pp camlp4o делать, но это не тру
[17:00:59] <ygrek> тру ocamlfind way = найти пакет который включает нужный тебе синтаксис
[17:01:29] <ygrek> нужный тебе модулб
[17:01:45] <zinid> охх
[17:01:48] <zinid> ничо не понял ;)
[17:02:19] <ygrek> ocamlc -verbose сделай и посмотри что ocamlfind вызывает
[17:02:25] <ygrek> не то что ты думаешь
[17:02:28] <zinid> ocamlc -verbose -c -I /usr/lib/ocaml/camlp4 -pp camlp4 '-I' '/usr/lib/ocaml/camlp4' '-I' '/usr/lib/ocaml/camlp4' '-parser' 'o' '-parser' 'op' '-printer' 'p' '-parser' 'Camlp4QuotationCommon' '-parser' 'Camlp4OCamlOriginalQuotationExpander'  test.ml
[17:02:44] <ygrek> '-parser' 'o'
[17:02:47] <ygrek> ну вот
[17:02:50] ftrvxmtrx вошёл(а) в комнату
[17:02:53] <ygrek> а ты хочешь revisedparser
[17:02:55] <zinid> что это значит? ;)
[17:03:49] <zinid> что мне указать?
[17:04:06] <ygrek> $ man camlp4|grep parser
       -parser <name>
              Load the parser Camlp4Parsers/<name>.cmo
[17:04:16] <ygrek> попробуй -syntax camlp4r
[17:04:36] <ygrek> хотя не
[17:04:57] <ygrek> покажи test.ml
[17:05:08] <zinid> $ cat test.ml
open Camlp4.PreCast;;
module Caml =
  Camlp4OCamlParser.Make
    (Camlp4OCamlRevisedParser.Make
      (Camlp4.OCamlInitSyntax.Make(Ast)(Gram)(Quotation)));;
let quotexpander str =
  "[1; 2; 3]" (* ... do some real code on str *)
let patt_quotexpander loc _loc_name_opt str =
  Gram.parse_string Caml.patt loc (quotexpander str)
let expr_quotexpander loc _loc_name_opt str =
  Gram.parse_string Caml.expr loc (quotexpander str)
let str_item_quotexpander loc loc_name_opt str =
  <:str_item@loc< $exp: expr_quotexpander loc loc_name_opt str$ >>
let () =
  Syntax.Quotation.add "" Syntax.Quotation.DynAst.expr_tag expr_quotexpander;
  Syntax.Quotation.add "" Syntax.Quotation.DynAst.str_item_tag str_item_quotexpander;
  Syntax.Quotation.add "" Syntax.Quotation.DynAst.patt_tag patt_quotexpander
[17:05:56] <zinid> это camlp4/examples/ex_str.ml на самом деле
[17:06:41] <ermine> там примеры в основном ненужные
[17:06:49] <zinid> мне просто долбанный ast надо построить из строки
[17:07:00] <ygrek> камлевый?
[17:07:03] <zinid> да
[17:07:15] <ygrek> отлично ты вопросы задаёшь
[17:07:20] <ygrek> это гораздо проще делается
[17:07:27] <ygrek> типичный случай XY
[17:07:29] <zinid> каг?
[17:07:47] <ermine> <:zinid< 1+2 >> или какой строки?
[17:07:58] <zinid> ermine: из string
[17:08:12] <zinid> типа gimme_ast str = ...;;
[17:09:26] <ermine> zinid: во время компиляции .ml файла или гсенерить .ml?
[17:09:40] <zinid> ermine: в рантайме же
[17:09:51] <zinid> есть строка, в ней камлевый код
[17:10:08] <ermine> zinid: видел там parse_implem?
[17:10:37] <zinid> неа
[17:10:41] <zinid> где там?
[17:10:41] <ermine> а нет, я ступила, это парсит код камла в рантайме
[17:11:03] <ermine> zinid: можно еще как пример x4str
[17:11:33] <ermine> там, емнип, выбираются $var из строки и заменяются значениями
[17:11:42] <zinid> в parse_files.ml тоже этот аццкий Camlp4OCamlRevisedParser
[17:12:47] <ermine> zinid: а еще можно смотреть в мой polyglot в гите на куку, там сплошь camlp4 и парсит файл для генерации кучи .ml
[17:13:30] <zinid> ermine: ты бы лучше код показала
[17:13:34] <zinid> рабочий
[17:13:46] <zinid> я и так уже куда только не гляжу
[17:14:10] <ygrek> Camlp4.PreCast.(Syntax.parse_implem Loc.ghost (Stream.of_string "2+2"));;
[17:15:20] <ygrek> рекомендую http://ambassadortothecomputers.blogspot.com/p/reading-camlp4.html
[17:15:36] <zinid> ygrek: спасибо, работает
[17:19:23] <ygrek> также вики - https://github.com/camlunity/kamlo_wiki/blob/master/camlp4.md
[17:20:58] <zinid> thx
[17:21:57] <ermine> и когда camlp4 наконец выкинут из камла
[17:22:17] <Andrey Popp> по-моему это killer feature
[17:22:50] <gds> ermine: когда народ перестанет ссаться coq'а и поймёт его notations.  будет чуть менее красиво, но вполне рабоче.
[17:22:55] <ygrek> my love is killing me
[17:23:02] <ermine> замысловатое feature
[17:33:30] <zinid> из toplevel работает, а если скомпилить и загрузить все cmo, то:
# Camlp4.PreCast.(Syntax.parse_implem Loc.ghost (Stream.of_string "5+6"));;
Exception: Loc.Exc_located (_, _).
[17:33:44] <zinid> может мне оазисом собрать всё?
[17:35:49] ygrek вышел(а) из комнаты: Replaced by new connection
[17:35:50] ygrek вошёл(а) в комнату
[17:47:17] <ermine> грамматика не вставилась
[18:00:29] Sun][ вошёл(а) в комнату
[18:08:27] Sun][ вышел(а) из комнаты
[18:14:44] vladimir.chujkov вошёл(а) в комнату
[18:16:34] vladimir.chujkov вышел(а) из комнаты
[18:21:14] Typhon вошёл(а) в комнату
[18:46:25] vladimir.chujkov вошёл(а) в комнату
[18:50:39] ygrek вышел(а) из комнаты: Replaced by new connection
[18:50:39] ygrek вошёл(а) в комнату
[18:51:59] vladimir.chujkov вышел(а) из комнаты
[18:56:57] zinid вышел(а) из комнаты
[19:36:10] UncleVasya вошёл(а) в комнату
[19:57:04] Typhon вышел(а) из комнаты
[20:03:53] vladimir.chujkov вошёл(а) в комнату
[20:17:16] vladimir.chujkov вышел(а) из комнаты
[20:46:08] komar вышел(а) из комнаты: Logged out
[22:39:43] vladimir.chujkov вошёл(а) в комнату
[22:43:00] vladimir.chujkov вошёл(а) в комнату
[22:49:31] vladimir.chujkov вышел(а) из комнаты
[22:56:36] vladimir.chujkov вышел(а) из комнаты
[23:00:13] Sun][ вошёл(а) в комнату
[23:01:52] ftrvxmtrx вышел(а) из комнаты
[23:02:51] ftrvxmtrx вошёл(а) в комнату
[23:07:23] ermine вышел(а) из комнаты
[23:11:48] vladimir.chujkov вошёл(а) в комнату
[23:22:09] vladimir.chujkov вышел(а) из комнаты
[23:58:23] komar вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!