caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] unbound value Parser.main?
@ 2001-08-31  1:46 Michael Leary
  2001-08-31  2:19 ` Michael Leary
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Leary @ 2001-08-31  1:46 UTC (permalink / raw)
  To: caml

|| ocamllex.opt lexer.mll
|| 134 states, 7680 transitions, table size 31524 bytes
|| ocamlyacc  parser.mly
|| make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
|| making ._ncdi/parser.di from parser.mli
|| making ._d/parser.d from parser.ml
|| making ._d/lexer.d from lexer.ml
|| making ._d/fbot.d from fbot.ml
|| make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
|| make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
|| ocamlopt.opt -c       fbot.ml
fbot.ml|302 col 16| File "fbot.ml", line 302, characters 16-27: Unbound
value Parser.main
|| make[1]: *** [fbot.cmi] Error 2
|| make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
|| make: *** [native-code] Error 2

let _ =
	try
		let lexbuf = Lexing.from_channel stdin in
		while true do
			let result = Parser.main Lexer.token lexbuf in ();   <--- here
		done
	with Lexer.Eof -> exit 0

I'm assuming that (as usual) there's something plainly obvious I'm missing
here, but just in case, here's the lexer and parser:

lexer.mll:

{
open Parser
exception Eof
}
rule token = parse
		[' ' '\t']                         { token lexbuf }
	| ['\n']                             { EOL }
	| "Initialize"                       { INITIALIZE }
	| "YourName"                         { YOURNAME }
	| "YourColour"                       { YOURCOLOUR }
	| "GameOption"                       { GAMEOPTION }
	| "GameStarts"                       { GAMESTARTS }
	| "Radar"                            { RADAR }
	| "Info"                             { INFO }
	| "Coordinates"                      { COORDINATES }
	| "RobotInfo"                        { ROBOTINFO }
	| "RotationReached"                  { ROTATIONREACHED }
	| "Energy"                           { ENERGY }
	| "RobotsLeft"                       { ROBOTSLEFT }
	| "Collision"                        { COLLISION }
	| "Warning"                          { WARNING }
	| "Dead"                             { DEAD }
	| "GameFinishes"                     { GAMEFINISHES }
	| "ExitRobot"                        { EXITROBOT }
	| ['0' - '9']+                       { INT(int_of_string(Lexing.lexeme lexbuf)) }
	| ['0' - '9']+ '.' ['0' - '9']+      { DOUBLE(float_of_string(Lexing.lexeme lexbuf)) }
	| ['0' - '9' 'a' - 'f' 'A' - 'F']    { HEX }
	| ['a' - 'z' 'A' - 'Z']+             { STRING }
	| eof                                { raise Eof }


parser.mly:

%token <int> INT
%token <float> DOUBLE
%token <string> HEX
%token <string> STRING
%token EOL INITIALIZE YOURNAME YOURCOLOUR GAMEOPTION GAMESTARTS RADAR INFO COORDINATES ROBOTINFO ROTATIONREACHED ENERGY ROBOTSLEFT COLLISION WARNING DEAD GAMEFINISHES EXITROBOT
%start main
%type <int> main
%%
main:
	| INITIALIZE INT EOL { initialize INT }
	| YOURNAME STRING EOL { your_name STRING }
	| YOURCOLOUR HEX EOL { your_color HEX }
	| GAMEOPTION INT DOUBLE EOL { game_option INT }
	| GAMESTARTS EOL { game_starts }
	| RADAR DOUBLE INT DOUBLE EOL { radar DOUBLE INT DOUBLE }
	| INFO DOUBLE DOUBLE DOUBLE EOL { info DOUBLE DOUBLE DOUBLE }
	| COORDINATES DOUBLE DOUBLE DOUBLE EOL { coordinates DOUBLE DOUBLE DOUBLE }
	| ROBOTINFO DOUBLE INT EOL { robot_info DOUBLE INT }
	| ROTATIONREACHED INT EOL { rotation_reached INT }
	| ENERGY DOUBLE EOL { energy DOUBLE }
	| ROBOTSLEFT INT EOL { robots_left INT }
	| COLLISION INT DOUBLE EOL { collision INT }
	| WARNING INT STRING EOL { warning INT STRING }
	| DEAD EOL { dead }
	| GAMEFINISHES EOL { game_finishes }
	| EXITROBOT EOL { exit_robot }
;


thanks!
Mike

-- 
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Caml-list] unbound value Parser.main?
  2001-08-31  1:46 [Caml-list] unbound value Parser.main? Michael Leary
@ 2001-08-31  2:19 ` Michael Leary
  2001-08-31  2:30   ` Michael Leary
                     ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Michael Leary @ 2001-08-31  2:19 UTC (permalink / raw)
  To: caml

doh!  the OcamlMakefile... is picky about names.

I've got it like this now:

SOURCES = lexer.mll parser.mly fbot.ml 
RESULT = fbot
LIBS=str

but now getting:

ocamllex.opt lexer.mll
134 states, 7680 transitions, table size 31524 bytes
ocamlyacc  parser.mly
make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
making ._ncdi/parser.di from parser.mli
making ._d/parser.d from parser.ml
making ._d/lexer.d from lexer.ml
making ._d/fbot.d from fbot.ml
make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
ocamlopt.opt -c       lexer.ml
File "lexer.mll", line 2, characters 0-11:
Unbound module Parser
make[1]: *** [lexer.cmi] Error 2
make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
make: *** [native-code] Error 2

which seems closer to the problem... :/


On Thu, Aug 30, 2001 at 06:46:00PM -0700, Michael Leary wrote:
> || ocamllex.opt lexer.mll
> || 134 states, 7680 transitions, table size 31524 bytes
> || ocamlyacc  parser.mly
> || make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
> || making ._ncdi/parser.di from parser.mli
> || making ._d/parser.d from parser.ml
> || making ._d/lexer.d from lexer.ml
> || making ._d/fbot.d from fbot.ml
> || make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
> || make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
> || ocamlopt.opt -c       fbot.ml
> fbot.ml|302 col 16| File "fbot.ml", line 302, characters 16-27: Unbound
> value Parser.main
> || make[1]: *** [fbot.cmi] Error 2
> || make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
> || make: *** [native-code] Error 2
> 
> let _ =
> 	try
> 		let lexbuf = Lexing.from_channel stdin in
> 		while true do
> 			let result = Parser.main Lexer.token lexbuf in ();   <--- here
> 		done
> 	with Lexer.Eof -> exit 0
> 
> I'm assuming that (as usual) there's something plainly obvious I'm missing
> here, but just in case, here's the lexer and parser:
> 
> lexer.mll:
> 
> {
> open Parser
> exception Eof
> }
> rule token = parse
> 		[' ' '\t']                         { token lexbuf }
> 	| ['\n']                             { EOL }
> 	| "Initialize"                       { INITIALIZE }
> 	| "YourName"                         { YOURNAME }
> 	| "YourColour"                       { YOURCOLOUR }
> 	| "GameOption"                       { GAMEOPTION }
> 	| "GameStarts"                       { GAMESTARTS }
> 	| "Radar"                            { RADAR }
> 	| "Info"                             { INFO }
> 	| "Coordinates"                      { COORDINATES }
> 	| "RobotInfo"                        { ROBOTINFO }
> 	| "RotationReached"                  { ROTATIONREACHED }
> 	| "Energy"                           { ENERGY }
> 	| "RobotsLeft"                       { ROBOTSLEFT }
> 	| "Collision"                        { COLLISION }
> 	| "Warning"                          { WARNING }
> 	| "Dead"                             { DEAD }
> 	| "GameFinishes"                     { GAMEFINISHES }
> 	| "ExitRobot"                        { EXITROBOT }
> 	| ['0' - '9']+                       { INT(int_of_string(Lexing.lexeme lexbuf)) }
> 	| ['0' - '9']+ '.' ['0' - '9']+      { DOUBLE(float_of_string(Lexing.lexeme lexbuf)) }
> 	| ['0' - '9' 'a' - 'f' 'A' - 'F']    { HEX }
> 	| ['a' - 'z' 'A' - 'Z']+             { STRING }
> 	| eof                                { raise Eof }
> 
> 
> parser.mly:
> 
> %token <int> INT
> %token <float> DOUBLE
> %token <string> HEX
> %token <string> STRING
> %token EOL INITIALIZE YOURNAME YOURCOLOUR GAMEOPTION GAMESTARTS RADAR INFO COORDINATES ROBOTINFO ROTATIONREACHED ENERGY ROBOTSLEFT COLLISION WARNING DEAD GAMEFINISHES EXITROBOT
> %start main
> %type <int> main
> %%
> main:
> 	| INITIALIZE INT EOL { initialize INT }
> 	| YOURNAME STRING EOL { your_name STRING }
> 	| YOURCOLOUR HEX EOL { your_color HEX }
> 	| GAMEOPTION INT DOUBLE EOL { game_option INT }
> 	| GAMESTARTS EOL { game_starts }
> 	| RADAR DOUBLE INT DOUBLE EOL { radar DOUBLE INT DOUBLE }
> 	| INFO DOUBLE DOUBLE DOUBLE EOL { info DOUBLE DOUBLE DOUBLE }
> 	| COORDINATES DOUBLE DOUBLE DOUBLE EOL { coordinates DOUBLE DOUBLE DOUBLE }
> 	| ROBOTINFO DOUBLE INT EOL { robot_info DOUBLE INT }
> 	| ROTATIONREACHED INT EOL { rotation_reached INT }
> 	| ENERGY DOUBLE EOL { energy DOUBLE }
> 	| ROBOTSLEFT INT EOL { robots_left INT }
> 	| COLLISION INT DOUBLE EOL { collision INT }
> 	| WARNING INT STRING EOL { warning INT STRING }
> 	| DEAD EOL { dead }
> 	| GAMEFINISHES EOL { game_finishes }
> 	| EXITROBOT EOL { exit_robot }
> ;
> 
> 
> thanks!
> Mike
> 
> -- 
> -------------------
> Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
> To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr

-- 
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Caml-list] unbound value Parser.main?
  2001-08-31  2:19 ` Michael Leary
@ 2001-08-31  2:30   ` Michael Leary
  2001-08-31  2:35   ` Patrick M Doane
  2001-08-31  9:42   ` Markus Mottl
  2 siblings, 0 replies; 7+ messages in thread
From: Michael Leary @ 2001-08-31  2:30 UTC (permalink / raw)
  To: caml

oh.  parser.cmi didn't get installed...oops.  That might be a problem.

On Thu, Aug 30, 2001 at 07:19:58PM -0700, Michael Leary wrote:
> doh!  the OcamlMakefile... is picky about names.
> 
> I've got it like this now:
> 
> SOURCES = lexer.mll parser.mly fbot.ml 
> RESULT = fbot
> LIBS=str
> 
> but now getting:
> 
> ocamllex.opt lexer.mll
> 134 states, 7680 transitions, table size 31524 bytes
> ocamlyacc  parser.mly
> make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
> making ._ncdi/parser.di from parser.mli
> making ._d/parser.d from parser.ml
> making ._d/lexer.d from lexer.ml
> making ._d/fbot.d from fbot.ml
> make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
> make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
> ocamlopt.opt -c       lexer.ml
> File "lexer.mll", line 2, characters 0-11:
> Unbound module Parser
> make[1]: *** [lexer.cmi] Error 2
> make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
> make: *** [native-code] Error 2
> 
> which seems closer to the problem... :/
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Caml-list] unbound value Parser.main?
  2001-08-31  2:19 ` Michael Leary
  2001-08-31  2:30   ` Michael Leary
@ 2001-08-31  2:35   ` Patrick M Doane
  2001-08-31  9:42   ` Markus Mottl
  2 siblings, 0 replies; 7+ messages in thread
From: Patrick M Doane @ 2001-08-31  2:35 UTC (permalink / raw)
  To: Michael Leary; +Cc: caml

Hi Michael,

You'll want to swap the ordering of lexer.mll and parser.mly so that the
parser.cmi file will be built before compiling the lexer.

Hope that helps!

Patrick

On Thu, 30 Aug 2001, Michael Leary wrote:

> doh!  the OcamlMakefile... is picky about names.
> 
> I've got it like this now:
> 
> SOURCES = lexer.mll parser.mly fbot.ml 
> RESULT = fbot
> LIBS=str
> 
> but now getting:
> 
> ocamllex.opt lexer.mll
> 134 states, 7680 transitions, table size 31524 bytes
> ocamlyacc  parser.mly
> make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
> making ._ncdi/parser.di from parser.mli
> making ._d/parser.d from parser.ml
> making ._d/lexer.d from lexer.ml
> making ._d/fbot.d from fbot.ml
> make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
> make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
> ocamlopt.opt -c       lexer.ml
> File "lexer.mll", line 2, characters 0-11:
> Unbound module Parser
> make[1]: *** [lexer.cmi] Error 2
> make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
> make: *** [native-code] Error 2
> 
> which seems closer to the problem... :/
> 
> 
> On Thu, Aug 30, 2001 at 06:46:00PM -0700, Michael Leary wrote:
> > || ocamllex.opt lexer.mll
> > || 134 states, 7680 transitions, table size 31524 bytes
> > || ocamlyacc  parser.mly
> > || make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
> > || making ._ncdi/parser.di from parser.mli
> > || making ._d/parser.d from parser.ml
> > || making ._d/lexer.d from lexer.ml
> > || making ._d/fbot.d from fbot.ml
> > || make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
> > || make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
> > || ocamlopt.opt -c       fbot.ml
> > fbot.ml|302 col 16| File "fbot.ml", line 302, characters 16-27: Unbound
> > value Parser.main
> > || make[1]: *** [fbot.cmi] Error 2
> > || make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
> > || make: *** [native-code] Error 2
> > 
> > let _ =
> > 	try
> > 		let lexbuf = Lexing.from_channel stdin in
> > 		while true do
> > 			let result = Parser.main Lexer.token lexbuf in ();   <--- here
> > 		done
> > 	with Lexer.Eof -> exit 0
> > 
> > I'm assuming that (as usual) there's something plainly obvious I'm missing
> > here, but just in case, here's the lexer and parser:
> > 
> > lexer.mll:
> > 
> > {
> > open Parser
> > exception Eof
> > }
> > rule token = parse
> > 		[' ' '\t']                         { token lexbuf }
> > 	| ['\n']                             { EOL }
> > 	| "Initialize"                       { INITIALIZE }
> > 	| "YourName"                         { YOURNAME }
> > 	| "YourColour"                       { YOURCOLOUR }
> > 	| "GameOption"                       { GAMEOPTION }
> > 	| "GameStarts"                       { GAMESTARTS }
> > 	| "Radar"                            { RADAR }
> > 	| "Info"                             { INFO }
> > 	| "Coordinates"                      { COORDINATES }
> > 	| "RobotInfo"                        { ROBOTINFO }
> > 	| "RotationReached"                  { ROTATIONREACHED }
> > 	| "Energy"                           { ENERGY }
> > 	| "RobotsLeft"                       { ROBOTSLEFT }
> > 	| "Collision"                        { COLLISION }
> > 	| "Warning"                          { WARNING }
> > 	| "Dead"                             { DEAD }
> > 	| "GameFinishes"                     { GAMEFINISHES }
> > 	| "ExitRobot"                        { EXITROBOT }
> > 	| ['0' - '9']+                       { INT(int_of_string(Lexing.lexeme lexbuf)) }
> > 	| ['0' - '9']+ '.' ['0' - '9']+      { DOUBLE(float_of_string(Lexing.lexeme lexbuf)) }
> > 	| ['0' - '9' 'a' - 'f' 'A' - 'F']    { HEX }
> > 	| ['a' - 'z' 'A' - 'Z']+             { STRING }
> > 	| eof                                { raise Eof }
> > 
> > 
> > parser.mly:
> > 
> > %token <int> INT
> > %token <float> DOUBLE
> > %token <string> HEX
> > %token <string> STRING
> > %token EOL INITIALIZE YOURNAME YOURCOLOUR GAMEOPTION GAMESTARTS RADAR INFO COORDINATES ROBOTINFO ROTATIONREACHED ENERGY ROBOTSLEFT COLLISION WARNING DEAD GAMEFINISHES EXITROBOT
> > %start main
> > %type <int> main
> > %%
> > main:
> > 	| INITIALIZE INT EOL { initialize INT }
> > 	| YOURNAME STRING EOL { your_name STRING }
> > 	| YOURCOLOUR HEX EOL { your_color HEX }
> > 	| GAMEOPTION INT DOUBLE EOL { game_option INT }
> > 	| GAMESTARTS EOL { game_starts }
> > 	| RADAR DOUBLE INT DOUBLE EOL { radar DOUBLE INT DOUBLE }
> > 	| INFO DOUBLE DOUBLE DOUBLE EOL { info DOUBLE DOUBLE DOUBLE }
> > 	| COORDINATES DOUBLE DOUBLE DOUBLE EOL { coordinates DOUBLE DOUBLE DOUBLE }
> > 	| ROBOTINFO DOUBLE INT EOL { robot_info DOUBLE INT }
> > 	| ROTATIONREACHED INT EOL { rotation_reached INT }
> > 	| ENERGY DOUBLE EOL { energy DOUBLE }
> > 	| ROBOTSLEFT INT EOL { robots_left INT }
> > 	| COLLISION INT DOUBLE EOL { collision INT }
> > 	| WARNING INT STRING EOL { warning INT STRING }
> > 	| DEAD EOL { dead }
> > 	| GAMEFINISHES EOL { game_finishes }
> > 	| EXITROBOT EOL { exit_robot }
> > ;
> > 
> > 
> > thanks!
> > Mike
> > 
> > -- 
> > -------------------
> > Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
> > To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr
> 
> -- 
> -------------------
> Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
> To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr
> 

-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Caml-list] unbound value Parser.main?
  2001-08-31  2:19 ` Michael Leary
  2001-08-31  2:30   ` Michael Leary
  2001-08-31  2:35   ` Patrick M Doane
@ 2001-08-31  9:42   ` Markus Mottl
  2001-08-31 15:47     ` Michael Leary
  2 siblings, 1 reply; 7+ messages in thread
From: Markus Mottl @ 2001-08-31  9:42 UTC (permalink / raw)
  To: Michael Leary; +Cc: caml

On Thu, 30 Aug 2001, Michael Leary wrote:
> doh!  the OcamlMakefile... is picky about names.
> 
> I've got it like this now:
> 
> SOURCES = lexer.mll parser.mly fbot.ml 
> RESULT = fbot
> LIBS=str

Simple answer: you have to put the files in the Makefile into the right
order. Since the generated module 'Lexer' depends on 'Parser' and module
'Fbot' on both you should write:

  SOURCES = parser.mly lexer.mll fbot.ml 

This should get rid of the problem. (In short: people have to
topologically sort the files according to their dependencies and sort
them totally wrt. their linking order).

Because the order of the modules also plays a role during linking (and
linking order matters, too, for side-effects!), there doesn't seem to
be any alternative to specifying the order manually in the general case.

Making files compile and link correctly by taking into account the
dependies only would make things much more complicated without really
solving the problem. It only gives the user the false sense that order
doesn't matter.

Regards,
Markus Mottl

-- 
Markus Mottl                                             markus@oefai.at
Austrian Research Institute
for Artificial Intelligence                  http://www.oefai.at/~markus
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Caml-list] unbound value Parser.main?
  2001-08-31  9:42   ` Markus Mottl
@ 2001-08-31 15:47     ` Michael Leary
  2001-08-31 16:01       ` Patrick M Doane
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Leary @ 2001-08-31 15:47 UTC (permalink / raw)
  To: caml

Thanks for the replies. :)

New problem:

How do I reference functions in fbot.ml from parser.mly?  Do I have to put
most of my program in the header/footer of the parser?

ocamllex.opt lexer.mll
134 states, 7680 transitions, table size 31524 bytes
ocamlyacc  parser.mly
make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
making ._ncdi/parser.di from parser.mli
making ._d/parser.d from parser.ml
making ._d/lexer.d from lexer.ml
making ._d/fbot.d from fbot.ml
make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
make[1]: Entering directory `/home/leary/dev/ocaml/fbot'
ocamlc.opt -c   \
			   parser.mli
ocamlopt.opt -c       parser.ml
File "parser.mly", line 10, characters 24-34:
Unbound value initialize
make[1]: *** [parser.cmx] Error 2
make[1]: Leaving directory `/home/leary/dev/ocaml/fbot'
make: *** [native-code] Error 2

-- 
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Caml-list] unbound value Parser.main?
  2001-08-31 15:47     ` Michael Leary
@ 2001-08-31 16:01       ` Patrick M Doane
  0 siblings, 0 replies; 7+ messages in thread
From: Patrick M Doane @ 2001-08-31 16:01 UTC (permalink / raw)
  To: Michael Leary; +Cc: caml

On Fri, 31 Aug 2001, Michael Leary wrote:

> Thanks for the replies. :)
> 
> New problem:
> 
> How do I reference functions in fbot.ml from parser.mly?  Do I have to put
> most of my program in the header/footer of the parser?

You'll have to make sure that fbot.ml is compiled before parser.mly in
your Makefile.  If fbot.ml calls the parser then you'll need to break the
recursive dependency into two modules.

After that, the parser can refer to the code in fbot.ml with a module
prefix (e.g.  Fbot.initialize).

Patrick

-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2001-08-31 16:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-31  1:46 [Caml-list] unbound value Parser.main? Michael Leary
2001-08-31  2:19 ` Michael Leary
2001-08-31  2:30   ` Michael Leary
2001-08-31  2:35   ` Patrick M Doane
2001-08-31  9:42   ` Markus Mottl
2001-08-31 15:47     ` Michael Leary
2001-08-31 16:01       ` Patrick M Doane

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).