Я пишу компилятор Go to Python с OCamllex и Menhir, но мой lexer не может импортировать пакет Core.OCamllex не может импортировать основной пакет (Перейти к компилятору Python)
Вот мой lex.mll файл:
{
(* Header *)
open Core.Std
open Lexing
open Parser
exception SyntaxError of string
let next_line lexbuf =
let pos = lexbuf.lex_curr_p in
lexbuf.lex_curr_p <-
{ pos with pos_bol = lexbuf.lex_curr_pos;
pos_lnum = pos.pos_lnum + 1
}
let syntaxError msg = raise (SyntaxError (msg^" on line "^(string_of_int next_line)))
(* End Header *)
}
[ lexer rules ]
У меня есть сделать файл, make.sh поставить лексера и анализатор вместе
#! /bin/bash
echo "==Creating compiler=="
echo "- OCamllex : lex.mll -> lex.ml"
ocamllex lex.mll
echo "- OCaml : lex.ml -> lex"
ocamlc lex.ml -o lex
# echo "- OCamlBuild -> main.ml"
# ocamlbuild -use-menhir main.native
Но когда я бегу ./make. ш Я получаю эту ошибку:
==Creating compiler==
- OCamllex : lex.mll -> lex.ml
1030 states, 16995 transitions, table size 74160 bytes
- OCaml : lex.ml -> lex
File "lex.mll", line 4, characters 7-15:
Error: Unbound module Core
Я могу открыть сердечник в OCaml переводчика, путем редактирования моего файла .ocamlinit, но как им port Core в скрипте, составленном ocamlc?
Можете ли вы использовать 'ocamlfind'? Затем вы можете сделать что-то вроде 'ocamlfind ocamlc -package core lex.ml -o lex'. – RichN
Я пробовал 'ocamlfind ocamlc -thread -package core lex.ml -o lex' и находит пакет Core! –
Отлично! Я всегда использую 'ocamlfind' при построении, потому что это Just Works. – RichN