Установка модуля Ocaml / грамматики для SWIG - PullRequest
1 голос
/ 26 октября 2010

Пример запуска Swig для ocaml выдает мне это сообщение об ошибке.

rm -rf swig.mli swig.ml swigp4.ml && ../../../preinst-swig -ocaml -co swig.mli 2>/dev/null && ../../../preinst-swig -ocaml -co swig.ml 2>/dev/null && ../../../preinst-swig -ocaml -co swigp4.ml 2>/dev/null && ocamlc -c swig.mli && ocamlc -c swig.ml && ocamlc -I ` camlp4 -where` -pp "camlp4o pa_extend.cmo q_MLast.cmo" -c swigp4.ml
File "swig.ml", line 159, characters 54-57:
Warning 20: this argument will not be used by the function.
File "swigp4.ml", line 26, characters 2-6:
Parse error: Deprecated syntax, the grammar module is expected
File "swigp4.ml", line 1, characters 0-1:
Error: Preprocessor error

Файл "swigp4.ml", строка 26, символы 2-6 имеет следующее содержимое.

EXTEND
Line 25:  expr:
Line 26:  [ [ e1 = expr ; "'" ; "[" ; e2 = expr ; "]" ->
Line 27:    >
     ...
Line 114:    | f = expr ; "'" ; "(" ; args = LIST0 (expr LEVEL "simple") SEP "," ; ")" -> 
Line 115:   >
Line 116:    ] ] ;
Line 117: END ;;

Что может быть не так?Как установить модуль грамматики с ocaml?

ДОБАВЛЕНО

Я использую Mac OS X 10.6.4, и я установил Ocaml с этого сайта.

И я получил следующий результат с 'camlp4 -where'.

simple> camlp4 -where
/usr/local/lib/ocaml/camlp4

Swigp4.ml можно загрузить здесь .

Ответы [ 2 ]

1 голос
/ 26 октября 2010

Я никогда не использовал этот пакет swig, но использовал модуль грамматики camlp4.У вас, вероятно, есть camlp4, поэтому я предполагаю, что проблема заключается в используемом синтаксисе.Вы можете проверить camlp4 и модуль грамматики, найти каталог camlp4 по camlp4 -where и посмотреть, есть ли в этом каталоге /Camlp4Parsers/Camlp4GrammarParser.[cmi|cmo|cmx|o]

Если это синтаксис, я нашел код для грамматики camlp4,и выражения структурированы немного по-другому (я не уверен, что этот формат недопустим или нет, но это, по крайней мере, не так, как я его структурировал раньше)

[[ | expr1 | expr2 ]]

должно быть

[ [ expr1] | [expr2] ]
0 голосов
/ 30 апреля 2011

Я считаю, что вы не используете последнюю версию Swig.С Swig 1.3 у меня была такая же проблема.Попробуйте перейти на Swig 2.0.X, и у вас не будет проблем.

Я работал над связыванием ocaml для Xapian, и, к сожалению, поддержка ocaml в Swig осталась немного не поддерживаемой.Тем не менее, я нашел примеры в исходном дереве Swig чрезвычайно полезными.Я собрал приличный рецепт make для компиляции зависимостей swig.Вы, вероятно, заметите, что на самом деле это ничем не отличается от примеров swig, я просто бессовестно использую это время, чтобы поделиться им:любой код, который использует расширения синтаксиса.Вам также нужно будет добавить swig.cmo при линковке.У меня есть гист моего полного Makefile, который вы также можете найти полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...