caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Patrick M Doane <patrick@watson.org>
To: Michael Leary <leary@nwlink.com>
Cc: caml <caml-list@inria.fr>
Subject: Re: [Caml-list] unbound value Parser.main?
Date: Thu, 30 Aug 2001 22:35:02 -0400 (EDT)	[thread overview]
Message-ID: <Pine.BSF.3.96.1010830223430.1042A-100000@fledge.watson.org> (raw)
In-Reply-To: <20010830191958.B32310@ip178.usw22.rb1.bel.nwlink.com>

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


  parent reply	other threads:[~2001-08-31  2:37 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-08-31  1:46 Michael Leary
2001-08-31  2:19 ` Michael Leary
2001-08-31  2:30   ` Michael Leary
2001-08-31  2:35   ` Patrick M Doane [this message]
2001-08-31  9:42   ` Markus Mottl
2001-08-31 15:47     ` Michael Leary
2001-08-31 16:01       ` Patrick M Doane

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.BSF.3.96.1010830223430.1042A-100000@fledge.watson.org \
    --to=patrick@watson.org \
    --cc=caml-list@inria.fr \
    --cc=leary@nwlink.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).